From 74290ec294613849dcd665bc0aa4973128b441a8 Mon Sep 17 00:00:00 2001 From: flzj-kl <96417877+flzj-kl@users.noreply.github.com> Date: Wed, 23 Oct 2024 14:55:24 +0800 Subject: [PATCH] add native agent module (#2915) --- cluster-management/README.md | 80 ++++++ .../images/cluster_management.png | Bin 0 -> 77851 bytes .../images/native_agent_architecture.png | Bin 0 -> 41601 bytes .../images/native_agent_java_process_page.png | Bin 0 -> 57884 bytes .../images/native_agent_list.png | Bin 0 -> 54053 bytes .../images/native_agent_moniotr_page.png | Bin 0 -> 71588 bytes .../native-agent-common/pom.xml | 70 +++++ .../constants/NativeAgentConstants.java | 18 ++ .../agent/common/dto/NativeAgentInfoDTO.java | 47 ++++ .../handler/HttpOptionRequestHandler.java | 46 ++++ .../nat/agent/common/utils/OkHttpUtil.java | 46 ++++ .../nat/agent/common/utils/WelcomeUtil.java | 44 ++++ .../native-agent-management-web/pom.xml | 82 ++++++ .../discovery/NativeAgentProxyDiscovery.java | 18 ++ .../impl/EtcdNativeAgentProxyDiscovery.java | 69 +++++ .../ZookeeperNativeAgentProxyDiscovery.java | 48 ++++ .../NativeAgentProxyDiscoveryFactory.java | 87 +++++++ .../NativeAgentManagementWebBootstrap.java | 128 +++++++++ .../server/http/HttpNativeAgentHandler.java | 70 +++++ .../http/HttpNativeAgentProxyHandler.java | 70 +++++ .../web/server/http/HttpRequestHandler.java | 72 ++++++ .../web/server/http/HttpResourcesHandler.java | 117 +++++++++ ...ement.web.NativeAgentProxyDiscoveryFactory | 2 + .../src/main/resources/log4j.properties | 7 + .../main/resources/native-agent/agents.html | 22 ++ .../main/resources/native-agent/console.html | 21 ++ .../main/resources/native-agent/favicon.ico | Bin 0 -> 16958 bytes .../main/resources/native-agent/index.html | 22 ++ .../resources/native-agent/processes.html | 21 ++ .../static/css/console-991af56b.css | 1 + .../native-agent/static/css/main-c782b056.css | 1 + .../static/css/xterm-2831e07f.css | 32 +++ .../native-agent/static/js/Agent-7549a395.js | 1 + .../native-agent/static/js/agents-b07f3b75.js | 1 + .../native-agent/static/js/axios-1e59ba81.js | 6 + .../static/js/console-35a3b78f.js | 58 +++++ .../native-agent/static/js/main-38ee3337.js | 5 + .../static/js/nativeAgent-1df0817e.js | 1 + .../static/js/processes-c1a6eec6.js | 1 + .../static/png/arthas-bcfffb2d.png | Bin 0 -> 16775 bytes cluster-management/native-agent-proxy/pom.xml | 60 +++++ .../proxy/discovery/NativeAgentDiscovery.java | 19 ++ .../impl/EtcdNativeAgentDiscovery.java | 71 +++++ .../impl/ZookeeperNativeAgentDiscovery.java | 59 +++++ .../factory/NativeAgentDiscoveryFactory.java | 87 +++++++ .../NativeAgentProxyRegistryFactory.java | 87 +++++++ .../registry/NativeAgentProxyRegistry.java | 18 ++ .../impl/EtcdNativeAgentProxyRegistry.java | 95 +++++++ .../ZookeeperNativeAgentProxyRegistry.java | 63 +++++ .../server/NativeAgentProxyBootstrap.java | 180 +++++++++++++ .../proxy/server/handler/RequestHandler.java | 49 ++++ .../handler/http/HttpNativeAgentHandler.java | 147 +++++++++++ .../handler/http/HttpRequestHandler.java | 44 ++++ .../handler/ws/WebSocketClientHandler.java | 33 +++ .../server/handler/ws/WsRequestHandler.java | 144 +++++++++++ ...ve.agent.proxy.NativeAgentDiscoveryFactory | 2 + ...gent.proxy.NativeAgentProxyRegistryFactory | 2 + .../src/main/resources/log4j.properties | 7 + cluster-management/native-agent/pom.xml | 85 ++++++ .../nat/agent/core/ArthasHomeHandler.java | 79 ++++++ .../nat/agent/core/JvmAttachmentHandler.java | 56 ++++ .../nat/agent/core/ListJvmProcessHandler.java | 57 +++++ .../agent/core/MonitorTargetPidHandler.java | 43 ++++ .../factory/NativeAgentRegistryFactory.java | 84 ++++++ .../agent/registry/NativeAgentRegistry.java | 19 ++ .../impl/EtcdNativeAgentRegistry.java | 95 +++++++ .../impl/ZookeeperNativeAgentRegistry.java | 59 +++++ .../agent/server/NativeAgentBootstrap.java | 242 ++++++++++++++++++ .../agent/server/dto/JavaProcessInfoDTO.java | 38 +++ .../ForwardClientSocketClientHandler.java | 105 ++++++++ .../server/forward/LocalFrameHandler.java | 56 ++++ .../agent/server/forward/RelayHandler.java | 58 +++++ .../server/http/HttpNativeAgentHandler.java | 114 +++++++++ .../agent/server/http/HttpRequestHandler.java | 54 ++++ ...as.native.agent.NativeAgentRegistryFactory | 2 + .../src/main/resources/log4j.properties | 7 + pom.xml | 4 + .../all/native-agent/Agent.d.ts | 5 + .../all/native-agent/Process.d.ts | 4 + .../all/native-agent/agents.html | 17 ++ .../all/native-agent/console.html | 16 ++ .../all/native-agent/index.html | 16 ++ .../all/native-agent/processes.html | 17 ++ .../all/native-agent/src/Agent.vue | 54 ++++ .../all/native-agent/src/Process.vue | 142 ++++++++++ .../all/native-agent/src/agents.ts | 6 + .../all/native-agent/src/console.ts | 7 + .../all/native-agent/src/main.css | 3 + .../all/native-agent/src/main.ts | 9 + .../all/native-agent/src/processes.ts | 6 + .../all/share/component/Console.vue | 6 +- web-ui/arthasWebConsole/package.json | 3 + web-ui/arthasWebConsole/vite.config.ts | 16 ++ 93 files changed, 4064 insertions(+), 1 deletion(-) create mode 100644 cluster-management/README.md create mode 100644 cluster-management/images/cluster_management.png create mode 100644 cluster-management/images/native_agent_architecture.png create mode 100644 cluster-management/images/native_agent_java_process_page.png create mode 100644 cluster-management/images/native_agent_list.png create mode 100644 cluster-management/images/native_agent_moniotr_page.png create mode 100644 cluster-management/native-agent-common/pom.xml create mode 100644 cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/constants/NativeAgentConstants.java create mode 100644 cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/dto/NativeAgentInfoDTO.java create mode 100644 cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/handler/HttpOptionRequestHandler.java create mode 100644 cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/utils/OkHttpUtil.java create mode 100644 cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/utils/WelcomeUtil.java create mode 100644 cluster-management/native-agent-management-web/pom.xml create mode 100644 cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/discovery/NativeAgentProxyDiscovery.java create mode 100644 cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/discovery/impl/EtcdNativeAgentProxyDiscovery.java create mode 100644 cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/discovery/impl/ZookeeperNativeAgentProxyDiscovery.java create mode 100644 cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/factory/NativeAgentProxyDiscoveryFactory.java create mode 100644 cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/NativeAgentManagementWebBootstrap.java create mode 100644 cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpNativeAgentHandler.java create mode 100644 cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpNativeAgentProxyHandler.java create mode 100644 cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpRequestHandler.java create mode 100644 cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpResourcesHandler.java create mode 100644 cluster-management/native-agent-management-web/src/main/resources/META-INF/arthas/com.alibaba.arthas.native.agent.management.web.NativeAgentProxyDiscoveryFactory create mode 100644 cluster-management/native-agent-management-web/src/main/resources/log4j.properties create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/agents.html create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/console.html create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/favicon.ico create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/index.html create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/processes.html create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/static/css/console-991af56b.css create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/static/css/main-c782b056.css create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/static/css/xterm-2831e07f.css create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/Agent-7549a395.js create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/agents-b07f3b75.js create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/axios-1e59ba81.js create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/console-35a3b78f.js create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/main-38ee3337.js create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/nativeAgent-1df0817e.js create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/processes-c1a6eec6.js create mode 100644 cluster-management/native-agent-management-web/src/main/resources/native-agent/static/png/arthas-bcfffb2d.png create mode 100644 cluster-management/native-agent-proxy/pom.xml create mode 100644 cluster-management/native-agent-proxy/src/main/java/com/alibaba/arthas/nat/agent/proxy/discovery/NativeAgentDiscovery.java create mode 100644 cluster-management/native-agent-proxy/src/main/java/com/alibaba/arthas/nat/agent/proxy/discovery/impl/EtcdNativeAgentDiscovery.java create mode 100644 cluster-management/native-agent-proxy/src/main/java/com/alibaba/arthas/nat/agent/proxy/discovery/impl/ZookeeperNativeAgentDiscovery.java create mode 100644 cluster-management/native-agent-proxy/src/main/java/com/alibaba/arthas/nat/agent/proxy/factory/NativeAgentDiscoveryFactory.java create mode 100644 cluster-management/native-agent-proxy/src/main/java/com/alibaba/arthas/nat/agent/proxy/factory/NativeAgentProxyRegistryFactory.java create mode 100644 cluster-management/native-agent-proxy/src/main/java/com/alibaba/arthas/nat/agent/proxy/registry/NativeAgentProxyRegistry.java create mode 100644 cluster-management/native-agent-proxy/src/main/java/com/alibaba/arthas/nat/agent/proxy/registry/impl/EtcdNativeAgentProxyRegistry.java create mode 100644 cluster-management/native-agent-proxy/src/main/java/com/alibaba/arthas/nat/agent/proxy/registry/impl/ZookeeperNativeAgentProxyRegistry.java create mode 100644 cluster-management/native-agent-proxy/src/main/java/com/alibaba/arthas/nat/agent/proxy/server/NativeAgentProxyBootstrap.java create mode 100644 cluster-management/native-agent-proxy/src/main/java/com/alibaba/arthas/nat/agent/proxy/server/handler/RequestHandler.java create mode 100644 cluster-management/native-agent-proxy/src/main/java/com/alibaba/arthas/nat/agent/proxy/server/handler/http/HttpNativeAgentHandler.java create mode 100644 cluster-management/native-agent-proxy/src/main/java/com/alibaba/arthas/nat/agent/proxy/server/handler/http/HttpRequestHandler.java create mode 100644 cluster-management/native-agent-proxy/src/main/java/com/alibaba/arthas/nat/agent/proxy/server/handler/ws/WebSocketClientHandler.java create mode 100644 cluster-management/native-agent-proxy/src/main/java/com/alibaba/arthas/nat/agent/proxy/server/handler/ws/WsRequestHandler.java create mode 100644 cluster-management/native-agent-proxy/src/main/resources/META-INF/arthas/com.alibaba.arthas.native.agent.proxy.NativeAgentDiscoveryFactory create mode 100644 cluster-management/native-agent-proxy/src/main/resources/META-INF/arthas/com.alibaba.arthas.native.agent.proxy.NativeAgentProxyRegistryFactory create mode 100644 cluster-management/native-agent-proxy/src/main/resources/log4j.properties create mode 100644 cluster-management/native-agent/pom.xml create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/core/ArthasHomeHandler.java create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/core/JvmAttachmentHandler.java create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/core/ListJvmProcessHandler.java create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/core/MonitorTargetPidHandler.java create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/factory/NativeAgentRegistryFactory.java create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/registry/NativeAgentRegistry.java create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/registry/impl/EtcdNativeAgentRegistry.java create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/registry/impl/ZookeeperNativeAgentRegistry.java create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/server/NativeAgentBootstrap.java create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/server/dto/JavaProcessInfoDTO.java create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/server/forward/ForwardClientSocketClientHandler.java create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/server/forward/LocalFrameHandler.java create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/server/forward/RelayHandler.java create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/server/http/HttpNativeAgentHandler.java create mode 100644 cluster-management/native-agent/src/main/java/com/alibaba/arthas/nat/agent/server/http/HttpRequestHandler.java create mode 100644 cluster-management/native-agent/src/main/resources/META-INF/arthas/com.alibaba.arthas.native.agent.NativeAgentRegistryFactory create mode 100644 cluster-management/native-agent/src/main/resources/log4j.properties create mode 100644 web-ui/arthasWebConsole/all/native-agent/Agent.d.ts create mode 100644 web-ui/arthasWebConsole/all/native-agent/Process.d.ts create mode 100644 web-ui/arthasWebConsole/all/native-agent/agents.html create mode 100644 web-ui/arthasWebConsole/all/native-agent/console.html create mode 100644 web-ui/arthasWebConsole/all/native-agent/index.html create mode 100644 web-ui/arthasWebConsole/all/native-agent/processes.html create mode 100644 web-ui/arthasWebConsole/all/native-agent/src/Agent.vue create mode 100644 web-ui/arthasWebConsole/all/native-agent/src/Process.vue create mode 100644 web-ui/arthasWebConsole/all/native-agent/src/agents.ts create mode 100644 web-ui/arthasWebConsole/all/native-agent/src/console.ts create mode 100644 web-ui/arthasWebConsole/all/native-agent/src/main.css create mode 100644 web-ui/arthasWebConsole/all/native-agent/src/main.ts create mode 100644 web-ui/arthasWebConsole/all/native-agent/src/processes.ts diff --git a/cluster-management/README.md b/cluster-management/README.md new file mode 100644 index 00000000000..99b99f4d8aa --- /dev/null +++ b/cluster-management/README.md @@ -0,0 +1,80 @@ + +## Arthas Native Agent - 集群管理 + +![](images/cluster_management.png) + +# 快速开始 + +## 启动native-agent +native-agent,启动在需要动态attach的服务器上 +启动参数 + +| 参数 | 必填 | 解释 | +|----------------------|-----|-------------------------------------| +| http-port | N | http端口 ,默认2671 | +| ws-port | N | ws端口,默认2672 | +| registration-typ | Y | 注册中心类型(目前实现的有etcd和zookeeper,推荐etcd) | +| registration-address | Y | 注册中心的地址 | + +example: +```shell +java -jar native-agent.jar --ip 164.196.97.123 --http-port 2671 --ws-port 2672 --registration-type etcd --registration-address 164.196.97.123:2379 +``` + +## 启动native-agent-proxy +做为native-agent和native-agent-management-web的网络中转 + +| 参数 | 必填 | 解释 | +|---------------------------------|-----|------------------------------------------------------------------| +| port | N | http/ws端口 ,默认2233 | +| ip | Y | proxy的ip | +| management-registration-type | Y | native-agent-manangement-web的注册中心类型(目前实现的有etcd和zookeeper,推荐etcd) | +| management-registration-address | Y | native-agent-manangement-webd的注册中心地址 | + | agent-registration-type | Y | native-agent的注册中心类型(目前实现的有etcd和zookeeper,推荐etcd) | + | agent-registration-address | Y | native-agent的注册中心地址 | + + +example: +```shell +java -jar native-agent-proxy.jar --ip 164.196.97.123 --management-registration-type etcd --management-registration-address 164.196.97.123:2379 --agent-registration-type etcd --agent-registration-address 164.196.97.123:2379 +``` + +## 启动native-agent-management-web +native-agent的管理页面 + +| 参数 | 必填 | 解释 | +|----------------------|-----|-------------------------------------| +| port | N | http端口 ,默认3939 | +| registration-typ | Y | 注册中心类型(目前实现的有etcd和zookeeper,推荐etcd) | +| registration-address | Y | 注册中心的地址 | + + +example: +```shell +java -jar native-agent-management-web.jar --registration-type etcd --registration-address 164.196.97.123:2379 +``` + + +## 监控指定JVM +进入native-agent-server管理页面,点击VIEW JAVA PROCESS INFO 按钮,可以查看到当前服务器上的Java进程 +![](images/native_agent_list.png) +进入到Java进程页后,我们可以点击Monitor按钮,Monitor目标Java进程 +![](images/native_agent_java_process_page.png) +之后点击MONITOR按钮就可以进入到监控界面了 +![](images/native_agent_moniotr_page.png) + +# 扩展注册中心 +目前实现的有zookeeper和etcd,如果想要扩展注册中心,可以看看下面的实现。下面演示的是native-agent-management-web的扩展,其他也是同样的道理。 + +需要实现com.alibaba.arthas.nat.agent.management.web.discovery.NativeAgentProxyDiscovery接口,并在META-INF/arthas/com.alibaba.arthas.native.agent.management.web.NativeAgentProxyDiscoveryFactory 添加上你的实现 +```properties +zookeeper=com.alibaba.arthas.nat.agent.management.web.discovery.impl.ZookeeperNativeAgentProxyDiscovery +etcd=com.alibaba.arthas.nat.agent.management.web.discovery.impl.EtcdNativeAgentProxyDiscovery +注册中心名称=你的实现 +``` +# 添加你的实现 +注册中心名称=你实现类的具体路径 +之后你启动native-agent-management-web就可以,通过--registration-type参数,来指定你实现的注册中心 +```shell +java -jar native-agent-management-web.jar --registration-type 注册中心名称 --registration-address 注册中心的地址 +``` diff --git a/cluster-management/images/cluster_management.png b/cluster-management/images/cluster_management.png new file mode 100644 index 0000000000000000000000000000000000000000..0a406e5abad3cb6e793d55cfade32683db7fdc31 GIT binary patch literal 77851 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%0A+Pt=?YKd zvWpofi}Ypx!T>+Y`jb)VdpNWQz`X83kJy>6a`OLl{bTV4$SryRTOiI4-=?wuk!P?V zG7ym+&hH4xAp~;%Z8>!do=*;MF28Tr0b+z&F8=_2JAyBv6%-XP+oANQq3Dn9zc=qO zEeG~8$Q^Ko&#b2^=9}EitY5_c?cRTcU+ULwry31t2ZjBJ7+y5-(<8v(e1S2#(!0&u z%vo3sR$akZ+S&TV*o3+*-Yh0C1d8B#$3&sB*+4Q2;BX2XIbG+2g;c*!+yO56xHq7M zq!3$*wpyGR*>(q{o2~21A5F48n@@o5S%QMNss@A+7~K>LGbzB51qYm3PXt^oDrP5Q zOMJU7!1{k54^#pyhadzOzHM~Sslf%{?1Q?8rQy84(2_qlh6mrtFgnEB1y*GZYb`$( zA`5XX)M8xDfZz7jUxV|jSS%pk-aZ67ggKIDIbL6WvPT)!U|5)2yY>Tdr?;3y3^ zo{OkgBJe|pg`g2FIP^XQZ+fv^pK0Cri`R@$3L4z&aDBf?@g~-ZycT}ITsAZ8psE30 z%b)74lJw`EDe>VUSt2q{j2VUq1HIGrk>`(eo81pVjGz;9V<4fayo0~h9g}p;;c%rJ z7=jOnC(wq*O`Y@sGba!O8*AKcdb%Y}^?MV;1O-7BA|ofTf*?JkQ7F-<)NAnsglQK{ zQz>tt-IO@112JU@wVW&)%&G>2tY92pSgZ@T<*5J3Q@-FOQl^%Z_?QqhSa!sp72#kG zA14wG5d?K}53GYlCAFj(9Zm5!X*x*Zb>AJqh`(NC@gVDBL+J z#YKOkTNEDMIVZU@WDo~IQsq1u00lPljo)9?F;TzY}fy2IWrkmplhGiQi>QMRrhkAw@|asw1DJR;rc$3~>4Tb=5%|L~ipg>VSO$ zxHtfZ2x{d3L#nj=pI{7o01nznOz(SyU;s9JP65QUhb)ij0KR&C0I-A#fF;xg4TGwb z>+$0~wf(HF!DacS;IIt|-QN0coWcViig3SHI4;9e|9>5Ekf49z)3hD{OuWt;3hBin zFSE$u*@=M(**Q7`2J?Y`SXgxd3LQ}7!*BSR8otK22j00k=tNg6R)6pp$o?54e4+r?-ns7P_7vYM?z_fe;e7|JQ`ww}(mT_XjZB9nrMtjDc?ef+S zX2T?In@l!;DK!tgJ$v75oE-8|dZ~I$Zq>&kQ^03!D5D9KzOT2kUxVgU*DFB~*iVsx zk020Uh?}i4M5|S%^K`{_XQAa1Y$U(^k|3>;iuhkYBNfCW%6yAuI&v2p47ez1$v40} z<*queACZQKEF~sljFbl`C%Qb)Du2#IA{H#Qi8<;6 zPyiVdKFSqK!Y`Hhn8Ww#YeMrThB&;AW$+y@R_~RO zu^xe!Sn%;-Y`5OU{K@GqxI@AsQXU~j`Vf&)%eCe6a){myBUx zc1PqhC^W#O#lpTtu4Dn+Ci^)9C$yU~&|)KJ{l`z{K-&(j?nl-M9%2&aQmHYZF?T@! z3Am9!8#(Zld?F-u0sB2CuhFm8%Yy?sSX3=rFtP| zxgjN4gr>)PM0NA7+L5>n+)uv&93MlRZNI{J1#k&&wPwS!SYf`fC(OSI9&PVHQBTr! zB}g~|KtXpB($pwF6XEZLf-%euv{1MMF-Ox?S^di0Ij+}C`f}DIH`n`qgwpeupI)u~ zE>mRKKzW!rKL!pY1|nSAH3HkU(QRMA^TgcfrdM}L_k^1Ky!H$@iT~%U&2Fz9q=bgt=J-d@+BTfx~Bcl^K~cF{yUGnnVr^T zPNSR3P?R)4ad3gYHyw=7b(yKQ0F}fk<4EAa&}#-F26BJQO0n~u`KC!TPIw#sSC9$A z^$}T3l>LfIf8VYooG|6?`Euw%S0WIY6j53nKyl+g>Z1TX`jNF)^;-|=C?Mg_;dByU ztLOJ|b!_WuG6^`j;dR~N_Bi?q2#0i~81{aCG45}Ka0gr1nHH`D4#-H{AMK!S&QZF` zbT9<{(Ff3WO5V(l0I?Mx*arB-Pv95Ar7FsVP6s|{zE(bu{e{9#!~FSg4Y5o7K&kt+ zjdoxY-Psf)0G>smykgQP>5V2}GaX3fcw!iE)ty{e1VrtDn7_uehdja-==>@&3o4%CSuLWTz@W3G2-JKJw@cK0y3| z!3}&i?rvt_3Quvv=h;ZQ-xY#GOGB=3TLlWy2OK{-07L4Qz>yk2!9aoHcRwKIi~$V% zwz7)HA24it2=c`K`7=prObI#26o*!grOTKsSLL%8fMkC}5h?|fl)&?WyEB8S9Qy9d z!BJ(jAx8vq;bSr<(fMyYw*Zy@qSuOl8eH^y=&}zPY@rEM^&`lzFiIEzlSRN{nw76X zxr`y z3tOQ`Ye^QRkI}FC^uzV@YK!J9wPu9nCGe|i1c_s5ZA zXhTwrwOf95RbdDy=^kq-^-4|=%fO1YYue@fa9cxR`WG%>KmZWHWgV#JpMv+VwDW5$ zYd_3J7^+`<*nRe(N;tuRNN$iVTk;!9e(sk?bw(Nt<>@b!^fMRorsxPdFXBNj$nwSA zy!6Rht&f>j>ZQQ+m| zDNflu^7c6%of2i#J#^mZf!D?ee9qf3~nGLfof+kZ5&JJ#Uz$a8~iZiPK3Btq@m zZ$`5MA5?c3K~sV^#|0rJTxE@0ML?SZ(On5}0rWPzqWRk1_y6i={zSn61Ra!B(P`_? zS%})pKRBqOKu4ESWztYMvsguvwM;OxG?-cDvF%FeSp(E%vy!S#vZg9o^WP&(T5O7xD4pORQ4%KVcK54Cb4^#DF54F|`KW2#kv~e*g$WNr6a=YY7^Ppc{U5bv(>s;aBN8rhbr;q(%Mi z=PFH^oNq{l{MX*^M5D}R(7cT!A)1wBM!j^_8Bt+|gbVj!R+=d4Q?@c+sl?Zrj5-p> zz=wF4tnv+vsKLP%R!<5@wvKb)EASn1G{W8(2!3F5FJuV?!mWc;jKp8>q=7+h-L*#@ z16{BUnW(PsD4kv5$C_hT)v2}LGd+Dh{1l~zo64`kD2(nfa#?6|*~!sqz85u*s7QHt zl*3b=S&`&?zF(1eJmXT_YCqbV_>O+tiL}CT-64=5?>6c zz6A(NiGtzz7EDHfW&n7U1GxP^VjuG2{x*hRz5?C;C5b#>o-jI=_O7q!8_GRL*=DI+ zad@5;t-qkJ^Ip5jh^~h4i@av@##`)LEUrt{4sYTdItDPmtalYYp~(sL^et;{GV8B5 zlOvQD@O0FX+M2IX0`+*NM3c=ZhVOLB80e=<&|b$X<~P`xQpo$s(fxCb%mh8=M$}%lWPanzBTp4u;Q4K>eNnvOb~a#TR4*eA zU4r*Oflbs3M9tx9uRL8I)89NZgOlj0`*A$r2iaJp@#etj1`}Sw)ZeoE6`sP+`z*Ar z8&5wS08uM9ciz{>7g4jR^y~%b6X?B80~erLU#}} z4)T@*=(XHd{Y=4DE-0P&c>IHpSFAI9S}N=b1WX_~Z#k{(#JdhbU7ck7u0s3ywREp8 zPHv2x-o$r$pPP>utyoPd;L*rAUJuJ0+WC45QfJhcalot^NI z*A`ZO{b!ga?Bm`}Ci2stb6IJcJiWKvEb85lP`sqBdrJvv(EYlNj$(~O)JpIJuKE*O zz65r*!H^a`w;67?fxf{dz=Izz%l`JkF`OXz7RM$7mx6bLB(p&O6ATO(&7re~?@C%NMrBte&Zxb$cHUQ+$_4y%0xVHSaWGS@7rXRoYHX4ddI zyx*`)1KDf9z$6#!!T`|+Yz^2f;!*fyI0P~Xy`h&%;u$MDFWWhK#Q6-P@E1)7k`=Rs zgTWj_l`a*hXMx%uusaYF)Fb*(KnurOTjV7@7zO(laOWt9-!+#$kXY4ukUsz%I04XH zw65sQ!{DfbWXtEvris6kla1Q#OvwTB)G&9dwq=U3Rn=PVtPOL-h>$jDB+L2d3awPP_y<<@~au5+D!oTT<1Upc7|A& zPd*1%a0(5h=~txV`w6&mbPK0LmJpZ<4rA!o%Lk2cH_)&0yE+VYF~??Lj7@riIp zu>ZNb3e1Q281XAi*6JvM*MhphJq??p1 z;qp=tg7G=z6@01$e)SM&Sm-+H`Z?gi_HEgrx^M&^N_Dr;1cO{=QlyjAb8rjX9?4MT zZj)9;U~&zjw#vXAyjXIvh`usRWchEHuni1&mm4@M?FmE~TXRbHD#chVPe4b~Y4^8a zUBexGm;XE10^k~;okwL5jw=X=5Rdn;tH$lJPB)~*2r$Obhdf_xfxWlUvr+*BF)?F6 z5o)Dwqq7kG>qsKIW=!J+YNb9%P+VJTg z;K8Am_C@AP^uQmJLe>T_t?%N~ zHNQ2`z@*N)jT;Ke`&Zzq01BqTve)uMZ-7{b;wvy@#KQ(3?c5qgj*_A?+V^FLDql zPpfQ0+#;d*T~0}ozj}lc%y1p75nA*VAh7_lLE;(sMEjVwaq?1p+-(p}oYwfkANdSB zg1`qlL??h6<=uV@6FMC&oCP?Mz++@y6tBCSIL59lgdq${5D;YK^8QtslO>wRWAe`o z{i2$ke@L6qg82j57$Q`2pNo?QV5HA4QrG-`f(=NjYO?N!*OUxkm(rmX0?ZaY_{%aU zPGFwA39+ZUEdurw=?T&soaQvDvs*C}+_nQ5ym(%r(SC;X4^N9TXONnMN1$(Sr|iB- zLb&%B7|()VkeAZz!6eK;3fprp#!;jDIiTO|y$l$z}bD z2k%S=Q`s$nz?xD(J`n1PKIoPT0GH5(qT@Uw1`eW<%$=O^86p%bDJX;Pcl+)~7$ybq zD^n4om9XJVRuH<9?$4Rq<#9)nA6x~F3>FvwatmlvU-@vk_XLcIf%?a7*3~))Awukd zG{238^06|LbHAImGP0SnTJHw+{=6R(;mYc*i#=aIaNs0W?$gtkIHjLAoDz&6ox4}P zWqy&NC@gvY^KzfXGCAb4h9z14&6p*>NvBoX&wyF&3<-z4*gpNFgYKaFetN*i*=gSD@QSDd?2*85)+zsCxl=9CKh9z!Sn5 z9``QO8mK?`bqRcMgnsiuP5Sqm@DvjF&q@yZ=nYEfeG)!=mh5oGu(yW1E?c6+FTfBa zo#aHc=)Qf8JUn=E;7y^8N;TPkmk=(R1xD?N>92wRORe;lwUNPEZkgVOJkeh7!R;6@ z75Bn9Iv(`Z;kSi**~JEhnbB=sVQ>hY=R{l`#>1r@H41BA*%&qS=A@z0!Ki39c0s42~_WaV5o&X+L z;1vXKYhh#+h9P$`Ar4@J3BAteo;^_nWRE1d-S%`c?T*H5IDNa}2|CUA;cNvsqphH~ z&q<|(SC0j(q=yz{#e}b@Rq8;K%Q+HzS?RYiS!QgenYNi{8he7{^?T z5%C19?EO@*_Bupg_HOl6DQnG3vjCtiAL?WUJJ|0ECh3J0OT zb?#mLJiW21qN~f_SpX(_+k{M6V(RXOv`+b!TJAfHYlCS?>fXud3!v$qX3Hq!A}&IC z>|i_Wuu$VAL;nuU-pu9^$ez^!ybNku?F?pEQ7r6Lmys5Wz+nlO5QO&>BM3uKH(f7d z3x{kW!rFY*ileVMW=^-pKT%kQt0v!zE%M>~OgH#eTzhWAVlTBeO}n;?Ceu5<=`})8 z>cG|ZfSn)7P)IJ-+(g+uOnVN*^e>=47L6WItc@x1P1ag5CIsGGginNdBfOxAFmx*b zEqm8glB^_m;0V&d&`obNSQ`l%w=8$4f)lTR zt#vNNfAwh|*niVJU<^*@w9otKBMo>)ZjKSa3(rx7uqmTet)l|xybrN?w*U@ghoTlx z+%L9hh!U$-fL~P%;iCZ!6P(gxDLe$9d7A^YgKiU0u39a_WbvP)Vo2NL6}x0XnP?iwD76!OOPLd!Je6 zf1p$V#ijPag2LW(DE*_AJY}FW7!JX29$-LcrR4c|a0zSP^-5j1Y?XbD=MQCM-h~jY6Q;$Q3v1K?9t9;m2V6b=Fa zCO6A)d9CR0XVbnvBN zng~@}rn}KYB`K8-$=38Cht6%hZLxw8%!eGN5Xz+whSx$-Y{+T|Rn_8onC3xViyV=f%!UJMe~omewKy3^k1ExEBjGE*rCFyJ!&PrC(_T zhK+@-LN}gs5mPa{8{QT!aeF7nsu8KMz&(Nwn+pz6uE&(ik|dMN>H= zU&|ZeOb66x)+QCZLNGqJMEN;K?4H^X^_N>ryBT%DAA0f;5)f_g571`_CnHuFP~S>` z;?<+^?&rDKoaS23REML|R{`U|6!+Mh0~gUuh_dQ_yH$I2-<(l7)XH~2AKScjk4gYzeaGj29o3-qFd8oWCsErnJvM3cU^xfyvQ;YF* z-DhoTtUKm$gnJN`9^SMO=>B8g`|j(CQsz+mMS~3uP}kUo`IHNlsC^kC z?29523i>{eEo9NVKDF@~&ONf$byuwz=qy`C{5&E3WFUsfiZ=__E9qWlVk&A+L+7UH z3jKyphFW=C!o2*Im0E7{(zCVj3EIXKnWJLOO&wU5n5&L+jSiF{$vfbp`JkV zy_xVPkZ@pQ)i}N*^78z}Z6(eFK77?mD}bw^`K$-MH1_Az`Omcj81@#fh)W{%7lQHh z`WEkdbDdErWeFm7Te{eVN;$!?yH5c!^D;i$ok|CqBjwM*ykApci*c8X`~jP?nFzEt z3eXEen6-@onzj0pOg)MUfq|~+B+3)SbRp|2>DNz&%<+DTDL#CWvZ>W{`&_ef${@!S zFMMpg!`%bFvd0NZ5q6`+dQqm>X`90`Udh;D*FlPyey}agn z9#L_{=KTprW|nZ=U_aKiva$O{oD~`$N$_ANps1a!ufx=8xt}S@NM8kk$3@Z83L=AO z1UCqLQOF)i4TgWYIvTrcO|0$NQxLJ3-i!TEyA-R$^)|avBxr~F0%?!$ja}km`MWtS zm-A zI|svBm8Du)4eqKCnz#&7>!uC3xI<1zsk^4%$+)#!qiI)FR!g_mar-FiuCV(-0A4rwHIcR6WR-NcO2U)PvEGK$)0fsClrX$ty^rV3h6J&q35Wb~dhmLnk6=jB+zWEX z>Z}J2UCe~36ApX~2o2wKlgO-BLLBjs*(XenZ4R^SFS!5T7 zeKb9&)H`8Jq`pdgR!`fa50AQ*){hSU)FXI)>~XDmAEl}SJV&wM|8)puuEA1^70Y0H zpjfd4U4v@}%1(?yAO5tWQ;J!C&@vm4AJ7-2UFsy8yNH@fS7u-buw+9mRRk*S09<-f%Q;?-$|zn9!$y~ zt&P0r$m;Hx2A zzoJ!yP~dqff$n$AyG!u&Lw2|l-7jkp)~dZUS4iUug*UnBi!L z@h6q9#1{yCJv2b=b4HX^5=ac5p!HP9P660YOf3z7WHD>>97a}sTyO~2qS z4`4{wK#4G|6ff#%7iqQT76#^cJ|xG z`49;QE?{n@&BZ3+@d$&8*zqugG>)@wLL!*Q<4%j3>7yQH1@JJ#lhEgH7)*CsSdYRn zV8I;=vfB{tkZ|b;mH;$|2_5rq-1n52cg% zY%i@+qrwrNV9mPXpK#-Hy;Op&FJIwhKA(l8_b5Ho-kN%Beq@h|hGs~CDvrwu4fdv% zYuqx_HgwmowI+DR%=ty7SWT8DKlh$20ldtUR-*J-QB+>4mtwl@Z#5Y$(^ib zo&gcU{Nucrn7o|ILmk|k>`sZEQCTbw2CNO`Ao2y3UEr77dY{eYCPuj#E2Fqzl$sxn zWl6I_Dy{IBLV0ZXQ|yV?0yc}ofm=o5d*#lq z8RQ~d?YZIL@vbOT4Er})-3I2LQqxb1$LhKbs_WA6&e9B6+w=!g%*!qA*P?dV8_ZOA zR6reGCM1LmKAOHa$7RmZRK{#?pz#z;v6+06PW>$m{^!X$QphIu64e`BJLcV(>{z5v zL^-C8&bG-vN0Uw0hBM{g4qPz!K>Nuchob(A3=?vggLm=sHc9IE+z(_Ns7FA5LZVJjx86}<&elCU0<`wMaM<-(R4ZgV8@>fO4^WjH z9Ii1F=~;VK(k+o0eS_*nGOXk?%yn#cr84iNDCBw(BfqdCJFT6y?YwKe;(s*$aZt^Y z5utnH0pAPj#bxTwpLiu?8rWx(DVcofw^n67ZdeU4rlSq4;oR5l@PpnrykARDTJiPw zC>5BrPvK;ZDWwG8Qt~1aHvkWH7zN_~V!OJ--$qsAjN?~p} z?gb@Urx@7@YQdHn;LSOM+~fjgFQ1^N#7(9>6^0pG7cA-1@m zO=V4v*K^lkNUyyuf_)}ZEnO@C6V^vT?c`s>P34rKrp;_LEs7%DIZ}cGf|3$a(jZ8e3@F_oNVkLn5)w)`D5z0Wh} z5A-W6`CmqB+2v(>za4K_;v@bA6y6zqd&3S8BtepzWL$2X}`5 zEWJ&&2M>)m7nxC{S)DDp-(g4gdG(sRBHxw)$cA`#;dj^N9TukOn>bM$bc@j0y!+ns z2XVBdiI_hpzfGRoTl!ofGP*LW0*)@eNmqMh4WwAj8HfG#4Mk`y8hiisr;>&!my16) ziBjI{nvq>rdHg^Rzle~q9H3e#6<)e6bw#%&CAL2(KG$EzrgemQ*vNO zq3s}fXMt6?fSL!22x=tn4x#%6)52#alS2SvzPrBHZ+UhcLL&Acx)2mcM+33;sik?!{Z8wc{bbN(DLTC2@pD$K46eED z#&rj{ppjlcOiOS}j<@=FnY`^hj+OBL(FAH~EV_ob=7BL<8DfUK$r!qnyBV^pb<0OCeX|I z8^LE&&@^uLb}1Aa(E1E2 zYsRU#x>1Dy&^9%V+Kc9A$y|H+mu-fCOC&}l*Zw5}hEoBgZUW`s>xX=zRy~m*wze^n zrv{xhWdIToKTR#IAh>huXIHK}c1X_;XG!jY*5SFsTjP5^m`ig}IsN1&?mD~vUspjcO~kbgXlG59-}o3Wy926qTte_|O4CWKiI#Ti-$0wrbF+IZvxH){_p=+L!|E5FStEYlm z{>$D71nxg&r0_kxWL_>XBQ)R4^;z%(riVY2;h>@cMVLG92g_G_Uu?Mdpm5xse}QvR z7@Trzd=C1dQGfs)z`|%IZ<#)aM*kY2k$=J6wO4ttN5D}*s_0Rjv)CrDqt8<_`1Mg& z7R3lYX-`z?H^c2wV-e%OqMCK{F(I(azGO<`-7MyXm1u;-X%#LfQZNc3Ze4_`laab3 z$`<0pp{twCB(!?jm9_N#`GR1oanebC;WeBN5n5pbARB38LG7Jwu!p^NcXfcO^`(9a zJR?GyfhLSES4qa_e*e$TRaumd-vR7AE4`5+B}Abn{OV!1|O541^vPc z#MPW();FZ&)^Y=OI-|PjWUgw!^zHQOLUs3N@@LNZZ89HiYpzj_z8G4;j?uPPR2Y449h(PY55QC#jqT-*Y{<8wemKnWXLHkS}mW3_(QTNgAHF zly#?V2`lrhM`(%Dr8AU3;xUjMp!N50>mN73D9`nI#TYE*+cBTIE~4C0+MvZ7wWR32 z+yj4T2Es^^9H(FLYZpd~j-n%i?TgNg8p0h26WpvZmC6%rvwC0c<2TPpEiW?D%*Jq# zWFuD^`P;EBgBK-IyhpSQ))hFSaFOVtkd^25OwyOLm7Kj2oYxs*t74D6tHrIr4B@J2 z8u5<3)6z4>=+5D+`k=*D&0o$aPfZZsYCTT#WN%Iaq<2Yt)-e7NE%V4TA@A!RaaLk z5m31Y4eVAeUR19X*Pxekc7!S3a!athcJ4!IB0#Fb^?rtl%3ej9h$L5MYO^5D84Qf> z3e1h4y{|b$*bAE?Sm6k5Y#AfgL3)biCEs^=mnv~z=%r; zKFm}j^>}4w$Ffs$(JwjQs(E6G^si1;7z-Cx8r6heX2}xi?>S%Sp@YEjAE5JyqZyYK z#6OCL-qApIRuIXytGbibuu3+Wn)M3tVj#M2OK_#VgDmS&1Q5V+60M=IoL5;dxb5aL z!b1FX9Z-a|s~z#(dUv2H4}u^IwXK5E8yRYG%$)RZ6M}j_1_r-2E5hcymH-c)-l!Wi zcK0M)ecQFfGvrThrz&m5K8r{i1LXrK;4;o&9rFDq2MuqGS$wAs?J#Xld|jGp)ZZFJRB-OjMMhlNRm>Lf*4 z|9FiYmUnTtg~!!*dgf`gU-tMmX@*L-+o!JqS^e>9#nF(NR^&AorohP87KG=9B1aBo zdA_E8%()a*`cC?sFe>BYYkx{1Q&ENVFJrNEBY3QD37b#F{>Wyhh-Eye5kJpKa$57^ z@oTd;<2?^NBz$sYxU&sr)M?sctsAKv?Q7*Kbv%HCK zi%sMi1kIgyGYK;rI#OH)u``W57)3~-bJ3F`&!y7-XSAH;u)p2xsoM` z7*s7j!Ta=8&gl0O&rdt3@$cW9Ix6dV(^c%&Y3MgIkM ziLaG5DU65hEkdQOYLR@s6CZq^6s^0=}k9FU!DzoP0>F#?Ez@DJDGhUUD%rNK3M{ttXMb8d-&J>SiqmrA>&D&m&LVZhf1uYm_TX7; zv}pj@VxTIqb&-eoP6cras>G6;e(UTt$s(dx76Ib*dxAd0Ms_6rr?}5yE(p=Q6{z|` z!ClJ4RF<>GB$AWre@j#?qg|nCU6{X4x_A8&hb^sBgKcq_OPrhpz82}!*!J7-_~f)? zPK#>aKU>9?EfU*%pISP$W4=spGAT01jk}$IN!jw{GY-pI`H)Z@x>%-Lvu9hy`0wMi zE;& z>|`B@*%Em6@pskEYj0(wX9lsZYFy2950HS4o{(VU3CB7e*Bz}S>u8pcb>=MM-JjY0 zk$WYy{!OjvWGY>C1jYeEx366#%G+31EzIB&EwDR(=b>1}XA|Q)X9g_}8MR{l!W4P| zC{EV_BNifMtyKZWZVd0uN;M^sDyI)nPBI7muA)=!(u-d$BkN=kH; zeA$-U>%f=$z8*zd{cu>#okrtfXNX;j9g`$#f1vJ4EdeRSs>rkzO->4;~hSclhqQ%oaza`d)L5n^vQ63R<%ee2-i-)wT zT){}jPebY>g5*KlIzwgv7G_pDa7-KM6_X8rBTlo5LDn?gmHJFO;$)Z5G~$HsDL2la zRikG`TF2u>bqDo{SAyKq&BlaDP&%D)Ac%Y6r}|HL9pHfq>E(y2kK(6yzg3gYoTE;f zOpOxX*Rzdl$?&|=FwR<*xgk3)knQvKr9{AW%|prcx8Q74ca_wd%8gz{gvOv`Za{K_ zpJ%9m&{jl?YHo*rIo851j(CLZV9wX+-7`}Q9gMtPbn8L9q206u@2Qz|yY)9VV7}6jrS=&eD)KhSaAEU{_$ZugqN3qvc-f)?!SlZ{d@T7~ppiOFN`t{APRSnV9cZlS6ur*ub5OvvU}JB?Q4jr{B+R)oYwVma8K zlH9ZW)KRU*HSNu_Do|qnMI&M;ZA?@1JZX8Z!JKM8I z5OqpAB=~!Iag9%Ps8!s9b2`?DS|_3AyL*UF6%)+4*-`6rCpW8e_iC69FLKV7Af}i+ z#%I!=%cx)$sI^zT-nIg5CM8us_)9B4Ocw&)BB8hK!+$o zU-15Q&iKe#U0C6UFZs-Xl-!(3*ecTxsoIIO_`{&D`%qDBG!WD zRZ@?C4we6NS_SGJP-{QAQB={FxVPZ1_7?qkr6_f2W6k!JJ@3?ZtdO6)Qkn>Xjd^Zv zdhkw`+1Vz;^u~v_H~R|bnC^GCpL@~QooOoDTk|= zlEuD5GBE~9xXwrVkfo9S>hNdqEXh{`Y3bezQ5Ko(#_Z`PL*H2Z`8Bk7FmjK*^GznG zByQ_UEYkTiIUNKq^{V=zse zVIiFJsW}IO-ev5mkG!-2!&97|5=z*Fu-9|qhkkoCUyrhsy1OTOuEZRw0-LrO2 z^3q7sM;(zg9j^)7pWv8rKI(nuVe-*ZmVaHI0D*@(LF(zJwN*2w*M=>TtxsbQ3n#Xh z8!p>czqEZvK%yg_qV8R}KQ;2?l8wTOuJes-h9T~nD|wVp)bC9au z3!Qk`Ewr@W`qX$SpZaGCo{M}f({HpkA!ZA;Q_8h#;>mPX@Z)uo+v%Ne`JT0($oQ0> z?j|CL%H!G!m&6#BE|%-!blUH}uq;ZZ$%#7e2i9zQhi9QHFEEw(Vti$CgHQYj1umcr z!ytQ+0Cq8LMWe)f^L+fPPAm!cBVzi=Sp zl>OQ44+9x@YsB0Ty%l)bT*ZZ;% zEBMxe?aCDyGAn&q34c>&j(@84kNHkDUpBWd@a><^o%YeZ#@%%8Hrw_*g-ctlK%sd< z0@M{`+%c02Ef%ZW`bDu?jSNO-s*|Ox*M%SR8W3ocWUt!IDdj#le>7`@xL?dPSv z&?LW$2c#E;CQX5!z9W2RIl_q0~f`cP2K z+0kxl{hi~zy6sv=>=at4gIP-=mXFcC!nkK7)_4J@WBNvbF*?u@%&7%soPo}zLBn;a zvsf>D#X$aKsKKo`AMuR;8s?fm+0F^-nMpQdiKEPh!{!ohPch2rbUq4flB ztHqfTt+J<&Xq=`yBI?sn!$ZKzP&{HUGe89P<9>$h%gHAV z)x>)dS%c`5=YW0v>1PiHkIZWOC)K!w>VX=z(~#YV%0jzuC|0Amd16G$B`SC3g@+ye zCX=D+1kZ|^_Jdx%q35asqJr^_oR5oMHFyI|X|z=lE3 zV(f|n6=>H>N2>Qe6(xl4)qNCpm~RsPBhr$dT3wlRHmU#B3a7Y_h7G^}{;=dA=2D7% zuF5Z8e^Q<-zrGwRm!csomcoGJ=(CyQx5PV-{mNY44yP~XMde9cufOOtsm4p*pBH9g zlP|De<1Z63#%Hr`P2|GeFEM75AL)YpneOEA+BmG77_E|lM<8A4Z{sm#rC%F05lQ}u z-E3t$*w@T5qKomgoxetoCo!wMzbD{E>Bmy_;Q6Gyu{!1QuLlrGEk*87Fsq_>J{;w{ zD+ZKMP?hc5@`pS2C{MP8t!SdmpD)u;o%;Ep9Dg^$uik#t27Mzl`m88kpEpIA*>ihc zu&|SUk{IcuarJ)x`O0oBxpWI^k%;!>k&dn}M9%vA2gg<@TOaw5Xu0syQ-i#2yn=Uf z8mXPrzhZ6MnfVt*%pD};k4ZbIiW+ZUH$HKjD+HdIMwtR zNx~w5KqBL6Yp0!yASVaB|6ilbNbv^+}ksZr?YK zs3y42cL!w;P1}D#kcBf~p5=z(2_`=ONoju$#SxjeR4-I78 zXs!n~a>qaK#wT{!oPL(~z>cj~SMotIN%tU^C=MC7SjrGsmkYR~Mn(1$ugpIbqJYs}Ij{{vf}q#_$(>b_dv9g|!@| zmi1rrZE3$^-u`LfPZbVxH0AsbI1}Y51}of|i(;pG=6L0qI`yK|=Vxs{pMa58676~8 z@iQH5;ega85_1!f&_=orKe=cH8l8Adri|D5dnK$wK>II=j7sD9yA<(=LRQK7KVtK* z;(k3RXI)Qsz=YZC2(Gn%3?~1ptT{ zDM9!{IHv#Cd8a43!x(6s;0K1Y!T__k*aD;S0)ObRAbBtkSt(f75i5xO3nuf_9YICF zHc62CIg#WRh2m>lS0);4aePECxgvr|ZRRHZ6nN%T5e*ea{u_@W9IkvDq1Y?7Z(!yF|EfgLX@RAU#rsbm+JiY>vdelO zKi4$gVLurAQ|Cj!sB8M3As0ls4R>@QLjO=-@M}P17^oM(ey`d z(GNMo5|I~g&PO|`@9hOI-D~}`p{6czK~#2EA*cc51JXYvvu=OP@fgukw{EE6!YkH! z5wy~`aM2|B%r&-&VvRX6rV9JmVa?w=pWlt+N3;d)PsP6qA2!t!cz{w+#lDbGP>uYk zfkmlzOrbk&Hv&=ur63EK+Cy{1CFq4IJK8=O(Xtg36a-APfXxX$Edi`r|0RT>#MOiC zVK601wZI-Z$5t zEEqA{li}Gj`2_}sYv%mCY%~+?x6h{NYcX_gTN#26QidDzj6BE8P2dskOQ|u4f^#4z zJj5w?uI0`@H55GT*srlfR@b1>Mv)lE1*={5VO!M%*M*gc?Tg*{(2^l<`RZvIgKh3* z>u%*%|F4S+&))gi3?{uB?A5oPI@>pIFWYRcOeiHYPQ@oYF_VT;U;KbN=W?7ylmNdG zJ_^*>G;nvFjb##zXOXM|uob+Bc^ToAey98dy-$#WLaay@d3^CWO*y*9aFqM3$J05+ zJfSic!)K;P4r{M~g2Oc{+OlaSHXhj9>@)tG@Kj7}Wd8GlBd0-vM65n~rb{uxfM8(o z@0zzoW8QZpY?R+91()~(xEXa5`;_)4E(br|EhV%#K$h}j_XG5f9^~cax$ujreqF5+ z__7vJ7k8VvCK??7`~w1>-D<3&!bgY$yZ8`H*}=($VnY>LMX!NB!y>lGiB80>p^M>md3aVM*zcXwEkxaoxw(KC zvDZL?%XMd4J2bG_L~PVy1Aw8ti}hys8Oyr@q?B0Gdgqg_ca0|v9j4hzVW`Bf4IaCK zH;m@X6W@fBD3Xaq;U4RRD#C%(o#s2JfN+AMO~OLG!>2dR3?rvLC1Zg0vD6$AaRj`N zsWXV6i_9Nhf(2-<$Ze7b>($lOAf{<fB*7j$*?9P$-|c$EhQ`c^U(!s z8$0i}B6x?}{I}}+&R@tUD$=j^xc+y)^Mt@LH<~F1PX$t*!c)fc!}YN+!@32>uZn@0ktQ({ZC57selIi@fIu9V}^Tsi`nBv zs>UrVw9JuI5|u_Fbv5w^BIg}#o|)Hj_g%8~i@ae^>2%p3GYwHCYn8NEZ+YiVg4Crz z&Mfc1cs1N}yUBxbP>wN-llXg4;^?NPCNem#CMUh1|K=w9yo4`13*~tY5p~aL@`*UK z!-0j=bE*iF#C6qY`>?{vP|V}5J5#gU(vvZr%ym8<>`?Pf4k;>wFHg4zj?78coAnVb**AW+?Wc$zk2nlqI;# zjoWCIl=;))23545d2l~@QFYu)Q8$-@Au%97J_g}cpha2LYh|ZzDu_V_xbRjum*6$` z)a`f#pUg^dUArMK}j5j%0}59m#HEFVa=Ct`>o=Wty z(rXNDY`*PYpPA1uJqxMZ!|UWLu;Sncs`Ohe#XoZAMZWH`NcNZpO0we(FaiH1qE8si z0fB+>_1#QhnY0KjyG-<$lk%`(L_-p85ze7G_#Z<|d20Af0nT@jN!@sS<*|2+13P+# zD+IVC($dn@zR*>p>JV(`Ik`-c~n_ni^bWE(jlSL|t)Cx$N=YX3fw^`vAyA0*5X zb}p4_+-QPqb4FKeN6~wGW2L_+S23c!FDd9(!!xsYE(4U~$-C>^h)O1R4R{bZ<_DO7 zQauhGy?<1)GT_L8Sfi@3t}ec7VUclOpO=ia>^X_H{+Zvub@BV3640EbU{q9a2`76+ zSXgmf)F-t!%KW}`bU%_f+sobSw20S}L~(0x8*+46BH}SQojGl$%HK84g*|QA?6pPs zBMuxYs=$g3!rXZB_vfi7=TJn0ohvv@LWc${ZKA%Ookne3iliz$vt!9z@A9j=!g!fd zQuTU5N09ChUM;t$+&dnN6(JG>(lQkRKbXI7UP5&iIP=l}%SpL4*L$vOip77= zy&|^Wj7DQ7uv0BCi-SkWalDY=Aq5S^NWp{}#%3r)|Cb^O>wrIZ>J?)8uA5CdonJ_T zdqv_kCjxx^;?m_!jx9;3P%b@E#2Q-)HpD0Q9tBRw^s@hYZ_=o8xja2mxh)0zggEdg zyP|%^RqKD}nVveL@w$#AW!f7!$Dlyz5WE?t_J)VL+6BoZVgrVeTx@gQ!6c)5)&d5o z;(RvAvrT-C6D4s)b)q|AZd)QAJ;Z;Q#Y3|s8CuL~?23@!5fft@B~&X&Gs>g#-I zxZ+z)-;wo{Wgs2q1S6B{$t3zFwR`hXI$_Th>>ITTBO?vmTjfcVLh48Y8!Y@cF)nUG z_65fG`#(IFiEG8tJQ)a62_RvFwX4XrCP=4W!d%G>B}iJYyN>BNIW5~0M4>|BmvVon zYuYUKegIpOZQw%bsW*{a1_TLiUnm)=(Ic+}#>6S(La_|lsj2oIHie-Dy$eYuw0Kui zc(riy)Fl5RP)3@Yo6~3I&=|*JzqL{)qt?T|adc_y^+!fl@0MzlJ5G^xac%yBEXl4X zvi}qtCSNZ+<6P03G3Vc>6o<^4=}*_K5Ag+JID%f$JswS`@{f?S2|-P$Vc&$$RS|!N z0|4R+b;s@oIA?XcTZ1zF6q_7o%vFhXrT*p3IW6QS_u}^UJnV2F6M`}RY{$#Xr`TE| zqpuq*k6&;N$k!p(K$g0Z@<2b&ouf=8JY!MEhD?>E=IBE1k1Gj2ON0r(^62*0Tfxp^ zHHlk^h{_|XzeSz*Re#HsL;7>vdX((<$HvBh755#?QNVOhUD7GUPdcoZm=RTMVg5LQ zj$$oOh&C=D_|HYFv4?XH9x6SQV1M6!i z2|X`qdoo<|YM+Z>J4L}F;SA|9D8M$~H#e?NcSGV-LQE@Q$`~931jfPaqgz>6D@g??O5q7wv3G!Dh zM1~5Om{vo`1OnHOjkjmP)+LH9^fdfsEEg6dw3?uzFb=8s1tMS1Kle6XrPe&Y@PMqT zh}6*Az5Bii!zwCFmT-=H$h-tCHc-K-7W2W0`|?7IsA1*xk(k;*PiLJ`<=2#Z2M26I z79HT02df?2pz7egb#{-4-0+~UqZT4oFMnT*cBB+1+`tQNfz&%Qc)n461|fOD<^$G_ ze&kha;=`!BtLzF~#(QBLVpL1@oE|R3#;D}7Aw$P0g1c_i>il?DSfbAK9pLsC2ARi; z%^S%JI+)#fTM919A$r~l3JQ5U-SqHxB^)q=ssNy;h=^d{^A~P?_W!Q*Vo~v3vyy9K zG=AY#+X@(x{wlOKuB=BZY5UBsi%PT(8P~NzDkB{<-sQ{vz(X`^^@s5o1vC95?|QDk z*BN}Q5zR!1$G7qRJ*SJs*6p55&Yxr?VLBJX)GdXQ22inz=2EW2w@$70hfGDSc3v^V z7diLUX`t22vM?tQxR00IA&kNEy*Yu@w!MyY%f}o?b|xyN zM+P2{C8KPJkI(8|wP&3nDDSVfv@)b+Qn7wUX)nu|;S8J>8pU5g$LoBo^yiGf)h)2mH|9dR_3FCm)TRA#MO8 zg9LWQg(LeeUuFjdC-N4FQjUX(Hx2teUby8qMSR&#B(pJ za5TnepVmDaWYVZc$Xei(zray0bSz#SESenKwSjNfD==P$eqWvpD?RSX*!Y3 zbn3=T2TLFi8+K;T5?7>bbH=BNE36QQ&d61p$)MXNbi z{*2Ib!v?DFwXzbT)UslKf}~c=}t6-RP5dnm6rEBek`)b+VJz{a{W8I57DAIcfFU zUaY{a1`93-jGCzAZU~F;;lV`Y%kOyv$~g*aH&r2ct4+@DTiNNn!FO-G#5ZofDZTcg(nNAK=d`euijfhcM@;5J z0V2qDt63pFq*)JV;1&rMg$ez(&0r~eN#GS%NUf1zpt3XhZCU`zM17-@ukdsS6@Fr&PIE%+e$L|2AAOZL5S0w z0t!M4Jb0e`h>RQmo@b9XZW@?+Ylu8Cu-)hbNT-tFA!lHy6x$WMyLUgd<*X)2VdH49 zpXOoH;|zs23ER@jU1tuzuYXksC4kOcb>-IJB<|bbbXt_Q1RxRI0D{5a3YbIAcaO`>z#BevB`^qKUSf(#XeD*9JwfZ@D zn&>mV-v8o(Ef?a?M=01iUk1Pp>FVm*W`=bqV_ngUw)Jp|Nj@`u;jv%h%IUTg1wgym zOZecdXJ4pxcXw~JC7ttk)`T0UgB!01%}Ie9gsVM{!9>&YB^uEx7DbRT-37Di;G7ja zxCuVu376TsCx>4I%h@uKC2W0IF7TfzhXJgvfW5(FprMOTB4S3wld&aeC{(|#6@B@; zPGwQaXRn#VnF{7**6$v|RKhm|bKU|M4GSrdFGy(zOqzs}UCX*zZx)aviM5YLgHKjA zHlpsVLrLq{ZGRIoxBRPcg`R%1FYIx}w9bVP@F;|m(-+W&fr~#6KAY5MYBZ~30#E=d znm22tq+CvDTe+2XP?alw(c8_f>{h#i=ST2`hR2c2a?^O<%FPw9k0!Xv$Sm^FfA8Dq zK0<;+#qAaNO3?EgQBqM^lG8|?MbGetcru9;YvrAMWWQHEyymWN%Z+#@T%mPO!k39VM%A z@G@!l+wUV2byKGvV+hfUj~CyZeE0jqpRe%~$qXmp%?_Fh83;&_0xcznD@!*^dBLa+ zSf`BHN-Un8JGuZTrGB2&!G1FZmpkw*AA$eI3spUl*Sl2<$a(TTa7*I^Z}IEjiXR`9 z*j5FWjt~!Ea2{rpd?CSMF>_qSi)P@~^D^ZpdcmynPh3S^-oC^&LoA`>PI|38+uM5v zE}`s_C7cppX-Q@tqE4t@F{eIMbsdLRRS~w*GRZ{mO!zn%yx$-=S_($DM)d!pAAQ7& zXwI*$dVrR)vBI>1$@K4Hk5GDQh#!TMn-j*rfBzU|Q#8nMXt<*dmO5ZN*9PJFh2F#0 zsTYX8(~F;+oTyuK2Fd6&1^f`0d)?=Ffn&=9UKcQM#eoq%Hm2iB{Lh1 zZ+blb8}VF_>bD};f2+6R^>2e>#y&v!c`m9#i^D0NRo`)1!Fw;io_u`e7-xA5=-`;( z9z}2jlscr8FYc~|u7rQvz!DMZopNS)Y^$mB3bwllC~v^X8BDl+63QQyA32Uo&`@>U zs=64Ko)He(TsPlxVY;lS}w@33r$4X7g8#OsM-)P(!qK=6}?Y;Gbod+XSvW2bH zR8$@?YZYtp6On-@$GrQ~Mys3LZ%`UZy?T4S7*>*RF&{_sVoKZIpyv5t zo~}I{_RyV^(2=)cnWSGdA&Q_~rB@~9ti1!iWtZwp-Uv|((c!U>3X9UwzfMqg=>9q+ z&5es8iC8qTl$6xsbTE{Wdn}n5M_P!7%Ab-E2O17gRm$EwITG(~9y-ROTsoV0yH{>u zVL?X*RHCP%=x>I1uEM#fM2q7`3Di6h$ zSoX%lK|q{$1Glu{uuH|jMgtcvic!1bg~gI;jmLv0FL@FN--82=cCDwyckUK|9&fa(q7B>;iRorYD833+;J5oJB71baUhbB$SA? zWaJ<{prh*eP_7l8UQX=ZrKyooZTk=P|VKLLz3cqw+0KjBys{<*7aatTgO1`C~p<|6pFgSIfnwUQssZ-caY zeGEbyBK2aEFc|AWF8cH5PcHU|hBS4duegTDI8wF$0mnnd9rBADcv@5g$ro7yB`LP&HKxyMnMt}ZWblnd zNFuf*m1mC+`I1EV7cE(RcIoqivsKgI7O2e6?XSMvVYUw0Qf4J*30s>AD!v+Qhf?dRS&_uaA8NDv}sL5mT7QS=l z+uGXl-+1v1mDp4TqeWqB+$hx!IzFs17j}D(gM)fsKh#K3_ zhF*;H6gs|?dal}vf~Hw(z}u3Kqq*hNDmQIuP>CkAJ1pR^rrZ~|^+<4`DNtHQW{%gO zPxVtMLU~BfH-pcmY_D*P=kJ5SdrR4I?IVol>-fkNKw;JG_k^XS^Odf1CdS|Aho*6D zww(V&iJ`;Law4BKAfkI+=ZtH47Qp=5p#5IZ!!IX`o%pf72iwLrB5LFdx_vpP0{atx z5b?$7(%-P61dR*D=^AEE7K^hCag)VX zgyR@&6UzXzTYatL`N^XD8PzYs z(6h_-i$Ez*T0~~NQX~Rw z>0XFE+yCP1B5wgWJU7{80sEdh=1ovHN>lp5XKFXCtcJ+E5793?j)>ncaw*qgzFytl zFakc{IcAvRpmHDJqNUTR>T%Ndj(vSK76S-LR5jNMpDH-R3A;8d4VK z-#e$LMi~A^`xCeDsSO2XMavF@3PXxv3EE#wS9tGUQrDRf0JZ}1wR~EPMK9ICnuWT9xFiF<#(RU6kpW#V0>NnKCJ^Mue z9SmDvY7Gd^mi;ljHT|SEu5X4h9hPh9H zTseCA+jp8#*NZiy5FvZ_i9U$dS$9=^1%IJ@-ovA#P6qrBLg=k;&kWqA_V)G?L(WIK zP~q{Z#hQZC7+?dyL?EN-U@Io>{MF8TV+)U($1;Jf>CR%%?Dp)Vk=!+g`kT*EFV4_i z(_=WXVYDiF;iT!H?C~g;@ZX`ucn#5>RcA98I)9JY{}vP-@Rf1wG4dK6B{0AJ(JtK9 zqdz}i!@jBQ<-CV-M2dtL>Hz&qxGItHp@Ygw-W_mcw#Od0Azt|G<`Sz%d95DyUn(8~ zJ6IL9>z@6hc2uj>!GhnjwLX6`YP|g#@cc@%+SR>Wc|FMq4+rO=WZ%M{-H!LVLsznu;ODj1@43+6>+tZ3e(CEQ8i(Hyrzi%ZLV6*V+7i2xFRG7>8fr#-QWUsUX4Cp zZoNoN*>^$oMIH7KR=@qUXXd{LPJSQb*9`S`%AYc~64xTht{Slc_>12zfY^g?fgtQ7=yMxuj1 zSy0x1ca4JI*J3z8p}OIArKr4wta5ejef1DX&W5dtl;oMuSOnm*ucRvb|8jsK zZ4Lmd52HMw-hqZTJkMEo52O~AdYYWyT1N-VBf-mZK~MO)9V#lRI;!MD;#gMNy{Nu=Yeh3rKP>w`;s|aQX1_l*{36)%yVFbUBe1rp?|#3q5?h3+=nd`hwS<@w;CN zFAaaxC^;|LP-)g|^V4&cemI>k<+MjkUvJF!DPAn4sI%S!&tf5!RlNEJRS5;f$K)*S z9j5<+DF%s_l92&>Y%wUUXwGWG)WJKDv2W~UV?3R0_fgTQ0>9t21%1@czY|+$l_i2GfZ^xX{kO6q$0~to%9~d!9Zi!^yo* zI`7!zlS|c;I@+9}4{q@kb(oM+X>ME<^S35}bO_#J_;erSa{x_@HMv_85fO0{SxNqF z^NZMex_gkme?c=k=wfed8f}2?cq#yGZZkrP`4{(o`_P=7Dl-%`3_%X2h{oj`2$tR3 zzW43Zm&*1(4NKqKV&d-s&vK2FfnD)lHn*X60O?6&;d9IGybA(x|NHHbD6xY;9K0)F z8Bf6IQ|AJ!Rm`>;vOx*qlbq@_ohxgr8TEDT{hN~d)Y}{Gr{P$FCQdDt_SXSs>;n}{ zxJw;0bp=F-)kER-Rc-NDq15&Ui+i02STpBFGs_Vdxxwy0R`QNOx>&hhZ*)DgL{FQc zZDtH$P8!6qxl%{7ZzI2LyveW;^P)(WPU-&=RPa&Ie0!$Ru#+q7qAky3@|c2k6o?TNYr8Ig|f18w_=-4#{wk~`$QtDI3KNiTGf-}>3OCUmbX57`5+Fs5d$~) zq1yWN05FssQ+t7w|GiMaP9j(iz>gb-`hE1-<^OrysU9;MhZ<7r7@TF&AV1ihv20+H zs`f|A1)sD`_A`)lUGcTU^gqrgi|}-C&&BO>?xr<5C1U>T5Ms} z-e|fn`n>C1!?BSUlB7j!$gewa&_uX(5|ffD2T%oAQ6`4^Yd!}X3t^6h+b8jm{(N}p zMcSxb_CTXHgn$HkLW)~cF2CmLFDswwdN(rqjHm975kj_fj0^96yM5||^fO^RtrE#f z2|@p0jc-bbyL})$Mn8)KObj4K6~Wi*G8!C&xX4N8G?}Roco;J?OCZ(uARI$`po6<|YO@dQZ#A*sC8-c~l-8qoMD(uXm8o2AgaWL4+_uRRmQ zf4hO@dbcIySpKhYV+Rknr<5J+6)q9!OqWy5S^C_q1^?w5@2NTjstG`nU>*~zU&4F;B|ed6f($G(?1W|8 zs0#}6&0F%VV74z!_wqJS-A>9I=KtJy?9KXpcnk(2bv-JE$O8TEw5%-ABrH8K-J&2j_tmxkugtoF=8z)z(+3%k4>SM)#=vzT z8rby8E5%}9OCW-YJBKrW12YE|KM@~qn-zh7HWHEh!HV7B@b)4b+ihP$JpJ(2zw6(Nh&#Ew<%?dHXywZjR;q_wphl)RIb(eV5bXfS7Q;@8s5a zploqZ_SGqjehArbC^S1eQM%G}=k=-^8z0#jbKp%)rYlIqE)YvKzqI{wu+ZvoL#NJGN9J2Ypnl~Ka3xx%x{xgx zJ0@OD@2PSn9!e`EQfyktG4r702BTgk-P}2q@A>2udR)2ye%R55ocYBeOq_`4KgVaTMwiHIRlR6g<_*k)rCzz=7F-9cD-v z+=Oe9*Od1a;5Z{!xrhTIHwZQw4uc*ZX?7;OSb>sPh52+7?kyDNi^WfJRAIBAdaCwt zHp!HlRk;uK-!kJN+d4cjEenw^YX%LfivgbOD99S0ff73xUFO<{vgAE1?HrOiwJ*ja(`ffx%IwEVCxM*O47)lV=;->u z{sWXj(K0j(5h0aCpA2iMERK8oJAXwUP5z zIUrX28+ssT%g^|kt)=>-kGPm;DU`y3j58%%Pk@01mOK&pcMn8BE$$(nU;u45QQjBx z4vadhAA{mv>ZLW>kYfUZnsg!YO6RQjPcQo`Wg!Ct10c0Z+~mQ&9?dKZ5WUv6DY~gX zW^E-D%qyd77Ku~pPWU%>Fz?GiZfB+2=o{!F5euE&VxizL5}|>$+?RDTzB4_TDXH2G zwqn<5Lso&9<-XVUV2KAhH+cn^NN`2Gr|Vr2IK$XJ{{}Y;8HGLdyAjQ3qf+v>|3_v7 zhr}=;0-p3-pnIYfx0KtX5Ri;#eN=^4K||k)WQe)UXRE#vuk6l?aXm`pd5t2mm!g41yCoTJc|1jE&n~h zqYqJvML}8EH26tC_izQs*~^^L-G0R_b*1cpc&gNa4FB`fie9B)e;@?zxX{Tr6d${#@GdHh((j`5;9>S$WI)du@#dQNta2{3fIc$WLzZQ@Rff_CV;RrvPcsn*i~?t=dV{;*<$I1UV%#DzwF z-$N@gS8yKCf7PEo%#1XHTnj&^nQXb4`Wh?#d*y-4JrO-zREJ0oL3^z9Wpg+jG_RC1;pXQ5mQg!f}e3L}+B z=N`XTd%ZbXRan&7_+7$jo+^4K7mR(px&=UFZ(06)cg^wYB`Y^y3WA_&ZOFc3;tuY` zzuSszEyQA&3j$CtD2Tfy-@qaO(D0xSn1innk=R!KiD-%J!88*34I@#V7Xfw=a6P?I z&BLJTI=KJ*QXbXsFUvD2a8&qxT|4Pbl{RKR_*L1h8% z|1&!9X76Ilu7V-bqw!+yS;Wl`EYv`o!JP3(CFx9|fAckX7qguhg8YGN8L%pk0RjXJ zJVYhAlRt-CfIkGzsySFH?tXnzn6+7L8=@H$@X%Mo8an^w8Z`CDuBM5(=JMgEw*dYd zTOjINV~)V9@Ad?4j%G4@VCn(A$>ji#o{)~*rCwzj7=EY>&zf{+b4=SM=}i3JdTI*U z|20wTNDWN@rU4rey*FDcsS0__qQ$~ys{-ocudb^0BO4 z{aXcF|0Pv9f=HHB-lqjozgyP#TlKN(>gsP@9YNELsaY`&5z8f{> z(zP^i{#(THu;(eWTUvq()ZffE4ueWYV0B^E9O%Z2O!g`Dgh+pVK|58oHdbSA%~>V%{#fbGV>o5mdaM&;%g{5Ra-Zq z3dirj31_CsSJ!F~JOBe=#Bh}MCkWOsx~ft}`*+7Zlu_EIL2wcxeH}>gpMD7_Zai{t ztJOd`Q|LD+sr6fE2S>4q^T+klv_xxdwmMQ}gre%i7*=4&8|ziNug8 z6#92*@C)dET($qnZen605Gw>-U)CR!ciu&|wqTL6>2tZ)Isn_og#q^+75EYqsag#L zKex&_@SKC76h+6!OXELMzLQV76Z%&IaI8YZ;rc}f7!)Tr%Lvq{YcE4qr~ZBPQFR6Y zWT@<}tgVTHzfg-h6;0|*DM4abZZY=9_*C0d<*>z#ADze6{=`~>sGWDo*ma=B9kaj@ z1$09||EX0~Q~mHW)MLG-&4jw)s@i?w-=;Bk59qGIk2I>Zl9l6Sz6$-;HcCC#!cpC- z03B&;BtQNwKN63K#Fyc>st5K+h|$>0)of{y7U2>p+bs!(F_2z_LVu}gxH2JQA9$y*S9V@ zzP-sh*$A7-J)j_NIVRFnmU^eQlQt#LAC7gm!F_FWZ}o&$>i(;!Mr+oe=UkbYnP5Oy zz8{t&9|gudaWH)omezb>o6`LMnoH?q8$?|aw7b{ z7nMs6W$^s1u>I=F3gD}YfU}0_C{nRtg_+q*>6Tc(h^MS_>P?!FmhRzx-t|VzgBa`G z#nQ_a_f?bo{$smW{$f*NjdjfCd>LNA9MfiS0`?V9Mt}U%;Hj^V&pK&%Mn-d(d@O+@ zQ~jBNLl)wjcxAAJmz=}1Z-%Mgb^{MjhWC<;)~UtbJgH1RX5ZPN-K=qR?0WQ-0?bx; z%%!*F;O*BI5q#eZfCIqX74^`(;-eWzJ$U2S;b#ygm>!9!Dk+iQ9DSBR&ns6mAf)h6 zrVpIisSQ4XSz)Q58d>IyV{^&>!WG!G}N!E z3Tw6U14H91nTS=GQD@eY%k&)qcj1de=HcO{X5}pM8H$><`1LnAPh0?-0j~)nIG&}T zdRTnlt_&oW0sxDg%kZ}35_W;n((3p}hq{I9!R-EAi~F>1|H6Rzf>x3*%!Qvck8ZWqAV}HCKBQEjy!$04WDG?;rz{-*1vSuZ@w3pev1ts76L{ z-$=aGtf4+ZAZ)h8gOuidxLN@OqBn2k0jtyYa33S#%O+JwpLN@fd&}fy*MAr}LVf*R+YRx11&% zO00r%O;x3o(Bye_f2y&e9=4+mk$C=@@;&~Jsl;QAzr;i~E(B0ZK;n!NkPc!84W!S1 zd}aAOtk_VX8m6+>;eRrIRIv(-|_sK@NULe>QaMoFxNJ zwZ5i|2pKb>oRmEG+%&7o)GOBQutu}Fq=VU< zf`~{Pl(hz~zSsRBoWrd|%%)%Pt+%{9x=<75P9Y9$eDfB5+7@;eOWJE(ge=Bf^`XaV zeTtof0<4QYZ-uvjNlP2Sl*yvYy)Uqyf|7(PKZ*rhCBR#xNhdWT?_}oZxPJU&AmSgM zU>k!dEWAf|{-oZ`8qlpC4r3#)^FHE0PBWe~=)4D*{}e`3A6zB(x%8UpTA z@J(oZeFU~UJX}Tw3fejkJS0f&zlxkJ6N{8!<^j!X! zzQ*}Jh!p&HbVnjsz=%-CFnJ3?cgItEA8kH*px!I4(mD#=XOaku>ZUh0FQ7|XVtEU& z)#Ze&U?)(%r7mSbWwC%4XiGuw*j!>9BdHk%{l3u&Jwtah(`d3*8u-LywrXXm;1Ptw6GB73LXHaSQJ{L)=wTo_jv(%j>75KQx!3clSfmj!u zCW+&~TlepNaNVBrK&xHcy-#4aSOwTb`TM4amRvo+&SGb=#)d3ls- zZ8q-&3L?*S*rS!nk;fFa_(k12_eU|=Da{C7qy2sOD~11l7pr zvZM2SAjmCRq1D!QV|O<}7sP0jRL#>;KM#+J(gY4*!1A+2lUHLG8%g>ftJmk&c|h%` zx$v;C5TAxWJmTz?{d3=K8B2uabpaJkpI_KYzh4zuGC2>-;CpFTT7ZiK{w?na%4mqQ z@aMliS{<+Jg>5;uf-OtzzQh`*iJ>!Yw;v@kw3|S1VU!WmJc;BFt8F;@i9fS#b3#8G5NyvEeyjI7|y|l z^|a9opUAvO!3C2FXqZ<4%P}!Zvg5iJ2*SNbfij#DztbOR3x+V%pwIVR==KP?$`jpz znNo{PE+$zL^ghO_9kjFK{mfIovra_u0qlY|@6PsvfjtwTOE0L{NC7INbswmk*r&5` zS=(W=u;d;;YgAo$0yZu#0L@u8VR>c^ApRy=UYiMG$iUyagjUiDS)#&!DtpSK!y_x6 zN@T5$<9FL36~}iMJ2HD&OXI8nG50NaGcuIK>Gvh%msyXQMywF%}$`<9z8 z4`0%;dr(Fw+jSgEkC+hsqbYW=08Rc3=%j%Iw>2{K;aj1Q*&GR|NjU~K>7OI1ChxuG z>Cb{jR<9C(F8^JfzqOef5vK*ugpLD~#=bv@$b=LhUq$7YJ(AiPd zpaYC+1bW!T99|JMQ$yn6ozlRw6FjprPr>q?k9t>WTzta6i#k6BHy7~ za=i6C;+1c3;PG+kNI^d7u@OL|2tLe@Gzb4!#AUt}s6pr5ft}BQ=0h9DR5lFaayD6G zE>Gs{tl1poLxIfAdCB>Z<=-e3G67gf%9bzy0h}%Ol5DeM-5gI$SESquSkDyh5m1pH z4Cl3#7A&y(0;%;~PJIO~C6fwjetbkS%F{c4zOpyTqqmZH&P*>6s$pIa4WW2nXx+{6 z=-Fjsa)!*XAr;W9>l9mSa59N}Qe8QRNEPC+uK_E0$vdxbAQOl82z~llG|!MM@)71# z_&ao?dqj$rJ_i=+FuBLs9`H;gz7=XarUU$G5gMPmtq@W&JH1CF7o`HjltWHUE3=){ zkZB4C`p!Wmjes$xO()d?_Xwcx!RsiS9g+dkLGI%7k*`KvRVob;auOTBY~tNaJ2!yX z5;cgiPc50hj5$VKK26b7SN#d7&2CzX@KqEHL3c#%LgUTLlk(f<^(EE8_XmJPMTck+ zBWm{pC#1vI*qnl5T^7yV6oHj{H}17n4^lZEon%V=xG%;=U1G<+S`%SPy}D9Da|N(v zaMN_h${mOyJ@8|oj+1QU>$Rm(P-QSWTqZa^?xRXkZC!?*{<4+J@1cxjI|mF&JiQEE z(BY}yvUeW#L0``4FE(xFW~AU#X_?@geKgDuP;{2SY9A#;9;yeLP^%QT1x+%~-Ge`& z@=%kz^Zcly_-s^lpS!;w11vO#+Kr8t(dgD=LWG12Lm4BYzqWo9^T1!|4)L}cYR%wi z;!vQ7b-Pc2b|put7+MA3q_@CTUqEI`Q3oR*TQvQ}K!k=7?l_@D+RR5JDK<|Hd8ilX3U#J3!$wkAZq~hR^kd9;vP#ypt=x;I4+JvqrTpwAmd>k z@&*7E$1_yIZ;TDuc>L(5f?B37Ff%%b-$zGZtsyuR2%=k=&TLUz&pL~`&OmOhfHcaf zEw^Dginc~wK_708h_2nsuUJ-U(SikG^65xIv{$BzK(>D|mOY{m)Fy_zeFU`ptJIjIGH^Y}dyVH_LmV%jK6-(R!NG1u%TY(F9vj(F^$uTdZfk#C{>J--0{`MRQQ zAMVX|ZwDG?;gm%F^_rj%Wx z!#ZgIT(Fvt9{Mt#P}dGWGfEN0qBP0p^L@Woe34aI{7&4QGzLoO?mJgCjP&`G+fK8- z?YrxYub#r4fPD_)B_W3r%13#!Nl44b>U2#M3={B()>Zig8!?TRKi~NSHpK?5EidPG)TI0O{&+^P0$v%|w1n6)yOtSXP~xX+bQfgSwNR1L zx>j!qPxf5`z)hILS3yZa(`f63c+a;>q3%)-u@Yv(+=3TVOshNNrJN2GJ29P>w3RH- zeR#6zynn5SO1Lk7m$jS;VG6}Sk7I8V(NZEOB4ASLkf_F<`T5`@YS?^)O)lzyT%s)H z$z>Yu5rtYDLsD9wYcjfed>TQWB-|S=<%c~^>{HNVGepFfD5DF_U}X zSNLoA0T)Ss_q-NQ_OG5eSRa2I2@lIC(oO}p}N63V!mva!v-X4=wnUEYc zOrG)iFe~SNq9UylGLcY4Y3<(+*@@N70(vlAND%b0kTtn&jKh~sQ`Ok!w7IzFP7~#* z5KIkO3HUii9J{hSGDC$Abq?A?({qF(Ly(9kw@wA_;m(37>K!aw#yaPy8AM7CBlZ&} zo_kmxZR|6boX+F?Si7721j$%-VO*dl@m@pg4n*{Fh-v;5r5l;%%2`Q{V~bHTL}w() zu+{2o1+smR%$>MY;UVq0+tdb>ZWwgRF;8rAR%ZaS&kdfg1V44m8VCm-p1v0*KeUR? zeqQy(R~&l6(L7XBwrFMsfaMY!kd=@G(TGLxyJF)h=_eGg3IseSGzyz*04sSQQ7^OF z^Dp`~wT?H)B$gbfHUkvH}kpB9`t%(QnBVq+uHcEoHrGIFo4>@o+D$*CHY_>F1|-O4nDY=@Ss8cDa~bI7D8*VntY4)D3yf+S^r0 z_&YIG@+;(aU@=Ss*c1NqDUaWMuP3U8W+lZl864pd!mXsI2>u)H=z5oEh>shAu)?`* z^t8>4J5CI$U-)HY>fBEXWk1LHER=5vHm3$Cb7#4!hy66x0hX3~ciFIz9LYB#*#3*> zCmIBy>_~IW8zf~9qZT1wXd2PyD+?hCrd;jL9NAC!+U&Cns|XabA_^p3^38x;CPF%w z)I-6)2Z!%&>Hc1&8;$lrmW)iLS+p%_9O5XKj({sP^Ylb7jpM??bOLc9q#cHfDYzdh z#AKopo`*S*OB`m&-OhwT10d*ojD8lhMjAQSa(``jqa93w0@?2rrcy1w(&!8iYF~|i zA0^Yr!KqFUT#3wRnGj#=GdktXxLKKBSG%USX{hktI&0k(PmL0qpsI!ie2o&pjKY(! z6sN1d^9H)!-UFIsSznjNgI;Dom z6TmfaW-j{`?i?n|qRy@P^s3E>aE7ts5m*ZvweH;iayhJci57w+gw``;qAy@97SKK& zU!0@$Xd{>Aa22H^C58T?5k@{hy35Y|?yxb8My% z35NyiTG`;}y-1~?38Pq^YBicPjfV8q#C|a(m@(8!xzUL6W3gIcA6;UZ;@nc?Wl`78 z3%KdIzFCOXrC?qa!w}}vQTWp{Y{8?DsS}(7O2lV?u3`*tUMvKuJ^i;b-g zL_FXyYp&r$zeI#ys4c9;;SL_bOwd6ex5UkzZms)=7t5{wE+;P=Fg{!=2cJ3(jRW-j z%O_ET2asA>lolrIF5%PcPatYYqpC=+V{_jaC+5c@j(=ptsU0q?i{Y$^D5Za{ESEQE z<3*^Cjcq4l`>(D~pBZr#NLB6B9QfpD*Y7)cA2%AND-CQodRULot_T9pNL3 zV=&u8a^ycq-ItFdQ-6oWTX?A$E5J65758>$@sTj!&1kH_&NhSfOoJPL%it+PBSzK9 ztnE*ZY0URb!Dgam@4U`Fe>0u!r58RA(4HDv^IZD?DAR8mC_!XE+H?11Q)j08zEI-E zuHqM=#3xVFAkJ1z$u{hFV1^9dQ-EM&sa(PJep+|ku4yP;7&;MxN^*GdNF2BS7HG>R zh8R^o(@ce-(W#~C1D`4yZ@)cLE&^x4H)F(}NgI_t zT1UxySaF@)P&gE+9VTzx?3p?^dCL~Jia~s!J5Q@t5yv})*Qb{EU)^8)<$pCL_DX1G z>*@kHX+hWvFHl(mu2Z;)Fi$<0p0@dD4WFA@SUqD3sW8=buW1T6!Oxj!1qG2M+?y};tiwPx*wB5Awy_jHM)qu(ea#RfJRAq*O zMKA)z2F4D1Gy+K7tKjL*_#n}nTK!jw#50}%xVPp2cI18RFDJ z$&-@tl2mT*-AA}&qrj^gokb7a)BA(UALV^lzPSe-&l-#KP6h4{w{jM02IWsr1bg|r z4B18uUo*9LNWk8&zYB9zx?taQ{GwvlvC7L&t^%o5g)2eimx>~5CXZzt5s!jaL zUM)v~4VS-J1(`s%pXVa%RRzQjoC4LoBDcCk zBti*0`GelZ1#oL$U48EErWI1JeBoW!JpN+~ATqcG>UKjP9tr7xtg4CKisPg^xD-Er zTeH)jS*Df41JVGVG@o}SGR05VK1_#&IhLiC{Jxnl;D5H20t%xQL6p+=`QX`Cp7KbU z`I&QAe#&&--WqZk==q?aAPP^v)XWD zB;DZS^SKg(LsIr?>n5twuUD4|o?C|i{JR-7yW_~m86vbXB5XHDH_}x(Sp`B{_GPG7 z-g@c~I0-{0AhnuASe)Ovg3bJz?VOOYvoq5O-qCH74`pQGWYPE&(0!fgx&{F-kU7a-Wm-Bscinl=pg!Q2_1z@SXSY84MySh!mjPt$*Ds5?k1cTx@A61>tb(=za|8q0$2W383O=@;lS1QTp)X7Bm0+(MT7RoF%iLUFu|{_L%6y5G8x- z!-T?Q8kqrGQ^M{KJ6u)aU!kWT3m0SMe}LcWBEwL%ovuR|M=oD-JvW0po2Yzz-shDM zFd>F|458?y?w6l|@|EO48NNAmQAn|}2B zx4WAg@e=%~l~dcYlK*xJD+-6NmKqUhx?0VBQ40y_dgHM+Hh1B@C;X|*%U`O=f9>b= zdih*?0MrX!XS+ z3~t9nCngDE2eNe_b^ckR&Zg>1;rCH^F__bPDE7KS_(|NeufVAE+LCb{jn_J!t-JK4 z_}fZyV#hyQ?sTu;By6eeG!Gb~{&ry-Gq?5aIq`etZ)%3Oh131m8&8<2X0%)LNz zC-)IV;sX|xu0pp!y^W!7nbu96w6pvce7Joj9HB_pJf&v85;C4YW!g*;+5}jb$Cu~R z6*sF~%Q?00-;C3VHjX-ZotQ?x@g@_F5Bgn(IhduWHH92!e))0`flVS(W)cIX`7Yt9 z);*I;9G`+aIQ!-9Y74;Z7T*X0e?OcdDTUmMY#Mkw&^a*y@>Gt4szR+r=`t+?@+D4J zFdn=m|3SRq0&|RJ&yM~>X=|2U+tX}0tXP}4#1<7VUhF`o+nHEs_?H(rB5d`#BYwEj zLHoFQP+HK5X@W+2_vc#y<0wC#Vk0i`rXAkKZW~IY#<2E4w2P&8ICq|cNQsEI!m+8` zxF59|`*T*xa`X0@gYXGdh@0H6&d1A4-}7p1CSvin{D#*!$qxQqw5)nU+#aDgy_X$AVo)I&+^=9@a`wuP9r(GtnZCng^w}q zpVZj5I8E#GGqn1#7WvtzQGfU%DU|RZunxYP$AeaG$0?X@LHOj%JB+gT1TT@sZpI1%t;^QyidvhKaNZ#~iAe^R~i!}u44Cl$!w%NUQ)|4+^H7XY7F zm{spgd4&!>JQ4KW6O#`Zn3zJ(g}lF|b@(5$2px2Cbu@xfQ; z!WOX{qaR+6%$jCFi7TIjOp2UN5iq9M+(S4@lvk5B18owbMk3_)6K;=Q$Eni{JPyo>8ek4TCsCO576=Ba!N9eZoQOYLoWr?ACxXA zBzAn;Wd>z*v#*&b49L3rzwpUV*}332LKgsMo@?~Yo>`)A_}|0vgSbbx+zjMKU1R+i z{zPAZ-ZQL%0wqk*X?auv3_*kRGS_TD51WHExu_Uje)ru~ezq3+HP*hzraxWne|Bp) z7qqjM7PyEfCaeDf`{N)r(1L@i?kXiIs?CrPlKnLLB6#MN<@nFKYD8L?kmJ-JfSVVQ zTfPWwJ7#GYX^It5(*?SJ*PFfFU7kkE;4u(V2{iE>N4PL^l`5eBjYu%$I(~ll^`}pt zCYZ>CeUy!Ah0JA3^@`g&?~7rzKAw0Ae1#4JI^|}vAafENDlhk@0-6jfysTJmSEMu~ ziimg7WOm!9cxsTF<=k#AP73lQ5MW7ju6L7)!j}L{Pr5-_LR|C^HER5)lV8)HCpbUo zz)`##Vs3EUevhA??Q?R5V0?189n|`sDlEyo+3fp1E z9(vI4bQg*x&eVrwUS0s207Xg;rB5dHR)OCjkwE&8P(;2<2PEA9@z>YDuP_6ZTY%a` z{)#w;5ky!J6A__$Dvg3P+ehFcQLVsF6ZZRK8;7l%CFLIpVa5|j$7-c;5JFoThL2T& zF&7R2OMV>n7wdkysj5Q2OX~9@UL_&E6Sj8T90#6<(~BWya)r0Xm3J|gL=0+Ckhp6D zWu^@?5E46!7xXPRvLs$_J5;v){I9=FHebkZp^qm#3s9pzXkB0jkNE=`jYic6sB~E6@?cgl$c)e;TUIb!0)4kyVWz1vPA*uQ_-q1z`zSXmx>H%f zg+i)Ck_6=nK|ys&vj^BGAIkUn=1^H6gCYg7!|mVGMYY*Sarm*`wsAtOCt|(;egbKe zO^jyoWIr`A_fBU5@D2U~;_vx6ej0p0QR95y$-uEfD@O2ZW=4TU33*LEaz}3V%@XNjIb1kaOw$=T zt)f&XmTSiyS7>e+QZD>{wucoW0%I|Hsn-;uu3c0PiF_-j0O~sIf#YZeBc#Yo7xK-W@ml17B9V#cwx8;_^ojq=?^3 ziVDZ?ZM!k$&fA2u%PGkKbaaQhJqKC-h zSfGes%g}}FaTgGFg{Oww#%;so$U;gHqj%k)>+C(oIS%X^y{&{qRAFhPIS+dhz?DCY zmUnh`_6Y^HVf20=cMxm$g<_JrU@7K-_b->FuP8(bjY~_(ERKdR6T(bvh((FDiEWdp zlUVuSk~pT4^cFWk>P|cuAYvgwL4kn=I&i_#bh)l z4Q|#yF$(vS5?k+qbedCUMiH=?0@2ecZ?r8zoUMxt9=9d1VC{bdt$l1s`in|b6?gU( zqQylYgQz{c280$P9@RVsi2IxYWtQSJInNk? z&k>vX(G*a$ZaCj9;!sc2;o?Wf&qM?^_B;%17pEKYg6B!J7n*_td zQEzaUmk`S#J~Y;gciu0DNK*0e@KDgJ;e={kUS8tqGs|fZz6kZ}p%m-fX6uj(OX-t$ zL6l*dNLnV?SKyzjI@OCqDB}P0)nBh3YG456$5WImG(YYS09%3)l z5M3WcT#{q8MSH4LgvGS6vtfbbO{AQ5mCeI2Hi{f7hC3?iKj8!rqI*I@q=LAjgrg5E zk@BS0!^E?cJ$5*Ei1 zJ}0Dw4`Wch(t)>aBJ$2`q(mmxbn@quq7Ze2ggbLRUy-O`G@c57 z5qVVIw889thomjf5CI+)({nU8JQ^N_7Y`{bL)40}-9+_=AK2pb{V6KfVy!2P;Y;RW z-jDJ5v!1xW)M~^pc4@?*9{t3?MXmmdBN>a0Aq{tc*N6N8Vd)SpuO5y7NQt<+85v?3 zTTPz|FMtqr{m!@@qxIyn-FBt~Bkv3v)VYk&i0fGpe`i2Vhs`gpj@3C%%e1%a2c0|t zalmSiO4B5Lljx$R@hEu|R-kdIA|j5HrXQ?g(i$QS`8Hk293P9=m%2fPK;|6?G_)Cb z7sH3+YtQ{LshGz#>!k;A-Ac*=U1fYFL$0FqB%V$Lo(j>gh}zHzLiO-@Fc^gP5S>ad ze@`cWZIMbcYSvA7DhuBOO>>gu$V-TBM+S_I4J(HRX<%hRWJ@F9jggG?o)by{LjNH4 z73vFj8A*cSLX@D@1}wk$qftI7WWPxrkT%iQ7KY3BBOG946k7%NY_WeS7x$}(5!dKh zm4}~}MQ^wNWeC#3QEELwUd;MDZ;Q~@P{_g{t8AaF3j8m@{IxGR#DDZ%g(ZmE9WQ!F zjZw&UR$i(BQBtD@wDiUA(T#J@#n?F>?WT#Y@5XP1om!i_fBNp&-Ni17N3_w_3Ei-^ef?3EwBPu0&No%Z! zDBm)gMvW>Ah0rKra(tZ%FP6NadsNnfR+py_MWZy{=x^{?3Jf7dyRRoMzzESy;}&Fk z219KI8@lVp!O^(+#mOL*Fh{v|Ui%CD?W4%ht)Ea-ri|FxrofBk4MFb{yaO)cXTuoW zOLiT);9>p$zL1815y6l-+vtdD@jGCw2%OA>sxX8=%a`215m4f2r_uBK+h*h1rsXVS zNL$4lVJr%E$JP^G#XeHt7>en(d8bJ2huswxT?n4B|Mx47Nvmgk930q|loKe%Gn&Ew zAXWg&j?l&rZ+Zb{AiR!v#d;NZQ!6*{QCUZ8zC|qG<|qF5l`RTUaZKZWHZYVSQBPDl%Of>z?+YU3 z3ltjS^?x{s83sMCU6Kjed>ZSM&nzx^qjCKBL^La0ma;B88 z#e(nm`@eFsGzTv&I(~PnGg;_=qnV+A0H)y&B|qb{F9ETI4<)WH_PX%eq?yg=AYBir zduB&3`gsIx25*)|?a-!gKljQk8-|q+8+JIo7sx#UXT1oPiGF>mddqGCkmz!XxnT77 z-eIF!p%&>i9@h%ngC2rM7D+@l@UMuJgYn^Xr9U+mspGt}To-=i;S`)xt;O7$0LX6! zu@(=3ow&te^4N3Bv^l`ems*SoyOSB2uRtN*RQ2-IZ|Ln2b?QgM48bVxF1!tT$pDX) z%^ILr%8~Z3E#+Uc#K*?E4OMjU0)1E%sm~;#(zvqg>4&+ z5*`LnA|MvR6TyT+lQ|we2T9QrHa`U(fN0DOz(v#m00*C1Bs?O*Tu02Qrx+Yc(!fax zEXX^*8p(qgIf)DK`gZ>z#P_k2xt?B+J5FEU_xu1t!#1n=D)e7F>tWrn)RIrXLa<=_ z`1l^t3gb){e4`Wo;0rv!v$HAhGTam4>JZf=k@AZe?_-B6zd#@}x@vBrJGJ{hl>+ox zj)uIttS4!L6_L9fj}XJQ1vuapk$ye_**&Dp*3C$m z!V1t}Y2Ar{)H5Y18AIPGP6~VykbHRGV;w{{MiqK_ zZjOdDMj5i>0A;NlOX$OF6X591R(kuoICgmOm@M{aw$C-XVZK{>PxqT#KdhHKU?lr6~O+uNT*SvY|HT zr9bk#nJsP}sz0AAcn;3c2hGlW`Qvg{{;No#UTK;b$v5P)vfeD#*=Xy#vYhdt`^IVF zbNhKO=8VAopL<6wh0^;kvF2QJuIf-yJrbxvR7CxnfZqz&+xoM44uXVZw(fvln+<`+ z7YVj#&asaykDr_^5%hiiutMD2$+b^!B?)U z&}di^1N5#%(MZbMDV?e8hr(*X!S5BRL)BE-@8%aMXpzS2tn2? z%asq^m|4~RUDIccHsz(SPc)u1Y>V4!?FC)+a5tQd887w8N+&!vYTDwGfqeh{@(%aX zG-kl>w&3emCx^y)WUrY*5;7#5>#vT3&wgad^_ZnPxDf?9RejI&-7NNg_FZluo9>O} z=fGp^Eo=%(-*5bNo-U_9ss_|DX=zL)-InKA)w5fbHxHg=_Vx^aJ$cU3x+FE#M(aJ( zrt2qp1_YJq_k!EmhR_qFjwiHG_tSdlas#&;wmz{z%w$O^z?nr%S1VIG@V+Z0KNZ>t ziYw|%jDqaAWImg3Y0JJufI~wUZ_1&~@AKcSzt?AO4h)D@q;4-%-!&{mQp@3E$D`px zc;kS2wfV4*v!duWp#<3MfZi~opHke7nFAw}3jaJN8+z~}qR)9$^T+ z$c)Pf+MOmb>prFQ*RfS-o2?z6r3C*RvYd3SV+Dh%RtR+E8NFYIT5>cJqoJ&k<3($^ z>je`VLqzy}M73-`0cVZ87JLbAk}b8DjJaE{9hI#p{bcLF33k z5l`tAi$%7{nfe`14m@daxQO5_oy@~bWFOTUG@8<4Ma69BQeDdm2H~4ozGo{-Jar7j zRxX<-E!RiK5_{@bkG$u;FT7sM8f+}vWJO@ec4F>vRe|izgXOvTq(lrk+H4l8Ze!=> z2!+ty{Z10iY|>6!EHbO?Y}5vMJ)PkB5KN^dj6xNBLe|WHL)AY-%df%O!Pu!lg?q`g z&mSZ3I^w+NWze6z{lob{AkPKLUIC2l@(u##uhGldpf61YnEi}A7u-($+n(lSCe!yy z;+VtkW5tLg2#ZDC>NTp2w5tNSAHX5RZ1NCCARwC=kjRp-fCgn-ThLvTH_}!LPods8 z-W)xgOXv4)yNpQorW8PU$8C@O7L+0k+6Plnjx7n z>~%FeHtgEiEc%B3NJh~;As5K~1 zNmGLj)%bfiDG>>r(l86WpMGnB`0x;x{l7>7OidvmX^0g_lEl)Z~0VIp|iq z=C|dlg7?73Wxn*F#yJqTP3&ux9uDRX7c-$WE>WuXXd`SIu`78=PM~A>3cr&fIt)XV zy+_z)M0kvi&T!lejw8RYTQRIey)frGVIFn0p&7h6@*Y?9K7cG}tLAxRbBa35eV$8DK1%Uy~crt$v+q z>c`$mzWL^A`ITnZ&-YsHs!Ya61e7Bh4#d&=T$3}vaKbemxplmIb+i|NsjMNn+~3xd z!0B!H-kwNv#Gw<@Yw=L)Wlax#Nm-461`V`oU*ioGPF?sr?;d(xWvgWIy`cTkK;9)| zqSr)%a^mjEna@c5OC3s`pyoYHE<$eoP|6l@Q6qYgE4il9%f`32M_}J9PQRg2{ko5R5 zn>*x`YsPQuqbDULj7|m3hbNp&%b?#OP-H*cmVnsYYB0sriH`w&5*-!t^yO_iA&`Sp z^p1j-F@LoNe&B2)(GUxH#Ec%oudO3jMk!>g#oUjD4(-qq+8>2S+?MbYLgMrzIX7ofefC@pBpSx;{FTm zl(=Nc6Lk*hHFiH%IWKm)Eq_V~KJzM(&vf!!sv@FK?8pszHAKtEx>D8n2Syd)<`Y2r zy)5K15f=}Jg^21f+(B3ND{MqqPC3F*3e(bk}FLSZ&@7xHY#s_IVdSJ65 z;~jmv-!D0KB@=hAb7ws!Mpu#;&TRZifQ=e!AV@F)kpEy-#0_>JL{cL8&o%z5-nVRtD zgS~it0*F5Z(qrduNm9agBg{0aB69)m`S`1f&tO?9Zg*u#V!C|Z<`ZT*c=r>7hqx~V z4$>AsPuQfl%(&qiDfa(Rkz~b^i`l-*@>m7hmybOtb1^u+Hh6^<5@x#G;ROJ+g)aiU#H;6n>@c7$2!4>lFI41J<)lJOKgio*`@Z!qxy5X z+$(y0{5d>j=}XA=gc&cjO7;fy(tFG!GGWLEvheI+Tw;%T7{kASk8m%!xa}siN}I&L zm^6d6M8EvCLuWauV@xpS7nqT3_;LQRmIlv@l5d>4hq#AM1vGoG2wH5+4IE(5NdI-E)-lsc_h6K_Xcvai0(zft5udry{q} z8aMHc#c!eb;QC@OPXWoo9IsnPqmh#~lq6T@$zYs+T+CJgfSMG5bDuQq~T z>8T(>=ozo@Efm~FltuR8X9w71N@QdE+VY$4PFrC}Zs`@aZSVqU8`YNBzcV-9D@QY> zcIG{rahSp4{>4db%GaOYnE6slZ6r>S#85%KFMV*(gzznb{C`@2s__rYE!q5iSm#*2 zsvTJnO(b@UuMmC`XJ^_v`St{Hp`X)ee7jW31+zzl+;)^4i=D)5(AgXX88@~~+c;C- zQB#$>n$$C?M`2JxN>N(A`DhZ&fR(c~*SS-(jSN+Mw;t{{G949BbM0A=KFxNlGGb7vx~*5s?+C~B_w#8~p0yVGt} z)H-^dgUbt^zv-vd2*|IVcFP+bT6k@?>N%TqnpGt0gYG_+6l(1_v9ZJ!lG&O z?nr`vCbUpQ<7DlJvE7VOKXpcjNhPA%UuWIT7&(C2qy2zh!CN#c9d@%y$3iF;q3P! zlv+5e?$a<>QD&k7ktbemH&8Ia-s|NaLdq`Dw>TziVuApf>Z{DPtBJu<99S?2Xk=3qgP}ssN8WT*@WCgirJ0rJ(0M1(*BNV#ZGsYV zOjA-wp%$&uxOrSnk4O*r7r77tk7g`m&5nFNa*#AvkgwR35E*zrn#@X?helCwTSmPe z^G&fY0{-RaDEv3ENqZLBHib)`KQfqQx$oPE#Smva3LUCtJgdNB$f7v6Qi=rXHxV&r zF>6UC<@t#>^FT-0@LJj%NzoLCPBj$dRP(S31((@p%t@K7Wjrq?(Zja`bO{Cok$b~H zW;+6W8a)+Y#p7d{Og5@aM|dyYW$7@r{zfe0l5h7!xrwPS=L_Sr1XccpEaQ9zt|N- zVs!1V0Cig9u;+_bM1mR)XF%a!d4Zxp)0jjcnXLg; zGMd*DOPS&H1K)MU{UMTA$fK;)ryB0-J>;q_BxI3J3-?NBD1$JI2HW8)4NoIi;yRLc z#xR-iGR~V!_aDCEQam{jSv9b}CQd!cFax&uXVJukhd8?qhU%A^q6-ny9p}05Ixz_0 zubAiQEJ25q*2R{@FkNH}vvz$K?$2LRdNG-lRPP-vyk?_Vj8J_3_#N?_LBeh%L*+df04uTGZ?M`-C+KvmCGx)?h zt-akD&!A&nOYU#Gx&ny(xWN>c`}S!cyX#@-H`tC#a#^WWoo{x6gO4OP1t1Bf1~IZ8 zw4Vm+IPXewYM^aH%x7!oH77<=LJ}c=w8po8e1M!3r(;cG8W>KC4yYtU(3<}|kN1Litkytb}ajo5aYp)c}=xieq7%Oy&g zU2o7&$Ij&iXW-L@De2Abw=F+h9@K=@lua-l%oZ&tRUW6Da4+NE7Hau?SQ+6Ebjuy2 zbi8W?0a>tEiDG;^LA7+!Mf8R2^1JMs$h9sxJ3Ah4?`XX9oTQNIEdsSTF1xn-rcyND zoNYLL-K+(r52;3}<+O^b*5M-i#{yPBBamlt;WpmaBXri{;X6rpyxwU(?h=Qm6VIN7 zK91i|yIOvl^?eA}XLNX|nkGgut{$%Pf@s{%}>#GVX>UUZ3s#N zvbS0RZee}v=Sf<&d+0jp_5Pt}1D8s=hb%CHb3ED$kxyjM ziQ`$){CL~Umd18Ci3GCbvtO%Gy>xr&8YPJXxjr5zcKf-UtA2-+m!9y$dA(!LLIkC_ zIX17SO`EyG(*8aqqh|!hTiCp=;uyI0-ko;pxdmPWo;(Fnug1qOu(8Tm*5^U>(}Xc` zT!s+sU=YD{C`K*kYvYwjbi{p7iOJeNa!ed_&=TPD`tRVOUg^!5WKm|ht&EEOfaOTJ zZFhXi#a^U6pKP$bAM>$9klL%5ppDKxI?6}#`EzCCULRYwy$3U2c>3%5f%ajZngUGUQ zGX|qdrxT}Sh?h=hDE$%26)vrr%bhDzgX66TW)=9d&uB+Z^-8h-2sUBd#`#U> zK^Qt$_`2z=P_$Ouv|l;=BYL-IMM%H$5Jslwqlm{Sht{mVdz*vu8MiZ z8JS%1B4D|0Qe_@?Fp_Z-HD7YC92fP$ki!L;w^yX+!aG1`;*VObW!du6K{XRa$eq5F z#jeTcrN6rG*H7mFT1#LCkJgu6S@p==+73=&`Sm~^at1w&#yU5%U4Sb`W5q*+FhF5D zLC05E19on^16l@>*UIN?D?Iv~OM|c7P-?hHTok@$`q%3#@T@Cn# zR%`&d;fjT8Rq<^~s~Ub5;Xcse{1`d0Hq4`B6Cr9@e9vN~7zO&+V#%Q3G*WGErV*Bt zg4*pbR%~4+PW`O<%5+f)^ zd5jt+UDHFVNtnf=^_(E>iky8Ui=cbfDNN7q;3PjbQ;149_39c# zS2LEOXV$GyqYml3N^faUMRvM?1jb&VQF?YWxpkAr6zB@9=L>G&*dQ)^4b2*uHPMP; zsCe}C%JiNUiDHC9p3Ci^CmQrkNM7_D_k{?N+mB`D8-}jTe5#b=CUIHp2tRm>A}oX2 z$?2UjlRkX(!XSLk!frh@GtxDRY2>>TGl?`=7wM^> zy>F7^D;yE`7fV`#`~o!X>|h-sW;eojJJrc$uZh_`mm~>CTs1}2)IQZ*r!zf z;6&9qpY04l9-xMP(!LFfR1kdu>p2sA{D9Y{Ist zdpF^th|t)W+XYD9$?Ro?S5vo&)@=gfvzI_spi$N$4>=5Uxhir;1sn-B`9)Y>6xZ8H z6*Y3Ape$7mIxD47R-<7av&VE!`(^o2SPSR%WdNDnIcw&0FjF~6Prdk}%u^hc+FobZ zd*2p2S9J6$H<8$#Y?ag#D|+NSENX{hf+*v-A03bo!w6Lhsr%@QMqqT&)e0d>BJ)bA zL!x?1Gv#@yX3)Q&j=+Npy)6B6odq#ca?D{VfsFqGDv4| zT>#YuDfs~hOdTmAa=7&+b<(_F4%12}vW6fjyYNHxS$cFK1RnwmDGqo6>0IG=w8kS$ z9S_$!3S1qOPm-5bI-3c4d1Vk66R4|kW9}2M$P+sd!jkeF@ruv z$jf-&NUqx!DyjzZe1o;ji}5ZmWC}!7O+$-WAPQkvMGIh-LK`D4Y@Z~5YZsVPAzZ34 z7vzBV@u~nlt7-FlhaemjclDIwR^lXIdpvnDnFQggWRNxr7v{wY%yzPs3C(!sp#>#S zr3C0y1;i37dFfluacvq5*d*V;6@|Fo!&aP~aeLP~S=!5mq&x@2Y!+BOj@10<13K(RlZqZNdmmKxkZ5IFMiB6( zf#KCq9tX-8K#M@52fP-Vfd8WBb<*W*vMFAzET7X%Jx{yy*5VUb63Wg*<5^|^M5Wf5 zj_>_?_Xpd@Al}QioIHowz!Jaj0^MN;G^Q<&x|gpLLnUtJuM4?cEaXmMX<|isUA{e1 zOo+8a0Irz?zl2;5upC+`2Y08pZ+6SJX9olQ(E6JSYd*TU$VW9I3B(8jSucYeU9zwA zZUjIxJuJeE?QSp=*!rJvEONle7~t#wfA)ySJmmkV#f2y0X3E)hdQS69lVSiWdf)k zN|kATO9;4d?FdIY1Jr8?3t^=Xx!}ejy(0>4N%$&pwGj~#A{Y2mK{58bU4@G`Vt}rnEZqeANX}-}r8%iUP23KWua2)xFxX2XL7^mre$h6{=`D1Nx z4k1-P=sq+$(7aR1mD2eUOPmO#G}pcoo_Y?=#PIJUi3>{a-*#2lqRp$6)h~JQn84$4 z*i{d*J%@bdqCWTX2*<*nVZM3dQ$tfA{cL$$G>po<%Uoo9HhnV9rY~uR<9f9BgM-aLB%SsDcVuD`C`UNi$Fpt;x z!RcWM*kFYd?I!nVaK* z{fJRyX;Pkn06!D7%aICUPmY>Ja>=ZQYM+Jc73NhQS= zR95S)xxpgyg-Iq_BbIqq43Y08fTb>C19>jQSUasdUu`BAheTdm@EtRCfIXI1n02L9 z@J<2J$9aiR$(w9lJUB?l;ZSKn+n@4jLB9CqI}xi!N%*;!Kd42_FO}=ORoAoAdB2x2 zI`?7J5nLBA{P~y-&im;PBjT+_z;s4{OWea3+eS zk~b~*(Z6?L(3g-TAm_^3;GZGZ#fd-`zbi;=04s<@5tx+*9^eO-CaJ$0-Jg{oX|<<* z`IPYD8@}-}Tvwo9LU>OUQ6#uSU*R_G)>9>-&FFDbm`1>R$)6mE3PoggztXTykj`M`Bz{h-ME%R+&`L7P*24$ zFGqVHDI}C{fF`%q0r@yC%S2A;M2@DjoV-k%Jx7we$a$a5$8)n0AA(tgMNBR{2$UWboaP^bLI)KIfO6~?PN`<) zw{q`YsqqCYiQcT_jG{88cmlT-e=vDGySA4aoD^&n;&P8cY2rGdb>_VM4hY-)`eJb< zuazfWBz53azf~ADRZU{{hY%7^8@O&SiZ{jP#4H%2GvexnB>c{O+o|N^(arD{1Dxro z#KJN2dY`ryD8YBNRefJ`IqY;eQQOnMTagA+{)XMMtMTyha@(^ioMfGq`g1jF5^cx} ztxwhsyC0ixFPksJmRni{PYy+B%sJD(EI?6N)3Hy;lKIb(16dJ`+nIn+l&Y)K{D_Hw z381f~1iOJ$1XYb&kBwL{!MPMpM+)}x9ZVn-PONtYeVy_RY?|}#7`VY^CIB@6x>>Iu z0Qi(DQ!>oxB048ueavW%p!9ELVb|VdIsqO{Jg*uz;tu>aG9&a)#F05 z-m_lLX#BCd{r*XrGW3GWStn;4hJoi&Zz&|2_hh60bD3raY+0&GWu9Zx}_7rtMb!|@ccBQEeR>g2y$5jSK{H>@r6yY<-LK5<;TSYJlF(q*}kqe;a z0fyXY5mt>hO^#P?PCjyOOrnUL0<>BPn$){lMky4fHMB=MCpiabN%=4rgKdx|S;Yux zmoLVSX(83cOq$)j#hBcDB)7&r(Ml5M67=yw#odBYZQ%^Oo)ilFEe{7XWl%wf&} zY8-j~R-*AvpgJfFC~XX7oS*8OW0G!zjTEZ$a6wp$B${bm&qFL!So>M1(qM?#ATkmSMI%^eg znlD3|ttDWYzN=k7@b2?W4oy6v#h=BR9~jvSf3`uv)rUsMVQk*Zu4LWK42SB7T_WJn zMMr82_lMjvisr@8$+jO@HNZ6iV|-`!2(-Ca%?1Dl3ed6%m`806k7^M^NBC!XDu^@Ei|?s~~ja@ zE{1E2PljvWY2bla4ZE)tK!xY{oly!49#4JeYpmripxr%tn}1EQKc1i2&H8)##Sl2A z-WP%Li}IGW>3X^Avm(cy`;Cx}>77Rlb3OMmtFfZ9pn0;;<1CV~na=%H+e>J#v%=DC(Dg!bby?5l}wO+aVHH&M_mQ22p` zu0x`pEa6o7E3oGv`Cw#m$A0=$B<58%L~!pAMb7)1tJS}lIcjAqWlI7rGE7D|B(RD} z;q6{XOqn(d#zjMbH!&-|kUck%W;2txRFarM@WN5H9-EjIgbD2X;%tnoo&=EY*Axe` z+APbZy?2A^&6=-APqV%(n0lE_c@lcpRP@Y6-WOCXBvqGO(gB?v7HPt#%&RxHzkBG) z#Id;*xjjU(`?^nYa{C(e*#3AL1bkum_lw`ApH8+=J2Ys#`%GL z`oIsgy7(cah^o$@i|#BUjaJ~F1YkO1zOC~L^7EW2g%m!Jx#YKW+8+S=0~8Y3wKyYA z`ex-5KR>8w-}5}e9Mu@tYHC9nrbLh_ zl8;0!K*~qIz=qVN74N2%PoziM#m*>cF_|-Khb3vo+E{)Sut$G$@JJXKP-DA#x=fGz zmdXfSjl-amVJVIA!4>oI3p#@st?a`UBq7&+9P`x9s2?;i^USpSbL{PO-}{j~2pe9Y zp~OTaXlt`?Ya|=bW4@9s&ru5fo3HMmXP%mXLZl1A^CX55s&1HrDoibfSP$Mrc^pdg zM#PDj46GGyOm}5e{(2`W?3+skryQgbaltj%+S{q*Q#%nh-isFrfCfSbMr*%-Y6s(zYC3AUvuPr5ixz6) zbjZPT^LouO2bl}O5Qy#+oPx9Y4wG66nKbwPuH7wv01*!OQ-U!>0FjF@i)79B=JB8v z%%x(=^gu*8rqCFU0OS-FoMpQXcyq4n9OFACiW?57%g`2e2cYze7-&-JX>?qOas8r8 z$G&m0j!TXVS0a9Y)gMNF7Du1__>G#__-=RdxGC;$-s9RfuQVwveks!x&jBjdYFSPB zb`AsXr3zFGdd-GuwM%m#naP0J64~V1aOWv@y_e0iq4!-!pl+>%2|C zGUpZ86|F?vNQk(QQmX*ql8(!)30&Mb!(M9gs2ee3{!8ex?L?o6KUe^P(U4d6VV$}5 zSh9q0vY=ZsI^wJT+z{4+epKmEDpoBwTgbR8TWLImu3D4&e1T>K`8GQg;HV6JjoYPcSVBtdo z1?k+eJIW`4x&cMbwF#?1KqU#0HW)j%0$MX?9*$Ckyh`P;Cvj+7XmpH)lYeR6x6W&W zKT7TtPX?cDn6EU;7(TUKGDv`7O?V?;-Jv*ixmFP)fnwO399vC~bG9p^h=>wYQ47O` zY@u2_Jctq;LfUATnLAhlV1vly?ZNB}*2kj{%YeGRZhV|K%AGG?7mq2Q7T5vMune!$ zJ_~1JgY|Gs|43p{vksJ-sG@ykocvA@j9i<%MasqWs2mNY70ZyTl3Hq1Hfzay)ku}I zf0O!?Sbdr3;SG#?Yxwd=W`vvy4Mg{X4A>qz}3Pu3(owtT$qRYgg>!` z8Z}7>k=Lm`5c-5HmFDJ4m~>2W%P}k+5UBfnOhF1i*&yhFGPIUU=4Fs$hVzt$LTbE1Zk0ScHC~RhrMiXeXzy%1x)@AQ zj@5e7SCUx`x}QixRFIRKR3+X9#J)*=Yo2XK$ah>>&BMh{%BxJ(Yl24yK-+`C_sd>} zjz5I`5jPq_`+eFAne_5@nCxlag_Fz&Z;H}-gmjQ{@d-jyBOzel6$jS{c#d(N1oeie zYkefeuCTs*(XMdPWB=^E9f0wKj@c8rKfa@`>xU*kG@Av7hu;z z6eTN(YP!YY5E|$=mAQ>AtJf_XvD`k8D?Lb;g)80fe%vLX#O+=SZf0hmCpl}_H2>Mc z1Mx53D8v+nP#Wvb_C}3aLqQWAp*l2=QTqslQeQ5*>iOWWimo*jFr0EdJzlk%>4K

@7=5>1@Zv?KzYVV?zkz zL+%-JDuXfP5T7Uhiz-p>Zn&z}adq|feT0WO2Q)`|TmQ26Ji zEQn9TBbmBlPE??BTq{4wkeUJ!9S4NTGvb_HYs;>gY%LeRg~tNFqRqMsbR)FkJY zHTX4@KLA0KK)>uZ8w-d5eo{ZD;Y(fqowShF`pLFPYdsjx-@TeQ?7yB+0fxu~lkn&< zr=@y`b9D~Mr?Iy3Rw$$0FtC~P)>X*(1;_QNQR(pOuR1PY_upGam$?9odCTe{b-D~c zQH?pJs4xE%76126Ptl0a>1Nr|)3WIzpg+lIbkL`}rKl28|3cXyjt2Xj(xj6E!|&U( z4?z6UoV&Cz5*6eBSmi%-n9m-*?_SHjA@G5ODpO4v$X(05ONJ!>oUMP#*`l4o-p5g} zA|)GL;(T{q)?ZN|%@C77ZRAx-cy~(i|7GU?$4=GGl@!W>=6~{yf0pz6g)jA!LsK}$ z3JCPSi~rBN@!aoiKAssF{@3BPF24nGN5%*E&o%X*3hnP1e3Ya<*(@bIZKZ#8IQ;)V z{r_6w?=VQgf`qtHWPXtKoq0f8gA&?G;ipLp6>OX+k&mrY&&6vNU+&D{K6|N5Z4&lm zp-Umc?13O>1CCj6p4@x3&RQZ96lcMDw$gOHS~7&z#t)}Y!pqm}-jZ7>WOSI-ZRWSE z7f&1#$ERR(w#(Yd%wLBh1iQ0PV1j9wkmmWM5bvJ&=}zw+F*89Gf=MbJCJ4q(uCkuM zzAeXuk_-&Hc~!O@=SQt?G})a9t>LAxjAf?cT|FOjWn3RWA1^mMKD|c@Ej_Wn>#$8f z)Y4QzP8UicI&a@F)U+FFqrrjp5NM2J(r8v}MD_1IGqJe-k&53NE@H4Akk%A{4f_zF-LJSJ0# z_6#J~)z!@-!dc!oH8mwusX~VSZqE>?-}R_H;$1OD!jjN@#K`rlx>r_32N1X z;!Eab-@j^TS3Du z9vK=Qzu9y4ZO1>iPNs!b;2MJ5B%s5F+CyuYARmPWW!9)>9-ufjGsUOP*k#tcN=@>P zex1{+8y(!~HyK{_=W&rYSBH;CnUBp?IFrNr&MQgMDQuW7;kx>u06^#Ed z*3`G?E3ORaPaI~sq=JfuM&4(v(LMKy$Kz$qgpp*s%QkC&$=67_)iD&no2j=x zp)lq4r-X?_Pz;C+QC<|7kf2A=#}hPd`!hvlRFvI@7!jw9&r-4cK^Q0Z^6e-1@&4Jb zynk?jhK9C7Tkq@ZdwhKS*<%MYD;$naz=YdymWMm0tMOo9fR7MzT2Z><%4JRUtL=KP zil>hq+{~|~7$_6B=xuz(?P1<*UDVlqAx%P>oUi3Ly2ojuh_!qk8!1=4wOLK;`5Nmb zG5m~WE5}k>Tj6~Pt3|nte69I@6Af$l-h!NV&AO6lAk}Wpo4~W;Vs6Zh5OE``{A`je zeO6h@jHBo{q4I<8XjKGvqtd2kE1drB9k5?Xaxj?5xt2gTrZTg~m z?FafrgBKZStLaWRINZ+&I`HH;3e=4C(X_qMdNKwm6E$2Pw7c%^ZhiPUmJwVT^}uqY zqoedxbn33D^5dgyohtvW72V|JKI*B;{k2mEgU&0v zwuQ2T^UBn*0vH_h+(KWH3cbnU6L)R-@TTA47nK??(&PKv2#uPuaXY_q|3~Ec^p( z`RWT>J%MRXYw8NXmb&7i>{ht1U-$=C14 z_C|b@)ZW%=C#IkKp}5Ddpey4bJ|$z1FUp%5<@M~9Ppj=Z%=(N5_qHOt}pm~9VY2ty7ZSCXUidCDh=&ZssgHr^UG@&@zsQB+C_;E?;by_-mK8tAD}zP zR;wz%qQimsCJ9p6_MVYom5lG|E6;y_-D%T)a(}Pt@rq>E)v|JZAWxj08Nv6?KOwBE z^Vv~M4XaaruBUvn-$_1O-rL(fg`S_=ckXd;_?a(qsYF(yU2&IbIrj9hVgy5lu~;JE z=vnAG)g5PEeRmtOF{zP5W^!Y*qQ^w;mPtmqc>ZQHLJWtF7X7skPT~W}tqcFwZyDw# zH;_@OR??D2RpE^jZu``(;f%Mjsg_4f+!fH z@K?<9M7w_KR7*Hjs(?rq0K~p|*A*8FO=rz5?H*q^hWO|XZ=Np!o`wP^;Nx-LpV@P5?Wze_@#PTlv4uCY zfuG$i9ygh)P26RdbZ1)BS$Sp}$(a;QW~GXoo53b_U+(cPUD`ga;!OxGBWj`HtAwiR z6Yu+7EC*V)j`hMhx7X`T+>93kGcRowXmnleHcMsiI|@=m0`(D}Kt}OYBOuB%28C}& z(kg^ww1eSzn#;%AL&xX8J}CCx=Trw#TImjeM$}oX`~eXqxNQ?nr3deOE?@MxDQjX< zQ~=p$^f(K;Qy`VLB5_P=xt5lyZN5C@j=N#IOLh_^&^lL1Y@#IHiCrpaMCw-C+U+{S zi@mIXEF2G%`QQe;(n4ZYlyA&>OO0mq1-Vr4dktF83CVA`I1fHLo{YKdC% zX#1xJ8kOe%V(%@3;tIZf(F90HLVy6lg9LYi2OS6yT!K5n-Q9)|g1ZjxuE8CGySol9 zgG_Lkftkm7RrkGfPyYAI`~1Fi?OnTi_pjGl-Ce!3j5VvR*|k}<)Foo`O7|A!%ttPy zI$h8s^X0PA+$Zg<2^z&ipkK4Q4hX zwXRRJy896GlIFK_kkWz&`(f6j2r8hZJ(y$sG?P@uXdTncg=+)D^Qj=Oa!k?WU+^-}wh1##e51+3GC0u@wv}h&& zLWOZBXCnf;Ei?SS-cg6XesStT0f!5EbkrRM{nVQtDnI^`4>RzaeWAqW3k`wVd*Afm z`tuylMaW%DUYK^HFq}R1xPM$)RcfUbGTJgD%a}BBpOkm=ZXmmKjv)glsow^4bs8J) z@q{o@@h=}6Et8xl{;FeI*~3SNpqu0SP`g39y6URL2Y1LE4QGXTc(w{mU~VpZ7-{1- zB17)7w)D*5f{pZ?_D-}_r{4zDGFN`_LnLFfw2mNV>GblPCdiY)qhmm;ype z*lh3LQaQr!47>_>)@9N}d>f>)SH+Q*{A6rGK>1YOX-~u_?154m?}0+O>tl71?i8E? zalksp*W(R_p!+XFcpqMu(_ONp$qM=o(SxKESi$LJB4zn`Kz_RRqG8hD z>BKHjCx3^FlSjFY4WeVJ%y(OYkrPk4+pS;?@>2=C6Y^OV;NcD#@0nbYk4tWL30HF! zD|S8S?0Bss^zF}m7?ZMde}Tx(HE@Vz;$(3_+i$C};Pf+<`wMI#rpc)`PBiz$WWBti z&3T%GZ-Agim%!Rk?+KR;DpdxPOZ0#RF1V7vphe&2FrPtSlGy{$(48QybqUdNGLBDC zLCRC_-^7+Vv;C4?IdzfWmAp)TwO&`WaRc2!VMtljW;GrvG{u= z=-iDi`=DR4`UK$k&bVI~@DLM#3frk^FKTojF0b~xn;v}19K*CnIrmm!wF~*D%g}c( zIlZ%zikD?Jfl9+0f=yChhQFj;j?Rew6HDIbzicii>urP~70(kF>dZ!y3*|sP60aaJ z*Cjk;vvytJ^o=6a1<7F2j=f*!Y%%Tw=aCNx;Oxf~_|+&Tz|$Nw!LP+7CbT9x>P8cN z6liQG5Tjv0n0D@T)aVU`@+A#^^M9wV*G0Q+o*O@%{eyliH4q-|nesfSFrP;#AY8%V zWZ0gJ$x^k*b~gtZPEVaUc5}7+Y6h(hk}Jriq@bYOzC_cc26X=IKFQhvtS>tmr@juk zXwUqqB}Kj6(SGX%Jzf9d?rPRG9pl%YSJv4{Dd=z7RFzFuGIZg6`=L_5>Gn>$Lw{a; z`~yM%O;wEuL%f&5a@I46h?%GZ32-G}{}M^TX5CqkS9-t6bnSehCXLOz-a+}PlQvcrPI~{Ct&^;@%V<-)<}ahX9JZ zdFKj`KO;NP_Z^4wyxoa~$*VjsDn-kiKGS|J!aaNNQefh9#e;6!cX*QkKu@GC{^Ri3V3`mvnG ztCYbIy+VS5oBheWjECuq#A=4{Z`n2;#QIg*e$vb&KDMRBMv2=IGZW)RflhV_^%v|O zWbNt7p#LHPxcEgaw?t%Hsocs6{j2Qr9aehLpD|f3ANbA)&ZDJIEv6C~{r1NrIvph1 z3F%lfYXq$Yh?iMX7b6A{VAr&t4Z-RMsu-e!fW$Lxb9QG z{$WPe%tbHR3Vt`o-h#tAY!>;okHaFY`bYmV3#+zk)Xrd25`qdVX0E-a1xjpS*>Z;et_R?YOE>-CXj;-K@3? zFhmzjS+3_Ibpr^h^AwV5xiwO1DUW8ohw)7sBRb#k)oRtD*i>$}gn*|!R_@NzB`u17 zz8ZJfa0N9veLiWAYy83H?6OC%@6vj3cL4x&icErHXa}qV-SS%_nI_nP$Unyo*BiN+ zut zS{hBc)`0id=MrV(M7FEAs;G4x=7-)J&@otsF8Rezc&qCS@SbI;ytEu!q6Yz4sbI&N zL+qAk!f!-Wa9GM;WhKyehHkYU?L?Nu;>~mA9ng{BbqA?q*m6#7OLSH7*7IRL-Fvn|6@?TH1H^x76jYtUe#^f=MWlW2-|h5zUAd6m-Za2_PO! z>C;J6Tjz8e>io7YpSXHbGA+m)SfDm*v*757!O(d@-reh}t-V~Pw3vK$U)u=PG|t9O zNR<8JC`3kDJh`WU@>34)<*S8PFQ%ozYWeTN`1fatp3haIvFPa9&RoO|{C?n&r47{Q zKs7fQ85@*lwK`ysGyX+@X@!V?oiHU<>FPu0gckkP#*a-JfXLxJB(Zz&4<9+I>-eyc znP(K1KNbAWc2R0&AJmWow|kabAivX`=fwAJz;Cwr2->s_X5Ib}7aV9Ua)_Tlz5l(C z)?nh57%_HjZ-3NE5o5&m3hzCE<}Jq{bzspF?EM{v*D!3%p(r4ki8W}dI*jcLx5Sp2 z{z;x|6R`j!mQ~MH&C=F6L1FpOlE)6_>DOb-Ei104;7G2{QQ$N`T!v)PZYlGajK>K? zpPOII7eF7uHlbQN5|+iHC_h=teF{M?DXU^-`Ze?}!xs!?gRO*8D7E55ATl;C6Z@Gr z=|9 zejD_m@O9kV+aWuuuU)^I%kE1WWTmK$E`668Fn{tXMRTj77tY32g%A5r`x?PCnL-Tg%UQ!LY@`Rao zi#^2g@m|>52QS7gIH2Rz+pmp;qTVRu_jOI?tABc?&D;vrb4T=)29;^_Vv_(xaBaCx z&tkUshXzX~4trZRFQe9+njc2<2l@i2 z$~sp4FEu8WdgWvXFw+iGOj#b|S_+_)<#W_|x2Z1TV6tzgLv)DHyMa-@bzv*G zgkP+w|C<=|Aao{<+YPN%>c%On`|o0(^-e7OPRm2h!WVbg+t7kLpW-P!L;emRDNdqq)7zRZs-*N+fcYrhl**iLrbd!m(L ze-KvF&?FP;D67hcD*twIlWF@{Rham>SiYvciZ?LzD+dLWV# zx*Is-d52FU``Dl?mM3N3rIDZh<0SIn9P2dP!WT;LN_?{Yio~EPl7w^fr24HNbQaTU zk8V(OA-$-OE?R&}e^ji=nkmbi-KN_HR!RdKLeHYDvNo&Tj!>(_&M^jiRxIx5gcFZ{ z)^3%FcG$RRA@H^pzL9{9B{&`-9a6wT;#A zUDLSn!EpwDbzt3>vc=yuF{NFp@5g|6@!|V3Id~r#O;sMnex93>y-ju;@})-W$5?#I?hzzIx_k%yh0prbYo8>mBlPbZ4#0J*&4zzUAB0;( zQBa^sVV5OxhmR>LFX*VA*JskjE7I*p^VmKc^^L5G;i9Sf)dzfvnj0_37dMbQg-d&9 zE2ZE;`s08nw;|>G*S~%OW1tCs@F{p`e{a7^$jZ6EdPbk{lLev#o?-LMrmo4A@Rf~M z9*2iY8$^!_*MVo+xxaVu&?#{2GOuSOBd*zdlTE+fGt<4_k;UtWZos#^gcKgNiJ^Omo z@QH#CmHG!>X{~=EPd19j{}eb#y|NW9-0fJvP`&QKuCMIvdUo9) z+vM;F5^Ok6Lk(bmH&CT`9~^t+{QWK)sgtCzDc~x{IMwf*Uv9M%Db_l%a?ue8{Nk)B ze`!=0VK`-eh~1BpWJOBV(r+Ub523x8105hp5yBLO3tVnBZ4u z4d&NUN?pwr2TRNyckbDq4{^^`7?yeus}{!bRo8dsa4hDmN=k0+H!I{AHT5{uGwxbC z2(A=9$}LhJ8)y}Uy`<bnW}vWrapy;?8oG4dO#a{#|pEXzAyKMuy)fJ^v78 z=+7lB8|~(j`+?#4x7~tO^r6m~yucD&>5A|1Dg;q)e=TfHqcl+AbAPm@K&b0pVAM3n zc#E@Wyuh@?16F2wfXGGBlB=~O4^tG}&;9Z+n6y!btjjIJKYL)HMf=mZzqgao<$qzq zVP{z5zsb%8(7u^i+Drkp#RcHQGJ*U>SykzaqOuho%k59)lHQ&o6;)OJk-zgE*4VMt zgl-|L_(}7Dicq(LJgSa0+e!Y{kP`dG-{EfGIb6i?lEsy-t7P4kn$w4))lZhle<#Z? zX19+o5xcUaB64z7!(mID_MW`XnNiY!C>G{g<;K@BMHG@id6*9}-5t1gn$j+{`{ zcjLu>c@&JJIpNFGqw1itP5=Eh2|yW-oMTV1K1}rUQvPNlPG*SuOY15K*S_+2%}#?` z()G12HVEs)RW^B&;??4P5V3yv9!D#Qh2ykjs0FSGSN3a1%GpN1MN+AVl-#huw{Kqv zgU1G8xPIR#ZJG~%2r(Un1q)h^SS~KGQw(2eCNDJkcpL1G%3q_^^omY38)isU++43B zzomtFo&}&woMNzl_UO4A6{vRz;mHDfLH#1VzsA5uegOTzK&YQ8)O}L>W;|LX=$okYO@-cws+dtfZSa6!L990g;;?AGS& zMZa}4txrF)TlxVLb!rkeet_h&8C1hp+=*T*^$C%8%!eHSM&C0~|4M1zydvk`%XJz} zj!H*U?K&+gENOUOE7<2u==q*&(u-ScPlXUu@q45_O*&fmio6i8&!xZ zWkNI0dFPGCzasEQvp*hVt^Q7F8+4XjZt9_BFirkC<6jw&w)hcru6X!cJ!duiimlJp_H?2jEKSN?Ut;sTyNPhoL>5TlbT>O#`pIP*HhXW>!CmCRU{tsi<5rV zTg=;G43Bno?X8*EtP29k%_bamxF{*H!LFiISHJj!FYNp}lR2*VsLgFdde5JgM$5{q z<4n0N)}nO@$e8=@kqAjDeaC+J6Zvo}cgOBc6jPj&lOuJj$|i(dtBxk;F`fEDT8-Rq zz0RIrM1P5S2+B;jykI`u?*9%r9lse_A%f6I_p>1j7U=2u0k551K3ES!Vp9e<0u$LlEEVxoi-r(e0P?;?sBY{04JyIy0c8@4ntV2_kKi*L4MLE9`w240wcc& zTC7Zw3vE9A!k+iznbC2I5#`p}6_cdH3(hRA_c!TmW;9uc!N)4eC7{za-tDWBEcP^e zAyA5iD@qfJVcSl3KJBvKM}G7#0dn4v>+Y@=UZ-(lr|6=nKgndg6#56@H%~5F^MNk` zFa$lYo~a%2#!8Z(xaCVGDA?*OKSiSYJxFt*v3VfL!h%tNbv*+GJ+Z=st&a^RzS!@R zccCOR7cPGlJR9Vy_A|nJs@ZcpM%dqlotNEdo2vj(@33fpo7M5W9Zy-4*M3K3($ir+ z4aG;l}>sWXm)&C@}{F zU_x4cc}V5%%}@>H<+NOTn?KVS{VFD)hk(_H8JCaLr|mua$18=tHCydIb?mG^hx8dJ-aFW>-=vNdDR$g2VXG z6-c<@cv@AJ31D62uf?hcbJa>hWvKX_AZsA2nh;g(LCg;Ovl|&zId^s&$Jf`ABF2dn zG@-`|>7R_Iud@5J2oT_FrbN_)lZkD+9pI(<|rUv=Knzhm1Ps)-00G23wbKQkG}5C6OmY z`Gb-Gv#iLHCXTKF2&zZ>RAI!yn}}+{58bm%^IZWrWM%?8Wk(Q~h9e?Kn?2jX%7Tzy zbX$>0#IFPH>v(x{hv`1n#~d3bg@Z8q-O%JDX3p4KWxFfP?XKe@l+ZuTP&%S`T5kgG zkXwkC)^^Prt7&J|El$3K{iY<-!mZ6$tCVoj&d@IZQBF zo=}(Qd5R9v^%i0Z47Ft%S!9)-dO)TSn_Kzf@XTNt3H9qc(Ryx_*gRC7wxxcYE+ zMsL=m7r&8x^(@oxRsGPKvW4nU24>TQi|1}1F66AQ-Q4ofaW2wdQs2Wpb1jvrIX1 zFlXT+YvOigMX#J%_tk-lNUE*hNeN9x#DKp86D_?{IOwxpcz00x_c7VYv|2W)EIms2 zaFk^nTs~a4lV^XZYH5hk!qsCTp>5KI*Oz0E@z<$(piOl+#vNDn0osf_=q-?>-4#s% zOIQX%aH5anhMG#1M=HEr_OZREEuCVo3khU~@aSjcOMUFYnd;fu-#oJnM@csB$5b!8 zA8g>NQpXT?azQP^sT;EDxt`^KAIJu~bbr^0luO0q>xt;V`_7XU#{$ie3{xK0`IT$w zV2+eMEA6X(;{xN(o3L|7Q_Ha9&&DTjSgCG+aeDQj3+ypgS&sU=!- zYTK>VvB>J-wdc7c={MZvkKbjP&xmzJz&hI6L6ZTw5xv3bh*lV~SKaX2T-J^kg_W%{oqmN$fVX7f}YgwJ;DD1tGlSAyz zb33@XFRx;i6m6Pm_2F%Xq$P*p^rzV*)n<~Y9_i}o*TZNe71e{|64;JDwA%)P|Zd747{-I|^J#{t%8srcr3NiihA#{-34(uo(?ZgI02yr&bbj@HNX z;Y}!8cur{No0pPPXxP5p)N(=^Z$sV;XhuG#$qB2HS}Hj-d@u7(;#(*oL+BR?Nu2li ze0t6hCXmngLpH>u$fqi^!`vbm?0ffnc70xb9(;Cm1S~4kS!Wqo9BmFbx2%eUojt%Q z9)WXsrR#7{Y@{AyM?^Ef2%H7jV&@`nwt!IxU#EMA#|%knDTd*&-!rwiJ-_waUs=Gc z;U|70;>`b5PE;zwXEpk*7N0AbTHYUOZ2(%u^B;5CN2>u%!=VQ-%#Mwhn!*Y!u2-t; zb=y#Ita`#JpJ3gRedhzmx$poKKHpLKhCyIO<{pI=^zB?k?Z`}?;+`&v-`gzS4 zj-f0=$u7fEP6TeBP_vee`4d9aEJZ+U7n(^*a%HzQ%CUy)LrrdI>}8^Fw0xiqrLEp% z_q-Qaw18B0*;=3=?H4S9y%|7G@yZrx!gE%-%S_Yfd?)lddH7^45*a1uk3?!|00h@^ zqr6>!(0AUskM?r->$+qHlggQ5J$aI#)U2{WnM@7ezuz`Wa87lbmRfFqz~Yn*AXHx) z1mZNUWy9-X(<&W!xorhNnKBb>%#mtrFq1zr{pC0MXS$=H81Nq?+XG(}AnIDt9>441hB{2$o%~R! zL-)1yRW)$Qa?jv&tr2t2P;?_|cFq5=C@Wlri40@h{P}Yk6uL^d`w{l0!*XeM8tTL& zByB;KW&A5DyZ+;%@ItpaZPk57X8OCM0|JW?owRVs{?N&?O`A}4;mWV^Mw85=cyr9+e?r&m!{Z*b}bm#f?B3W94yc0B`F40%p z)j@NMYky9J5A}(E#V<32kVBmBmJOrvj+C63V@w-Kyz zk64f6FEF_M|4KRV)A+fIK=kJAgQ9IjACJG4>mhw~UywPtOnkOGIvy>Q%0lqivoSFz zd~{V+ggEC3p&Cp$TZ~rM}Lm#jZnq1X8l%xMMNB)8ceC zyE4>NYsJ4Hg{lZv3>Qj!GY)JE?Ul6dZyBvNimWnQ$@~$6y5N#*2xC$seWi;Cv#%=f zBbPtt4%Z8nA{B~8GC>-_3Nuedg^ z^c_+^H&bvx^gX>U!1XiNTaLnQHp5QxCA#tKsaDUpz~z%)Wr{=#(gI=@Y{>8=Z^A8E zs<~=x@0#b}c5knXw~F%&yVO!!19roQQl0Ahybqa=Y9xkpjOI@2QsdVCU#h?(a&o$+ zW|clw-xV(FRK2el!ELiiI+N=;aZOjC#KzN3^1mU2MU$}Jt5Sg1Oov%v8JP{OA!G@g zZ$D&Y1Xdfr^Ob^Z(ei^)RC~dMdlJhhHD_@2TZ2QPwzSdSY|~0=vAq&Z?)Y*Aq3O6f zU8a zJfV|prqT(Z>+b24iPi3lhu9j8LkBk%YPJCw4*`w8LzJ~uoVL+Do7r0bc&vTl zhs;%-S6{r$Lw^BzZ8ub!O(y$DtFVTcwhIs`f=5h+;3bK*uh()~&6vl&k6^mdI`jwB z_rYS3T1g`;uD(?$8m@ZU#BKL5l4ghFr`zqQoIyhEF0OuO`z|eXH`nHRjS(H2EcxDf z+P-gd!?4aB+KI|3WCQ-dY)qltZ%KFkw830LDV|fGcyCP(=N4MqBh_HK+KpnZJhB<` zBvQjZJILRpMeKhI=b+J7+2hm|l#4SH`-V6(kdMep2iei*^H;?LhGm5bqqKgX_o^lQ zWk))?5`9eXRJ@>Y`UFl@g5eKdrF{d!QE6}P|G+%;`-TvC|T;Kr=J$!_;|h70fx%f?Y8LAcF1|Uz_}tj9CMMWlbZEJkP@tx=i5& zW9c!zPnIiC$sD~(Km0Q@AC%<%D~3kBQkBNtii8@G;H9nZ}0pF|Caf-EAgPo za>lq*K`%Jl4Us^L2Af4izuCDZIpmi(9|dM(Bh!l8n66%d@N(@Gw=9lH z#>Pnn9xjcj!uCSi6->+UG?d1?2hsv%3bb>H@)o(34 z%Ab|hrMS3A*4T?A(w8`dQBS0HVM2rP!(g63bE63BIB(>RG?`{KKvu_fIo3% z;9OeF9qEXaQ21Ey@-2T&wWX_fJ=t-5CA(1y>n98J#M11-xgYDW&E7c8%H5d(w#rW3 zV^?4J*}6{=H$bF8*W6me#Y0Ctrfn;3Vf^-ktP-=FRlU?GEcZxKxU~VU-Z+>(Gc#}c z-Ftt2HN1z=EW<8xZ{QQk1yQx&+_L5=<^6y&c`Z{e@RNTjPz?l{(R9e)ePf7&jF;7y zxzoe|(vSOPc;J1-T{a~a-gYCdm~7F~uh-aG!`HK)$`H8Qe^VBi_OUBx!6EG&jIAkD zYa6)Gp>)4U+JTPk1r*xk|2?Uzre<*0uu!qQ5($h^%2ELctFzVrmr0w$n195*%*61e z_Dl>WKV9FG?zKFwRX1T8_qtcUYg)tM^Z-?Ng{i%AnXHuJkW)0}J`U@;u+m1D%lADEcxgXy%LFiR0xj35{$%6UAuX5iSuyQqg`yz@X5+#( zzu_-il}uJ@reZ!qB||w(Q&U039PCv}*tWrJT)_uO@E>u(( ztInZT1W-934_&SFY}#!Jb*;aKit~?YNOG(K_oJx1qUcJ49*OdRu&PHDeY&*jzah=% zJWSNP>5TIX6WyR3SX0OS^H@Yy=bQ#&{=vsRTUGIF%?Os^B|ag1yrGNWD_5`q2}%Zc zgTR=3Ejz4fd}L13EtBJ|K3Ab1osAQZzcQXVOtPHJoPXBlfaL9ks?+0vW2yo`%Qtp& zU+V5gX1a#wyyiZ~M@4u5@_ZwIVmX0ZlYC6t*kkd@78SpKMMTi=%&DUq7VPb15wNCZ zdz}5KujdxmrNSLg=j&p;4F>BYyEG$-=oU{^n)@~jUL$+@<#uZk?E$E!_}Vqjy2TDE z(oBOmc-|W?#b`=(6L_(+oqwMs?{BNwq6^O*si#nS3gn$sqCjn41yyC4slImq z5dCf|r|o|KB0Ou672ULCq8vd{uoo{z-oznb$cER6N&X;W`dU4eF|%c4L=FJ|Cj6tc zbGc^pUY{1DKr*{BqUS)8_RQHKe=f(={9eW7ai3R>z3LBB8J_QE``_88Ev-&o*xV|T z{!s5-I-{E%0VGa&K(o^TUHFqmn^X5;BhR`%vV8$0e7nAr&8OwBaBz&cU+=o15KcU^ z%NuA;I*dWXYG)%>+@E6as&|-ytQd5FS6h89v#0~x8tq~U=02=w=eY&oS=Yajv7&Ul z#tgOZ*S{j=u1kVdv+)Ae<95F4;HX~|A{z;e9nIZ>z1MA(n25{cyvAc{VOyh`p>box zhtrdZ7o+lffdKD7kOj}Rcrb7!HZN;Dodc#|=%nsXUCeS{*6DiKfAQl7^!6md;)7fl zP3m&3x zk6Jaj?;?y5biF#@jDcSORbxg!&+f#1ZQ1H99+S$ytHLmYS5ChvOqlo+v6nV|i;)fN zj6Z){Ns$mqfj=%T3A-)9p^K`-4S6LM=k+k=EoMs3w+U8j|*7AdDTi8DaQf1@XtQaaW zbDw78-Dh6M)$LV%l}jq#I}FJjLyY$4ll9t{)a4x7@A8mG!XH5X{_|$ylgCY4qYgk3Pc0yi?R>j72!y7hyS3&JKvd!cOl%%^|DC; zv%L08QyZ;PH~nqUN}$y=?mcFwUt1$cpHoePLnE^GJ=bz6wNfGh`hGxJv{&{fi0fTP}g06?LzknLm26la885q5auf36o$IFWg)B4lj zVce%TtA^>eK$(%SHOskUdA7R8M}zU?B!N00m3#df@8sY-QXXl(7aimyeAFM}(`1{2 z?%LDu8d>Iz4e|o;JJuH%7mi&oeEU51@r2UCV_ohONS1xOGHIosUm=iy&VTMI98TjIUmI8QWWg2up` z>X3J-K}`H{`=#TJ-ic~;8@P{g$`fb8KIGY#b5&3eklb~o*~ts#QM2MecwE#u-hT= zt==4*oVrFmTL4aa&M=cyAwut_(O-gLaIK#D@apJ1QJS6%x)o30!z)AB9*pj9dp;T$ z?~Q4|BJ?*~Z84d*(#QSq?t6MPJiW0bdp|yokA$4nLB+FRLzHJue^U-{GA9q$rlpKi zP~HeW{bfn!6d;w(W4K4sJZ2CtOK(yVnOJo4+)#cW_t<)@F}@mx!zY?ar_Rp96P=^y zhNjUoCgJax2rcW^qy77aH;3tYLSx$SsV9HL$BTh z1eIIHSnC_s`)99B!l^b}mMc+JA+rnb%mT_9`(zoxcZup~McFWv7|B(GXx9v#O~_jk zM>?!F=Bu)Md#x`9m@>F^5&2n5UUW_BtiKm{f6(|a?_@oAWI~2%0k5T-*fm>{7bFC$ ziv5{AY^P+gtqqQFG^%3WBo<}HQu|>(yf(g_Xbk*M)uM9KpKeLl#QZXBx(g_ z;9ifCpAP$X3fPd^+KRv|4k^;QzvVUYFrsoSbUJ-^|Z+-}HNdj3F(k_?wS7QoP$*G!1%-(@V znC6uIF46R8)IWllDsYchE8i^lo8pH(@3?-P@o?{$Ep=LSS$$iUJ@Xwooef0n5mxgR zT6ym*U~&SP*bEx?R-srQh<#^ddRyJf<_?(YbYmTZ4i{H=JS^;eX&;^{kw$=6l0w=@ z6UwfWCD>_XivcM2{%l0tSKHkKucl7AW2GXmcH=2J8j*M1Bl2=$#8)(82Z7Bm>C;@RG?4(jr&+LKS&kCytAvi7T>)@mvn-*4G5CshDC7XryI zXkaE8w=~aakTiYyD8jjhRde;++QtPSzO6h!?xMMU?VH0Ldo{D2vUX$jHzt|kXl3n! zPtTG(;R$&ra8cDERBX}oqt)-~9u)J?6?DvNpPJ!weYh3)`VsAJ z?xf(Hj0XF_?|!}zTH&c#1yEI;otrB2zVs!IE^Tjj-E29~b04mb$&|Y-lk&HA2lx5g z!-0&G$g;!yM=4WZic-6!V=_OvU9tY+ChHUr=dZ^ww+j==xBSQ38^vrR6&y2B0N~9{ zRZ<%^enZt_r+7XV@zJ=MX%uQm4Dfa*rVX2*$!5v=uS^$YeFL1=H1I}*fHNNMdda8J z&;a>d+D-2T`OztuN+#&xcXK~5ZfO5hT_u#o>gkpemMM61v|etf+W_?)zDl}dR~Drb zH1KLSPt#Cqzdk-K2Yzl=P^q_^*(%t9S3t_vX|x;zj{!fdbj^%*IygQ!w7E9_);F1)48ca| zt>rvAMYxlBLso?We0HB`>r@Am?Knvac@!DT4_F=6KB}~>kIVxAQiWVvmYt$jveK4wrOex4Flb>|&$G^a8#~h?NpjI~9?A4bq?SNt0Fc&kW zTZrUbt#(Y3_;{X0I6yf;xe;@q+#xl$zdPSdl%eET)54czF9=C}86Ey87Xq-^} zM$CVqQNnsT{+;G4n!0Dx*`^z9wxs`)0B4 z?7@HGQpS!w5hmUXT5I<|$o%vwYW*x=aEGzU;6mg(W5U1RpP_`&ZpI)yJ2q--YiDLu zUL$B0c$Ibk9s5~;BZ~Qz)E59Pj9E`$pZY(|Htz??ZOD`o)fqn|@?V@1)H!*8nJu}M zM~Q?q?*9XnIpy6li$tjL2b;vpAWmR68ZSj3$=h|EA|Uw007^s_T5XiR0JyzM6Fy+SVMzTOP~?3Wv$C@#vdRv8 z#ySmY_*~<%s?p#Sfxp+C+#EdjkV07Eer2(<1{^3|5KG-?u|P6AeDG0M#27r;OEhUFhc6CaV4P|HUCbR0j}>Z5U={m+#5c55)Rpfk^Y=t% zr*pcR?Ki~QbMYemDb6Cdg5S;Wmf%Nq{;B6Cn?LQ<{bu zmF0xHWE<^0Exb1x_(U2?Kl88K>Z&(8F1QT-F<)s+Y5H%nJ@->|Q$eB}ukDsQ{Afv- zIiKJS&FCG$(*2EiK3gjHDlsgM2?}nrZ(Oq_P&;RloAu6yh7KTb&pv?r(%TF zPde@Y#tG5W*AnevL!I6m<@`2XO3;OT@r1;ca#a4oe9`k@eh)=$^8pJ^@2Ckf&doal zS|5OyO?Qu^uIanz_y#2fSl5lx_=lCo_y*+GY1f+T0ZD^OmY)I^Z`(^~!nd54tBCs3 ztcgNW-rtNigS<@5z0LY%Yph3#zP1Dw#F4LfC+=D$hCD+z*S+Vo-+RP2OQaXAKsa2J%U*2GFr|fBw*8Nu`3p7Qa5jE?-CZ; zmf#vjxM5&qJuIe^UMc1huUEC+w62wVH`G4LIy#ODUS@l5Gk1i8(W!poe z5?sHqG!}_P4NM2|4H)*0U)p>BWlg%!TvQxAzB{T@8cVI#;V<$acU(ukHJok`8(t`M zF`v|~O8j-W-QGrjHCbzy>HaspDa#9yT3F6k!j)6uW@T{3Luh)eTkO0S^#2}Jq8~8O zz!J84o;xQ^>QPFa`vJp`<69Yft$xdE%lFlXO^;FNdRZQ~e?D(8lxffgY+sLNF>)`A zrMeClW}fC(6x9>O3f`10Leu@#W}`dnEU%ZITj$IxTn_FY501#>Q?&CO2l6*k(|8zf zyrT|zbO5+6x)?&aTowovp0c#;+J4agh|Q~j(Ht}eS@Q40T-0*|68f8P!z<5J17)+k z{vxw)m+!mz z9G|DZF__608b}cZcey}Qh$BuuuI2+Oba*Z1Yt6h~DDB={xfL@lD}Oq>DekPnzHRV_ z7CnBg_==&UQ*Q-C6z~Da01o@_s3n{o_r$weTvBm(IhmULp?tdjoLOsbmh)FO4hGiy zh3u@$t!B4k_fs109;dzag>&ZzobH2Gf(I`NGvR+jqrYx+BOP=S;j#S6^)-2dl_~G&w*Rb*gG<7B0hSs~zPGx!YgZvnev79e8Xep_*fvb7 zxAa&|nN0j>|5tl&9TaEQy^9770RjO+kYEXc1P|^s2?P!94#A~yw?>i>2<}dBcXt8_ z?(Xgm4Ky^+eR?J{-z4+RxmCC7oVveTHT?A!@7r6}de+)|uV?MOYrGrgn~oZ7yM4ZJ zA!&*YUJ+S>^%M)6s&|rB(|Pd?c+D1VESOB^&!F^sEs{~x>**?cE^u)DUPEunhQi*b zQRz92%a8^^j?fZ&%ZMX=td_3vs+13f;3Ew|_p}!J3djhYG>x! zhTgnPzxV2fqSOJbr-L=FKg0shA=9ojiop9mJbTfLqwRY%XS(YJg+&323 zEqe;xVJri^d+Dcht-B*rT<9iE&Jzu1h0g&AfPB!djM*w3vw7gZYMg`Q@JbIyml?yv@-g6A_NgHBep+BQ01x9@b}>Z4md5h zU!3mFs<+}LonH#7X@{q)M$h&0iwG>6o!>C=DjlYsukSY%@)a1JiokA+_x1;fg6nU> zgi|oa_2<$yDmy(j^|)5I5qnj(=!&=UdeltrTB{8y-~wW%27+gc`an7Ia>Iu~t%UJI zGDk^K4#`}nCifC4bRes}K%$!(f7KTAk+*AxQHaaAYa*KM(RUb*ybto#&Tv&~o8XNl zrKCm;Z-!W>HXgmDAFfg<1k8Z0!c}L}Z%u>?-b|hVleQ^mX?f$EC#R;op}ID4S>{Z0 z#?_WZcfCj<&GW%c#F9^M^h&p!qDnLcEnwC_L)gBW1I%5co076&qeVy>>@*%}*JoYF z0mm)vCNTiJG*+jEs%YwXAL%)$+|k;LX#pQdqPbIlDXFi7x%=;GOmb_@xs3$BIX&F2 zNx55XqByrqFIO=1F$fhF8#FY3m+bguF zw3kQS_U=wHl-!qJWg_2A+)cXBTdYwTk`{;Dteg*&Ho=-T3#X3v!~&WXDk!Z~KWdgD z&B%!9@T;Len>`+%OAFnZoKpB~4H;-sJHi?*v>7{E>etB&olwy`8b{v=d8{1R^dL{f zm(=Ro!OXv^Itnyd$Lm#^c=2t(B)Y5SgMVk}$13ybOe7?T>WWCm8{c&!je2?^n zjkl@7*ZCQjMaQ*j>br%*VeZYJQWvV}fv4pa;(MELtTZj1M{LQgG@S?G@iGCi zHq-dw2DJqInhvv0WwW#z4ws*WfAfBGX`OWL6BPhHjCnfcvmj-B`Yxr5>1sL0qF@$Q7hN)9lvgS(#!(su#}f z_RT%hWBiGib~^9q)V>^u1RyNbOyX~!TcXMDRLw`7hva{lnwGW*spx?$tdObBBxD*E zyeggdC{cF;w-3xVXy7tmCy_K&(C{|oQ@JR%xO1hSNF625xWX4jCXK3Lu{Ty+&R%=@ z*NX+JvPD0w6@?kmGMWO13)dU>r^p}=HN_mR?8ck)J{d3271p3?8l~t9iJF1c=5Q=@ ztX#syB53$)JT00mC$3OU`x0@AwPp)cHViZ88%vNpT*X!#!O z8I`3HG-x(=YMMfJlL(H7xMbC()&@~Z;uXvEze}&NaH-DJIs0>#RmF}NwB_}LwL)i4 zdw9ie)I&&&q90Gdcf7!dn zpUCkzO0N9sT>8R4jTzdPY4SFAjg#o?-ltuju#hm-q>25h?^Xo*h0b;fz^BW=P08kd zOdhszXT-INGyO#%HS;guuzbJa<*jYYMG2vluw}fo0l1oeZ7BA@C1;#%Uda{*!_BL1 zdq~(taW_nGi0#r(@)x=IU9`Uz0IxrvMN4lrwJ2o3bfCJ{X9wDX2ch+d3+g5(f^e<0 zIFCN4+zoCn-#O2n1Pbaik0w@I0S~iknAkahYZazyKz=hOtJ%?Ay4ezAdFqZ&*EO$X z7tf?qm~c~exJz}k@`8BlHexg?r+DL3yb4rgLDYOT_4=J>*-K;`iBz$1`}1W*`uU{m z!9+i;gYL0}FBTukujS}N_VaO@Tdo59-vF$1p~F>vK6<(Y-Xb%1n40IduY>P0SZc1c zE5rpifms~VnBuSZ^$s69&D@8SupQ3xt;^JB6qeqL&wq3}EipuHCd8yUMq10!!8e<6 z)mQU~d{(25Ul|_B%-a!?dnX^82srIkwml4McR~XtR!Xtt?d2Kp#x$xKl|Gg4Le6*6 z_7;QR!__ONb6G(zHkwd!DRuAFP3ff0+0;ok?>85qvN=`JI!w}gVR#4Fo8~Ig67#ZD zzo-hb=eD-qG_iJyRek$dx9+5ZsOZBfx9R4G&GAsb#v{furjezKrj;Ar)BB1oz>9AI zCU=?l!(Gac$nfeI=N+59r*3!JH+FrEL)GF^TV!27JDhqZA*YbKd-u<6$!5)aWA@m9Su-!3~M)b31t<(*`F!* zS5-G0*d=)Me1=}PbZa_c40nmwI6**PnjhM+$I^V<;6?D*u_r}{sWx}M53Olb>)?d) zac6}p3axg`nsmZqu^Q+gd!j;uVqR!JBcRHAP3^|%lS3O`weFO{n2EP{M+&| zA=?`5VE@bO-A0=;Kwo!!4;zXazv2KaLnku&T-RWXu%ZJq-FxA zlM`YEpIWP0%8_$rYB3l#qc7O|$618j#on2dOuX1Gbx&x)ZK^-q_DFSIMZXnE8qKPl zaOsyQQd?e`rx;WTHYU7Ta&3FxW8zN>>OE`W1_;n})rPR4o)h2(2VMl8!mQd``$+i? z^sc6K_UAiQ6L{Ucik#oBOc~$%36OzLhON6%hJveg&bTOETFer-#CK3V>!g+M%R{Re zqy!vIXb{|Www*^QXlyE%gMkB^z97k+2Ybl4A1{u~v|RHzy>DV0JLx~C-3s%%sbGdt zJVp{3fEL7!UaTez2__`1)u~twuddE(z}+|b<_HSC7>?0>>mJ$OBDl5_#jlwGIHWR% zyPVdm!QXi-)OGEL_cLP_pLIa;Ya%b>EOul_r?AZKZZo`ogkG$Lh(KAD6VxNCDyUp) zc^=CLI`&yi*O3~As>l~1F8(g4F3$Uc&M5YuxR3CcShRj=$ZS(d$p#bEbuWf!OP>-i zkbawA_J}Hy9Xw$^>Yuer{jGr;+is3nzB))6SKU_w`~UvpukD{GMhIe)5bX zqK^v-3;zW97|O_?*I?*G``{C&?*rvgSl#~!L%B{SK9u+g2Mmd!Xm{H4A|+ubPejCHu#@c4=@lM9D!9k*+1BT8!CeF z7-}(+{s*2yA7R7)R`x$pjEYgFO4Inis?#@%;BqL#eNRtjshsY7TW&QkKKIXD0OnHe z9j?+??(U6IQVuZ1RB_P|4UK8=i;|7eZXs_pZGM-7pru&__P>>As3N>7ByGZV7H!!| z=15+M&RMf?p5(efH(SOZ_5h`Tb_+2TJWH>Xaesk0PYr5TM_d*3$(fS0hmQUSwQx&1P(_Fw0=*~odU=GuSgvg_X16-P z@v>mTi>1j=yYNl8ThqM2TQbnY!DW zkvO$cSdk_Z1T2eu{+pzQi!r*7FkOHN94^r1;If&$rGgo}*738WmbKS<3OudRchO@u zt{1D+sCW{*=#JK;mwU$n3y0Q5lRb?aBcr@vWcv6>h_zIgd*|Du*w&aqw~;g|aB}pD zOP1r&p@pvA03+`*lV|Qt{ai2Bt)yZnC_XYjptLWIE_cNeq=$R_mcu#s? z$IE1Am4A$aj3S?9Ztyz|?!Y*BFNMuMgMW*|B?qSPg6{P2W*U6t(Yv^`%L2Rv@7&6r z$rZQ&+^_)PCa~xgQH{~y!?#bqAoOWVhUnZ|wAZ>i=ChIW;5f7Lpx|$g{wSDQwrZ_t ztXS1&B=MCk`U7f)?(YM+4?OnJ2%-7=d+V$=EEGyJF%m!4o5E#291@hZ-{J*dy5T@mK0etGeFmRo4AYz z1-3-iOtX>~=7{|42(K=hHye&;sw@KCWP+II}a&u287v8WD1y%6n zhI(Zh4PwGE2lyK+8+x)>v_PwG6TJKq&vJ3RA?1k^*RZPc+B$YC?rp`8{i5i7xE&-- zl@DxC$*;ZHQ&Q9>=f|+e2${)LTBOvAq$CDoG6(Z^mD~|*4PEdWilu(wfdt=(Lv>%& z-M@zHW(gIr;gd+V-~@&;c~PkWw<70>ft%2M*^VkSxVvE*J?Ev9{%rt*!^e$HR2BoA z9|l^@^aVn#nw}<9Pkr9!vy7bmb?~a=Jg2C`UL2i8)nR=!W9iD>e>I}xjAdro=*`}e zPU*({X~9wZ+IKBTI{B5C<7P!`#BdKyKotY!On0y$*!+=c-D-L(d9;q6Q5 zqb^{28r#7!*U=)%Wa5A}kx(jERVC-nwbs%E9HvY-8F+gBS=D_Ss%BDbn0EC!mY4Zp z(oS_-yr6un(IGdcqNNbBU~U+o9yPh7C|TLl=#a#zv*dKKU~a0Vbn}Kv9We-(-E(*# z{KXmdqWS#G?&mB$OiT@N)53d5NSf6Tz-36MvtEe7U5O<5vYO<7pr#M-W83c5g!0-YvW zNRh4NtRA~dNO3~gB-C#Q7dPtLsK8`>uib$bzv;^uA7p$}g;KG@MVC2?C0-h>>Vc7< zi)oYIIq+!7W8)eq?~U$^4pWfLwgO^v#p+xMWdG)k+{~!pY2d>xJ`4JT@#quw*8x#} z1eR;kB|tT+8?CZV?G}f0Uh&N(PN9v-#(rzdY%PJST%x7nYNOXvs|-U-*XJHX?`G0 zu2O;DttU=u`pSgf<5uK0RnHDbObqFZ15~ zpvu&=WvTA6JSLILcC?u2V^fud*H_eLH2JUK&F6d#4G9Tz^f{;*^Eb<0^fPF&dsAgV z^EM$ip|X|)lkC?p^D*7(YQ#pAC5o=t;&lQxf<1x)&_&AK`d0T&Ys~43C>Fd4`L8($ zx2*Ezexti>Qg}57F8-eA`g|#D?UmkCUaKy{o|)P?cKwqlScbH}*;-rqi!V?-wc$Fk zc8<|0p4EdQC{n&(Itsh{83rIZoKCN5uhGzs^4SJgoaY{=b$CU<<+Z%AtfPyv(qiPh zE-~DcWv--SE3g3HIG}fE@k2Iy8mEV5c1i?WZ_B8`K^X<{E)T7fk!>ZFM{nMesZeSp z&{30rUjsU)2!8=ci(UeSbu}&R?UTA2Z<9e}!H4&o-`8XCpjuEtGneQVRF=C{KOSS$ zp|Cyzodr8!D?9lcoS&=EO$s{qtjD?VR$wNEH)5I6LN!D0gtrV*1U}u#Oi1K?80?@d z8C1g(BN|C{iPIHfvS5gdE~>TO(x(eYbKyPWoe)$M#)(tDkTl>my!7MU8OMc~XVadBUjv{7@ZlyFMGc1iNuj{)V*`P28^Ev-gG{0v2* zlpe^oEdGBt0i8=B%3Zs|m zKS3jTLbDYs-7g&;6nI98P60Nl-jI`DFtU+#^9}&KqFH?7Vzo{3F(x>JM`H?|hSK5c zTX#yU&U8EpTWP5fzA&LRh6mbY#ZUqYO-}>)Qb0e|e*d%;%(*L;G-VuFR$OJf{*fbb z-l5H)2uH(EqB6^}fR+1BfwV3LkBfQ1N*LE^QMlT;LNbNOL9pOplmj8h>y2K4AM*hV z?d3Kcr|+C)BHL-g7EL^C!TG`wTl|^6a@>$}6UR=$inK*p)6ZL$nQy{0p18PJnte+- zit$=4+E|oKWfEi0P*%&et1&iCC1lz2O&2>%hv&V8vuIHu*{}#qScy5hHk-a`>mC62 z)>^SgHddg2um+AdwgIsvvJOr<^PJq;&|fA{A;Wyk2pO72nt(O9fh-WP{pULS$xNHG zD?}PDET)n|%baq;X^p+}w&@^(!=8u;ir%RpxKp=h)0|(L!FQ;u|Atw4Hm34WGam{` zG_3zn6j`i&ZrM7nK}xRuZj%vGB_?CFR(a^LN3v713S#OZ&xMu|&za4$6epjbc78Q^ z!}TbSY@f}Yl;m`+=mGAn0>D~(c}T0eCVV1*P&6+rp)++w&BSv+)@c4q!SKY+6K{Q1 z8$Dx@8~(!8#K+fzx)FCTSFQQ8vea_cG z`vVSgHu+n+tP!b<$MJ~658w$-O3lN?{xdunw~`rNM7!$u?W~Ar(4_dDY7<7k*y~M& zW>T=cblJd)aw*c@n)90M--!FbH(Fy8apMqbNt7NvnTy*$qFSPK@Xr0c73ITs3l>0c zn)bI?6iM{Cr6f>JKfDW_<5Ie%Vo2IpQGyLN1Qh*x++|6eVZ*@GM43BCgrgUMvLWYA zhv>pW+3J+U@zD^s20B7tbVerb6Z{uc@P)7+uPEUEpuwI zm7Saw;ESmi9hYo+)VX0jK3ya{LS!OMsr5nN&0R%~W=YwPgwNPwA8o`or$sqCo601j zg^;Uxw{lWc0vDv3In$15_8tNqLY0dvPWGeqV;A`=6gX}Lz~bOgk;?ar!dW0Xg!EY_=Ebklpn{k-O@kmufP2G`^l zVmx{p1^hj04Y_QHieOXba|u6U7b zPkk}B3Gx(O;9Si$lSS4)BRwwj+Jh1S|nYO$l2 zm$}3b2RS19dGhw}mI>*8nKad>Y+jH$z9NpA7Rra|+>b^&3#uNv8Y8EvPnqhr8 z1`+JL8o3aR?izHfckIIp<*S4|>y~gN*7KONM(ceSGny3-5)D z9ZT;YqG#X+rDq%wHa+EzwvElMz|^22gkem~cAMcOdV~;)W9Y;gwDdrQA$Kx-Fduh??Xq!ABp~2mo7x)XEH7l@?xe-< zw16*oR~$^EVQrQ-XjkcHuZC0?#e~U_Vd`3D=K>0qcXZ2ClocdkX#!LQbaI_NOVv3l`G+Tm(vmJ9G!7*_qU2OQC*#4ULv6onymb?^o6ER1liK(cY)wosqii4$>XAR>SXDL>~ zFt+n}Hv#vm6}b2yM&I&NXxikc=5-;rX=SLX;O=_x1}|2qr@Ld$eg5pb-R;cANI&FS zP8goXF>aeYs#u+&kdduRLNpj($o;OmHaP_7MOUneoQh@{EdQx+?MR7l=T$OOpXZP! z#Q0#w^8D_$V`#H@e5!u*90qoe`UwBlwdzUhm67921JI&kgg1Xn1Bn#AD%Aw`&h1QB zEbULFTL^J!f%E4&N4|`O&DIX$5i82w?_*4Wq_z}=cx+RfZzbHj@)tJqwWzthmy(}Y z$PL73t?QKzPL&E(rHFWpbR|_0c4)#;GP3XgK;=-)TCaq#DT0OAW2h8UvF}|Vu;)(y zN(0shbwKa)hwp=`Lp;9-H!`?>mM(N3~X*ZA^S)(icq~MWztOCLHf!Fa6OZpTx zVCts6lLtRX_sVpD>!X5jU(Rs?Dr3*KgEb{EW%tHuWm(X|Q=947y8c~;52K+V$woO| zrA3M-RH9hl7aKrkp-k2M$Rx9%dq6#-*k<0UWlew};{pM2m75~o-qEB=LE13yR@+Nw zl2(Dbg#;F-e%Y`Vd^i8!*$H7LEaGAf2B(31c<{sdtlC%xsS8e;GMAd%_e-?U-x>+hD2~(VX!)> z*lh3hBB?~#<8YYvZgnhNcE*Q0 z1#dJUK_e|r{sin>>O^@abCgc}&pRYh1!X$-9SQ8HyfQhZ=}aU)zvelon^a>J6R5^yv#-es)+_dsORX_cTP8uPN4)9FOEm-QH#^3SBy5`Bs4ORLJ_yzneq7k? zR2VVf5=v^4%79#`hBb!JV9aHaigN2Dkv3EA9vWp+dM69+cJ_vPZTnazH7CK3Vdq<; z&xy|`sSn;pQNd{u`~K3M*UpN7fVRnskfib8DzRO-V&HOKt8XcbH8cF11#Ikg@$7C~ zjt=07@jA6Ru4jsKD#`GP_bH^J*>_K43@k;&SQrRX4T~wh?C)o{RGwX0l6mZ5(|fF8 z4)IJB+9h-FUTLo&R4pHD-Ec@flOTHOW{e|84)|6dPKRoRJP{1r_TS07Yo%if60N-& zv->8_Fa23+qUPx`@7`p1UJdC-cZQ*e@~PK&tRxKELmh=Ua-irtea$-*lJ2{|jjM>qtoJ_vzTKB|9Ft-Pe}W;^G; z7ifs58tCXATt@o&M@0A&KN6S(%h#VttSFcFQ10PUJYJ=NK?-KSmPw~*)*~(5699dm zM*e9+Z441CYe;&cV$e>{)n@mY^)Phu6F`fCIf-|u{-cA%cL~rmrb| zL0-%T;zpn-9_r*$3-vtE(Y_d7FEhw#9_xhx(ZjTP*+<>g3XJe6rI9BNuOe~>4B|mk7JHp8?EC^` zQmRB2hIsT)o-afSGU$IZ2E~l)4ExbsJV~JOI%MQTtvFW<u^?h@7dTgOWj_j)l+em-1M0YSjDy3*bGK zyy(@&d}mc1K~tHiWSaN6B)8-Ah%*t7_W55AIj!3yC+vAV*Oxc-_@Kh0A9(f^XMQ(X zEBR_VCwR-^`nny}cYXd{h>_93w>ATp>$lY#L@UL1$q&2h7IzPw)R$2G;4&cdHvi^SZlrtPa+IRQ!+I>V;BSq4g`Xt+B-J*EQ41@*l8 zD+*ebFZsHVbn!Ku?Pr843k9`TownW3FA7QnKuj;GKns6{low|PR3l=AY^OZ0*90_H zOqqfz214$WU|f_^eBT*Ki+B0M?CX74FGaSoaIe}qKVrRPWpCSUp9pwv&)Eb%q&vD*l!`5yo)O%|gFLStffv&A zKiQeex1OU!iag}94BiU8u38_wIlvg&y2y^2tN9K!Y#-otC;Nt31y$r-?56J|w(8WL z_^4D(g?YlK<40QXB={;ax`w_-{wow*5c0vjzDtX)xYdHkz(a!`_2pN@v04n~@vWz} zP#>~!m*6!?@ML1B7{g@0PpgIFWBxcs99BQ8_}A1p03)GKI$kWKz_;y2?>o_bemtzpONV=5m_YBpguVG^m>zE-b;}lblm`BP4|*a7WcDp?&cQ5N(mpx zp{K=6$OPt$4_tkXXy&~ob=!Xi%8^vav z!o`yd=r)^pzT=Qtq~*k=_Xd#iJjgcpp_ZWKG4OkUSyfu~3wq`!)kzMRtx#A>b@5TvuG@Z zz6dTkLDh87cLT1tP};BHTNp*K_tZ!D>Ag!$-+V5!E&c#MsjP!9C4ZLoLu~W+5O)f7 zwpd#fZQ$OWr5FTq%tZvfCr#tIIL{PCeekK+XBVB5w&sl@>5qBlAHNR2L3Sd&RcLx8 zlF%zKCjyED;g)^)rQ|!vu|9p-Zq&FAR@v(|oM`V8r^>12a|K(+>*_B~R6pq44zPTF#~-$T2W&8?ltE=_8c#=<@W5ZJJl$NdX3eh&ma2odhy z#?2HG7ZE4@MY+G{K~X9Ewli}#HFNQo7XJVw2O^IrL*eQD|1LB<5Ah1$X-L85ABrSJ z5X2)dB7P-ve`ot8lo7A~x9vnE6q!X!{FuZ4+5g{pnr8)wSE36J=+(FWIzRq1^&ZcVBri*#Fp1_LGfn1 zzj7n~c=9zv;8!$L^#7;|^JPf6Wyc$o{y~X%e1lN6bxUhAI2gtM?EIgdMsyURNOy0V ze_`{JW&FQ^&Hw+P^8aA%zT;;2|7GmHe0Z*qtJ4WAfhDg^UhOP5K_|rzsLbOVlcdIG zDY8xw${is{Vl?U^eu1taQry&Du`W*0-|bX*083(itG=;Mz<4$y%~A+#$kg>whSR0M z`JhVqop9G|33pB0_E35K(u~C~eu%0B4fC{D$g}>YTh30W=Y64ehskV0T=x3r*!>qP z&N@yE{mi8$RC|9j&+#H3%v(n0+#b1s0x4^J83J`Tkvn;vz%>C8F|SZCx#;;%CV)u( zFq9VN^UPNToLv;8EHIa~Gjvx+3D$S!Bk228$1ZuMU)r=h{jjdw@FblwbU-F-L6zG& zT~I@v#d$+PQ3q@IBDVx`XX9_pQAZx7ee=<6Q)Ld>?=9jWe6i5Nn?TsNiNh~!zc}kQ zRwgQ3m)s#W?9e-}9_{giR zmtG;Eava#=VY1@;@QDqdC}5AIT~6cvJrz}Wtcl|`aKhk@Q&HAhM)Ld5Fi)6SEjz!n z$NE~`aN(_#=Z%E;%;HSil(%H`e`loj(1j-^Cw*7_Y4?qf@H<3)OJnOC&p~x7t_?{| zOQYV^?UxzMJ5nK3OEDsYLl0)<49s>abcpVB~in^P3uzj$^o&) zghpir!(Y-!r!i_OIKz#^!C94*l8+$Cg>;qE*JDL*4 z3*Wj>n5V#XKb{=K<1!`SW3`|vWYWBr(7NG3eZjTnuVIcVA1y28I*%xriHyud1j0lC z>Rhl4{vhZ#Hf{fsNa(gPR8Eb{8F8p_ey}d_Nbzxe%l&&fpop50`= zi;zfOh8qTsqy52M+Nc(*+dy{Xi+dKMX?&L{i{;snTXRDjJJV_F;cU_w4Z0cl+99CW zakE3$u(>}r~~bxL5-qczhmyi+tIoPs{5*0|(E~ zRyLbDOw!K>!JIb{bXPqyam&>Kce|50*EU&i{7T||;Mpm=6o+{=dr+kGHI`<|+7I5n zRULCp9wCO}sy2x9o|CHd6mpXMKxhdJl3P$F8(pebHQF)R%4SJ^-LF^GZ)aW`TKO8F z7?QG>!e1PHuG4%Z`>tUhn)PTA?g+f7lc0;zg~BO}g3^_BV-mOnNYwkf~5j z{t#tM-k1*^^=)B_{T{7{jel&%p%NlrNfartGEa@#<){%jag-ccJiBT3#>0wzsJ1 z45Ri08Upu+OI%}07L2|2AIvDXv_Iz?YJ8a;p@f%x8&y;7G@OKAiP24>T==qkEnZ|- ztWK+WZkg?XC(4sX#9apJUJVL(6+V7*H+ox(bSDI+5rq0S|Znk6$b4t&Ave`frXY3icDiZ47cAphhctTwU zr$b8Pzi`v1zI*&gHqjA>v~_vT#|U4fJU1eH^n8lsj-sWqcVWnv;O5N&WK%wB9;6t% zx4VW=vpFB?IXln{#fONljJq4#8-yVq#na|DZ zJ1-=<5)Z3+bixfo3ldl&x$oIfU&@`yei(6k=FF!hpttAy*phmFL5^$b(6e-(z_R4T z<>=Yaqf8Qog2FMLxeB(Spg4qRs3F53K6Km}5L`g)PmGj}Pn>(~FDr+KpQBCzotWZ!80)fctF^e4Xn@Wj1 zhFi8p!%@#hbU3|y7b7>S0wZHaRwj4-_IR#ZUcQUQ?l5s4&~a?;wZB>z;wSxj`MJDx zY|gD0TkkuUSKT(0voftlbNOm)_8Rvw=gB!`4Zey&A;4P{&3ONDiNgQ|A(>`{)IDe+ zH;A+L7BHsFK0V`bGmvw(&Jx_H#qPB!dZR)8!olP}3k3|S@G|7i3Gdbb@ekGnXD3ZN zea4^C9!LZ4!|%%Il`u~okoV$GuBjK*xtw>oJJL?Xctue#^RjF_6U0`o%V_$Bw2ENb zlbNCIRy&4ThjbO_cY4eGL_0?_w82lbM;Xob>xS_V7laVD{Kl{E1l9107pNAxJ8L#i zkXF0QH*xdvGL=#t$Wdm8wT>2b5QW7y>lv6oO6a)qxxhtattq?$2g0kd-_suPsD@<`^sfi05ml}MoXI6NN8Of5c|61;sn!t zE8mZ$CCEHcG%@%x0(jp%&;qbfOU89!q0w-orFRfg6|=C5BE7i{pq}QQUk}PSbx%;# zx@I9P4$#XLt3jNCvXB>X-n!70*roR~0M*;9S}8B2Tp`G>OoJsPE(6y9{a}8;2o@3Hh$O#QZYX}Xi8QCGs4GCo0ZK0qI zN(Bvb$ne8N&BH59j+ZNe2TWQNph#4@*AL%;J{f-co^GnMFr=G033DZhT}pG4Z)Lg% z*+z=LaKxe%6D@0mkAmr1tYBAOgTzk#79E&L4fF{! zB>98V_#HLR5`3KGp4_6}0PycxWiB3zC-J;6s-)t?87bbxgvQihYo*_24qqhM30uGI zENu%qEv;=}&u*5h@mO~|{3upiDwB#hDbJ8R=Hk(9mhnzRTorZ~ve#3Z$`D>~+0lts zi*ldT7PD-tL!GqcCIw8Q_ubM>LDR@%5|RnCXCdqYNNz?N+<^hOJeg{z<1a}-4J}fs zs&Wi7JKCh-SWy^en)ly;3WP}n4&?~hSk>-fFwG1tgubl>HFmO+J3qCzqS?1#ReykZ zjg6U&@smbZRfH*oG6BqDoz9;g7F~IU2qF6)DCn(lNgUGZ^6Q>@x*tX=7#K>fsG4|_ zVYogjI!Rs7fQr=f!Gy9SD89{9^h1iA^w0!7AZ82aWzxA0idE)=x@wv8V)_!DL5sXg zwL$QK=b3$z=aPLpUpV=mpEohVu3|u2x7Gp9HHd?=m?}-BTn4}&1V0bvr<}cEvsvO3 z*Oy2ox|-l_-wgi~~P=V zu~SEK!4Z3NKpfX~ijQp5-ATsU+IzFrI#AR5@$cXoZQE?B=YAoabI!X@Y*dT2l~yiA z4Wvc`lRL&qA`M2_|C*5A@qPB_(zT`v8aO`JH|xCS*SZv5sj2Dk6fRhHyVreBopcFV ztB=cCk@M}C_yt`IhHM_x+s@(Y`DA?W!jTNf)_nGyKv7I6@&Z2B*!ZA+kPTG7lxU7D5k18Np`$*A8m ze0)U@15E`w%#bSevJcL9*orTzKA=XXES&UDnQZppEG)cbs~o!V+ZL!a9dt`uLaDgk z>i6)5LARR+gmc{w&9e8v3dB<$9`|J=KQ|hBTXpV zq86l{N$Yc%lYmEyQ?410&fbpU_qk#lya4K01uo~B5d``7 zZx3sdgG&q~WK@g?RKh-Yd|~$(y@|FuVM%)P74_90q^>hQFJ1719^2gd4sTpu47m%I zAuE|CCPz?RFAf-!4!eV04O*sigi06fA zrVA6a0EdjrS121$>*=jkF6WTn{faB3xb$|*Qtp698MLW3cP9~|CDc;s-H(47QRDDF zu2$eOs#7KCPM-Hd`8ni>LD0TwZS*nMQGr*H8)Cc5A#-Y~kcP+RR5e_STWG}fV#agr zJKJHZStB@a+O$D^I`tS8vKhm@sHWF>vwC!GZhjgu%ielJjgZX`A-%Lh-pWm5(oBUf z)Lrd)fsZ~@vsBx0gx;(l0CBU;ugwJ{y@=9BL)Q*)cMk-#tC3M@w-&8D(=1kw-d6MR zC|!*Rvgg9IQ+DQww%b9QvIh+}+rFX2&YEfF@TD35Rx2-?!rO!F7H`9gaKx#Rik zEjE+I5*XrIK8UwR&EBneHI_;)PCu;nk;OuUQ81$Vczc}yw$>iZPH71sUjRBbKl z58NPRGm6!8mOIM=*Gaulp@#`yiksKBrsdXZ(cKr~1uxVw4en=BhSc7WUH4}js=1tX z&X1$SVzjF2+G?c7)}ByZA>A<( zu!ni2>b<6c$)ps^4#uJb!hkg5mDj$pl=M zA`f`4>e7_p%&wSO=1=hafgPzSuKXdPrV% zA4Do$R1EZamyg4Z_T#5Ns&!|!1<$6Yjou@AB-~skJ?e4*O?E7sefl403;VQTK8*LY z-Hh2H#TV3A{sf)D4_Gv3yxMshz9{bbR2#e4`Z7FN^97|*dfSr#}G1vVX zT(%r?UJ z`~CY8{L9Vt-6SE`iN?k46ydL0RFFf@!760bEC7SPM6ASr3Pm`q6}%URk~3!$DlKrQ z6k6T3M@`l@^|DPU9-8J$ZK0j*Ka22X7IGs<sR@OKpOf6~zJ|5v;x0a6T6V*jstsilN{;S>x;V{$(G(VT{yAWa! z#Z2&Uiu}D^420C~WIX%35VG*YVOgZPCO?DZ_itVaLka#B{=dRUfWh})m0|W#FD=sFa00ab{0R#kG1_ko@m(iesCm^gRP`Q8oU2GO5$WwOJ^itIQU*x6(xLM2v1aXJ zmyxvWN?`m<2((D{Y`yRdD@)|N9>GEdB*a0Gnd!SyU%>E0?z2&|;NK$O1mT>*oMi9nFNQ!i2J3 zElvL9#Iwc*7NUJo5K?Mj-)@(39=8IT!>gipxaNH85$z~X1y`uz@uI9^E?F2NU?jXh z9#G(w!4983bEV=nl2by5)hkqtX(7HI`GYt>+IP2*jMHhJAr&RPd~=c7RrG8yCy*h) zcSy>BPQUYMF334Fgt$}#dZ;r9lP&&+Xp~woQ!}M|8+geV!i#fbGBvXF3gy+XM!MwO~Rr8ZaY5NaqVyq&T;deLZIs zvs`jO(l3jvrs$8Q%=}w@pKoFnLa1bRix8f#W7OQx1qlF>6QJsD-9&woD->}K1g_}l zGr*8Y{Ft?hQCW7fdIjPGZ$cx&%RjBqI*N~~5Q2oaT2*#7?x>dE=j)c58we*N z&gY@YNvG&1_hk-$%UofHW(u~z5$~xcfQbL!?y;#vg5Yct!2N#BFe^#2K+Wty?4D&f z0i|hMKN`)EJ2HU-X6Z7Yq3xv){N?>h9<^(Hzk124M-Rbw9I4?Z_?bE_p^M1w80j$9 zl2Z-URy?%1MIlVAQ!zkJWpI=&>4(C%KaG?RlLTR20W=xqNX^Ya2zoqd#hlx;Hw6$$ zFMW=Of`(74iHGj@jd1pdZ4-OWDxC$>CJT<2Bv!A;LWwlqJ#|rSm@^s+a`u#^T=BG& zo0Q0(?x;tCpj@)$0=R|PS0d+hZ7X-|8PYYxYRutS>V=^+Y$;g*JZxVIUPt_g^&_#pgXK{$XGH%_ zy=>0g1>uZCx4JAs3n_1`c7My7P+yxQON%`^WvIVtwsC)Je-}wN5(V1}_@b6T@VnRy zCK}xULkOf8#eXdF=X{cF_RriRzkF0<&PJPV-2~rA#qw_vh$DD^S}rh>SS+7Xp~#8V z3MbP3t(g&!$mhopKr+VhH+)V&7w|=J%Cdi1&WCxH@a z0UxRkH-q>0BuD z7QL9p-9T}0T`XgoFIn)Z1Ra_p#nQe26>pD3!u`^kBn&N^f^Ln`P#vVD%fkg-D_Jr6 zGORmz_(#T<54ZE6uA`-s*VA%=Q~b0?kz6|c$CZtDmmzG|*N3hT<^vr2^%098(`;{+ zJg6&fsi5}#G)tGWWo0!rbY5cv`gnrm)Zw2sC~p&C`L^L2Q%qoE*}NYC@I0wp?zNQ* zexSvdLUI-iR)vN56^YUosd6xX-l7{?9IsS?FmC4k1h;C<^I+Wf_03i~ZVU87*!FF7 zH@jDHEX0bXZE}OIy6=a!!*!FgkA1n#%kO;36;lpKS1e>GrlZke|F4L{0}Q5UM$ zA!kk2uGB3WD2Sjl5rUx*Tpu=@)#j_6A>QZ1{IGu81~zz}N4)UFQ_d$9vUO<5a@6DX zH1)Ae&WF4R8jS{vq`U<=CIDLy>30Ric&Bvpf}+Gkfj?c14@4m%5#W+8_I@mR6X^ll zyanpp)*;+$sEb8^_I)pCoTYu#jY{yzY|^qvZ+yt}V|w!@>d@iGXOMdETtS0#W&_!< z(zUbuXp7&KU6lf@-SD~@FRSYG7)zzM!(@hPjRH#c-}H0u&2(L7_kMN~O5pbB%f*6H z@VaDG_>L5K2hebei@?D(clJ#HbyPLewCT80N$Bz^ty1u3()KaJckY87&>urg#uF=p zVoHXgztbYXo(?6azbnlZi;cNHM2gJ01tCNckIh#=Z@weC{6VJ=La<5uD$DE%+q41; z60Wnux$!h%-LzI@#UzApkW(|G-{)cf z0{5!S1i0*a4Y!<8f~Vr@VF_60Q+z4634oa_vARq~$#NC`MQG~Oxhp29-E~hG;Sd4Z zBN9Rg${7yv3hN@;*`6MJ-IMqj)XU}mbiEe<0V|-SCc^dcdQ-%dDr0yC0Y|m*c%u8k z;dyT*6wB>$M33vX2|NIqJH>yf5wM`+DSf5e;lZrZOqK?+8_Fh`LZkd$?=ELF%!%vM z(=PjoSQwyqlCSeok*;dszr1u@bJnAVmY1 zC8{3J*V>{yV0YP!h7pMID?=6bJkMJoujCv|=Tq zL_kin((YyFnKOxvfUjGLocM4Pjz(P{CXKzOr7nQ8Ew$71IP(|eMYNa92sC77#tv7 zxn$!3MzdcJd9iwObU(nX2;2>DVbui5>WrmI=`#mcS5oDE++cbWtc4!~zo$BGUnEm& zCbB&jV8bAuF4fqqaXhLjDQ(&gMPnzih3E0xi@pmBpx`YNph!N&2}JTtv5^h<6)Pwf zj!lubUyo2qNEul~nn=O9el-Zk0ZW4-hK|(56P1NS{VL-;(C^yyqD|&;D+fkC$Z+ZJ zxi^yJfq-o`qfsV9ANhNlrCx@HTtv|Ruj+yn9oTeq^yVzx_Q9h=cFe=*u5=RbOq3Dl zyX@$|U@V>!z~ORAW@i;{1#{)Sw!ijM<*0qFyxwFqYur^ zkifnh775Ag<#Wg#O;BeGnm461=hbg8cGF{g-PPHdy( z*e8MK^{eaLz*=wQ{Sx0 zo1WU6)hEg^W6JRaaC_X2(ssShNYeKBD;_c<7)35wxvr)cyqJ5xz+n}A*y^gyMYeD6 z&wTwM^;eL!D@7EGQUIOH8FjOHKdH!>=F?fsnL{%>-OyJ$SUrtGl{|T4ern-%Tswnt zXnnEnybD2Vn7mDK!r6hHg8)?vL~>%&i#6!;$+H{k=w7@;YK8Fr4jWP%5MW<7*({JJ z?6(ARikDYGN6g%}30~sghO?N|TIqrhO30LJFwror2f&E?1 zm@$GW6wLv}#pO>}VAJ^L@b>+vdzw1fcsUr5^<|h{SX9&YE@*5#R+A3e*zq>MySUJx zyRTdOSgSuC=;Cp_N;%QJ;s>9RixDQXR|cp#`ZL2Vj?Jhc4#es&)f$V)=4;j@O*Mfq zLkPFtMd9mh=3L+cH`%X5o0V}%%~Uf%JfkI`h821dMQV##<@tx_M^D+1weXqe{ZzgE zo*NsNmf752*>=t$rgHxnXk=JnUuu;HEK95?Hfu=1lkAHc6j6&9W*o?J8b;fqhbSe*#k#n4p2gR*05YhNB$*&ansjYmWd0zeq zhZ0WXU%-0T!8l#X2Fb}lOLNfh(gfw3$zHtqn(f;X%*2-?c|*78lp#H$&~&|~cb8rj z%|7f5ixdy=Z0{&nWSF}WrNsZP9pe9i>cqj(?kp*N3`9v;I$cWghWfnr9x-Y#Ng3@u zcMU@%8}_5{#q09U<;%IJALNaosEz20oS@Nsa)*+ew@+SAPc4oI+s5~nOD*8e%({iO zAc;v_z>5ZY;1UEQ5xd5W!bo6ns*qQ_5+L@Z!q5z!xD{k&Tnfo48=Z~|S^L#w2jJwWe+-szRbW`mNg?{ z`2U&p{J^#mLM;%su7oL|w}&l6>~0+Rf8`Y0abTZIxk9{e4Wsyug`AQT7_}m*w`19e zApR&Y2CJTjQu%$zpjYIt%(7@E_>j8;Mudj~XRgQ*xq^YM3*- zg?Izj)M%RT4h9StvOCYN-}Fj>mWDSYC7RVrL(T*2%?sH;?z51+e z3CSn2w$r5XtRG;&hPuqtwXI10Vg=ZepoG>GK@l8Q8(+(rdf8NH=ULUqY;wdg=BP`d z#Q|T0ritt*5W8JiLZa1I{Ww6)a6$O3r1CxM=kV_#r8Dc3lY@``z@>g*GCm+RPLR%7 zIYTLx6ulyS3iF|pvVRK_xAE2_KAQ;HgRKZ z1d>B?E<9Lqoogh&dnQvozjPg!1_^!>$vg3!P;yk7LApwz=FidjV{wcpf~h-o^UI7t7q zq<}^k9+kq2XO|emWTUEmM%?R14lLY<{!>Um(EWr6cL|ko(E8=mhe-?>jZ~^rd(~Ua zwyW@+1{aZhK#e$JW;c&WY0FMyg(8IU+}>h%)L_d8izAlb#VIKFI8l59J!Xnl=eMP3 za{to%wDI)PfQ@dYS!esM^I5ow|I#vN+5m3Ib6?_S$q?WU@AX=dPurs5ZXyt4du@R`-4Ge zkV!;kWvCFl4WLJX&F}$H41je7#s`m)$N%lWY2urYl+4vDX7;9z%iwS;+Oo5&tUkDn#*)q68E*nY_Gm9ka%rGbH1dIphJ*8RcN%FnU$^XH`lp zpgii9Jq`(f+CT;em=)&3vu0Q0A}1m3>~H*`WPWFnlUdVfB7_(|Vd?5t{!&|s_cF38 zBF2orPpTl6bC(FCruUt;Q6MueLEn)>K@B{d;FDmW2li5LG0fV9Up(gO5vdCNn1@xe zD?n!$_=}yZ&+rRUAmklQK8mkpD4;@XfTt#vf+n)7Me6opJ%qikOT50hAtOC;Hfs69 zpK@T4p%g9j=%G3V;*)xoBr!X;%K?Ae;-}8)5kc?^MMAVRQ$W%)VWLrCVz_g1W~5Y~#SiAnf>V!wZ=QGdlizYfE5as@?|zX+56CE9YN z5$&!)E3J<`2Fs-I@Z8^kyLb=bA-3SazW2C^qs#oq(Md^wiv>?hd-9`@KNC^Zy5A%u zu?S`r`G4Hg?iisO{He54TGu+&aL(OJ2R8}B`kA55;V+9LvXelv%ZhK{A*O(}R_++O zxPp)gTds}&`!zn0VjN%!=H-3n5Rv?%o)BeH>pG8e)c=r+7*Z0zx*An)C-RtswrSEV zASGG()0X~Zi;?IMauoW2@}=4IGl4Oq7C8%>GgwX$EStn#(xq#~7gdFykisA7BmgR9 zcnNxZFx$9V|B9oZV#E{v29Zwj3w`U+4-x50Y8Ma`>(xNDYSkxaVaSh-S)3#^2bUmY z*Z#L!h+@(Gg%${jNTO<@G5sN8cpV(&7NwXp^K<8j82h3>hALFX{zBCMV}E(bn_kQu z=?SD@ntE!L$iGG%SSCgK)SMSB3;4q23D*8=Cm0ZN9iQzx4_)`Yq;%WPr8Ae}Jh$=0 ztt&Sj&$EUVo3`;IDSL2as;N&(V4+gG&GllvwzgI#lLHpOWcEqmu(Pv^y&vYssHmvC zZ^8SD$te*`SEq{@G37?usnLR(TUlu}+im^B_qpHfmzI_SgF<9D|5jhnc3q3b7bMv0 zCS_f5FaI5(O#ENQu-T6vI}#<3JN-Cc<ET_gm983c!54 z(Dm+2dBO~|MeF-CnkO6~HSgM@wef!6WZQaF)OOx_a=FzfnM_45Z1&4sIg=Hk@^^P{ z!hH*kQ*dH6NFj;kfU{y}rH<2f|7Nm)nKivOb4) zFj1_(PdC4)O6gYbS0WDPD77uTIUmA04sk!7XHaqoI8hn{3X#&^y+-?<=c&BSdb|Vr z2$Q>By5X}|N}r>AZ|6OO0exK__amao<~WGC@%2|hm^fa#u()h{lQFu>>JekQfBO~N z9(2K2Y|p`se(Benz)uh+lg0J)_`Tz1g7XuZwR+qg>%MNIb-kV0YD!lDM-5K;zTd!N zvgAA;Wc&J~P4BU}GA&hp{x~GSkT{ zvIA6At+=?jT%na3Lr5q3FW;#C0e>HF8z0U`GXsfO*#S{ybJZ+g=%G1|WEOZCuN$3X zsC_-Y%Vi5;O__OlZIyjFPXHZR_q=S2S-p&szr#DB%867XOGFIWc-r%ZUndB<1wd)D zn{1Um43{KLY4bk%#^|hz{}O%VYS5l_f|7sW#*?o?v`0MrEZ+X_4xHTxlGu0_V9Jco z`x9&XJhW{X8yjQm=8yq}1K+`f2Y%0Wt5D23$nt~(z*4ceKOYt2dK~6X=Zk(CY=`Ye zXVa>~Xx$_a=ck@O5jxT+w}K{m7452+U@{!GkP!_XyuV1kY&Op)c|O>%pi^eagn%5> zAC8{rKAFYsy5a3wun+F(D5N=t^g~|rda3&ON^Ks)A-m@~?{G#_lGywN@?>O=DE<8_ zWuzp|?=eaa-S_km$wFiJ&T4U3T(8OAwp&!*OxiB`%Pvmb+6X|arMN?Zh>8x$lb396_s(l=Uw6wPGuTMciK@z|!j{Iw|*2#WPr&IOFKt0RBB#%Powkn1OQ=wrQ0a&rKTKbJZr}hI6DEzx;jW#$4rab*9}g)i=!_`m)ljtMvjKgtAsR$;hNW;+ zsMCyT_l@M)Y%^cYeGAY9hk0Dbf=?ezqLKGf-fDggBsHyG9#oCFj~?uCHc2W}oeN)! zFZpZ7#c@3JvXHdht7~W`UiALP^ll|@Ga1g4I^uK=skJ(>8SO9n$@N#C=(8;FKa6Q_r|v1E6u-)s zV#MnNhr4E}YuH}|Zaq{kxm^UKJ#Wxs4$MBxu^Fk$ZiP|PRT~~YiZ-AU3$J+?vb#f( z`2L?+0P(rQBA`=JiYn#ldkk3CXFB2izhK)x)h<-MSc!jCLZwCnj6!ui@bmY@Pv*P> z-cW}wfG$hKG5;qSoeN{sx7?t2zo|-X&XB%#LDEFPCs*&PLB=I=4V4+Z+YNz^IQ0JZ z;(2?h|6Kd4-Tfw+Mmv0fq@|_B17@$UG6YUIyW>QDhn=MzC<=lJ1YcTcXf*qM#sA%P z>~U{~F(@r(J5zT;i$>a8T@^!Y=F;;bae!bS8UHDhWc99lY%iut$M>Ro3xC6I0n}HK zCm3X7Yk`O5{OU&??~2_56dC_Es^MBM#)bG!7FMA(`0~}YCuv{=O9pI*WlwM0*Ms1g z^iWuS-~2`OVZ_}%B1sjSR@>@M5Mdo9f-u_&vXDhhr>wlk?t6?cIPlagN2~d0-%88X z6n%a)+WsW^b)sHh@cM6q%i{ZN$sm);yxz{rg8Bm$^$%(jY5bsI*^JEG`OMN578ZIU z{vboqOYw3|D`!`329iLOUZCLgpAdGD9vMCeq|c~S-&|pOY6^(*Yl2#APl~z}rF8WL zMBetUSZ=1;U0?IEa(0wAjc;Yd%Z+Tw5do#zbfh=1iKRsZmW%b>!*ko96 z$WnqsNZvK7Upe2b0uV)uD`Q){)_P#f)rKAi5ROtVJ{PBH5K7sdCdj04zaJY*ptu`{ zqdZ?)6pxbVUatmR@V@fV-X#!Y>UJ+k_4cD`KOgo=qT+gq?FCa3|74k~%KqAMeC~h2 z`!ENeeU^JFT$<|eUjR2_8BC*Ku6u#|GjSt&=@e8}o?m~`v5(skF<+#-8VN-@aeW@Q z3}d(7-48@eNZ6byOgAHS7muw4m0`S6{3 z&|7sPVNd(|@AZcNn<@>8r{KEUX|zvv+}m~6mIk@a0m@nYfp_EjGN6en0aI^l2J(=9HW^Fx#O_%1kYv#IN?V$CMR1o#+q?E}o73;=sd>@QHH zobUfkajpAV?4dgkEr=j+Sj_!Iw~vPnU*#u6sN9hQgTv*)Y9;krB2wUaMCVRAar?}z znB1Cc9p_c0BA_q!R+<4HquE&LjRIfWP7;O&f6dg;LpB1KtyI#CvIHklvyIox7e^Eq z4cc4z-m0vcrmLFtqr&MypH|3LTuU~bQ1Pdn%*=I_QHhsj@&*H){(`}=-Q?mqg%YrQ zvv&ZxP`2D#Kt;(kP{?Qh5J0K*jaKJ%S`=5kvGB9YskhY|qz39RudJ#rVwPoEpg?#{ zSQT4t^xTge>`hUA{qlMW(1+XN8Ilwjt2=~apgr~MjfzjZ)ZqI8BMw-u zNI;?fE_S!1B@W;`LAIJVS5q=TN?bIr*Sa-;qR%85^FJmkSeE1Ui&uja??>{q_}Xq4 zcwkOkPG#maEvAo&X$;rTa;;2@wr zUb;SBJ`19Q4ICP!Ws~Q=8liGHU99EWCe;All~5@52Ht#1(U~ z!D|hArMK&2_LEjq{aZUFu497-GDF-v#8prG?eCSu(_VU4N*|t0Y5E`~ z(mc&tgeV7FyJTh=;tRq-Pl%3YpiN6X!lKti#AZAfe=Ch@t;601^ZF7`Z24?ou}d2nUM48dZa~+IfPOl#KsT!q7h6BJ`NWMZ~cU1 z>P|Gz4aJ!?-mp@HX@cvNe^q+eAk@obbAjU1mU`=1adG-E7JG_gGr8*j0H7d(28Z8^ zT&Uq+y@;I8mK!X0LBYwWr~-5Qv0Yblz0`;rgdG-%+q4O#6q7J@1Z#?r0T@ zq}*@DS+AxOKIa19ak$V&r9OK;w*#Lf{_E8c9Z}C-I+weH5p*uGxXWD_l~I2tW>b_$ zZr5UfB6qdu;A}7|u|}Z%n<)iize=WERI}q#0_M<~@6yyu&_grnhW7hz{*F--5_LpQbo&GCY<)^tX(9 zb-k5l)yWWT-uS#`h1d~VyAi_Q7;KWd-13OKcDI7MF!C}(qXc|sPI@S9<#`?{cuH$y z0Z|Cpt$&k+eDPLAw7T^f;?~yGotMiF?9_>N1St8nwb!5U@3S>GwcuJ`tuP(G;Q1OQ zz2ATj&Mp(eZ3QVu?5?Od`(sL%yECDY+SrYaP`i*icy!Ht)4UfMF6Ix19>8J{?86S;1x9R&@|P+p3k zpPwlQR{9@EukrId#+de-1PXU5+~0ujGj@oPe=;));Wv-aWtO+1HoHI0T#QUoU01~# zBk896eu(6ieCH>B1+57qG2;5Kk`4b524c5nG@;5oy7J z%m4(VI!Up<|C*qjk^P)yyk)dW!qUUhH%|oqoNutzLDb9lSEjD+5Zm`F6k(Xg_?O{+ zDkDwOZ&Wr-@;p!q&6-p86g~Wn`7$oCAO5rRR>6c6Gnx7ap!;8NH#PFf_Lv!O9*x7P zpbi~(6iv1rtD7{R{-9}_MI228F~Lx)nOWS8ArVUXwxX}dQ;tkowg`eQ@h3R^pWm{F zk}E-koDxU-Y7BM@p#L4&Z2|g4d6lMaDVP_JKV`a?n~lJZzbtO`ItdE;_V4)o51VEA zN%^QbvX^*Y1ucA%M!3BHMM>nGA>}CKkLzf9HT0k4>wJFFRrwcS6Z;fl<0?dTGMKJ& zR1HcYwQ80#;lBtovy*==zoUu{fIVbZ=ui~F3>iHBi-!Ho=ou*gGnGoCDEZ~+2C@d) z3|Te59))Q3??n0eCf`4A`qPL|qJXzqF+G9!_|oBl>-YC0kymtQsQ+CZe6nO=KuG{| z5XqYVPz@i*5wV_Zm74_VzYhM7@ceH-={`bkE%KzlW7t1_i8uav5-~=-@c&#a2LEZ@ zGkr-4e=x`Y!(n|co{{>L9usJh+kY7L|G(}3CGG!DA)CSsKm_ook0%TGlje}w;yvzX z9V24bKJS@6g7SxOE9vezc{#y__EuGekjSkLuEB9y4wdIRy7OhbHWSNjhj({jD^ z)=lue-I-bc5T^WH@ibdJI4H8yjXhaCHa4b0+5DGO84@?{8$Wk4D=B@Ay}}_4>D6!8g+4|>GQL)G{4RA z-*`e%lRr*muxTfid}hYNiMKP zT|&DFl}{QplyoCQc`{?|(iH_>BJpxaNH;o;PPYUThgA#?Q<#7;AvS)IlvY%{ zeP-U<&!V2cub^NcV0_O(+xP9RY0U+b%f6dbfx!fXEq?qQEDZh)eD0g=MMa1E-qy0; z9HF3wn|u>u5I*>XF#cc6G*{AVxR1EqiwtZEju(zTxSD-)amKz>#Nu6KwLtCqOR`8UW%>(7O&T% zU2bbNhs?1!por4bqGMg}Qm?{PGwLB#*28nMX4~swOJw7m<6?PaaD`{Jt4q8V60|UL zEyZQL$9iRboHZ(pwXzWlIf13!%&qIR;sK7PvtYD8qE)NCa(ndQzEVrI(fV!6mL&;y zQA57*$nM9=d8b3SUh&%1M6!2JPJV$SFqNOoaa$3!wvw>8{iWPe1}|^jQ5m&N$j&LF zs5bM_H6^KZD&2ehNNFi3B%D4@r|HIfl&+7m0s|f`ZHhYCJ}uxh->k%}`nopdMTh=uKMfJY_||))nWB9-VfX$X)OBFeDhh}3 zQ?xo>qDu&xsOeRRtBWb@Fp2H0J;`YLGC7>vM9lN=Zox1r-%T^hSc> z6`RFs@u)bvl2m*`zR~P?w?%V~3E7nT2a8lQ>lk_Fg6sRKxbRl5&@Q&(9NQNEIJf6^ zS-z}~c1P8^>CKZ~$QQd8%)xjI+wJ(zzm4Nsr zpRh_~ls37x1Uk$b8XR`SG^2NXR7<~oJ_6%6%@kT031YPphhKBUl9_VXJJ`^GC~9WQ z55@c6#@b!;yspEND>@uAatDojoY<9)t#|NX8M;Zh*Ng|Ee8wuL@3`+$4x+ItsLp3klG7_M)}_mt zdi*C~Sr&UWKqvS%yK`%KKlWN6O<&0VH#Z6@!}V&dybN3e5va^FO^o!v<|T4c zGlVC`r_-X}E?G}}SiQb|m-X4I2j|$`e*)2|f~Uj~j&^G|(i4Sr6|ok)f35J zTAZww8?cc*XE&Dj@Gu9frdF!1nbuTnBG&b2v*lk}t`b2-F=| zS<6_Awfh_QzGx3xZlp9)qn?2ktXM_Z*uz@Ek;74LMBymEqAB-(Sf?c(dp!N>a!XJyyRifUfM?XwqL8z|^7b9yI_ zlF#k7qo_$MV@|K193nmf-!49A_#}XZEX+y+N7<(47k7nbmbnr%Ii<8CL`1VmvrP3e z-&JA*Uo+Q~3fJRiK-bf_Ezjd7XyM{BCX0|tH29Zqc)e4(f{3^RdGj({tpVZE#dK}6I-Cu%GQPMc&wwC zY3aO+bhXFhgA?j5v3CtFq^8JEP3>O9YdZ;Fp`%okz6W>@S*)1uVg0OpUrCEvb69S} ziY`otPeR!RrqR6fT9|Xw1hxNUaXKeMaU^)(86Vbsgh4# z()V_2Mp9_}^_Mw}0DLgq*?3SyjFQS7PsM@vMjIz5=a+o0p=!TrsF5`%OY8rBKbuPo`qV-5@@1bucZW0DY!E0;{M%V4atihAN z1hz#dGibS4TAUy~^2F;>q+q~*(r9H25pX5kA*A6})s=5W_*T7wH_G!A@BX&Uez@J> zZGFifuR1Ua7ty)6iaGV1A4lVA+D!O(a=W3l^?ELgpB+Rs&bD^!(IGs(AvhI*vgQ4i zeAzsZa-xT$6X;n~I%|0vo8(?@(lmPWqpswc?`&SQG~hfks#@^tayUrk@%M5s+gU!< zPVU2}+ga_bdu)s4ofeWM006|kxD<1L_yW5z@PS`Hh3M2E$WHWLXqm8bxR!f_JW0lS zn`-YZn4;WjzLpxf*zB_rAns;W8JIqjcO`i1C63MgHNDY@#{_+rIF|_J`_*PgjTp9Z z;E1_{{v*Bfvyt^{E~H2ak;fphC- zgO`Uh&6exBwKiANOhzC@`BXb1T`9cS5FbalAs2rUEt}u{X`jEA^_~N`6PQ`p<|$k ztd_*jQ4@<41r$;8sOF#C&P&4iLy`%&noJxTO;oCcHM|z-%qes={T0|>08yEeg+PfI zI^<;$b1zayw`GO&u3-jbf@W-kGD%uXGby$bZJn_e@X+Is@pxMwRAI^*iYHJfp1V%^ z4<>4Mi3rpFdZ*aGOLEz*5Pb$sVAQvNkr({*2(J|$og*>36aqdNDCL_jARj2S;5CXY zez3%h?6ku)N*Cxa+4Rr7mTI6BG_p(z6P^KUpK-vRmqd55mis0@*|INc1Y&IUMkc4v z^_-G2fz5N6m0o%O^eR(K*cVhp6YWd;a&bM$5{Wg_C0Q)sl*RV?4wP4+)dns8ZR{zE zazqtmcezZFPdM>M%(kc2hlVae19VYNjAXULFLGu(Sdjznj@Ofgnp#i%@B}N%&+hdVvjM zyfJ{rL>0%>l$U9Z8OZnPret&WafJ{=2kp%>(Ihjtu za7BY99P4>o!@(Qn=!fQ#6Va&7VISZw=k0pkkY}k2`s^^=CqG-KqrI|(oRrX0C}lzy zr_^QX?4=aIdRoQa)>Nn3DUk#e}6!Dz$08MZzV)#Q; zzN&Ogp$`wG732A!&&wnIrnT(QP-%$1^TMD zns7tiMq9FS^V6DcDk>yZ2*s|!k8w( z0PG6X31We`le2@J#vytM6gme47gp{=_+Z*GO#BJr%skfm_ z$0Q|+y7J;z->2B};9!^`-%~DPRX(&eZew?y#l_I?y=SmefH7yn1^RHGy*qBq8(@JDr5wX*$^wVJWT#TPq zv3bYLkp_`fjrBM(;VRQk;>o(yvYEK92pUZ0r*QUP@_eJcpsmW4ucj>o{?9A`(?d1p ziwrIG8o{|fak!lEc&7fkwb)D?`BRQqQ;IBfE-#nl!bntQQpNgq} zP`C1X7nL<(AZoMoGex-GrZqQrp;!6ej&SWhh|o zeU8%IszdAx$y%?lRMpQV!7M*p>R3qHx@KbOHR_95``7~o=q{pyf%HtOR`e8MLMOs_ z|ER>yVDkJOJrmm0g(v`aL5-Z>DakTcMG!xNGdyGEh4?$4qGUU~=9|sY$-~mg+lE)e z0k;{Gp8J-A(K*dWdyiszW{@m@_!iY|&mF9D+XxT#^b1G2kt-)?`a`F0xxHz0{$fez zF&(rDK-)|ufPaNa5hW`a*>1V6{XSBoczjk)xB9Ak%g^pQxROY;B(j%6StFfZ{8P7uy%gY2;{d` zhn$KqV79=4j2{#gC>=?q!!W;uH{b`3`_+#@#VM26uvx6X>G+kBWLm&X(++yMgvH}k zZZ#rs7ao%4w?DIfBbINX!d@PWYvjgbox!T*?qg<$@ zU1=(=xxk3q>0>L5$4}Mivq+f~;Ez7M{$hHlkNBk(;Z6<^gkZvOyg)$K#h^F6Odvce z2pE?Uq)fuHo{>V|BNM?$t8dQC*FvIhG!wh|CY$jc&LU_&wI78&vHYwhXWH($Aik_{ zCOcxJL{dho(e3)d9}y-AGVknNVEHE&6<><2;E*)EKZ$q6*G?-{loaa7aQ`nE` z#PsT1k!&1oH0lqcB85J;us|DEDjXDz6_()4?epD4K#l&EID~aj<>M3~rKHj)Q-x6K zHmK&ACq#D--kM<-;+7-Su9-0xudd$wTFn^Qe04jxAgh=Xr6r5AHIRG_PQG$IdM1aH6z`iFjBegLJmGu|PS9iXu;ELG zP8bfUO6V4NHb9!?r*4h@GM%#;;J9JHOt|hEHLizDN*k9lnIDn&FwR$1$U2>D?>S}$2hE5qd54<~# z7f5B$yO--~ewY5zbS_v`yf{%jIND^}K2g(EqFby@WSA&Xgr!BhGi!woI0|a`#@{($ z&tQK%m+5$5Q*+2#pZZ*tYPvb1LB@n2d`l2+p=$}8>vs5Ft<-%>M5krU4LN{M6L(z5 z<%KZM_Cv0+*h*L*MqUA9gCkYQvUqq~r2Q-@Wi3Q$ih+XL77@)^e5p;D`eN=iyaxU& z-1H7O$P#-?iWY~@Nof);GmPha0Ruu+d+|24u-H*0F}ywW#cqS$Q+R}@YP+OvITgc9 zZ{BNft5SPcw2~QK=M3JJgA@)+;E-bRu$!kzbte7#>DE)&H6SIMtQQsgjVYf!JXwl~ zaeQq?*Rbt32c}?za=+z6==-X-AB^=xH7@G8#c%i$7JXlGeib?x33e5ABF*51 zI3#OZKVJ?df;9 z*lPY7bkwF*D5|>!`Lg-PA9dmM?GZIds%3>@h%&l13z|ma!9W33N9wjv^!*DG@vj#} z*lm*-H22Y5ZjZxj@Z*4~Hqo|KD=N|K9{-!v(X%y?{RjUbLdU`Nj{VgsUTxdc@q_Tg-vAz1ArD?8zJ2nRPd6I(g;Ycc1Dp1rYbr-ddOzA`=I26IM|?kRN9e%V#v_`0 zl45&CiLG;k2~46Jz{np=K3o)sqUjZFk5C+pH3`SEj-f>CbujE(&DF-kQ6o*u){I7L z@D@I65phQ)VVl}W9%`5?W0(j)DIj2YDJwQ%IVdYF?NOF0;2IqpdAS2^D3jYRJ?u@F z8l?p9;J9vmdIKNsjEt1JrH=G3HnyPeB|dvaxCgXI+`86Zk5frpCut+HyR%@Skztp^ z3?6C|p8i1R-ScJFi9)aXNrQkaEm?NICA#RY^=YHU%13KHsROeN=(e|k<#RQA;|YLY zjdbS4Uh|kHUVnM<6-`WkHQP>SdcBVtSt-pQy!-YiA5%nsfSt=Peyus_M_Ib;6R~~i z7{drw2jjTvpa(?aD7Zb2R0bQ^H?3g;-JB3walNUi^^EtKs`7@NUsN>nz{+V>og^h%Qk!M z?99TO*yOfDSJ`!d0}Cb6A{6Jm&us{z56%c}Yk{RSlM@;g0xh?W;W#EXIsN&J9+h|k zJ+FV~H=nJz)WLnAch={SVWf|E|glgmz>11g?U4jtP^e)7>feblh` zWR(1IG<+K(pKRetPA)4Y%y0*xpi2o~vhPy@KIfe?Y6VkRmPlxx)I2bM5fB|0W7JC^ z8-m%9G9=}lPIsRebkuPT8#)I`o*)iSmg~GkZkr$DM;WklgI&o{A^uAs~#X^P8^Nv$K2o3oOxVI}Oc_W$imIJB_c*Efa7IxR+Mt zlh9$6twE2S=o}l+)+}K*xtUU4#O76~cNssi3gxgX}Udvmx zsjDt^cGlQ~l67ikes$)erX1tp=N<>5lJ6RLX#zGvOlaJfQ$3N?x}GM2=Nmv2-X7}e z8dS+TOJAuZ2or-DtZ?KsZ`Y;*_DYJb;UvzpF4^OG)$P$Ze{1uJ61tz1s2pnY?Xbv! zDUZ>U?DLj?X_myAH1M!M%t0KDpA~b!7NvXk1=inqCj@4i&tyCAup=LySuB!>CX%ET3)#8{|I&H#h^KvL zO53(KvEL|~ouKT;?HnhEHLo^jb#>Y3)-5!jyuoe4clQKNbX+aZISZ1fe58*hjdL*o zyApVD3~O=o%8Fy&+i8o~)~z5Gee*2b8P(7r9aiUhlapjgykmIEoi-c}Ch&ax_4lXFhmzS|Vcjo>v1SN|i}$?>0`v3D z3*4i~$m8X61ma`AFZn(LS&GG#F~ZoWKoO1EG4$H{RVE%Z)Lf8{xiWhV*oelxQ8~ua>`ZkgzYF3QF~L0+eweo})0B!^unl#kgH{|+~kO`-@~@3ZuyGGg&vIqs_-s74YECn+x) zU#CzZChoFYexP9n<%J0j-~kCTfOn+_HBiDCOB{8y&q zIJ&-bBYxwNpOy#w1W9KDW{kabcqMXEc~wb?UX#rzz+>X(@w&)wJ^TCw_D;pxCzzMb z?i5Gggl2kss1|O4Fjk5Ww`<(d3=EM zcx#!N=9_-j_@AOWVSe+$KA*Fs2&Oqx&`4G3BB&MM#X_(kfVsAGnO5g^bAH45OmfZ? z37>-~{Ub#{_I!CKnd%R0YCfA`2eXDwv_ZiQhsxEv;;9R`JPZ}M7T8F*r6y9>Flyl* zt`s!182q0Wm9Qxh)LrGX%DSp&AU8v1`sRZj%|8^cbPZLlIRR>LP~p(ssU)OMR}0H} zgNCmnaXESs9V1T5$0iqnps6>{?z8GMemfjn>b+Oxh%f!WB~PmeUaY{$0$sq}O^zmmG)i?MT(fO9v1Pv z>_1gSOyp{4^7cv$7ESj^kHCp0PBN3|S|z!BU&_NOBJ~Y=7%PiY&@iJJSOvR9CM%{u zwQ)%S+2)Q9HkJm3-qF4DWIDg3iuZ;3tS8`ab2 z)d&0g$0p%UnqBgoeeurD&1wk@AjFTyMld^R_(jt3;}<%+bd*jMNkK9q5r-Hy7Kde4X7vSw=u@r+MP@uXA-f#mn$iu4Bnb6`pW2H7~ov zO_bS!=3dEn{y?5Ccmz(=7EvFCitq-;pKHCt&RA^54KE}WLF7(&DyGNq=>gDQFR~Rg z285^*Ts;odrgUh?>6b1vPAA7C$~G*g&s3f#x#Jg%9FHXrh{mg)PRF~}7Gw9G@+Y&o z6Dq4Mk}ie4`g&^fqSp$%CmDnAdg*xl9Ksv>=iO^>1f7=ymM*U6&5d4*u+cB39G^^J z`Qrna?T^ZvgkYnKj0rgIg1C7LW$9Mh%9r<4u%{%c*}tINr?cA|4$J?zt=Hl$yvPh~ zfsc^BO+3p(HIP7Kk&40J!y1LawW-6Y+5NTPU0E=veyysC`4G}TM^$Ayc_)68CFnMd zOb!$re3(|218oO(5xSf&pHCFITb2^ao7I8vSZK*yBXaGg6^^jUb}Min@x3>ru-dGq z2@JAtT4_AcijEtPa);x&D{4($qSztXG)H^4wSzg3!|i0a4MLgaRo1~n%lN7tK|WK; z(ocLWB1qDeva!B-$3))w0dGmcXu@IxA=-piI^q!=SaW6-*ZB$yd}ADZ4950Jlc)@2 zbe9md)l(t%#lyQPBl{V7AQIt2h!TEbTq4ERmEJF?buw4waQ(@>^{Du0Ix6UT$_bp5 z@XWV@L1S?)g*!ZWaJii6FNVbFPogauIPTbrAg9=P@}C zQkUEfo?U{Y)e(;t;qeC+Ikr?%uiLD}vvZF)tG#jbH=6&PO9H(Vu732OHN2RswYC4M zceD7BAf>sRBR+G2^C>*e=b-&491#zZokNKIRI03xRW@7XK2H1RWp+psMVeur=;dX2 zk%ka{Mc@I(8GQ>){2h-R4wghbPA@>AV6-Nzyp;OG;!2Rp8K#)>ys9XIO265M>TjYb z{YhKfsEaqwkCIlW=tT!LwBpU#htdtSX53axQAeHo=DlbAXIp1e`qb%TQM9K) zuof2en|9nv6L&oiRHyz61M3X68)(tDuu@4`%1`8y7++|R%eE|(A>zX6P5%te7XQ*Q z-OzIeWM}aX(6j_O6U=jzJ$JeA0rsv=d0duu5|QTSqH!a_f!CQ+TQDvCefak`o z->6Y;qlA@WC*MI=5HJmEQ!S{Wc#v!!MHA#;`2$mF7PboH)+1Tu&rDG-a<(LJnE#KIP=r; z0{11(#l{%~j`4QynN4!Xx?|to*od>Jx7p}KO!)V@y;ey1;I?i@_TEtB9q8(hVsGcz zeRw0K;u^>FE48f?vV8cv29@?HD0`A*N-K z`KHkY9|^B{iI#!&CC5v-Jp<*n7Os_}8{)Kf%L69H32KYnlDBtB#MW!t0*9x<{;b!n zw=LDV14q2ay2@5<+@*8m5E!S0PyOu(VlwCcvXe(lSgn1TO`L4w{Eya*%Voi9o;akl=zM(a=QWvK{W@-lG6z=RN zSe>z+IRc-H{G0gC2v}(~HO{K&oA!1uns*25h@Ss25qVR`q!M4w?O;jlrigZuTbiX! z6qhu(XL(qB5^xa+`=h>u&4!3Qld#Z=KpNLVF)Amtsw;Xc%{w69OWAVGr`DK)v7uI@ zemv|x0DRTPLIi0r93wi0#gsP5y5py>S#>8U-6%}Eye!!ttB`zrHrbSdBjznn?~VQm zSUMqrKoXNc+Z)CwlF1kjGYOYtLHVWW6{Nww{UcW<0?UxSWs0mfH?lgyCk?-rl=#vu zV>GL_A}W^(R?l>K_V|Wenu^2&O3UBuTlpT&9X<#tB$-)OdMrKxFc`8XViB1d#H4mQ4vr3S1$^!MBC+&i(~gIr zdOC(+BK3X^E)v=W!MP=aZqbIX1CUK#E3EoxZAeSWx!`T&8`it4+oz}4bv77H6 zP0gRkI9N(KO-vqJ!veWdYlO)z({I%4Sus>hbE#x;fh>*fJUjr5@6$~Nzjhk}-E2ST zm>uz;sL=0}a1sV8ISjSSp4-dnrQwwRh&5<4C5jCsI#^ly7M|fTJaBCUTfD>(+X}t+F&FaSkfjU1-FE!`bIM z8H=@L()TkFzMhprynd`c$;$_Jbv_KyJ#n1|Lqrbv`ok<%ZQvk0NFrz;a`iwp96}|l zy~&5s!>W6rZaAZS%vFl}IvXsqO}>!pOlXl|r?Ra1c_)}#x7$l2yPKa$tM2BHtl4jP z8DDub>!k*S3%0pr+>bg*yhW}Dbu}91iaijp&mr64@T{VRNLSY}$r6@@17YKnn)Ju` z;WPnDC!chh6Qp=$1~#Y#>E~R^O71V$d<%k-M90)I*3Uk3A8&F>=qy6%ylEqih=(e( z7=E5)UByN)Hpbd*EaOw}D5GW0n>c5>`F38u*7>QIS4vR#rqOl=<;SeR{V`aD5+La1 z*Ws-+nNb1Slk}J*EIzvE{iL1o*|{gF-xNMiQOtTQV4%D*0G%+XQAS*B5>q-Qfo|Yi zk8}y6nWe||$m5o!@iyjbY4up*^xZBuZ@?cn^ZwY7d^#0vIXxWp+S}~!FZ=f%yiOOd zk1~@!Gd>YJw@RpVQRy50I?k>G_K}2tQUmL=C^2D9F5OfPaAR82-ZVh& z5Q~rJdd*i(R0yyBU=ki#E%|f7C~z>`o$?8N zM<;M9rwq5paNlVSLIp@jR+d-7p^tnNoyTc!A{45Dy|uWyT|;jp;18~L;0+H}d~vmp z6=#2x#q&I09Ti+|x&N(j-f8k=r10piKL#U?jZ?pc{!tNXOV3qa{`_`$al>KWWXY5W zFA|jAwcb#5>f2_+5*p@C3%rCm;n)q88{-MX=9{Kf=QC-1_-b!{Q$>wpghi41yZU(~ zf!WHqKzE-;YH~HsXDJ6olQkf5cjWc$N#lcTAY0Zk%bsx8OWZ7um4i_Tj*Y(|95OHF ziz{QVr@ldP?11Q@gB53abPrPkp4{vAe8HcD7n=)jI~ZB8e#l6uTDYa*Y@?9K`xG}t zcnF^KMkQIKwO=o*(a2aqDI7|NSPg7ou;&vwei*e4*|bpfA_+1#{e94kbig27W1B|f z3!JlK?ZvIQboX?0cPqf1-^j_5RQZON+12=9?3_4>33t|g4JP=t?fP<%dxD@IBbgB3 zhI0P}17}G{fQoFVtIegW;qgTO?7Et|z_YD<>(7l*qR?&sY|wBO9GSX>xxo@QFmO!R ziU`YsDQ~O9TG}~E?;{3YvSv$A@UWw(rdq$}D}rM38T2Ds zbPjpK>=&_4jhVKr*$JL01~u)`vX!?}`->)6?k&wxjLs zYh{#j&7ghTd>OI9kjc13F8219f85GsKiQn}k%{ivqZKNyi0OusRPkr# zHf#^6N}mf14o#RfVbmh`#8zOB`+^kcE~tmK*N@*Zqaw9Q0`wQ2KRu%uX( zSj*i4!We?TaZ?#r;MZZ6jB9l%M0`$6)Cg)ss`2Qf=1}aAa~~Oz^6na0l8Q$dZ;(oL zDN&fT5e-6ct-m-TSX*B1==hUJSZ%iGY5`DB-@4{@82NQBc|(;U&}=#UQ)o)bd=x)@ z`Z0-LZMsg`1D`@yD=!>5Z49NOs#(a*Fpx_NRSEYtTqEZzl=qe_%6p{10FgL6sem}~ z*6$gp9v%UHN+#uF`tN30J^uZg<+$D&-|SQu?cE%-l0KQvr#_y!09(B#cuxvQ@?Tav z5fl9ZXR3xLx6$$Os}~`USPlR36CanQ+!fWvo8U71l^fEv=Fm zGmbRtXWsKl?I{S8HmpRF}rqmsG=S}sOcQK9*lII@(&yGfg4;_VeY4nuJN z01Y2%0BlIm&^NyTB_x)6hHem-%NOddcCDWa_hLY8F=VAWl{T7bHE{w|26>y+Itr&)_=3se`**AS#z{csFn4DeJbhttVEDceL6p>cnYWW`nPR#S&D}@A|sI1y74- z!RF^~s3S(r!Ay*_QmrOxZDiEc9<_mMKLEpvY|U84L^ww=ifIs!n-zSw)~NkCDh2MB z@DovM8jo<6YjI&M1v)0-*A+x7fjGWhE)uL~_po)#8jCsTZbLRnkUCZs&8=*L`PLKs zW9%n>kL&l(4nE;m){Z#r+B88>&G6{$Y1)NQ@_QU3H4WLddiT-pS_iK_l)J@C`qQb` z>zPrEmZ|k~LA%TOE~cdhPut+Tv&v3oyU6K93N1Xofj&h5FakF&yl4hV7>D+=HIx~w z{2XpacBofbO0ldcU-?>WM(6q2MC<+ciuYoR=xpLM)H{>VC>$|eVuMzN?5YT~_NObyz~My|B>{U!tN{$*>E%FG z?GVc86j-<+a>E$Qn<)AJEF=xlqEUJFWr1i=SME?16{AcE=qEqNXhfOvBSCV$&r2kL z%-N{KPWf!IQQ{^0V%DyXKZNCz`d#lP4y}Kf7aP@1R<~|4nxckm4wl@fF2))bk&#WI z9Bl28!{R&EL{KHE2l{&DPFpE?s86@6y0no)Q8*gc>QwM!gYxin%|k=mdxRQmg;fkM z5wFpmN)>Ruw!a^kLtXLh!6}#N&|#I=rKcFVY!IDACvmn^bq||Eq}vxcZAijY386P% zpr(E>L;cH6)e9r}$KG|-RaZPun@5RmJ+umL$kO zrd5VEI(q!S35YBfo6jr}Dyq<|PgmBa(RLGieYxnq@IJW1jegy0;Oca};n0ZSwFM`g z&2u=r;V#s83wO=7I-6^JP}21Ev-R74s{;ZZ_nyX?COl9+8=0csB?w{maOz{&BIV5~ z5o4#<1URU`aIi_6I7*4fVd*HMM&GCsjGSjb<;a{a!mTz;vDjN|xEBi7QHcO2JiXoxb((5&9mXW6*%LA)+gfE(?Hg_lp~;t1hDGcsY7cq=x$BccE+o@>O;rDM{$VJNrK^4sctLKCZ_E2j#j>8>mDmhS#E)Cf*G1Qhhf!J!7EfO2C^^ zB%r19JWj<%BH-H%X7KGjx8t#CKiBCEMtrvhetU|<7X&om)r5ud{PDcc)C&(wAP+sD zlg4k{3Qbb&lz{GN-zR>h1Gw9x)?~+Q83s$TW{DqhHBjd!87xoLn-7C~UeQ(}T^9vv zFT*$3*&l0J{oE==AIW4;@1zms8p{z5FwI^KdvLoHNvV>B@eBv8#91lEFZmHui!^tG zb-dk7-Y-osC=jZyED>GS(1c0QQ(4Zf=^V}k-Rntq+O2dl9<#sHuLJ3i^y;k&nl+ILk1^?)m#S@ej?G`WPy%K>bR@-QwKH0%W?llR9aAo6kx-GJ(br%- zwP*dM5Ni}4kNTsvJ}R--s7jnp2Py@(pp>FKqT@Xki^~}jrKE-#^30d!y$twa64fuTAu3)gP|nbfHfiu#0;)X7b)?x4}+yEetYOQ)%>Q zm*}=gfM1(u`q}Xn4p<5yTc5;CRf0_D7WtoNh+iL{XAk~xF_0_ZPQ(a?4wytgoZ(wu zCw0`khi5++OEI>=iA!k$VK&F*1hpVz`bXQfVK$;%KfP<%=Ek@roD{`0aOSB7cK_RHhVTboA(LC3sT+40Iyx&y8k>%iA`qn?Lh zZr9YzAP4APA9Z6#w8xO`q2;d1Q zp&kxc<(Cg6KDEsPMlk4g5Idex!Q za@l6_woZFCINVYA%gj8~nh!8tS$0Q}`B3|(;usZO#S$w<81cqcVSr;-5Vu9~D*Q4& zX{s<%*QhX=E!GcjtI70-3}#H%9jL_>mRa{I$d^9F@~bbM0HH>^L2qJ*k|S#`de`$t zQ?~onJsFJYtJ}hD72+`5^3H@eOcu~&Z{ziK*a&(3EqbFRJVYX760@u0I%fd$f>oZ2 z4^(imNDS<}xfNe_4dM$30S-j=#*?8&9j=@Ya_McH(JhkKuLTS&ZpXc9pVoDMd-HL* z@Em--=nI@|YdA}E(OUt9W}1|N!k9{tviUvpu9YWU^e#pSn9DVCv<>{vnmLTgZ3Qc+ z43Ev{56DIQBk2b07^g;~h*sM!E{F*qcDMV(S)1NtBK}!o@_wk!<@YFdJRon|CTuuG zH2E!Z@7`hEcaV&PNxbY(SgT58n~d}$wPbk_xF^AFRk>erDF?jLt-?aD3AdQP1nyc%S{2cl}cE9)7}> zuf z({Ri>?MzrvYSo;DF`{-}Bfm?#vn9NP5vW@w^794!cotK$=_MV}ZY&_hqKiN)HG zvUMBrqy{-|ApJK50OVUo{01H?%J%j-UMs)@*Al4Ks2n@Sh8&TS6MjH zukm6L+SnrLUg8+&rzVn zx~DTt{tTTLsOoqHll=mQwhhiUMkM^x;izNl99QXjN?7I0P!;JcvsQ*X*IY|RR%~x# zV-@(}J<#~3E}YHl>bc+e>b;NGp>BbdQi1dFlFy|a*kK?F@43O?Iw!-}-u35r-ESz4 zv;+5CRoE{-KS2EZLoxWL1>!`&fByN;JAIiSgd>}IO)zjiLZJwK`1eP`2Vq13n13(j zUxlJ1LqKtCU)L*{|91wIFU8$v|53!hO59fdnIoZ_#R(VrSM^XF4+#I=)Sp7Sa42&j zqq7pZsQ=j@6rrCv(Aodq#Q)vm5SfpDc=qlq)a?J!=YLv@GPlY0U!r*bX-^}hNXDpu zA1LuxYyI%Np#Mt_C_-Nt|IxF(ANf;%Nh1bDWb@{cQLk0iTGpovun3BQY8U^jRH!t6 zp)bWGJJ@OiRSv)XN9(>%KD9$ltkO`{*}gcUlHAQUd-j zJ#|D?6m4bws}uiBi1*Pum&g6|_vldwDf&--{7Vb^3jR@YK5GoTzoZUpaf$oiTK2)W z8RJVaYI0Ge$X^}$XHG!=)!P4G%!wGghJrga4gGRXR;kk|lIf9(Cy~8^&4|@TS9R#B zO~QY~D#Y#^CMf7LxU;Gj7M%6A38OU~SBv!jNEJ^?XdRT0O!QTqMl4vLs{mw^;F*pd z`0l6OB1h#Bo&HvJQ|HMw;~T>O!63g`>W?QrYLk5<>A!cr$9sUtxlhZCKZf(?(>1342#$_Dmtrus{CW z?TNT!VMjfaThTlfl9e`iEw4qzM+c*wG;3X)uhoqQcI5qSkq1VC^%kH0x|<@w8vXTl z7Luv4Po;wH&aV-{M987$Ln6d9+E)*v_e?7|7)K%C?>(RVfh^euvB_&+lZCH;5m zz0c#+&P8c`OE5Smtf&r!5(6P#B@Y}b-sLqQC4yyl^))(q z+Zh~%8^6?X7^qKG88ic#>u6~|9GK9pcYJ{d-YN(J+cl!GfiY?uyy=&~w5mz{=IgzT z=rT{_iEov*QSY1gHOW*6L?pr7VGO5nA2X&M0gKg3itkO=&4~y%pvLE-n>hNHfErnr zdhNf@MBg&hX2pk*stP!9|3XIZ^FgvIE=PP$hqb;RbZFZ1=rM zGg>jjjT&@EV(^t)zK2EsKHz2bq`wGR8@K#vPZVfL)ff48c>~0#;=2-rkx$m9TVTj) z(h+zX&S*F+S{@d+-4%Gt(k9t>ZN8rESZF%lMRK$+wD?StOzAfepjK1y7VCs}P0%%fPczUM6j*VI} zO;Lumc)o5JOHEem@Dj+~T8>x;QE`d-d#Wv<#pupfz__>f>&)|bk*FCQ@X?k|ATc}$ z{Ka*~eJd-EQaP?PjF4r{fq~G(_OXEG4+N+;iZbLxv_<6+?gu=swqK z`$}#*x3$5Tl!@w<`uq~aEdoB(<;z_d`f*hn6VBHWyjEip$dD@n< zcS-U)yt!u)PBY6SFS!n6WS6hLW>{QkJ&o+=X@Td1zZO=-J%0N9T%^_9$@}PvZ1?5( zWhN9B7#rUvoAJ2RbAjyGnJJ$%_GKy#Dvh~VNzZ*f=_FZ1thaF!^L=uMC~a<*MQ?Qd zvGLdUcDp&2R3K*r2-sG)|0(9FGioE8iD@vnCsg(IM@sCWin0-G?j3&nc7)`N9>+Ic zgr&Ap*7|y!3;N`;DLMqB(nY=Iy?rlpfB@SWYhP<`YB-VWaZ&pyI4)?ezRAHQ*jmL5 z6y73s@M-m$7Ay02J)pMnxac~l&^IVd5_e9**MW|jpn+k7t>^p4m1`B?ElRX_hm3p> z#mZw?B~a}MLL!?YnK&1)118z`-YjQr;BQ>n0&Qy|%tQQbcPD@@Meg{fdAdu_=b>o3!Qf{nV40u>{PyC(Ql@FQJ8se zeO1V%U~CqnmnOEX)uPu2^;1Rx+S=WX+LTUdU#1ZIdSPH%=EVf_fhECgGUFvzhv>$e z&tYWZ-NtPg+etRSj(sa|@7|1^N_)gl2oj!MOELfHvQ-dMGmsdl;sHqvz5LHU%mCQ@ zb0*ovZ)-0vv0W3{rB|>2$Jy(8(9fC;CfYiC>BLenbz|rEYS|(%52w~_jDW_Lp|XpF zMapb}DWpRKT& zwhQLRepSnNgIRmGd)V^nPH8DFv6oq0HA^ng>&%&tk;($3f*`nIm+9`+$Ntq66My-+ zjREF-5_aynxB(sO3(Cbm%Xc*$R@iI-Z@EQGD0+5QI>X!L|Ng3)lleXto$b@pT!jL; zO5|?4&gxunyTqmD(22`v)z+$Z=fm?Vr8LkvwdE^XNtc! z^1RttWn-gjzCWyAGhyOGaihn&I*ibLM1H@gZ_4Dd7~!h29l+zZdHHF&sN=!--t#(~ zos!PeQYm+-<6tu|v|~ksXx&z|e`JVL8>H@I6ToERT(1A4BYw54tO5ylrwfoxRgdoT z)Kh2rZlX!XhNh6-k!uZJ9mG`eqzcbZ-*D@FVTFkcjWuFLKj8aCyLI8|3_eeVl=u{= z2rYQq-iF+NdNDb?u3`O&W2W{3{Mv^DG}hkb-p|>V$k7YViEdD_sbbTxq`V|70jrIK zJruR5E9SofTKlxZjpI4g)?vpkOoXqw8bNkB#6tvljf-l;$$xxA~MJcm|Q~Hg@(_3+dl5h6j zI;5l)vLl?ai8jX>_$)w2qWO)#^VN8$GH+i|sotn8)#s&t6@nKHEa_d>)uMYxM3}J^ z(Xs(A#_p$ah2*PFHs!f#y`Oy5p`a>v9o8!jW1Nkh-^D%iu$=-Q?W0}H_q4$&q_&4L z>^;s&lee8X*yTC7!vtw@P4* zXCuB~x6p*W>d07y7#15C;w`Uo5mp*Xc7H)W|6Cbtf*qs*wJo)In>te6ANfM{^;m<( zO5XrmzdPAx>1SuCy8a*A=68I8UM#2oGrNN#SW{no z@_sD`p?|(Xb>V(FI}6fwbcUDD=ugsEAa%+lm!HP*mck59%oSLsaRV5hUt!Z)T|P_W z)JJi_*5moU_ICd8;)>jV!WLLzukeef2^sYr<`QN<6dHn zY-;UOoTt_#a^L#o7&Y))Xf)BfHA8C5KHN=-$#j=A$)lLN&Kr|n!kA{DP&lUf?mkuT z{>zINEmq@_0y0d{`{JsY)2^zfmZTdo**e`e<^49yFXN<9BcLM?kbiDhI2SD z^ghZVEs+8#>!znwO8f$R6uDS2EyZXxmj1TERXIW!yJWC5R=_l7hws91?An~{g^OXp zXMd{aXcFDmc&$h22CB54_ z;)+tKWuu^$Y@{Iuzb-P=F6kP`Pi8~OjPIeQ8sU5;Dodtm5xBp->w1p+=K$R&C^*;U zN;XtY@`J|HNAkwdbRMDq&EocgKNf+Dt*6*X8 zB@3BqIYJHlq(piZ3H0w1=M!3RM4APG$kw1OHs(+ZZtrf2Sg1GKKv}`6;EHjS^)FJw zbDA2@g+5}wmKUG~18}GuQ4Ks3e7qpTi2TZkT=qxw0I(L>ZOlZZ-kA^mYqW*Y8%Aeb z)-Ns;otIOq$z`K`x)f+)jScRn>Ws+x*#N7nxsu>V%;+}RE}GN-4oaA_6vaUbfACdjoa(e> zlKDQbbAqg)|J7qRKufK?7j)OZ@K&h{aLB#ZENM&aK%vU=+{Zo<5&x?NMwXZyginfn7!*47}^mmjW4 zt^Nh&4I)&lx3efJ?+Ll;RcRp*$6Y1usnUr!g`_S1$~kUfeTuM5I~{jNPC)X%DeH~(%4X2)_*_&!4EJ#-1fi9I&4>STrPTF9|f~B zFkubqCw&f&ny?~WDXQXYCkQ-bU+&+ucz~(^*TUiJ&zkGR*9QnT8fLGw!tXlw!xD`I zr3hl+cctlayltJ1L#U5dtq!8&2rGc+DqbN8V9euevJUlZi7$rZ8p4@?dh6(lHe?a+Nn& zi0jQ_?kehO{b&qD&FwF>tDT}&v2ynVV`O#=P^ZWhFLO zE^ss(;Dcb0ey@Vz*vWzUzu~QVqIZ0?;y~B&*Iy~r?R=5&x{H zk}sYqkMy6w&ObUxCZw1T%CL;W_z%eEJq7C>+54Y7|04q|ikzd?^*p2yf8qZI*?kvC zgybR@?6bI~{~Nv5&UnXvv0SCOzx63x1kV83jlHRmSZF*)*a-OlNb;#no7;UP*$N&Nd#HU$9{VqX6L z_IJXH{o+RS=x;8|@4Yx!X8M1JZ2u)f-+hMn^~F7#SUUJWD*2~uR46o3`mWl3;@8sq zv5v=!F7^t`zO(4A$KN4T&{fNCmke9+8M>fel9u!eXLx=7*P*G)Bfq4D27pn~rv=Ko zMFKr$QuCWx+wnGj*NO&eDv!r;RpMPxM(x@J+1K72H5asJj-)YHM%=G^`Qn~Q@)tI? zY9|eqI~-iq(rCKv+U_;)0^1h(a@eF4F~0GbesPDOaS1EvdK^r_r0dZ@?`6aCf+ao@ zvj_WS$__#pV1fE5BBF=SXL+^&DySSZ3FU<$G3HK@NMn~w`^G1vo{;J z8r(DkZp4J&+e@b5)gQu7_flP#QudOts%D`6H_Jk7E$;OUq5%<-JF8o3>YDxD&aZ)=%R!;F z`A>yLnTMYKhzN%D^ob{tt$gCtJ9#Wt^==3k4M(z{fa!7hT}N+e^Q? zx;(T+;m#L@iSG<`=?hA1Nzb>}a7qu@8;x`lO2G0i-W62Dm7|bG zz-uZ}CWc#7`MJ1&{hZ2fkNqoM@^@!iR6F>L7}tk|j{8d|CEaapE=Bw`8JQ&bQqcS1 ze6U;Ff~%piRC-;ujJJ2!m_e-qDRZI;9aA87Mo#4_#yFOt51Mzl8NWg{U@8dt7CV)z zSHu`pn}m%m*?w@kw7h;7kePXv#;%KRbuQC+Mn3SlMv7r^(!KnahJ&bPK1>%!C*;&; zq4Zj1!eP?9<&wv-;~QR{HFc;aS}L_7jwL)OZbcNIUu;$F5MUto@t07kWkuQ#Rov5Cp7R{E{=1)cSFL`-Eqg3Y0Ih7$!E{O1+-AC!d)O*yb}UCCVV0pu9&gXv z%4$k!D3FG~KK(hwP8hMMxE1u-q6lj>{x1RL<{cMILbhl2%@@Y zR4DZ3oTt@FQMHyRbzK{O?LVhZZ#iE9U+|o1Xu`Tb@=g^uGP`W~)ok6w`1-FyMm}NJ zVKc&Ji@_e0>b-vY16+G)GIjYiC(>69Ajv564YWMvd#6^IV~&oRvb^$yIuoPG#`w>5 zfBCVxvjIWEUzDcSVB800fI^EwL97iGO=nkmo#-1Npsm#Tf`Rvc}+hei%|6@F0_X2jdoZrzpXfjdge5zp>(rcV` z=9>ndOYm*KK)0Gk0NOKNiZY~$-`AuTmtp#MlCkplQ4c76ufLb*AgrfdTI;#b^1KX# zmuTxLk-3s*thV1ptJd+xfkYSk`$GTB^+q|*pXT6i=dkrSzGy`}KNnnM9uGHo8WRw3 zV-;2ArS$k^qFME@IOZn=JEWoE8V@DM?R+Iq*w&V3;*a3`e%(2{97wU)w3(3SS%t@c z9l*6#79{g9q*Ry-ifH1b=d)4^F`re7_r+Y?Jpy(-%Bzc3lVKaN-}Bo!5J$JqN1K$E z%#6w(?IpUbKv_TFC|sV4_0y0=>hb5xnOQ%%mK!D4{A{TW@^iO5!B$J`)-v%dG+p9` zw?1~#5bI@{$etaY2u&N6_xl}j;uMm`Bp!*t6LBxA(1fO%IUA02xGJspjFzS4x{Mk* zn%6GNv{r?kJu?|Rsyip}CzJoC_AI~oS8~E}Ak1wXT&}=p4Q7fT+_Oe)%lEw5JRFY8 z^wwsR{@lJH65|vkmbG6gq>`?p2oC&RKLuKD%K7lAL$A=4O7TWae0c>3B!ga9PF>({bQl<2s!IvEKas6taRjfI0w+dY1vCN9($&#~X z0osn=2F$bmylnM0Ee(%lmb_IQBf~F3(fUNY?SfyTjZYF?;iDB?Z4e-IaNgs{8f>Le zGf1BrC4bBbQR}OaE}G7aB*cU1{C?NdzNa+t?Hh^vJE1$SwmCq2z9!f+zx3<5exsZw zc3djyZO{J`Svm1=tIv54K|1byW(OttlEo{MB$xp%9yk0QGDC%$+3x_pU}?m!Gi%UH zB!;#b*e+f$Mn0fOVX=*w3@^p-l!_9sx0qjqP{A#90UfmG%916%TGalp_RcaY&Sl;6 z2_Z-zXmIxc0fGm2cWWFHoW>F~&`1cb3GVJ5wDBgmHQq>L3BhR~!JX;sbI+W8_r5c0 z-L>Y+%p5+jdUaLT`;@%(zE%I<^OP*D_~R1~YadTrkBpRfdYU8=4u*zzVpSkWU6037 zMzWu~cdgITZuUu!tz0X9x1!c1X>CxTQRHNMx9VI`Mu+IKnZLTD+ZO(aZ!62R9g2<{ zpk}uc&UMoHHGwf2jm!A7$9%eOotm(*GA@6@e)4Tba<-k7AHb2d_AG9Bu97)7B?qQ$ z6*^}ReoD}Hy~`Qs__OYUeSJ%w8E5u;G#Zcls;aE4 zOBQd(yM)^N@0B13i#|sZ_~an$Go6UIp^qZxP}+Nt*LkGzW~mX8H^tH?$^BDn1>HG{ zdIucfGZBjK?B_81$vH05exBmmRx^$`3s;Sq}xbkAQTSU2!wpf-DuQ3iyHp zbxV(7H#QRPs+AniI|!Gbe^hq7#W@O)*A-+57{i!rCH0RoDNB=k5ZF(&E!<5tiP6S& z{A={1K7)rIv2(%86efml(Lqcw>j+YpsFQ@5pYpgl)p?doE6BH&xUg96F!^P)J&GE< zM6HRiN1v?rrH_9 zK4d?t3Vt5e)$e8CH+zq&*E=7M3}-HTho*w{wt5|`0kzZUr~(m1ih6Q)Yi@wMiBAMt@B_X3?GPAN-tjzFG6OZouHRk0=L-*MO%I75B2daWiai+nDbB=d%eCt!k z*Eb-Q%EmY|g3;U{6DnT=J-Jr+Osw7Df+tTZLF&nxfpDJY)0k*hsfK!6*q&j>D?FNa zHQ}NGN~!4LH+w55gJty9I|#BYVAYGe48qCJDkt4@H=r2Y>}bwq(WNKza-$_>0MwkA zVz@)qE$P>fLxgpp;d074y3kWD3yRN1i(#gkMs?G2a8)W-l`eWExebFb&|Aq4x`}lAe5HF$sNvTwSP0u6P4d z>y1|5%+?jYU^mdzt8N1chErADSzK$B5%t0_sreyM`D z{e&3ANPl2GZDwGw-iQls5%y9P4h0*5E8B34h&1Bk`P+mdSSm8o%FJ%`9lVqXD_bdu z25y-=!%Hk(kWt$~xQ108H<69&M=5j_qu@FX^orL+wy^4Yol3AC%ZcPZ8t=Y%KpYjl z*1o%m9$iyaRZaZxyF+`23V~&@DC(mX{G}O1#N4=Uh6r)cq4In8It4xb2tQ%QvD64L zIF(xmuKG^{XoSW1S0!&LuIKzK?o&2ujlP*l9^=^cBDP6in>pw-?>rPLnTCeygf;3@ z(-ky-T$F%{`l0!6%`}mRMyQirbR`LH@^M{VN9;?u$LLzP`&!@E9%j#K902sHu!Tu% zJfdZa27;2wU9_(Ul_{kGmpDe&X4=mZ4ZbeqdJL@IsAVJSEzJs(S*0Rs?qb@Dzsqmz zk_|mXuAyFgq!V7eDZAd{T>mhdPKCAAXC}nS_-KXxLsui-tGi9ha?^bT4ZNy<^n*># zRC{(^S-4JqqXza)7D;t?+2`6%^PDQt%_WXqAdUUv<}v3~q)dSK@HUIU)U%D2Wx=!O zJ*f$ z5@=VE9KQ6Vz77bglqclR*~7H<~b z#ln=ODOLx{+q7IYQm`rCoL^Fm2I7nG2>JjY`@P%d9?}7XtRK9m-hV-3M-Dh z+L}c!^Un{f8?AUd@QAj640{`ZMwH3gpyU}PgCsgOSlleX{g2G)Up1KHOC@9Wm*n@% z?CwRogQ~;7Hg5+-7&PB}y*~o9IfpA0;+%+{1qBZrG^L*fBREHQIDd6CjSH954XMt) z9na5U7Uj7dmZrFB0^iEX7iFy9Ws{N7iQxKVB<>DfD}B5j7g3r;+kGu#ia{97E>X}* zqNO9ERiPKtl3#W&2ys#Cn47pw(|B~0JxCO|@}>JMn56Yh!?}&4g|~C{Tj5ht>ZzVt z4zE&m86*%cdHPfzeE){$FkS3jrO6Et6G43B(O`vX ztW8Y+LDCn)03uYkg;l~!i{CSDI`K86%$K?$TM)TC#eTf*hDFr!Su8||VLIa>6xz}< z;@}ZZ-T7%8+4YqUbY8d?(1{>=I%LjrPs3ZErWP}blHn5T^o}*(JeP_J^Ps`7ANT8S zZbivQdU?C#q=IkjCd1~P#O4KCVG};?nnR;qvg=FTm1K8%6*7?pIb>3SRX%Bk%enQ< z9LuVQt2SUsrE$$qx4hSj8I-jk+?~p0$5})?dYd`(B$yJMy;X8nb)C%13N1hp#`QVe zcL4(z4$W;tR7QEiM+4I-U6?k6>2B(9)$d2xeHV23LyhMxpx=iKUCNCoW6;+u_M=_7c?VihR(S2C#Sl8g}eP6Utc39NjpOm$1StXWE+ z4&~Q`v%wo#9sM4HD}HdDa+fG082zqscCN&bSc!yXG&$|{L;fSOtDor$K>1i>n?{Ya zOT@a|CDwYrzrAONb5d6}Lc8qOGpO2nDJRx3ER|Kr(^ONW>Q=PZ4nSxyZ|5eGGI*!l z*UdlHsE)klqVXla!7)m;KF=s>yLK_p)fDL@mr8i4vn?p(POfSydPxVKj?#UQtS8ir zanqBP!OO6>hrit+hNq zDy*viZB^7eORu}=q*tL-=}MvnAOm{`xVP;f9511f+#wi$f0J$&T1C0pgD9XwhQ{s8 zixF^1w6cyg^<1c{dZW4VoK8lUd1a9xI89C4i?^51Ey9YOl#Kj2h8P|{afBgJ4}(=j z*fC&GM#61!Sg1@b)%cyQ??M#GX}+?^IBJ`>+>A7lNQulCWgS?o!sR^_{LSl5t*9S^ zUmmAUWvs?jS{@dz6x>aqwZKLwWUh{ z@8qgMTjCeb$~o@5V#{uanpAk{aRC-MVhjp7+;?T0>K>9FI(NV;?O=!U*VPVF_tvz< z3#tj%MURvEN{MSdk5{Iq^T%TAJ_@))FdKvfQ#@(-=@c9}FSe%>EJ~j+59f_}p7B!q zk?!e%@4+Nv36^oe&-#aS&YpKlI4R|(MU%ti)`t#HyZQ9**X55A7FRhwk7N{n1h+ql zvxK6V&%Uy@L8=#P=3V5C+*Yqx&fmdK-E52a(IVXS%)M;CB2^kbiH8*{!9r`s^J`CW zT2Qozv{EG6&NR#LcC`nxcUxZw-Oh@hy32;BJtF#wi19|gi>0ETc;p}>Tvo5))a~~- zqgG5wy^HhaGE*SlV)td=fXY;rl`HCEYiE7%L=--)MWf_a2!lnj^}aQ9%d1L;X$W4M zYpO})tD7RI*(-I&XqoHo`Xr$TJUvFN16ELiPWnsd9LR-d4P2jvTe!zE_Lr8M5tv=a z&eZ_VEkj_)sOd!oDE>#P>V!ZCMb&G)fg7%X*Nn}Kkv%jYxrrkvZQYZ}lL{=$ZD-wo z&14V&BurRG(O8FAdA{X`zQR<^60>ojYAL))H9IAOIZHQ6?lAUSW6W(c26C9V`7FRE zCN)qTG%oZZ%m9%`m4m#TiJ4V?ePFAoWTA!QZ<0SOX)8M1iP=p(H0ZOOElIAb z!G3KkIN1F0Gin~_Z5&^&Nw-ea9BvKk#p)PfGZ|vtn02Tw``BWH1}2>4XykEG>g7#i z!|`3@hWs}1%caUqflsD9OMvi8cFapYUrf+h0zVbKT3$doLlKs#^H~6X>x|Fg!No9X z=0>v+M!WBYH*#fv#MLSyRV6y};Ne;BFJLAdIM= zx*-c-jI+!gw7+~-KrpO#)(Y?1U=l&aD^2-8Hu>3${5$p3utb5pmju2m_9cIPzjCvs zZ16gA<27)T@wGgk)#I2i3{VfXHX+wHGBo3|kQdwxyHDH2Ft@8qS zAvXIFz45csa=bGM_Be#BiPI{5i@EP4en|+ig!)kGc()X*M&p*ulL(R21?q5XZUDXLd8MRWIg5EbP7hd)yp}_ zOS8VJ_{C-6Sv8YOm}lsv|6~DlOJjR2Ge^b2Krr{^>!3*17vIL{mPly z8&}`^4hei{Or1qP$>6__TI zau^ioqB`7ITH|6gP(HlBo6dIko=dUfA1Hmb#udB2EzCRupa?9~E4kTg%4noGsdKZ5 z!F~f6_?(1O=^ijQGEhq8q3bo1UretGjs^A!wzp)t3-LJEB>ULa6a#M)Or_-?R+>o! zckZjL(kMsk^#^#3Dy3R2wb}T?7%J=st^3eVBC*xbfZEXS`sJr$6jdjNk19C@fa(_{ zm2ZLU7~B)r^+Uh}fo0fBaE0mVGZawy;S$b$@xzs}j&&ROHs*>Gx*wCs4FzPEUnN6$ zu&p$svqF~3rQqp7iS+{a$9Q^3xeNWxp7^XQdfBU3$2e{;XKAIf&iimkT?b1?#vmdu ziNwrbt6#iwXghtzpP?c+@pjpqcM5c9dR6Ur)zssoRHO(Qaw}nrNM{=xO2~&^#Ddk* z0;bK#OsC{RZD*>ey*+2v=RPUEoqM+Fel6x!;$Vw&Dd=BFLW4(zZucW}fjf~aSj&Iz zjC&m5bOLb;+8{iZzas)Q$}v1GwbD5F)X;%`DwY#f*$My5SE0zya$B<>B?OUIpBMc| z-rY(+P8FA8bH5<~3dd^!Q0Qih8A>Nb7EOv@Y)!RHE<7Wl@2oa|)+4TR64HnzrI zHQ?UIvzTWTqZ#rx6e?o$CVkMVDUaobLz9`kd1({_?wOA9W698xs?39sH+|cS2oJ@? z=Ba`&7$zctPti|BVu+v1zh@|de&YLKpHn&wZ zi|NXs=hQ()rC2>+^~><;5ApGzIKZG-G2|Z7N8!2W65q_r`<1j35D~{voE6Y?j9?wb zn7@&aM9nYx+Y+{#=HhQ>uZ*->%=?+F#&Zi4MgpqcUC-(|p`?*=o~>!|n=OKBXEu0= zxoe+0>FfeA+*)xX1?m)U#oVs3xcQ$qVh{I{l4HR~eF}Wh(k;FN!c3WE=v+L{)W-@S_+jcN*879nLdKM4WR0mIG$^O|f;@w2BUw4~#9)t#^m%yM0)jRtcg$ z=bu>^dT$-+xH6{Tm5$^)Lhj2*{6H~3syY_<4X0Frz(GrWs<$>ZS9w|q-MN~6o}qw% z(i*LEdx((uFeM6fiLU{;5w5T@em@v)O}bZb(rvwO>D>83dV~XP(LJPP*JK7b-a-W4@Kx;o%gaBMPiFx$Synt z;Q{h$e19Dchc8~GtcM)b`ZgZM!L65fL5>c+Cix^aP4ZRI-8ApL16=~2479TN%^9s$ zH|AT0zALONR|zrm?9S>+(`Selt=9^tHY#?cuvB$@5%0RkDRx7>ALFOd&JjP=pj!Y4 zH!t6Sw-L@he!@!^f}#IQ+jjBM>W zH^{w=27&W$oK`=AgOYncaLp)k9v$yW$|3sspKlch6zuqXcAZZ7AV&X(O#RP)P=(h= zpAej!85(KNF;RYTeL1^#NK__*7F{acXuBX#%-&yzk#M@m!_fayhG@$lqo8P^4$$q-Oj&Quz5-fgDob zLd}d+USY=~cYGKp-kY<3B!}*Z>Jb0AL7Hb#?s*2L-wVE;yZSaSfifp4>7TbgS03kC zi9}cw4HJ;hjlb#k?@?liUf8!2B=G({krrv>Pwsy^DTx zw##l1kq&Gp7YPU9T~t%px2c2i%Ge)De#~P-jqT`0*4m#isQ37fMB% z%!9!91Q=H_1eV8McbjcuJxQw~Q-4jBC zJwj`RQ?<664O^&nwxL^ z=ft@S&+~FggW<+iR$AxAdn>Om6Ia6MS6(;A7FQe2_4Te}*zdhEI|r1k8nrInW_u$y zeT@T+AX*k~2jPKxz{g6<67~IGIdgbw%nKErtzwWOExpSqITBEp{7ot$_nbiEr;XXZ z&78Q=9V0p6?R@8iDZ(Sq(u454c|n_xQ3^b4BvDX}+PW~k!(5g@xEdsVOq`zr;or=R z>P$4NTo$>6ab~sK${O|bj%+n^IM1#XUR>tdwRGOXQZGn5-bp5WP{F8Z%)h3o-qb5bO9ZHVc_yyF#?v8 zE~z=PYi;I%5+gV<84Pk`ItM^5tsQZvCQV7NZzLJAgX&|@zT?E-@;(aR4f8wliRs`?%tu!XRdeN!8 z<@=IHw8hJtXTQD-Fw|WLly3~F#UhD*niJ+b zI04Gly0+PNJhxMcJ3c321My+1@UsyeB<)b!u>zp;uxGvLJqlN{^NJ3ihy}GiX%d9VA7LrT=MgUTP&Y>l1b(dGw461aKM_;($T~Q4l@yzf-9DIP`m8R74PsZon>-l(-sm z^{7wTk-820fm|iMvz~Cwf#bRj<@Lt}tm9+_AqKjT_1~LV`hgSy&2IM?`j!a?)Bg3v zvH~oIcPY5U(O>)-v&`GOY7+2dXv~E9j-;~u_l8)WtUIYHe&G*Y%^&oxL#iR<+O$q9 z*8?s)X(@fz{}fTvPdowtU2m%r$n{gm|$XLQ4IGvpB{{CYSM=EVsYS&R61 zdYF?*e7eh|`Dzo-ZUg12l}D_tz7?vX6!&R3D;Xc&oITrNzVKc6Ky5_4wSC@M3h1yK zHXiBD5FD3(#BG88sPS2WcSu^XiXh0lwc{pp-o}My&*8s;D+T<4D<%9_xKhZ!aivNJ z$biH$`#G<-bkm-?q}kePN%q@ek%#rzr^_x2_%LCcv$-H?4pWGTOH*ZKtuv^wgsdOh zzb<$F*vXo>>&jeAHfCZWEUUWuN8|L++`lNL#^~QsKa2yjWtQ<{zJ$GVg=v$0b)Rd& z$arCwhd%`!%CVGtALD`KC?9Wpr9jS4s)5xEOUSGso*d|l_x#%W*53u5AV*X8lel1& zF=W`HaJAgs8lSW@9>ccj9R`NwX>daANqi@CIZ)2gd-!_SsiaaF&onwbVri`GO6yn1 zaM5pEDQ)q;k1M$gdVf3?g;)*15!OnN)Z2JhA+ALQJ`P4RR6-tkb_I z0Xw>op<(n`Zn&JMs#4`__s0TV}!Eh!e{2K`qF^kro@#USGlaIX=?4%1g`;X&Bf zFg-nF2zF##flMcsAl5)7uGk{NC$NdZR03HM5TGL)7WL>C{(0o!aZ0fFw;srW+NVsm zwe+#<$+FquHHZ*0V1g`{FBCF&@oi{(3ffck!L-*m9Vqv6!LGbx7XAtU#Y+@C`3>6z zVwv0Pq&83MDkpLaDILTd2KNlRnVW}#4c}+X7Oj?6$^~T1r1XrgovBY&as6ktK}|(W z85@gA1+C?skuj?prvaKeZJ%W>e#1&5!|&qYy&;90zb6yIz=WbOD<#*dswlPN{q9=19+r#Rb2vxYvLH}4xVTpFDX zy{H=4vKg5iJlzO10D`_HzBA&WYdQx^V<&TbrT&c*Y@M0{(Nyw;y7=Avs3 zg0V4Tz?)Al-!IJ#2qaC0AEW+Rw*V*tpsB!QV-Gnk~EaWm3Xe4qS=2^kbo4ZiLS5xB1wnkg( zJbCOX?6S;TYnDvMDa)LLN=?fz%^H85-Fp67)mx0* z*4fPsX1WL7gL)nMP%^LA87Iw`=^XrGuB{gGdRhx+52Bs<8{F%a6&uak8Ls?+Ra92| z>7|z@tBk$Xw!1960PCC!+zRjM?y@pBo2Xfd`+A+*8`B_fADggxW3vs}5Ongvl zrHQ5mr%Oc)wT{E5IAZr%`2d9xK38J@j`v`ZtYqN@ksr>7mJ&xc8F3%k{CecQy{ecp zc0x*D=~EbTfy;@)W2qVn)w|2FwaQ`}s+B0VGGhbO-fxO~sE^ED2pZnYf1#|j=Q ztdIph!MaNU!#!j~={<6{YH1inJ;AUB7Avne>Ru6tjefI2NoqEAp&;U0zVC5E`o!=F zaK}Cu58E>1`T6J|#)9|6Vxg|aiUt89U`44;Kogx}S332z$t4-ABRm}*VN?YiB~rT$ z;Kc-z{+UtIr^(JUH>XXg!0F0@?BzX5N!6g+tzE5NAhg~i`t=8wG@$&OOGZ$-omDjQzl$>gb&nrDZL8NhoHrsul@f`Ck2r0=S%ys ziU>KG=`81bVSaIl;ID4`bugXHgU()i4Jq}Kk{7i&yWt8mX@u9S4pC&}NEqAjy@JB_ zlM(*(o44>H?H{b^NunFSiKG~OR77iT;K%fF8R_d&j7pdJmMoQ-56xI}uc!(H9M9H~ z!6W8OBx61n%Euf11kRhi|9BwjqaM&t$|&dgoK)Mn;!$h_Sf@f%HWZA(XZ#TMN*~F` zK43Z+`%rZ>>_2Vl2gLS!4|QyjKK(`JD#~q=Jou%In=*rZ1Da&3D36S0i1ewidpvA! znS{_e7NF}lei(kd;iDDIu@p5=da(pNves)I98#$Zj2?nAqFO57%~*}U4o*l)Z3mXtDvp+u zQqviWWrC%tuhODs`<0x!mm)=ejF`2TlIX#`ndhPGOV?HW=7>xjA-4q2o$Ln>2nv;C zrE~{Z&MG^<^RIqfy%bC$XP6;19^w?*f)i4o0{mOb&WjaI7pp?WXDo}H&~Qz*HMvwSyF5UE%_xUO2S8Ofief`mxh?dt8=7=c;XXD@>62 zlH^KoVKHFaIlMY~&IMAZ@axuI1qEs~Q_4xN;a@|7_E=fBp9KstrcDu4dhFs&L_d)J zw6jvn`n5FDTbllL47}8TfS%75%f0puwd=VSp=l8;)w_EfyhO^3Jk0Gq z@oC7UX&;rd{jr(o6kzt~n5Z-9XftnCSC5emtxO&1WIq*Z@F+I5pl4T( z$fCKjWdbm=Tat0hRa#7=Rl@1{i3q@Ei$`d9Z;?A~9oncJJCx4kD|fUk9`I}5tg%Mj z!aa0=@<+jDgR_3|#QGQ7O#!F)Mn^-yIpY9#TCS6ipwZXz*h}-fF2%P>&%z{7Eng4_ zjcvc+XHyu^9k1M3D-&d@^l#QqeX1R=W7Q@1^c_K}FlcmE*j4G0yJMHVd^s2xIHeRl zf>%AMgks#hc~aMySCE4`oBgxKU#-#;%^=R!q)7uX^DfFuC4 z^8(Pin=LE6+|PMp>T>PbK}8B=EX&x%@icyY&ONr1F?&^S1F}*mFB1d>6Ix-ez{z}= zzcicZKINk)$k}N=Ul5!jQV4~nCnR8TI-$k| z7I*_y4_7v_K6vx5azU{<&361@|00uQ9x;_a-^7TblPL;jw|w-1_nhg8s|)T4{&Vyi zJt1QvJ#xq#4DA(m9nyvVCyI@%%!++5NRj*25UZWwq{TQLemk8{SM1SxT8BY`y4?7KN*hw;*DEhp_zBJVhkC%SqV z*Evawp84E^nJ}WRDSpGGm-iGDc?z04Kj}VkNAK>S4u$xN z$g2ht4GvcKhz|2>ekO(sN%ae_th!kyrXezp<>&EPCR}EFOJ@#L*9%b$9mNhiQjaIF z_BoB@j4K8f6f@*a{AcfvsDH@B=N6@JJ-5)Fi=?`GQ;{7m0Q|_Z+{kR7Xq!mI^{J?Y zbgnq&)uJd6c+&1SWu=uXe42USgJO?HE1e@|MkGH7^9@1>YFm%t3Y4aHqa09H??%@m z_uWgSo)*8*S5v1K7irvW911LgIC#-KUmhK{7<-OcT!3 zwMjLWb&ieribfv85a%|-HYqL<+u1=p8xL&5oi62buMXd6xR!#40tb+-+kLMT;M@vYabJ@SzY zWq!n8w)vACc9k6ixT<^zAfe!AxxoUwY9tCK-M(G0YE;TN0H!X&s(qdWiov{`!vdxs z9L|`z@;aTM9ySGa##7zJn4hK>sZp()&Zw>G<)?rr(axvq5TsH{apo{V{5uaChn65+ zN`OgcUWbvx#9WF359BnprD%H6SETPkQ+7poVOxb;uV(}=%z9yP;hrWk*7w}0`1bDQkz}W2Y#I5xAnBPa$mw4SqUyqiS$K6UJwS~epZm99fR@LVAZi7S>YrybQC|4yKU)tk}s&P z4gbk6Vc#M7rRz|kF^6xZ;x{VUzSDgCgD4hKo91GiSHl*u<4lKS!#rAqU4kJPPt!Q;qx2%lfnA`i4umklqY$r;r7sIh=D0rn9Cdab<#NotsBvw*n4mUGoQ+tSHBnM}`|#{qrQbWDCc&Yx z($VQO-GH?c(G4kOCX(6onc9ePWZCZ=g7Z3@KCQSBJ2=KZ%oW(4m!X(rD0PcDdURI= z%zVZ_l>KTI@vTE}`8`A1cSK3i`7yc6OhEZjq{9>EPX$Ct*VZP|XV}6%4L4iLEVf*G zi_v)oRwWs%_Sv9mD-v`mOg5YyijTzMNKdd_JBFy4RbDUzPbWxwBv&;$uQnH2DL8DK z%S!C*F>lTD?8wIU@B|xXq(FW2lTJ$Jcs3KJUwLF~S`)n7X-|?4dzbE+^Zm@mt83?A zMyHq};}8|g>O%7Dob1i}?ze{IBS$vEQ0~#a>zgbouM7P;bAIh~m`bUTkHv4&Nb66e zQP-Cj_#@*_kQ2Z@%GoxW=T`5Si_wHe{xrvSVy<}!(#zBYwi^6$pcbbpaRnYBa}h))hJFH17jI=ZECBR09uhTAVp!0Vr;21)iHyFo zJ=@#W&iiV>gUM;i7!>lsU^|h(1rL1=ba1m`8o%jtskOM}?Rt2URMv9RIlgs$<%`lH zIQ~hhu~Deqr^KIc;qYcreLd;1kWK-@&-XYA_b@;pf|~i+MqmhtMYcT?dNh0p&Y=W< zyB9qW$yvGG8R8pBeWu6hmZhZR$+moVy5;IMr7r|s-)KUZqGGgHqqz7T?VpA05Ym*O zqGu{~x=BTDWw%$$Sge-ly!N)f-cc~$Us7~v@B76unqqstJ05R{yNYjT`1<|zW?s%~ zL4VRwvk=WHe?bGWrrdx~b2Ewe&;bb?PO9rO^wT5>kgdvzroM3iLOi&Ue7TLc*=rjV z26h$==)D8_*>}!{oo}FHK#mXI6Jd#yN8q z0_MvhW;K=L?MEmVunQ$lYqRrQoQ{~i(c$HQX^I$|#I~9)d`vuA$qx@6qM%~n(SCV_ zf;_4L6gARUro@DL^mw+@d805=uH}XiBIWr%bN$B$cQ)FY?Zm~e$lv`rDXu4L&XD>w-MKjnUiqK1jVpB~?U^A8LDnVWW^?1N^3jx##L|NQ13AJPf% zfP75$RDam}ue4m9hk5cPOE~iXtjd2R@iEcP*eOp5|E}G?a(|F4L6MG8Z=s6*i;;H9 zNFx&qJ^qyY)l-ziti7yIr};;Las+mVbIQoolOF)MSvI7+o4)e2cy9I{@6O|0pEDHjiz`X_t;D2G;CvJ`(oK#uUw?SlN7^i$qHHPj#F$Uec~ zr(Z0#`%9ZkmcBvzQ$zhOCr}aD4OWZK)c#Th4F1u-SVW7*N;?zon34bI@%Q_}d7)%~ zu?Us^aWHwDlMdfssz5vQ^3h+KM6&RMCPST5B=cXY5KM0K7mNPgsQ+%%e~;Av=WhS5 Z0ETH^o2PR&B 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�-1J$Ab^6y63t{W4!+c>@68@)yP{_q_&c3-Uz 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 literal 0 HcmV?d00001 diff --git a/cluster-management/native-agent-common/pom.xml b/cluster-management/native-agent-common/pom.xml new file mode 100644 index 00000000000..bedd7fc52ac --- /dev/null +++ b/cluster-management/native-agent-common/pom.xml @@ -0,0 +1,70 @@ + + + + arthas-all + com.taobao.arthas + ${revision} + ../../pom.xml + + + 4.0.0 + native-agent-common + + + 8 + 8 + UTF-8 + + + + + + io.netty + netty-common + + + io.netty + netty-buffer + + + io.netty + netty-handler + + + io.netty + netty-transport + + + + io.netty + netty-codec-http + + + + com.alibaba.fastjson2 + fastjson2 + + + + org.apache.zookeeper + zookeeper + 3.7.0 + + + + io.etcd + jetcd-core + 0.7.0 + + + + com.squareup.okhttp3 + okhttp + 4.10.0 + + + + + \ No newline at end of file diff --git a/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/constants/NativeAgentConstants.java b/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/constants/NativeAgentConstants.java new file mode 100644 index 00000000000..9b0e9628468 --- /dev/null +++ b/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/constants/NativeAgentConstants.java @@ -0,0 +1,18 @@ +package com.alibaba.arthas.nat.agent.common.constants; + +/** + * @description: hello world + * @author:flzjkl + * @date: 2024-09-22 0:47 + */ +public class NativeAgentConstants { + + public static final int ARTHAS_SERVER_HTTP_PORT = 8563; + + public static final int MAX_HTTP_CONTENT_LENGTH = 1024 * 1024 * 10; + + public static final String NATIVE_AGENT_KEY = "/native-agent"; + + public static final String NATIVE_AGENT_PROXY_KEY = "/native-agent-proxy"; + +} diff --git a/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/dto/NativeAgentInfoDTO.java b/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/dto/NativeAgentInfoDTO.java new file mode 100644 index 00000000000..4e7fc43d8e4 --- /dev/null +++ b/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/dto/NativeAgentInfoDTO.java @@ -0,0 +1,47 @@ +package com.alibaba.arthas.nat.agent.common.dto; + +/** + * @description: NativeAgentInfoDTO + * @author:flzjkl + * @date: 2024-09-05 8:04 + */ +public class NativeAgentInfoDTO { + private String ip; + private Integer httpPort; + private Integer wsPort; + + public NativeAgentInfoDTO() { + + } + + public NativeAgentInfoDTO(String ip, Integer httpPort, Integer wsPort) { + this.ip = ip; + this.httpPort = httpPort; + this.wsPort = wsPort; + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public Integer getHttpPort() { + return httpPort; + } + + public void setHttpPort(Integer httpPort) { + this.httpPort = httpPort; + } + + public Integer getWsPort() { + return wsPort; + } + + public void setWsPort(Integer wsPort) { + this.wsPort = wsPort; + } +} + diff --git a/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/handler/HttpOptionRequestHandler.java b/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/handler/HttpOptionRequestHandler.java new file mode 100644 index 00000000000..9626044f4d3 --- /dev/null +++ b/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/handler/HttpOptionRequestHandler.java @@ -0,0 +1,46 @@ +package com.alibaba.arthas.nat.agent.common.handler; + +import io.netty.buffer.Unpooled; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.http.*; + +/** + * @description: HttpOptionRequestHandler + * @author:flzjkl + * @date: 2024-09-22 7:21 + */ +public class HttpOptionRequestHandler { + + public FullHttpResponse handleOptionsRequest(ChannelHandlerContext ctx, FullHttpRequest request) { + FullHttpResponse response = new DefaultFullHttpResponse( + request.getProtocolVersion(), + HttpResponseStatus.OK, + Unpooled.EMPTY_BUFFER); + + // Set the CORS response header + String origin = request.headers().get(HttpHeaderNames.ORIGIN); + if (origin != null) { + response.headers().set(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN, origin); + } else { + response.headers().set(HttpHeaderNames.ACCESS_CONTROL_ALLOW_ORIGIN, "*"); + } + response.headers().set(HttpHeaderNames.ACCESS_CONTROL_ALLOW_METHODS, "GET, POST, PUT, DELETE, OPTIONS"); + response.headers().set(HttpHeaderNames.ACCESS_CONTROL_MAX_AGE, 3600L); + response.headers().set(HttpHeaderNames.ACCESS_CONTROL_ALLOW_HEADERS, "Content-Type, Authorization, X-Requested-With, Accept, Origin"); + + // If the request contains an Access-Control-Request-Method, a response is required + String accessControlRequestMethod = request.headers().get(HttpHeaderNames.ACCESS_CONTROL_REQUEST_METHOD); + if (accessControlRequestMethod != null) { + response.headers().set(HttpHeaderNames.ACCESS_CONTROL_ALLOW_METHODS, accessControlRequestMethod); + } + + // If the request contains Access-Control-Request-Headers, a response is required + String accessControlRequestHeaders = request.headers().get(HttpHeaderNames.ACCESS_CONTROL_REQUEST_HEADERS); + if (accessControlRequestHeaders != null) { + response.headers().set(HttpHeaderNames.ACCESS_CONTROL_ALLOW_HEADERS, accessControlRequestHeaders); + } + + return response; + } + +} diff --git a/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/utils/OkHttpUtil.java b/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/utils/OkHttpUtil.java new file mode 100644 index 00000000000..fae2acb47fa --- /dev/null +++ b/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/utils/OkHttpUtil.java @@ -0,0 +1,46 @@ +package com.alibaba.arthas.nat.agent.common.utils; + +import okhttp3.*; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +/** + * @description: OkHttpUtil + * @author:flzjkl + * @date: 2024-10-20 21:35 + */ +public class OkHttpUtil { + + private static final OkHttpClient client = new OkHttpClient.Builder() + .connectTimeout(10, TimeUnit.SECONDS) + .writeTimeout(10, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .build(); + + private static final MediaType JSON = MediaType.get("application/json; charset=utf-8"); + + public static String get(String url) throws IOException { + Request request = new Request.Builder() + .url(url) + .build(); + + try (Response response = client.newCall(request).execute()) { + return response.body().string(); + } + } + + public static String post(String url, String json) throws IOException { + RequestBody body = RequestBody.create(json, JSON); + Request request = new Request.Builder() + .url(url) + .post(body) + .header("Content-Type", "application/json") + .build(); + + try (Response response = client.newCall(request).execute()) { + return response.body().string(); + } + } + +} diff --git a/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/utils/WelcomeUtil.java b/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/utils/WelcomeUtil.java new file mode 100644 index 00000000000..9fceee91327 --- /dev/null +++ b/cluster-management/native-agent-common/src/main/java/com/alibaba/arthas/nat/agent/common/utils/WelcomeUtil.java @@ -0,0 +1,44 @@ +package com.alibaba.arthas.nat.agent.common.utils; + + +/** + * @description: WelcomeUtil + * @author:flzjkl + * @date: 2024-09-22 18:26 + */ +public class WelcomeUtil { + + public static void printNativeAgentWelcomeMsg() { + String welcomeMsg = " _ _ _ \n" + + " _ __ __ _ | |_ (_) __ __ ___ __ _ __ _ ___ _ __ | |_ \n" + + " | '_ \\ / _` | | __| | | \\ \\ / / / _ \\ / _` | / _` | / _ \\ | '_ \\ | __|\n" + + " | | | | | (_| | | |_ | | \\ V / | __/ | (_| | | (_| | | __/ | | | | | |_ \n" + + " |_| |_| \\__,_| \\__| |_| \\_/ \\___| \\__,_| \\__, | \\___| |_| |_| \\__|\n" + + " |___/ "; + System.out.println(welcomeMsg); + System.out.println("======================================================================================================================="); + } + + public static void printManagementWebWelcomeMsg() { + String welcomeMsg = " _ _ _ _ _ \n" + + " _ __ __ _ | |_ (_) __ __ ___ __ _ __ _ ___ _ __ | |_ _ __ ___ __ _ _ __ __ _ __ _ ___ _ __ ___ ___ _ __ | |_ __ __ ___ | |__ \n" + + " | '_ \\ / _` | | __| | | \\ \\ / / / _ \\ / _` | / _` | / _ \\ | '_ \\ | __| | '_ ` _ \\ / _` | | '_ \\ / _` | / _` | / _ \\ | '_ ` _ \\ / _ \\ | '_ \\ | __| \\ \\ /\\ / / / _ \\ | '_ \\ \n" + + " | | | | | (_| | | |_ | | \\ V / | __/ | (_| | | (_| | | __/ | | | | | |_ | | | | | | | (_| | | | | | | (_| | | (_| | | __/ | | | | | | | __/ | | | | | |_ \\ V V / | __/ | |_) |\n" + + " |_| |_| \\__,_| \\__| |_| \\_/ \\___| \\__,_| \\__, | \\___| |_| |_| \\__| |_| |_| |_| \\__,_| |_| |_| \\__,_| \\__, | \\___| |_| |_| |_| \\___| |_| |_| \\__| \\_/\\_/ \\___| |_.__/ \n" + + " |___/ |___/ "; + System.out.println(welcomeMsg); + System.out.println("========================================================================================================================================================================================================================="); + } + + public static void printProxyWelcomeMsg() { + String welcomeMsg = " _ _ _ \n" + + " _ __ __ _ | |_ (_)__ __ ___ __ _ __ _ ___ _ __ | |_ _ __ _ __ ___ __ __ _ _ \n" + + "| '_ \\ / _` || __|| |\\ \\ / / / _ \\ / _` | / _` | / _ \\| '_ \\ | __| | '_ \\ | '__| / _ \\ \\ \\/ /| | | |\n" + + "| | | || (_| || |_ | | \\ V / | __/ | (_| || (_| || __/| | | || |_ | |_) || | | (_) | > < | |_| |\n" + + "|_| |_| \\__,_| \\__||_| \\_/ \\___| \\__,_| \\__, | \\___||_| |_| \\__| | .__/ |_| \\___/ /_/\\_\\ \\__, |\n" + + " |___/ |_| |___/ "; + System.out.println(welcomeMsg); + System.out.println("=========================================================================================================================="); + } + +} diff --git a/cluster-management/native-agent-management-web/pom.xml b/cluster-management/native-agent-management-web/pom.xml new file mode 100644 index 00000000000..8592ba0c561 --- /dev/null +++ b/cluster-management/native-agent-management-web/pom.xml @@ -0,0 +1,82 @@ + + + + arthas-all + com.taobao.arthas + ${revision} + ../../pom.xml + + 4.0.0 + + native-agent-management-web + + + 8 + 8 + UTF-8 + + + + + + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + io.etcd + jetcd-core + 0.7.0 + + + + + org.slf4j + slf4j-api + 1.7.36 + + + + com.alibaba.middleware + cli + + + com.taobao.arthas + native-agent-common + ${project.version} + + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + com.alibaba.arthas.nat.agent.management.web.server.NativeAgentManagementWebBootstrap + + + + + + + + + + + \ No newline at end of file diff --git a/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/discovery/NativeAgentProxyDiscovery.java b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/discovery/NativeAgentProxyDiscovery.java new file mode 100644 index 00000000000..b8225ccc84f --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/discovery/NativeAgentProxyDiscovery.java @@ -0,0 +1,18 @@ +package com.alibaba.arthas.nat.agent.management.web.discovery; + +import java.util.List; + +/** + * @description: NativeAgentProyDiscovery + * @author:flzjkl + * @date: 2024-09-19 7:22 + */ +public interface NativeAgentProxyDiscovery { + + /** + * list native agent proxy address + * @param address register address + * @return native agent proxy address + */ + List listNativeAgentProxy(String address); +} diff --git a/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/discovery/impl/EtcdNativeAgentProxyDiscovery.java b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/discovery/impl/EtcdNativeAgentProxyDiscovery.java new file mode 100644 index 00000000000..693dec5cf06 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/discovery/impl/EtcdNativeAgentProxyDiscovery.java @@ -0,0 +1,69 @@ +package com.alibaba.arthas.nat.agent.management.web.discovery.impl; + +import com.alibaba.arthas.nat.agent.common.constants.NativeAgentConstants; +import com.alibaba.arthas.nat.agent.management.web.discovery.NativeAgentProxyDiscovery; +import io.etcd.jetcd.ByteSequence; +import io.etcd.jetcd.Client; +import io.etcd.jetcd.KV; +import io.etcd.jetcd.KeyValue; +import io.etcd.jetcd.kv.GetResponse; +import io.etcd.jetcd.options.GetOption; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +/** + * @description: EtcdNativeAgentDiscovery implements NativeAgentDiscovery + * @author:flzjkl + * @date: 2024-09-15 9:19 + */ +public class EtcdNativeAgentProxyDiscovery implements NativeAgentProxyDiscovery { + + private static final Logger logger = LoggerFactory.getLogger(EtcdNativeAgentProxyDiscovery.class); + + + @Override + public List listNativeAgentProxy(String address) { + // Create kv client + Client client = null; + KV kvClient = null; + List res = null; + try { + client = Client.builder().endpoints("http://" + address).build(); + kvClient = client.getKVClient(); + + // Get value by prefix /native-agent-client + GetResponse getResponse = null; + try { + ByteSequence prefix = ByteSequence.from(NativeAgentConstants.NATIVE_AGENT_PROXY_KEY, StandardCharsets.UTF_8); + GetOption option = GetOption.newBuilder().isPrefix(Boolean.TRUE).build(); + getResponse = kvClient.get(prefix, option).get(); + } catch (Exception e) { + logger.error("get value failed with prefix" + NativeAgentConstants.NATIVE_AGENT_PROXY_KEY); + throw new RuntimeException(e); + } + + // Build Map + List kvs = getResponse.getKvs(); + if (kvs == null || kvs.size() == 0) { + return null; + } + res = new ArrayList<>(kvs.size()); + for (KeyValue kv : kvs) { + String value = kv.getValue().toString(StandardCharsets.UTF_8); + res.add(value); + } + } finally { + if (kvClient != null) { + kvClient.close(); + } + if (client != null) { + client.close(); + } + } + return res; + } +} diff --git a/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/discovery/impl/ZookeeperNativeAgentProxyDiscovery.java b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/discovery/impl/ZookeeperNativeAgentProxyDiscovery.java new file mode 100644 index 00000000000..dbd9bc86f03 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/discovery/impl/ZookeeperNativeAgentProxyDiscovery.java @@ -0,0 +1,48 @@ +package com.alibaba.arthas.nat.agent.management.web.discovery.impl; + +import com.alibaba.arthas.nat.agent.common.constants.NativeAgentConstants; +import com.alibaba.arthas.nat.agent.management.web.discovery.NativeAgentProxyDiscovery; +import org.apache.zookeeper.Watcher; +import org.apache.zookeeper.ZooKeeper; + +import java.util.List; +import java.util.concurrent.CountDownLatch; + +/** + * @description: ZookeeperNativeAgentProxyDiscovery implements NativeAgentProxyDiscovery + * @author:flzjkl + * @date: 2024-07-24 20:33 + */ +public class ZookeeperNativeAgentProxyDiscovery implements NativeAgentProxyDiscovery { + + private static final int SESSION_TIMEOUT = 20000; + private static final CountDownLatch connectedSemaphore = new CountDownLatch(1); + + @Override + public List listNativeAgentProxy(String address) { + if (address == null || "".equals(address)) { + return null; + } + + // Wait for connection to be established + try { + ZooKeeper zooKeeper = new ZooKeeper(address, SESSION_TIMEOUT, event -> { + if (event.getState() == Watcher.Event.KeeperState.SyncConnected) { + connectedSemaphore.countDown(); + } + }); + connectedSemaphore.await(); + + // Gets a list of all children of the parent node + List children = zooKeeper.getChildren(NativeAgentConstants.NATIVE_AGENT_PROXY_KEY, false); + if (children == null || children.size() == 0) { + return children; + } + + zooKeeper.close(); + return children; + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/factory/NativeAgentProxyDiscoveryFactory.java b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/factory/NativeAgentProxyDiscoveryFactory.java new file mode 100644 index 00000000000..7b5480d25ae --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/factory/NativeAgentProxyDiscoveryFactory.java @@ -0,0 +1,87 @@ +package com.alibaba.arthas.nat.agent.management.web.factory; + +import com.alibaba.arthas.nat.agent.management.web.discovery.NativeAgentProxyDiscovery; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.lang.reflect.Constructor; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @description: NativeAgentProxyDiscoveryFactory + * @author:flzjkl + * @date: 2024-10-20 20:37 + */ +public class NativeAgentProxyDiscoveryFactory { + + private static final String FILE_PATH = "META-INF/arthas/com.alibaba.arthas.native.agent.management.web.NativeAgentProxyDiscoveryFactory"; + private static Map nativeAgentProxyDiscoveryMap = new ConcurrentHashMap<>(); + + private static volatile NativeAgentProxyDiscoveryFactory nativeAgentProxyDiscoveryFactory; + + private NativeAgentProxyDiscoveryFactory() { + Map registrationConfigMap = readConfigInfo(FILE_PATH); + loadNativeAgentDiscovery2Map(registrationConfigMap); + } + + public static NativeAgentProxyDiscoveryFactory getNativeAgentProxyDiscoveryFactory() { + if (nativeAgentProxyDiscoveryFactory == null) { + synchronized (NativeAgentProxyDiscoveryFactory.class) { + if (nativeAgentProxyDiscoveryFactory == null) { + nativeAgentProxyDiscoveryFactory = new NativeAgentProxyDiscoveryFactory(); + } + } + } + return nativeAgentProxyDiscoveryFactory; + } + + private void loadNativeAgentDiscovery2Map(Map registrationConfigMap) { + for (Map.Entry entry : registrationConfigMap.entrySet()) { + String name = entry.getKey(); + String classPath = entry.getValue(); + + try { + Class clazz = Class.forName(classPath); + Constructor constructor = clazz.getConstructor(); + NativeAgentProxyDiscovery instance = (NativeAgentProxyDiscovery) constructor.newInstance(); + nativeAgentProxyDiscoveryMap.put(name, instance); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + + + public Map readConfigInfo (String filePath) { + Map nativeAgentDiscoveryConfigMap = new ConcurrentHashMap<>(); + ClassLoader classLoader = NativeAgentProxyDiscoveryFactory.class.getClassLoader(); + + try (InputStream inputStream = classLoader.getResourceAsStream(filePath); + BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { + + if (inputStream == null) { + throw new IllegalArgumentException("File not found: " + filePath); + } + + String line; + while ((line = reader.readLine()) != null) { + if (!line.trim().isEmpty() && line.contains("=")) { + String[] parts = line.split("=", 2); + if (parts.length == 2) { + nativeAgentDiscoveryConfigMap.put(parts[0].trim(), parts[1].trim()); + } + } + } + } catch (IOException e) { + e.printStackTrace(); + } + return nativeAgentDiscoveryConfigMap; + } + + public NativeAgentProxyDiscovery getNativeAgentProxyDiscovery(String name) { + return nativeAgentProxyDiscoveryMap.get(name); + } +} diff --git a/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/NativeAgentManagementWebBootstrap.java b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/NativeAgentManagementWebBootstrap.java new file mode 100644 index 00000000000..2251169e317 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/NativeAgentManagementWebBootstrap.java @@ -0,0 +1,128 @@ +package com.alibaba.arthas.nat.agent.management.web.server; + +import com.alibaba.arthas.nat.agent.common.constants.NativeAgentConstants; +import com.alibaba.arthas.nat.agent.common.utils.WelcomeUtil; +import com.alibaba.arthas.nat.agent.management.web.server.http.HttpRequestHandler; + +import com.taobao.middleware.cli.CLI; +import com.taobao.middleware.cli.CommandLine; +import com.taobao.middleware.cli.annotations.*; +import io.netty.bootstrap.ServerBootstrap; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.SocketChannel; +import io.netty.channel.socket.nio.NioServerSocketChannel; +import io.netty.handler.codec.http.HttpObjectAggregator; +import io.netty.handler.codec.http.HttpServerCodec; +import io.netty.handler.logging.LogLevel; +import io.netty.handler.logging.LoggingHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Arrays; + +/** + * @description: native agent server + * @author:flzjkl + * @date: 2024-07-20 9:23 + */ + +@Name("arthas-native-agent-management-web") +@Summary("Bootstrap Arthas Native Management Web") +@Description("EXAMPLES:\n" + " java -jar native-agent-management-web.jar --registration-type etcd --registration-address 161.169.97.114:2379\n" + + "java -jar native-agent-management-web.jar --port 3939 --registration-type etcd --registration-address 161.169.97.114:2379\n" + + "https://arthas.aliyun.com/doc\n") +public class NativeAgentManagementWebBootstrap { + private static final Logger logger = LoggerFactory.getLogger(NativeAgentManagementWebBootstrap.class); + private static final int DEFAULT_NATIVE_AGENT_MANAGEMENT_WEB_PORT = 3939; + private Integer port; + public static String registrationType; + public static String registrationAddress; + + @Option(longName = "port") + @Description("native agent management port, default 3939") + public void setPort(Integer port) { + this.port = port; + } + + @Option(longName = "registration-type", required = true) + @Description("registration type") + public void setRegistrationType(String registrationType) { + this.registrationType = registrationType; + } + + @Option(longName = "registration-address", required = true) + @Description("registration address") + public void setRegistrationAddress(String registrationAddress) { + this.registrationAddress = registrationAddress; + } + + public static void main(String[] args) { + // Print welcome message + WelcomeUtil.printManagementWebWelcomeMsg(); + + // Startup parameter analysis + logger.info("read input config..."); + NativeAgentManagementWebBootstrap nativeAgentManagementWebBootstrap = new NativeAgentManagementWebBootstrap(); + CLI cli = CLIConfigurator.define(NativeAgentManagementWebBootstrap.class); + CommandLine commandLine = cli.parse(Arrays.asList(args)); + try { + CLIConfigurator.inject(commandLine, nativeAgentManagementWebBootstrap); + } catch (Throwable e) { + e.printStackTrace(); + System.exit(1); + } + logger.info("read input success!"); + + // Start the http server + logger.info("start the http server... httPort:{}", nativeAgentManagementWebBootstrap.getPortOrDefault()); + NioEventLoopGroup bossGroup = new NioEventLoopGroup(); + NioEventLoopGroup workGroup = new NioEventLoopGroup(); + try { + ServerBootstrap b = new ServerBootstrap(); + b.group(bossGroup, workGroup) + .channel(NioServerSocketChannel.class) + .handler(new LoggingHandler(LogLevel.INFO)) + .childHandler(new ChannelInitializer() { + @Override + protected void initChannel(SocketChannel ch) { + ch.pipeline().addLast(new HttpServerCodec()); + ch.pipeline().addLast(new HttpObjectAggregator(NativeAgentConstants.MAX_HTTP_CONTENT_LENGTH)); + ch.pipeline().addLast(new HttpRequestHandler()); + } + }); + ChannelFuture f = b.bind(nativeAgentManagementWebBootstrap.getPortOrDefault()).sync(); + logger.info("start the http server success! htt port:{}", nativeAgentManagementWebBootstrap.getPortOrDefault()); + f.channel().closeFuture().sync(); + } catch (Exception e) { + e.printStackTrace(); + logger.error("The native agent server fails to start, http port{}", nativeAgentManagementWebBootstrap.getPortOrDefault()); + throw new RuntimeException(e); + } finally { + bossGroup.shutdownGracefully(); + workGroup.shutdownGracefully(); + logger.info("shutdown native agent server"); + } + } + + public int getPortOrDefault() { + if (this.port == null) { + return DEFAULT_NATIVE_AGENT_MANAGEMENT_WEB_PORT; + } else { + return this.port; + } + } + + public String getRegistrationType() { + return registrationType; + } + + public String getRegistrationAddress() { + return registrationAddress; + } + + public Integer getPort() { + return port; + } +} diff --git a/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpNativeAgentHandler.java b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpNativeAgentHandler.java new file mode 100644 index 00000000000..38c18b8e772 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpNativeAgentHandler.java @@ -0,0 +1,70 @@ +package com.alibaba.arthas.nat.agent.management.web.server.http; + +import com.alibaba.arthas.nat.agent.common.utils.OkHttpUtil; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.TypeReference; +import io.netty.buffer.Unpooled; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.http.DefaultFullHttpResponse; +import io.netty.handler.codec.http.FullHttpRequest; +import io.netty.handler.codec.http.FullHttpResponse; +import io.netty.handler.codec.http.HttpResponseStatus; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Map; + +/** + * @description: HttpNativeAgentHandler + * @author:flzjkl + * @date: 2024-08-01 7:32 + */ +public class HttpNativeAgentHandler { + + private static final Logger logger = LoggerFactory.getLogger(HttpNativeAgentHandler.class); + + private static HttpNativeAgentProxyHandler httpNativeAgentProxyHandler = new HttpNativeAgentProxyHandler(); + + public FullHttpResponse handle(ChannelHandlerContext ctx, FullHttpRequest request) { + String content = request.content().toString(StandardCharsets.UTF_8); + Map bodyMap = JSON.parseObject(content, new TypeReference>() { + }); + String operation = (String) bodyMap.get("operation"); + + if ("listNativeAgent".equals(operation)) { + return doListNativeAgent(ctx, request); + } + return null; + } + + private FullHttpResponse doListNativeAgent(ChannelHandlerContext ctx, FullHttpRequest request) { + // 1、Find native agent proxy address + String address = httpNativeAgentProxyHandler.findAvailableProxyAddress(); + if (address == null || "".equals(address)) { + return null; + } + // 2、Send Http request to native agent proxy to get native agent list + String resStr = null; + try { + String url = "http://" + address + "/api/native-agent-proxy"; + String jsonBody = "{\"operation\":\"listNativeAgent\"}"; + resStr = OkHttpUtil.post(url, jsonBody); + } catch (IOException e) { + logger.error("Send http to native agent proxy failed"); + throw new RuntimeException(e); + } + if (resStr == null) { + return null; + } + DefaultFullHttpResponse response = new DefaultFullHttpResponse( + request.getProtocolVersion(), + HttpResponseStatus.OK, + Unpooled.copiedBuffer(resStr, StandardCharsets.UTF_8) + ); + + return response; + } + +} diff --git a/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpNativeAgentProxyHandler.java b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpNativeAgentProxyHandler.java new file mode 100644 index 00000000000..0e1ad426694 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpNativeAgentProxyHandler.java @@ -0,0 +1,70 @@ +package com.alibaba.arthas.nat.agent.management.web.server.http; + +import com.alibaba.arthas.nat.agent.management.web.discovery.NativeAgentProxyDiscovery; +import com.alibaba.arthas.nat.agent.management.web.factory.NativeAgentProxyDiscoveryFactory; +import com.alibaba.arthas.nat.agent.management.web.server.NativeAgentManagementWebBootstrap; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.TypeReference; +import io.netty.buffer.Unpooled; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.http.DefaultFullHttpResponse; +import io.netty.handler.codec.http.FullHttpRequest; +import io.netty.handler.codec.http.FullHttpResponse; +import io.netty.handler.codec.http.HttpResponseStatus; + +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.Map; +import java.util.Random; + +/** + * @description: HttpNativeAgentProxyHandler + * @author:flzjkl + * @date: 2024-10-21 7:01 + */ +public class HttpNativeAgentProxyHandler { + + public FullHttpResponse handle(ChannelHandlerContext ctx, FullHttpRequest request) { + String content = request.content().toString(StandardCharsets.UTF_8); + Map bodyMap = JSON.parseObject(content, new TypeReference>() { + }); + String operation = (String) bodyMap.get("operation"); + + if ("findAvailableProxyAddress".equals(operation)) { + return responseFindAvailableProxyAddress(ctx, request); + } + + return null; + } + + + public FullHttpResponse responseFindAvailableProxyAddress(ChannelHandlerContext ctx, FullHttpRequest request) { + String availableProxyAddress = findAvailableProxyAddress(); + if (availableProxyAddress == null || "".equals(availableProxyAddress)) { + return null; + } + DefaultFullHttpResponse response = new DefaultFullHttpResponse( + request.getProtocolVersion(), + HttpResponseStatus.OK, + Unpooled.copiedBuffer(availableProxyAddress, StandardCharsets.UTF_8) + ); + return response; + } + + + public String findAvailableProxyAddress() { + // Find in address register + NativeAgentProxyDiscoveryFactory proxyDiscoveryFactory = NativeAgentProxyDiscoveryFactory.getNativeAgentProxyDiscoveryFactory(); + NativeAgentProxyDiscovery proxyDiscovery = proxyDiscoveryFactory.getNativeAgentProxyDiscovery(NativeAgentManagementWebBootstrap.registrationType); + List proxyList = proxyDiscovery.listNativeAgentProxy(NativeAgentManagementWebBootstrap.registrationAddress); + if (proxyList == null || proxyList.size() == 0) { + return null; + } + // Return a random index of proxy address, like 127.0.0.1:2233 + Random random = new Random(); + int randomIndex = random.nextInt(proxyList.size()); + return proxyList.get(randomIndex); + } + + +} diff --git a/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpRequestHandler.java b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpRequestHandler.java new file mode 100644 index 00000000000..5c17c2250ff --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpRequestHandler.java @@ -0,0 +1,72 @@ +package com.alibaba.arthas.nat.agent.management.web.server.http; + +import com.alibaba.arthas.nat.agent.common.handler.HttpOptionRequestHandler; +import io.netty.channel.ChannelFutureListener; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; +import io.netty.handler.codec.http.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.net.URI; + +/** + * @description: HttpRequestHandler + * @author:flzjkl + * @date: 2024-07-20 10:09 + */ +public class HttpRequestHandler extends SimpleChannelInboundHandler { + + private static final Logger logger = LoggerFactory.getLogger(HttpRequestHandler.class); + + private HttpNativeAgentHandler httpNativeAgentHandler = new HttpNativeAgentHandler(); + private HttpNativeAgentProxyHandler httpNativeAgentProxyHandler = new HttpNativeAgentProxyHandler(); + + private HttpOptionRequestHandler httpOptionRequestHandler = new HttpOptionRequestHandler(); + + private HttpResourcesHandler httpResourcesHandler = new HttpResourcesHandler(); + + + @Override + protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest request) throws Exception { + String path = new URI(request.uri()).getPath(); + HttpMethod method = request.method(); + FullHttpResponse resp = null; + + if (HttpMethod.GET.equals(method)) { + if ("/".equals(path)) { + path = "/index.html"; + } + resp = httpResourcesHandler.handlerResources(request, path); + } + + if (HttpMethod.OPTIONS.equals(method)) { + resp = httpOptionRequestHandler.handleOptionsRequest(ctx, request); + } + + if (HttpMethod.POST.equals(method)) { + if ("/api/native-agent".equals(path)) { + resp = httpNativeAgentHandler.handle(ctx, request); + } + if ("/api/native-agent-proxy".equals(path)) { + resp = httpNativeAgentProxyHandler.handle(ctx, request); + } + } + + if (resp == null) { + resp = new DefaultFullHttpResponse(request.getProtocolVersion(), HttpResponseStatus.NOT_FOUND); + resp.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/html; charset=utf-8"); + } + + ctx.writeAndFlush(resp).addListener(ChannelFutureListener.CLOSE); + } + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { + cause.printStackTrace(); + if (ctx.channel().isActive()) { + ctx.writeAndFlush(new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.INTERNAL_SERVER_ERROR)); + ctx.close(); + } + } +} diff --git a/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpResourcesHandler.java b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpResourcesHandler.java new file mode 100644 index 00000000000..d7f1914c709 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/java/com/alibaba/arthas/nat/agent/management/web/server/http/HttpResourcesHandler.java @@ -0,0 +1,117 @@ +package com.alibaba.arthas.nat.agent.management.web.server.http; + +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import io.netty.handler.codec.http.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +/** + * @description: HttpResourcesHandler + * @author:flzjkl + * @date: 2024-09-23 7:44 + */ +public class HttpResourcesHandler { + + private static final Logger logger = LoggerFactory.getLogger(HttpResourcesHandler.class); + private static final String RESOURCES_BASE_PATH = "/native-agent"; + private static final Set ALLOWED_EXTENSIONS; + + static { + Set tempSet = new HashSet<>(); + tempSet.add(".html"); + tempSet.add(".css"); + tempSet.add(".js"); + tempSet.add(".ico"); + tempSet.add(".png"); + ALLOWED_EXTENSIONS = Collections.unmodifiableSet(tempSet); + } + + public FullHttpResponse handlerResources(FullHttpRequest request, String path) { + try { + if (request == null || path == null) { + return null; + } + String normalizedPath = normalizePath(path); + if (normalizedPath == null) { + return null; + } + URL resourceUrl = getClass().getResource(RESOURCES_BASE_PATH + normalizedPath); + if (resourceUrl == null) { + return null; + } + try (InputStream is = resourceUrl.openStream()) { + if (is == null) { + return null; + } + + ByteBuf content = readInputStream(is); + FullHttpResponse response = new DefaultFullHttpResponse( + request.protocolVersion(), HttpResponseStatus.OK, content); + + HttpHeaders headers = response.headers(); + headers.set(HttpHeaderNames.CONTENT_TYPE, getContentType(normalizedPath)); + headers.setInt(HttpHeaderNames.CONTENT_LENGTH, content.readableBytes()); + headers.set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE); + + return response; + } + } catch (Exception e) { + logger.error(""); + return null; + } + } + + private String normalizePath(String path) { + if (path == null) { + return null; + } + + path = path.replaceAll("\\.\\./", "").replaceAll("\\./", ""); + + + path = path.startsWith("/") ? path : "/" + path; + + + path = path.endsWith("/") ? path.substring(0, path.length() - 1) : path; + + + String finalPath = path; + boolean hasAllowedExtension = ALLOWED_EXTENSIONS.stream() + .anyMatch(finalPath::endsWith); + + if (!hasAllowedExtension) { + return null; + } + + return path; + } + + private String getContentType(String path) { + if (path.endsWith(".html")) return "text/html"; + if (path.endsWith(".css")) return "text/css"; + if (path.endsWith(".js")) return "application/javascript"; + if (path.endsWith(".ico")) return "image/x-icon"; + if (path.endsWith(".png")) return "image/png"; + return "application/octet-stream"; + } + + private ByteBuf readInputStream(InputStream is) throws IOException { + ByteBuf buffer = Unpooled.buffer(); + byte[] tmp = new byte[1024]; + int length; + while ((length = is.read(tmp)) != -1) { + buffer.writeBytes(tmp, 0, length); + } + is.close(); + return buffer; + } + +} diff --git a/cluster-management/native-agent-management-web/src/main/resources/META-INF/arthas/com.alibaba.arthas.native.agent.management.web.NativeAgentProxyDiscoveryFactory b/cluster-management/native-agent-management-web/src/main/resources/META-INF/arthas/com.alibaba.arthas.native.agent.management.web.NativeAgentProxyDiscoveryFactory new file mode 100644 index 00000000000..c47db4f485f --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/resources/META-INF/arthas/com.alibaba.arthas.native.agent.management.web.NativeAgentProxyDiscoveryFactory @@ -0,0 +1,2 @@ +zookeeper=com.alibaba.arthas.nat.agent.management.web.discovery.impl.ZookeeperNativeAgentProxyDiscovery +etcd=com.alibaba.arthas.nat.agent.management.web.discovery.impl.EtcdNativeAgentProxyDiscovery \ No newline at end of file diff --git a/cluster-management/native-agent-management-web/src/main/resources/log4j.properties b/cluster-management/native-agent-management-web/src/main/resources/log4j.properties new file mode 100644 index 00000000000..e3b0cf60277 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/resources/log4j.properties @@ -0,0 +1,7 @@ +# log4j.properties ?? +log4j.rootLogger=INFO, Console + +log4j.appender.Console=org.apache.log4j.ConsoleAppender +log4j.appender.Console.Target=System.out +log4j.appender.Console.layout=org.apache.log4j.PatternLayout +log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n \ No newline at end of file diff --git a/cluster-management/native-agent-management-web/src/main/resources/native-agent/agents.html b/cluster-management/native-agent-management-web/src/main/resources/native-agent/agents.html new file mode 100644 index 00000000000..ce16e744fca --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/resources/native-agent/agents.html @@ -0,0 +1,22 @@ + + + + + + + Arthas Native Agent + + + + + + + + + +

+ + + + \ No newline at end of file diff --git a/cluster-management/native-agent-management-web/src/main/resources/native-agent/console.html b/cluster-management/native-agent-management-web/src/main/resources/native-agent/console.html new file mode 100644 index 00000000000..4d21c548349 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/resources/native-agent/console.html @@ -0,0 +1,21 @@ + + + + + + + + Arthas Native Agent + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/cluster-management/native-agent-management-web/src/main/resources/native-agent/favicon.ico b/cluster-management/native-agent-management-web/src/main/resources/native-agent/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df9b02e1eb1f23f58ed3e367b02be6143a966317 GIT binary patch literal 16958 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 literal 0 HcmV?d00001 diff --git a/cluster-management/native-agent-management-web/src/main/resources/native-agent/index.html b/cluster-management/native-agent-management-web/src/main/resources/native-agent/index.html new file mode 100644 index 00000000000..eb06ac0a439 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/resources/native-agent/index.html @@ -0,0 +1,22 @@ + + + + + + + + Arthas Native Agent + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/cluster-management/native-agent-management-web/src/main/resources/native-agent/processes.html b/cluster-management/native-agent-management-web/src/main/resources/native-agent/processes.html new file mode 100644 index 00000000000..ee9566ffaac --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/resources/native-agent/processes.html @@ -0,0 +1,21 @@ + + + + + + + Arthas Native Agent + + + + + + + + +
+
+ + + + \ No newline at end of file diff --git a/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/css/console-991af56b.css b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/css/console-991af56b.css new file mode 100644 index 00000000000..cdb4d714fd4 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/css/console-991af56b.css @@ -0,0 +1 @@ +#terminal:-webkit-full-screen{background-color:#ffff0c}.fullSc{z-index:10000;position:fixed;top:25%;left:90%}#fullScBtn{border-radius:17px;border:0;cursor:pointer;background-color:#000} diff --git a/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/css/main-c782b056.css b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/css/main-c782b056.css new file mode 100644 index 00000000000..f6a0dd71e25 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/css/main-c782b056.css @@ -0,0 +1 @@ +*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}:root,[data-theme]{background-color:hsla(var(--b1) / var(--tw-bg-opacity, 1));color:hsla(var(--bc) / var(--tw-text-opacity, 1))}html{-webkit-tap-highlight-color:transparent}:root{color-scheme:light;--pf: 259 94% 41%;--sf: 314 100% 38%;--af: 174 60% 41%;--nf: 219 14% 22%;--in: 198 93% 60%;--su: 158 64% 52%;--wa: 43 96% 56%;--er: 0 91% 71%;--inc: 198 100% 12%;--suc: 158 100% 10%;--wac: 43 100% 11%;--erc: 0 100% 14%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 259 94% 51%;--pc: 0 0% 100%;--s: 314 100% 47%;--sc: 0 0% 100%;--a: 174 60% 51%;--ac: 175 44% 15%;--n: 219 14% 28%;--nc: 0 0% 100%;--b1: 0 0% 100%;--b2: 0 0% 95%;--b3: 180 2% 90%;--bc: 215 28% 17%}@media (prefers-color-scheme: dark){:root{color-scheme:dark;--pf: 262 80% 40%;--sf: 316 70% 40%;--af: 175 70% 33%;--in: 198 93% 60%;--su: 158 64% 52%;--wa: 43 96% 56%;--er: 0 91% 71%;--inc: 198 100% 12%;--suc: 158 100% 10%;--wac: 43 100% 11%;--erc: 0 100% 14%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 262 80% 50%;--pc: 0 0% 100%;--s: 316 70% 50%;--sc: 0 0% 100%;--a: 175 70% 41%;--ac: 0 0% 100%;--n: 218 18% 12%;--nf: 223 17% 8%;--nc: 220 13% 69%;--b1: 220 18% 20%;--b2: 220 17% 17%;--b3: 219 18% 15%;--bc: 220 13% 69%}}[data-theme=light]{color-scheme:light;--pf: 259 94% 41%;--sf: 314 100% 38%;--af: 174 60% 41%;--nf: 219 14% 22%;--in: 198 93% 60%;--su: 158 64% 52%;--wa: 43 96% 56%;--er: 0 91% 71%;--inc: 198 100% 12%;--suc: 158 100% 10%;--wac: 43 100% 11%;--erc: 0 100% 14%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 259 94% 51%;--pc: 0 0% 100%;--s: 314 100% 47%;--sc: 0 0% 100%;--a: 174 60% 51%;--ac: 175 44% 15%;--n: 219 14% 28%;--nc: 0 0% 100%;--b1: 0 0% 100%;--b2: 0 0% 95%;--b3: 180 2% 90%;--bc: 215 28% 17%}[data-theme=dark]{color-scheme:dark;--pf: 262 80% 40%;--sf: 316 70% 40%;--af: 175 70% 33%;--in: 198 93% 60%;--su: 158 64% 52%;--wa: 43 96% 56%;--er: 0 91% 71%;--inc: 198 100% 12%;--suc: 158 100% 10%;--wac: 43 100% 11%;--erc: 0 100% 14%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 262 80% 50%;--pc: 0 0% 100%;--s: 316 70% 50%;--sc: 0 0% 100%;--a: 175 70% 41%;--ac: 0 0% 100%;--n: 218 18% 12%;--nf: 223 17% 8%;--nc: 220 13% 69%;--b1: 220 18% 20%;--b2: 220 17% 17%;--b3: 219 18% 15%;--bc: 220 13% 69%}[data-theme=cupcake]{color-scheme:light;--pf: 183 47% 47%;--sf: 338 71% 62%;--af: 39 84% 46%;--nf: 280 46% 11%;--in: 198 93% 60%;--su: 158 64% 52%;--wa: 43 96% 56%;--er: 0 91% 71%;--pc: 183 100% 12%;--sc: 338 100% 16%;--ac: 39 100% 12%;--nc: 280 83% 83%;--inc: 198 100% 12%;--suc: 158 100% 10%;--wac: 43 100% 11%;--erc: 0 100% 14%;--rounded-box: 1rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--p: 183 47% 59%;--s: 338 71% 78%;--a: 39 84% 58%;--n: 280 46% 14%;--b1: 24 33% 97%;--b2: 27 22% 92%;--b3: 22 14% 89%;--bc: 280 46% 14%;--rounded-btn: 1.9rem;--tab-border: 2px;--tab-radius: .5rem}[data-theme=bumblebee]{color-scheme:light;--pf: 41 74% 42%;--sf: 50 94% 46%;--af: 240 33% 11%;--nf: 240 33% 11%;--b2: 0 0% 90%;--b3: 0 0% 81%;--in: 198 93% 60%;--su: 158 64% 52%;--wa: 43 96% 56%;--er: 0 91% 71%;--bc: 0 0% 20%;--ac: 240 60% 83%;--nc: 240 60% 83%;--inc: 198 100% 12%;--suc: 158 100% 10%;--wac: 43 100% 11%;--erc: 0 100% 14%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 41 74% 53%;--pc: 240 33% 14%;--s: 50 94% 58%;--sc: 240 33% 14%;--a: 240 33% 14%;--n: 240 33% 14%;--b1: 0 0% 100%}[data-theme=emerald]{color-scheme:light;--pf: 141 50% 48%;--sf: 219 96% 48%;--af: 10 81% 45%;--nf: 219 20% 20%;--b2: 0 0% 90%;--b3: 0 0% 81%;--in: 198 93% 60%;--su: 158 64% 52%;--wa: 43 96% 56%;--er: 0 91% 71%;--inc: 198 100% 12%;--suc: 158 100% 10%;--wac: 43 100% 11%;--erc: 0 100% 14%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--btn-text-case: uppercase;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 141 50% 60%;--pc: 151 28% 19%;--s: 219 96% 60%;--sc: 210 20% 98%;--a: 10 81% 56%;--ac: 210 20% 98%;--n: 219 20% 25%;--nc: 210 20% 98%;--b1: 0 0% 100%;--bc: 219 20% 25%;--animation-btn: 0;--animation-input: 0;--btn-focus-scale: 1}[data-theme=corporate]{color-scheme:light;--pf: 229 96% 51%;--sf: 215 26% 47%;--af: 154 49% 48%;--nf: 233 27% 10%;--b2: 0 0% 90%;--b3: 0 0% 81%;--in: 198 93% 60%;--su: 158 64% 52%;--wa: 43 96% 56%;--er: 0 91% 71%;--pc: 229 100% 93%;--sc: 215 100% 12%;--ac: 154 100% 12%;--inc: 198 100% 12%;--suc: 158 100% 10%;--wac: 43 100% 11%;--erc: 0 100% 14%;--btn-text-case: uppercase;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 229 96% 64%;--s: 215 26% 59%;--a: 154 49% 60%;--n: 233 27% 13%;--nc: 210 38% 95%;--b1: 0 0% 100%;--bc: 233 27% 13%;--rounded-box: .25rem;--rounded-btn: .125rem;--rounded-badge: .125rem;--animation-btn: 0;--animation-input: 0;--btn-focus-scale: 1}[data-theme=synthwave]{color-scheme:dark;--pf: 321 70% 55%;--sf: 197 87% 52%;--af: 48 89% 46%;--nf: 253 61% 15%;--b2: 254 59% 23%;--b3: 254 59% 21%;--pc: 321 100% 14%;--sc: 197 100% 13%;--ac: 48 100% 11%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 321 70% 69%;--s: 197 87% 65%;--a: 48 89% 57%;--n: 253 61% 19%;--nc: 260 60% 98%;--b1: 254 59% 26%;--bc: 260 60% 98%;--in: 199 87% 64%;--inc: 257 63% 17%;--su: 168 74% 68%;--suc: 257 63% 17%;--wa: 48 89% 57%;--wac: 257 63% 17%;--er: 352 74% 57%;--erc: 260 60% 98%}[data-theme=retro]{color-scheme:light;--pf: 3 74% 61%;--sf: 145 27% 58%;--af: 49 67% 61%;--nf: 42 17% 34%;--inc: 221 100% 91%;--suc: 142 100% 87%;--wac: 32 100% 9%;--erc: 0 100% 90%;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 3 74% 76%;--pc: 345 5% 15%;--s: 145 27% 72%;--sc: 345 5% 15%;--a: 49 67% 76%;--ac: 345 5% 15%;--n: 42 17% 42%;--nc: 45 47% 80%;--b1: 45 47% 80%;--b2: 45 37% 72%;--b3: 42 36% 65%;--bc: 345 5% 15%;--in: 221 83% 53%;--su: 142 76% 36%;--wa: 32 95% 44%;--er: 0 72% 51%;--rounded-box: .4rem;--rounded-btn: .4rem;--rounded-badge: .4rem}[data-theme=cyberpunk]{color-scheme:light;--pf: 345 100% 58%;--sf: 195 80% 56%;--af: 276 74% 57%;--nf: 57 100% 10%;--b2: 56 100% 45%;--b3: 56 100% 41%;--in: 198 93% 60%;--su: 158 64% 52%;--wa: 43 96% 56%;--er: 0 91% 71%;--bc: 56 100% 10%;--pc: 345 100% 15%;--sc: 195 100% 14%;--ac: 276 100% 14%;--inc: 198 100% 12%;--suc: 158 100% 10%;--wac: 43 100% 11%;--erc: 0 100% 14%;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;--p: 345 100% 73%;--s: 195 80% 70%;--a: 276 74% 71%;--n: 57 100% 13%;--nc: 56 100% 50%;--b1: 56 100% 50%;--rounded-box: 0;--rounded-btn: 0;--rounded-badge: 0;--tab-radius: 0}[data-theme=valentine]{color-scheme:light;--pf: 353 74% 54%;--sf: 254 86% 61%;--af: 181 56% 56%;--nf: 336 43% 38%;--b2: 318 46% 80%;--b3: 318 46% 72%;--pc: 353 100% 13%;--sc: 254 100% 15%;--ac: 181 100% 14%;--inc: 221 100% 91%;--suc: 142 100% 87%;--wac: 32 100% 9%;--erc: 0 100% 90%;--rounded-box: 1rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 353 74% 67%;--s: 254 86% 77%;--a: 181 56% 70%;--n: 336 43% 48%;--nc: 318 46% 89%;--b1: 318 46% 89%;--bc: 344 38% 28%;--in: 221 83% 53%;--su: 142 76% 36%;--wa: 32 95% 44%;--er: 0 72% 51%;--rounded-btn: 1.9rem}[data-theme=halloween]{color-scheme:dark;--pf: 32 89% 42%;--sf: 271 46% 34%;--af: 91 100% 26%;--nf: 180 4% 9%;--b2: 0 0% 12%;--b3: 0 0% 10%;--bc: 0 0% 83%;--sc: 271 100% 88%;--ac: 91 100% 7%;--nc: 180 5% 82%;--inc: 221 100% 91%;--suc: 142 100% 87%;--wac: 32 100% 9%;--erc: 0 100% 90%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 32 89% 52%;--pc: 180 7% 8%;--s: 271 46% 42%;--a: 91 100% 33%;--n: 180 4% 11%;--b1: 0 0% 13%;--in: 221 83% 53%;--su: 142 76% 36%;--wa: 32 95% 44%;--er: 0 72% 51%}[data-theme=garden]{color-scheme:light;--pf: 139 16% 34%;--sf: 97 37% 75%;--af: 0 68% 75%;--nf: 0 4% 28%;--b2: 0 4% 82%;--b3: 0 4% 74%;--in: 198 93% 60%;--su: 158 64% 52%;--wa: 43 96% 56%;--er: 0 91% 71%;--pc: 139 100% 89%;--inc: 198 100% 12%;--suc: 158 100% 10%;--wac: 43 100% 11%;--erc: 0 100% 14%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 139 16% 43%;--s: 97 37% 93%;--sc: 96 32% 15%;--a: 0 68% 94%;--ac: 0 22% 16%;--n: 0 4% 35%;--nc: 0 4% 91%;--b1: 0 4% 91%;--bc: 0 3% 6%}[data-theme=forest]{color-scheme:dark;--pf: 141 72% 34%;--sf: 141 75% 38%;--af: 35 69% 42%;--nf: 0 10% 5%;--b2: 0 12% 7%;--b3: 0 12% 7%;--in: 198 93% 60%;--su: 158 64% 52%;--wa: 43 96% 56%;--er: 0 91% 71%;--bc: 0 12% 82%;--sc: 141 100% 10%;--ac: 35 100% 10%;--nc: 0 7% 81%;--inc: 198 100% 12%;--suc: 158 100% 10%;--wac: 43 100% 11%;--erc: 0 100% 14%;--rounded-box: 1rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 141 72% 42%;--pc: 141 100% 88%;--s: 141 75% 48%;--a: 35 69% 52%;--n: 0 10% 6%;--b1: 0 12% 8%;--rounded-btn: 1.9rem}[data-theme=aqua]{color-scheme:dark;--pf: 182 93% 40%;--sf: 274 31% 45%;--af: 47 100% 64%;--nf: 205 54% 40%;--b2: 219 53% 39%;--b3: 219 53% 35%;--bc: 219 100% 89%;--sc: 274 100% 91%;--ac: 47 100% 16%;--nc: 205 100% 90%;--inc: 221 100% 91%;--suc: 142 100% 87%;--wac: 32 100% 9%;--erc: 0 100% 90%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 182 93% 49%;--pc: 181 100% 17%;--s: 274 31% 57%;--a: 47 100% 80%;--n: 205 54% 50%;--b1: 219 53% 43%;--in: 221 83% 53%;--su: 142 76% 36%;--wa: 32 95% 44%;--er: 0 72% 51%}[data-theme=lofi]{color-scheme:light;--pf: 0 0% 4%;--sf: 0 2% 8%;--af: 0 0% 12%;--nf: 0 0% 0%;--btn-text-case: uppercase;--border-btn: 1px;--tab-border: 1px;--p: 0 0% 5%;--pc: 0 0% 100%;--s: 0 2% 10%;--sc: 0 0% 100%;--a: 0 0% 15%;--ac: 0 0% 100%;--n: 0 0% 0%;--nc: 0 0% 100%;--b1: 0 0% 100%;--b2: 0 0% 95%;--b3: 0 2% 90%;--bc: 0 0% 0%;--in: 212 100% 48%;--inc: 0 0% 100%;--su: 137 72% 46%;--suc: 0 0% 100%;--wa: 5 100% 66%;--wac: 0 0% 100%;--er: 325 78% 49%;--erc: 0 0% 100%;--rounded-box: .25rem;--rounded-btn: .125rem;--rounded-badge: .125rem;--animation-btn: 0;--animation-input: 0;--btn-focus-scale: 1;--tab-radius: 0}[data-theme=pastel]{color-scheme:light;--pf: 284 22% 64%;--sf: 352 70% 70%;--af: 158 55% 65%;--nf: 199 44% 49%;--in: 198 93% 60%;--su: 158 64% 52%;--wa: 43 96% 56%;--er: 0 91% 71%;--bc: 0 0% 20%;--pc: 284 59% 16%;--sc: 352 100% 18%;--ac: 158 100% 16%;--nc: 199 100% 12%;--inc: 198 100% 12%;--suc: 158 100% 10%;--wac: 43 100% 11%;--erc: 0 100% 14%;--rounded-box: 1rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 284 22% 80%;--s: 352 70% 88%;--a: 158 55% 81%;--n: 199 44% 61%;--b1: 0 0% 100%;--b2: 210 20% 98%;--b3: 216 12% 84%;--rounded-btn: 1.9rem}[data-theme=fantasy]{color-scheme:light;--pf: 296 83% 20%;--sf: 200 100% 30%;--af: 31 94% 41%;--nf: 215 28% 13%;--b2: 0 0% 90%;--b3: 0 0% 81%;--in: 198 93% 60%;--su: 158 64% 52%;--wa: 43 96% 56%;--er: 0 91% 71%;--pc: 296 100% 85%;--sc: 200 100% 87%;--ac: 31 100% 10%;--nc: 215 62% 83%;--inc: 198 100% 12%;--suc: 158 100% 10%;--wac: 43 100% 11%;--erc: 0 100% 14%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 296 83% 25%;--s: 200 100% 37%;--a: 31 94% 51%;--n: 215 28% 17%;--b1: 0 0% 100%;--bc: 215 28% 17%}[data-theme=wireframe]{color-scheme:light;--pf: 0 0% 58%;--sf: 0 0% 58%;--af: 0 0% 58%;--nf: 0 0% 74%;--bc: 0 0% 20%;--pc: 0 0% 14%;--sc: 0 0% 14%;--ac: 0 0% 14%;--nc: 0 0% 18%;--inc: 240 100% 90%;--suc: 120 100% 85%;--wac: 60 100% 10%;--erc: 0 100% 90%;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;font-family:Chalkboard,comic sans ms,sanssecondaryerif;--p: 0 0% 72%;--s: 0 0% 72%;--a: 0 0% 72%;--n: 0 0% 92%;--b1: 0 0% 100%;--b2: 0 0% 93%;--b3: 0 0% 87%;--in: 240 100% 50%;--su: 120 100% 25%;--wa: 60 30% 50%;--er: 0 100% 50%;--rounded-box: .2rem;--rounded-btn: .2rem;--rounded-badge: .2rem;--tab-radius: .2rem}[data-theme=black]{color-scheme:dark;--pf: 0 2% 16%;--sf: 0 2% 16%;--af: 0 2% 16%;--bc: 0 0% 80%;--pc: 0 5% 84%;--sc: 0 5% 84%;--ac: 0 5% 84%;--nc: 0 3% 83%;--inc: 240 100% 90%;--suc: 120 100% 85%;--wac: 60 100% 10%;--erc: 0 100% 90%;--border-btn: 1px;--tab-border: 1px;--p: 0 2% 20%;--s: 0 2% 20%;--a: 0 2% 20%;--b1: 0 0% 0%;--b2: 0 0% 5%;--b3: 0 2% 10%;--n: 0 1% 15%;--nf: 0 2% 20%;--in: 240 100% 50%;--su: 120 100% 25%;--wa: 60 100% 50%;--er: 0 100% 50%;--rounded-box: 0;--rounded-btn: 0;--rounded-badge: 0;--animation-btn: 0;--animation-input: 0;--btn-text-case: lowercase;--btn-focus-scale: 1;--tab-radius: 0}[data-theme=luxury]{color-scheme:dark;--pf: 0 0% 80%;--sf: 218 54% 14%;--af: 319 22% 21%;--nf: 270 4% 7%;--pc: 0 0% 20%;--sc: 218 100% 84%;--ac: 319 85% 85%;--inc: 202 100% 14%;--suc: 89 100% 10%;--wac: 54 100% 13%;--erc: 0 100% 14%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 0 0% 100%;--s: 218 54% 18%;--a: 319 22% 26%;--n: 270 4% 9%;--nc: 37 67% 58%;--b1: 240 10% 4%;--b2: 270 4% 9%;--b3: 270 2% 18%;--bc: 37 67% 58%;--in: 202 100% 70%;--su: 89 62% 52%;--wa: 54 69% 64%;--er: 0 100% 72%}[data-theme=dracula]{color-scheme:dark;--pf: 326 100% 59%;--sf: 265 89% 62%;--af: 31 100% 57%;--nf: 230 15% 24%;--b2: 231 15% 17%;--b3: 231 15% 15%;--pc: 326 100% 15%;--sc: 265 100% 16%;--ac: 31 100% 14%;--nc: 230 71% 86%;--inc: 191 100% 15%;--suc: 135 100% 13%;--wac: 65 100% 15%;--erc: 0 100% 93%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 326 100% 74%;--s: 265 89% 78%;--a: 31 100% 71%;--n: 230 15% 30%;--b1: 231 15% 18%;--bc: 60 30% 96%;--in: 191 97% 77%;--su: 135 94% 65%;--wa: 65 92% 76%;--er: 0 100% 67%}[data-theme=cmyk]{color-scheme:light;--pf: 203 83% 48%;--sf: 335 78% 48%;--af: 56 100% 48%;--nf: 0 0% 8%;--b2: 0 0% 90%;--b3: 0 0% 81%;--bc: 0 0% 20%;--pc: 203 100% 12%;--sc: 335 100% 92%;--ac: 56 100% 12%;--nc: 0 0% 82%;--inc: 192 100% 10%;--suc: 291 100% 88%;--wac: 25 100% 11%;--erc: 4 100% 91%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 203 83% 60%;--s: 335 78% 60%;--a: 56 100% 60%;--n: 0 0% 10%;--b1: 0 0% 100%;--in: 192 48% 52%;--su: 291 48% 38%;--wa: 25 85% 57%;--er: 4 81% 56%}[data-theme=autumn]{color-scheme:light;--pf: 344 96% 22%;--sf: 0 63% 47%;--af: 27 56% 50%;--nf: 22 17% 35%;--b2: 0 0% 85%;--b3: 0 0% 77%;--bc: 0 0% 19%;--pc: 344 100% 86%;--sc: 0 100% 92%;--ac: 27 100% 13%;--nc: 22 100% 89%;--inc: 187 100% 10%;--suc: 165 100% 9%;--wac: 30 100% 10%;--erc: 354 100% 90%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 344 96% 28%;--s: 0 63% 58%;--a: 27 56% 63%;--n: 22 17% 44%;--b1: 0 0% 95%;--in: 187 48% 50%;--su: 165 34% 43%;--wa: 30 84% 50%;--er: 354 79% 49%}[data-theme=business]{color-scheme:dark;--pf: 210 64% 24%;--sf: 200 13% 44%;--af: 13 80% 48%;--nf: 213 14% 13%;--b2: 0 0% 11%;--b3: 0 0% 10%;--bc: 0 0% 83%;--pc: 210 100% 86%;--sc: 200 100% 11%;--ac: 13 100% 12%;--nc: 213 28% 83%;--inc: 199 100% 88%;--suc: 144 100% 11%;--wac: 39 100% 12%;--erc: 6 100% 89%;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 210 64% 31%;--s: 200 13% 55%;--a: 13 80% 60%;--n: 213 14% 16%;--b1: 0 0% 13%;--in: 199 100% 42%;--su: 144 31% 56%;--wa: 39 64% 60%;--er: 6 56% 43%;--rounded-box: .25rem;--rounded-btn: .125rem;--rounded-badge: .125rem}[data-theme=acid]{color-scheme:light;--pf: 303 100% 40%;--sf: 27 100% 40%;--af: 72 98% 40%;--nf: 238 43% 14%;--b2: 0 0% 88%;--b3: 0 0% 79%;--bc: 0 0% 20%;--pc: 303 100% 90%;--sc: 27 100% 10%;--ac: 72 100% 10%;--nc: 238 99% 83%;--inc: 210 100% 12%;--suc: 149 100% 12%;--wac: 53 100% 11%;--erc: 1 100% 89%;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 303 100% 50%;--s: 27 100% 50%;--a: 72 98% 50%;--n: 238 43% 17%;--b1: 0 0% 98%;--in: 210 92% 58%;--su: 149 50% 58%;--wa: 53 93% 57%;--er: 1 100% 45%;--rounded-box: 1.25rem;--rounded-btn: 1rem;--rounded-badge: 1rem}[data-theme=lemonade]{color-scheme:light;--pf: 89 96% 24%;--sf: 60 81% 44%;--af: 63 80% 71%;--nf: 238 43% 14%;--b2: 0 0% 90%;--b3: 0 0% 81%;--bc: 0 0% 20%;--pc: 89 100% 86%;--sc: 60 100% 11%;--ac: 63 100% 18%;--nc: 238 99% 83%;--inc: 192 79% 17%;--suc: 74 100% 16%;--wac: 50 100% 15%;--erc: 1 100% 17%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 89 96% 31%;--s: 60 81% 55%;--a: 63 80% 88%;--n: 238 43% 17%;--b1: 0 0% 100%;--in: 192 39% 85%;--su: 74 76% 79%;--wa: 50 87% 75%;--er: 1 70% 83%}[data-theme=night]{color-scheme:dark;--pf: 198 93% 48%;--sf: 234 89% 59%;--af: 329 86% 56%;--b2: 222 47% 10%;--b3: 222 47% 9%;--bc: 222 66% 82%;--pc: 198 100% 12%;--sc: 234 100% 15%;--ac: 329 100% 14%;--nc: 217 76% 83%;--inc: 198 100% 10%;--suc: 172 100% 10%;--wac: 41 100% 13%;--erc: 351 100% 14%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 198 93% 60%;--s: 234 89% 74%;--a: 329 86% 70%;--n: 217 33% 17%;--nf: 217 30% 22%;--b1: 222 47% 11%;--in: 198 90% 48%;--su: 172 66% 50%;--wa: 41 88% 64%;--er: 351 95% 71%}[data-theme=coffee]{color-scheme:dark;--pf: 30 67% 46%;--sf: 182 25% 16%;--af: 194 74% 20%;--nf: 300 20% 5%;--b2: 306 19% 10%;--b3: 306 19% 9%;--pc: 30 100% 12%;--sc: 182 67% 84%;--ac: 194 100% 85%;--nc: 300 14% 81%;--inc: 171 100% 13%;--suc: 93 100% 12%;--wac: 43 100% 14%;--erc: 10 100% 15%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 30 67% 58%;--s: 182 25% 20%;--a: 194 74% 25%;--n: 300 20% 6%;--b1: 306 19% 11%;--bc: 37 8% 42%;--in: 171 37% 67%;--su: 93 25% 62%;--wa: 43 100% 69%;--er: 10 95% 75%}[data-theme=winter]{color-scheme:light;--pf: 212 100% 41%;--sf: 247 47% 35%;--af: 310 49% 42%;--nf: 217 92% 8%;--pc: 212 100% 90%;--sc: 247 100% 89%;--ac: 310 100% 90%;--nc: 217 100% 82%;--inc: 192 100% 16%;--suc: 182 100% 13%;--wac: 32 100% 17%;--erc: 0 100% 14%;--rounded-box: 1rem;--rounded-btn: .5rem;--rounded-badge: 1.9rem;--animation-btn: .25s;--animation-input: .2s;--btn-text-case: uppercase;--btn-focus-scale: .95;--border-btn: 1px;--tab-border: 1px;--tab-radius: .5rem;--p: 212 100% 51%;--s: 247 47% 43%;--a: 310 49% 52%;--n: 217 92% 10%;--b1: 0 0% 100%;--b2: 217 100% 97%;--b3: 219 44% 92%;--bc: 214 30% 32%;--in: 192 93% 78%;--su: 182 47% 66%;--wa: 32 62% 84%;--er: 0 63% 72%}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.alert{display:flex;width:100%;flex-direction:column;align-items:center;justify-content:space-between;gap:1rem;--tw-bg-opacity: 1;background-color:hsl(var(--b2, var(--b1)) / var(--tw-bg-opacity));padding:1rem;border-radius:var(--rounded-box, 1rem)}.alert>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}@media (min-width: 768px){.alert{flex-direction:row}.alert>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}}.alert>:where(*){display:flex;align-items:center;gap:.5rem}.avatar.placeholder>div{display:flex;align-items:center;justify-content:center}.badge{display:inline-flex;align-items:center;justify-content:center;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);height:1.25rem;font-size:.875rem;line-height:1.25rem;width:-moz-fit-content;width:fit-content;padding-left:.563rem;padding-right:.563rem;border-width:1px;--tw-border-opacity: 1;border-color:hsl(var(--n) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--n) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--nc) / var(--tw-text-opacity));border-radius:var(--rounded-badge, 1.9rem)}.btn{display:inline-flex;flex-shrink:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;justify-content:center;border-color:transparent;border-color:hsl(var(--n) / var(--tw-border-opacity));text-align:center;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);border-radius:var(--rounded-btn, .5rem);height:3rem;padding-left:1rem;padding-right:1rem;font-size:.875rem;line-height:1.25rem;line-height:1em;min-height:3rem;font-weight:600;text-transform:uppercase;text-transform:var(--btn-text-case, uppercase);text-decoration-line:none;border-width:var(--border-btn, 1px);animation:button-pop var(--animation-btn, .25s) ease-out;--tw-border-opacity: 1;--tw-bg-opacity: 1;background-color:hsl(var(--n) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--nc) / var(--tw-text-opacity))}.btn-disabled,.btn[disabled],.btn.loading,.btn.loading:hover{pointer-events:none}.btn.loading:before{margin-right:.5rem;height:1rem;width:1rem;border-radius:9999px;border-width:2px;animation:spin 2s linear infinite;content:"";border-top-color:transparent;border-left-color:transparent;border-bottom-color:currentColor;border-right-color:currentColor}@media (prefers-reduced-motion: reduce){.btn.loading:before{animation:spin 10s linear infinite}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn-group{display:inline-flex}.btn-group>input[type=radio].btn{-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn-group>input[type=radio].btn:before{content:attr(data-title)}.card{position:relative;display:flex;flex-direction:column;border-radius:var(--rounded-box, 1rem)}.card:focus{outline:2px solid transparent;outline-offset:2px}.card-body{display:flex;flex:1 1 auto;flex-direction:column;padding:var(--padding-card, 2rem);gap:.5rem}.card-body :where(p){flex-grow:1}.card figure{display:flex;align-items:center;justify-content:center}.card.image-full{display:grid}.card.image-full:before{position:relative;content:"";z-index:10;--tw-bg-opacity: 1;background-color:hsl(var(--n) / var(--tw-bg-opacity));opacity:.75;border-radius:var(--rounded-box, 1rem)}.card.image-full:before,.card.image-full>*{grid-column-start:1;grid-row-start:1}.card.image-full>figure img{height:100%;-o-object-fit:cover;object-fit:cover}.card.image-full>.card-body{position:relative;z-index:20;--tw-text-opacity: 1;color:hsl(var(--nc) / var(--tw-text-opacity))}.checkbox{flex-shrink:0;--chkbg: var(--bc);--chkfg: var(--b1);height:1.5rem;width:1.5rem;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-width:1px;border-color:hsl(var(--bc) / var(--tw-border-opacity));--tw-border-opacity: .2;border-radius:var(--rounded-btn, .5rem)}.divider{display:flex;flex-direction:row;align-items:center;align-self:stretch;margin-top:1rem;margin-bottom:1rem;height:1rem;white-space:nowrap}.divider:before,.divider:after{content:"";flex-grow:1;height:.125rem;width:100%}.dropdown{position:relative;display:inline-block}.dropdown>*:focus{outline:2px solid transparent;outline-offset:2px}.dropdown .dropdown-content{visibility:hidden;position:absolute;z-index:50;opacity:0;transform-origin:top;--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dropdown-end .dropdown-content{right:0px}.dropdown-left .dropdown-content{top:0px;right:100%;bottom:auto;transform-origin:right}.dropdown-right .dropdown-content{left:100%;top:0px;bottom:auto;transform-origin:left}.dropdown-bottom .dropdown-content{bottom:auto;top:100%;transform-origin:top}.dropdown-top .dropdown-content{bottom:100%;top:auto;transform-origin:bottom}.dropdown-end.dropdown-right .dropdown-content,.dropdown-end.dropdown-left .dropdown-content{bottom:0px;top:auto}.dropdown.dropdown-open .dropdown-content,.dropdown.dropdown-hover:hover .dropdown-content,.dropdown:not(.dropdown-hover):focus .dropdown-content,.dropdown:not(.dropdown-hover):focus-within .dropdown-content{visibility:visible;opacity:1}.form-control{display:flex;flex-direction:column}.label{display:flex;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;justify-content:space-between;padding:.5rem .25rem}.input{flex-shrink:1;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);height:3rem;padding-left:1rem;padding-right:1rem;font-size:1rem;line-height:2;line-height:1.5rem;border-width:1px;border-color:hsl(var(--bc) / var(--tw-border-opacity));--tw-border-opacity: 0;--tw-bg-opacity: 1;background-color:hsl(var(--b1) / var(--tw-bg-opacity));border-radius:var(--rounded-btn, .5rem)}.input-group{display:flex;width:100%;align-items:stretch}.input-group>.input{isolation:isolate}.input-group>*,.input-group>.input,.input-group>.select{border-radius:0}.input-group-sm{font-size:.875rem;line-height:2rem}.input-group :where(span){display:flex;align-items:center;--tw-bg-opacity: 1;background-color:hsl(var(--b3, var(--b2)) / var(--tw-bg-opacity));padding-left:1rem;padding-right:1rem}.input-group>:first-child{border-top-left-radius:var(--rounded-btn, .5rem);border-top-right-radius:0;border-bottom-left-radius:var(--rounded-btn, .5rem);border-bottom-right-radius:0}.input-group>:last-child{border-top-left-radius:0;border-top-right-radius:var(--rounded-btn, .5rem);border-bottom-left-radius:0;border-bottom-right-radius:var(--rounded-btn, .5rem)}.menu{display:flex;flex-direction:column;flex-wrap:wrap}.menu.horizontal{display:inline-flex;flex-direction:row}.menu.horizontal :where(li){flex-direction:row}.menu :where(li){position:relative;display:flex;flex-shrink:0;flex-direction:column;flex-wrap:wrap;align-items:stretch}.menu :where(li:not(.menu-title))>:where(*:not(ul)){display:flex}.menu :where(li:not(.disabled):not(.menu-title))>:where(*:not(ul)){cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;outline:2px solid transparent;outline-offset:2px}.menu>:where(li > *:not(ul):focus){outline:2px solid transparent;outline-offset:2px}.menu>:where(li.disabled > *:not(ul):focus){cursor:auto}.menu>:where(li) :where(ul){display:flex;flex-direction:column;align-items:stretch}.menu>:where(li)>:where(ul){position:absolute;display:none;top:initial;left:100%;border-top-left-radius:inherit;border-top-right-radius:inherit;border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.menu>:where(li:hover)>:where(ul){display:flex}.menu>:where(li:focus)>:where(ul){display:flex}.navbar{display:flex;align-items:center;padding:var(--navbar-padding, .5rem);min-height:4rem;width:100%}:where(.navbar > *){display:inline-flex;align-items:center}.navbar-start{width:50%;justify-content:flex-start}.navbar-center{flex-shrink:0}.navbar-end{width:50%;justify-content:flex-end}.select{display:inline-flex;flex-shrink:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:3rem;padding-left:1rem;padding-right:2.5rem;font-size:.875rem;line-height:1.25rem;line-height:2;min-height:3rem;border-width:1px;border-color:hsl(var(--bc) / var(--tw-border-opacity));--tw-border-opacity: 0;--tw-bg-opacity: 1;background-color:hsl(var(--b1) / var(--tw-bg-opacity));font-weight:600;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);border-radius:var(--rounded-btn, .5rem);background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16px) calc(1px + 50%);background-size:4px 4px,4px 4px;background-repeat:no-repeat}.select[multiple]{height:auto}.stack{display:inline-grid;place-items:center;align-items:flex-end}.stack>*{grid-column-start:1;grid-row-start:1;transform:translateY(10%) scale(.9);z-index:1;width:100%;opacity:.6}.stack>*:nth-child(2){transform:translateY(5%) scale(.95);z-index:2;opacity:.8}.stack>*:nth-child(1){transform:translateY(0) scale(1);z-index:3;opacity:1}.stats{display:inline-grid;--tw-bg-opacity: 1;background-color:hsl(var(--b1) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--bc) / var(--tw-text-opacity));border-radius:var(--rounded-box, 1rem)}:where(.stats){grid-auto-flow:column;overflow-x:auto}.stat{display:inline-grid;width:100%;grid-template-columns:repeat(1,1fr);-moz-column-gap:1rem;column-gap:1rem;border-color:hsl(var(--bc) / var(--tw-border-opacity));--tw-border-opacity: .1;padding:1rem 1.5rem}.stat-title{grid-column-start:1;white-space:nowrap;opacity:.6}.stat-value{grid-column-start:1;white-space:nowrap;font-size:2.25rem;line-height:2.5rem;font-weight:800}.steps .step{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));grid-template-columns:auto;grid-template-rows:repeat(2,minmax(0,1fr));grid-template-rows:40px 1fr;place-items:center;text-align:center;min-width:4rem}.tabs{display:flex;flex-wrap:wrap;align-items:flex-end}.tab{position:relative;display:inline-flex;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;justify-content:center;text-align:center;height:2rem;font-size:.875rem;line-height:1.25rem;line-height:2;--tab-padding: 1rem;--tw-text-opacity: .5;--tab-color: hsla(var(--bc) / var(--tw-text-opacity, 1));--tab-bg: hsla(var(--b1) / var(--tw-bg-opacity, 1));--tab-border-color: hsla(var(--b3) / var(--tw-bg-opacity, 1));color:var(--tab-color);padding-left:var(--tab-padding, 1rem);padding-right:var(--tab-padding, 1rem)}.table{position:relative;text-align:left}.table th:first-child{position:sticky;position:-webkit-sticky;left:0px;z-index:11}.toggle{flex-shrink:0;--tglbg: hsl(var(--b1));--handleoffset: 1.5rem;--handleoffsetcalculator: calc(var(--handleoffset) * -1);--togglehandleborder: 0 0;height:1.5rem;width:3rem;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-width:1px;border-color:hsl(var(--bc) / var(--tw-border-opacity));--tw-border-opacity: .2;background-color:hsl(var(--bc) / var(--tw-bg-opacity));--tw-bg-opacity: .5;transition-duration:.3s;transition-timing-function:cubic-bezier(.4,0,.2,1);border-radius:var(--rounded-badge, 1.9rem);transition:background,box-shadow var(--animation-input, .2s) ease-in-out;box-shadow:var(--handleoffsetcalculator) 0 0 2px var(--tglbg) inset,0 0 0 2px var(--tglbg) inset,var(--togglehandleborder)}.tooltip{position:relative;display:inline-block;--tooltip-offset: calc(100% + 1px + var(--tooltip-tail, 0px));text-align:center;--tooltip-tail: 3px;--tooltip-color: hsl(var(--n));--tooltip-text-color: hsl(var(--nc));--tooltip-tail-offset: calc(100% + 1px - var(--tooltip-tail))}.tooltip:before{position:absolute;pointer-events:none;content:attr(data-tip);max-width:20rem;border-radius:.25rem;padding:.25rem .5rem;font-size:.875rem;line-height:1.25rem;background-color:var(--tooltip-color);color:var(--tooltip-text-color);width:-moz-max-content;width:max-content}.tooltip:before,.tooltip-top:before{transform:translate(-50%);top:auto;left:50%;right:auto;bottom:var(--tooltip-offset)}.badge-primary{--tw-border-opacity: 1;border-color:hsl(var(--p) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--p) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--pc) / var(--tw-text-opacity))}.badge-ghost{--tw-border-opacity: 1;border-color:hsl(var(--b2, var(--b1)) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--b2, var(--b1)) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--bc) / var(--tw-text-opacity))}.badge-outline{border-color:currentColor;--tw-border-opacity: .5;background-color:transparent;color:currentColor}.badge-outline.badge-primary{--tw-text-opacity: 1;color:hsl(var(--p) / var(--tw-text-opacity))}.badge-outline.badge-secondary{--tw-text-opacity: 1;color:hsl(var(--s) / var(--tw-text-opacity))}.badge-outline.badge-accent{--tw-text-opacity: 1;color:hsl(var(--a) / var(--tw-text-opacity))}.badge-outline.badge-info{--tw-text-opacity: 1;color:hsl(var(--in) / var(--tw-text-opacity))}.badge-outline.badge-success{--tw-text-opacity: 1;color:hsl(var(--su) / var(--tw-text-opacity))}.badge-outline.badge-warning{--tw-text-opacity: 1;color:hsl(var(--wa) / var(--tw-text-opacity))}.badge-outline.badge-error{--tw-text-opacity: 1;color:hsl(var(--er) / var(--tw-text-opacity))}.btn-outline .badge{--tw-border-opacity: 1;border-color:hsl(var(--nf, var(--n)) / var(--tw-border-opacity));--tw-text-opacity: 1;color:hsl(var(--nc) / var(--tw-text-opacity))}.btn-outline.btn-primary .badge{--tw-border-opacity: 1;border-color:hsl(var(--p) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--p) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--pc) / var(--tw-text-opacity))}.btn-outline.btn-secondary .badge{--tw-border-opacity: 1;border-color:hsl(var(--s) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--s) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--sc) / var(--tw-text-opacity))}.btn-outline.btn-accent .badge{--tw-border-opacity: 1;border-color:hsl(var(--a) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--a) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--ac) / var(--tw-text-opacity))}.btn-outline .badge.outline{--tw-border-opacity: 1;border-color:hsl(var(--nf, var(--n)) / var(--tw-border-opacity));background-color:transparent}.btn-outline.btn-primary .badge-outline{--tw-border-opacity: 1;border-color:hsl(var(--p) / var(--tw-border-opacity));background-color:transparent;--tw-text-opacity: 1;color:hsl(var(--p) / var(--tw-text-opacity))}.btn-outline.btn-secondary .badge-outline{--tw-border-opacity: 1;border-color:hsl(var(--s) / var(--tw-border-opacity));background-color:transparent;--tw-text-opacity: 1;color:hsl(var(--s) / var(--tw-text-opacity))}.btn-outline.btn-accent .badge-outline{--tw-border-opacity: 1;border-color:hsl(var(--a) / var(--tw-border-opacity));background-color:transparent;--tw-text-opacity: 1;color:hsl(var(--a) / var(--tw-text-opacity))}.btn-outline.btn-info .badge-outline{--tw-border-opacity: 1;border-color:hsl(var(--in) / var(--tw-border-opacity));background-color:transparent;--tw-text-opacity: 1;color:hsl(var(--in) / var(--tw-text-opacity))}.btn-outline.btn-success .badge-outline{--tw-border-opacity: 1;border-color:hsl(var(--su) / var(--tw-border-opacity));background-color:transparent;--tw-text-opacity: 1;color:hsl(var(--su) / var(--tw-text-opacity))}.btn-outline.btn-warning .badge-outline{--tw-border-opacity: 1;border-color:hsl(var(--wa) / var(--tw-border-opacity));background-color:transparent;--tw-text-opacity: 1;color:hsl(var(--wa) / var(--tw-text-opacity))}.btn-outline.btn-error .badge-outline{--tw-border-opacity: 1;border-color:hsl(var(--er) / var(--tw-border-opacity));background-color:transparent;--tw-text-opacity: 1;color:hsl(var(--er) / var(--tw-text-opacity))}.btn-outline:hover .badge{--tw-border-opacity: 1;border-color:hsl(var(--b2, var(--b1)) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--b2, var(--b1)) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--bc) / var(--tw-text-opacity))}.btn-outline:hover .badge.outline{--tw-border-opacity: 1;border-color:hsl(var(--b2, var(--b1)) / var(--tw-border-opacity));--tw-text-opacity: 1;color:hsl(var(--nc) / var(--tw-text-opacity))}.btn-outline.btn-primary:hover .badge{--tw-border-opacity: 1;border-color:hsl(var(--pc) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--pc) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--p) / var(--tw-text-opacity))}.btn-outline.btn-primary:hover .badge.outline{--tw-border-opacity: 1;border-color:hsl(var(--pc) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--pf, var(--p)) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--pc) / var(--tw-text-opacity))}.btn-outline.btn-secondary:hover .badge{--tw-border-opacity: 1;border-color:hsl(var(--sc) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--sc) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--s) / var(--tw-text-opacity))}.btn-outline.btn-secondary:hover .badge.outline{--tw-border-opacity: 1;border-color:hsl(var(--sc) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--sf, var(--s)) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--sc) / var(--tw-text-opacity))}.btn-outline.btn-accent:hover .badge{--tw-border-opacity: 1;border-color:hsl(var(--ac) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--ac) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--a) / var(--tw-text-opacity))}.btn-outline.btn-accent:hover .badge.outline{--tw-border-opacity: 1;border-color:hsl(var(--ac) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--af, var(--a)) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--ac) / var(--tw-text-opacity))}.btm-nav>*:where(.active){border-top-width:2px;--tw-bg-opacity: 1;background-color:hsl(var(--b1) / var(--tw-bg-opacity))}{border-top-width:2px!important;--tw-bg-opacity: 1 !important;background-color:hsl(var(--b1) / var(--tw-bg-opacity))!important}.btm-nav>* .label{font-size:1rem;line-height:1.5rem}.btn:active:hover,.btn:active:focus{animation:none;transform:scale(var(--btn-focus-scale, .95))}.btn:hover,.btn-active{--tw-border-opacity: 1;border-color:hsl(var(--nf, var(--n)) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--nf, var(--n)) / var(--tw-bg-opacity))}.btn:focus-visible{outline:2px solid hsl(var(--nf));outline-offset:2px}.btn-primary{--tw-border-opacity: 1;border-color:hsl(var(--p) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--p) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--pc) / var(--tw-text-opacity))}.btn-primary:hover,.btn-primary.btn-active{--tw-border-opacity: 1;border-color:hsl(var(--pf, var(--p)) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--pf, var(--p)) / var(--tw-bg-opacity))}.btn-primary:focus-visible{outline:2px solid hsl(var(--p))}.btn-error{--tw-border-opacity: 1;border-color:hsl(var(--er) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--er) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--erc, var(--nc)) / var(--tw-text-opacity))}.btn-error:hover,.btn-error.btn-active{--tw-border-opacity: 1;border-color:hsl(var(--er) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--er) / var(--tw-bg-opacity))}.btn-error:focus-visible{outline:2px solid hsl(var(--er))}.btn.glass:hover,.btn.glass.btn-active{--glass-opacity: 25%;--glass-border-opacity: 15%}.btn.glass:focus-visible{outline:2px solid currentColor}.btn-ghost{border-width:1px;border-color:transparent;background-color:transparent;color:currentColor}.btn-ghost:hover,.btn-ghost.btn-active{--tw-border-opacity: 0;background-color:hsl(var(--bc) / var(--tw-bg-opacity));--tw-bg-opacity: .2}.btn-ghost:focus-visible{outline:2px solid currentColor}.btn-outline{border-color:currentColor;background-color:transparent;--tw-text-opacity: 1;color:hsl(var(--bc) / var(--tw-text-opacity))}.btn-outline:hover,.btn-outline.btn-active{--tw-border-opacity: 1;border-color:hsl(var(--bc) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--bc) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--b1) / var(--tw-text-opacity))}.btn-outline.btn-primary{--tw-text-opacity: 1;color:hsl(var(--p) / var(--tw-text-opacity))}.btn-outline.btn-primary:hover,.btn-outline.btn-primary.btn-active{--tw-border-opacity: 1;border-color:hsl(var(--pf, var(--p)) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--pf, var(--p)) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--pc) / var(--tw-text-opacity))}.btn-outline.btn-secondary{--tw-text-opacity: 1;color:hsl(var(--s) / var(--tw-text-opacity))}.btn-outline.btn-secondary:hover,.btn-outline.btn-secondary.btn-active{--tw-border-opacity: 1;border-color:hsl(var(--sf, var(--s)) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--sf, var(--s)) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--sc) / var(--tw-text-opacity))}.btn-outline.btn-accent{--tw-text-opacity: 1;color:hsl(var(--a) / var(--tw-text-opacity))}.btn-outline.btn-accent:hover,.btn-outline.btn-accent.btn-active{--tw-border-opacity: 1;border-color:hsl(var(--af, var(--a)) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--af, var(--a)) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--ac) / var(--tw-text-opacity))}.btn-outline.btn-success{--tw-text-opacity: 1;color:hsl(var(--su) / var(--tw-text-opacity))}.btn-outline.btn-success:hover,.btn-outline.btn-success.btn-active{--tw-border-opacity: 1;border-color:hsl(var(--su) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--su) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--suc, var(--nc)) / var(--tw-text-opacity))}.btn-outline.btn-info{--tw-text-opacity: 1;color:hsl(var(--in) / var(--tw-text-opacity))}.btn-outline.btn-info:hover,.btn-outline.btn-info.btn-active{--tw-border-opacity: 1;border-color:hsl(var(--in) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--in) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--inc, var(--nc)) / var(--tw-text-opacity))}.btn-outline.btn-warning{--tw-text-opacity: 1;color:hsl(var(--wa) / var(--tw-text-opacity))}.btn-outline.btn-warning:hover,.btn-outline.btn-warning.btn-active{--tw-border-opacity: 1;border-color:hsl(var(--wa) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--wa) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--wac, var(--nc)) / var(--tw-text-opacity))}.btn-outline.btn-error{--tw-text-opacity: 1;color:hsl(var(--er) / var(--tw-text-opacity))}.btn-outline.btn-error:hover,.btn-outline.btn-error.btn-active{--tw-border-opacity: 1;border-color:hsl(var(--er) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--er) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--erc, var(--nc)) / var(--tw-text-opacity))}.btn-disabled,.btn-disabled:hover,.btn[disabled],.btn[disabled]:hover{--tw-border-opacity: 0;background-color:hsl(var(--n) / var(--tw-bg-opacity));--tw-bg-opacity: .2;color:hsl(var(--bc) / var(--tw-text-opacity));--tw-text-opacity: .2}.btn.loading.btn-square:before,.btn.loading.btn-circle:before{margin-right:0}.btn.loading.btn-xl:before,.btn.loading.btn-lg:before{height:1.25rem;width:1.25rem}.btn.loading.btn-sm:before,.btn.loading.btn-xs:before{height:.75rem;width:.75rem}.btn-group>input[type=radio]:checked.btn,.btn-group>.btn-active{--tw-border-opacity: 1;border-color:hsl(var(--p) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--p) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--pc) / var(--tw-text-opacity))}.btn-group>input[type=radio]:checked.btn:focus-visible,.btn-group>.btn-active:focus-visible{outline:2px solid hsl(var(--p))}@keyframes button-pop{0%{transform:scale(var(--btn-focus-scale, .95))}40%{transform:scale(1.02)}to{transform:scale(1)}}.card :where(figure:first-child){overflow:hidden;border-start-start-radius:inherit;border-start-end-radius:inherit;border-end-start-radius:unset;border-end-end-radius:unset}.card :where(figure:last-child){overflow:hidden;border-start-start-radius:unset;border-start-end-radius:unset;border-end-start-radius:inherit;border-end-end-radius:inherit}.card:focus-visible{outline:2px solid currentColor;outline-offset:2px}.card.bordered{border-width:1px;--tw-border-opacity: 1;border-color:hsl(var(--b2, var(--b1)) / var(--tw-border-opacity))}.card.compact .card-body{padding:1rem;font-size:.875rem;line-height:1.25rem}.card.image-full :where(figure){overflow:hidden;border-radius:inherit}.checkbox:focus-visible{outline:2px solid hsl(var(--bc));outline-offset:2px}.checkbox:checked,.checkbox[checked=true],.checkbox[aria-checked=true]{--tw-bg-opacity: 1;background-color:hsl(var(--bc) / var(--tw-bg-opacity));background-repeat:no-repeat;animation:checkmark var(--animation-input, .2s) ease-in-out;background-image:linear-gradient(-45deg,transparent 65%,hsl(var(--chkbg)) 65.99%),linear-gradient(45deg,transparent 75%,hsl(var(--chkbg)) 75.99%),linear-gradient(-45deg,hsl(var(--chkbg)) 40%,transparent 40.99%),linear-gradient(45deg,hsl(var(--chkbg)) 30%,hsl(var(--chkfg)) 30.99%,hsl(var(--chkfg)) 40%,transparent 40.99%),linear-gradient(-45deg,hsl(var(--chkfg)) 50%,hsl(var(--chkbg)) 50.99%)}.checkbox:indeterminate{--tw-bg-opacity: 1;background-color:hsl(var(--bc) / var(--tw-bg-opacity));background-repeat:no-repeat;animation:checkmark var(--animation-input, .2s) ease-in-out;background-image:linear-gradient(90deg,transparent 80%,hsl(var(--chkbg)) 80%),linear-gradient(-90deg,transparent 80%,hsl(var(--chkbg)) 80%),linear-gradient(0deg,hsl(var(--chkbg)) 43%,hsl(var(--chkfg)) 43%,hsl(var(--chkfg)) 57%,hsl(var(--chkbg)) 57%)}.checkbox:disabled{cursor:not-allowed;border-color:transparent;--tw-bg-opacity: 1;background-color:hsl(var(--bc) / var(--tw-bg-opacity));opacity:.2}@keyframes checkmark{0%{background-position-y:5px}50%{background-position-y:-2px}to{background-position-y:0}}[dir=rtl] .checkbox:checked,[dir=rtl] .checkbox[checked=true],[dir=rtl] .checkbox[aria-checked=true]{background-image:linear-gradient(45deg,transparent 65%,hsl(var(--chkbg)) 65.99%),linear-gradient(-45deg,transparent 75%,hsl(var(--chkbg)) 75.99%),linear-gradient(45deg,hsl(var(--chkbg)) 40%,transparent 40.99%),linear-gradient(-45deg,hsl(var(--chkbg)) 30%,hsl(var(--chkfg)) 30.99%,hsl(var(--chkfg)) 40%,transparent 40.99%),linear-gradient(45deg,hsl(var(--chkfg)) 50%,hsl(var(--chkbg)) 50.99%)}.divider:before{background-color:hsl(var(--bc) / var(--tw-bg-opacity));--tw-bg-opacity: .1}.divider:after{background-color:hsl(var(--bc) / var(--tw-bg-opacity));--tw-bg-opacity: .1}.divider:not(:empty){gap:1rem}.drawer-toggle:focus-visible~.drawer-content .drawer-button.btn-primary{outline:2px solid hsl(var(--p))}.drawer-toggle:focus-visible~.drawer-content .drawer-button.btn-error{outline:2px solid hsl(var(--er))}.drawer-toggle:focus-visible~.drawer-content .drawer-button.btn-ghost{outline:2px solid currentColor}.dropdown.dropdown-open .dropdown-content,.dropdown.dropdown-hover:hover .dropdown-content,.dropdown:focus .dropdown-content,.dropdown:focus-within .dropdown-content{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.label-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:hsl(var(--bc) / var(--tw-text-opacity))}.label a:hover{--tw-text-opacity: 1;color:hsl(var(--bc) / var(--tw-text-opacity))}.input[list]::-webkit-calendar-picker-indicator{line-height:1em}.input-bordered{--tw-border-opacity: .2}.input:focus{outline:2px solid hsla(var(--bc) / .2);outline-offset:2px}.input-disabled,.input[disabled]{cursor:not-allowed;--tw-border-opacity: 1;border-color:hsl(var(--b2, var(--b1)) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--b2, var(--b1)) / var(--tw-bg-opacity));--tw-text-opacity: .2}.input-disabled::-moz-placeholder,.input[disabled]::-moz-placeholder{color:hsl(var(--bc) / var(--tw-placeholder-opacity));--tw-placeholder-opacity: .2}.input-disabled::placeholder,.input[disabled]::placeholder{color:hsl(var(--bc) / var(--tw-placeholder-opacity));--tw-placeholder-opacity: .2}.menu.horizontal li.bordered>a,.menu.horizontal li.bordered>button,.menu.horizontal li.bordered>span{border-left-width:0px;border-bottom-width:4px;--tw-border-opacity: 1;border-color:hsl(var(--p) / var(--tw-border-opacity))}.menu[class*=" px-"]:not(.menu[class*=" px-0"]) li>*,.menu[class^=px-]:not(.menu[class^="px-0"]) li>*,.menu[class*=" p-"]:not(.menu[class*=" p-0"]) li>*,.menu[class^=p-]:not(.menu[class^="p-0"]) li>*{border-radius:var(--rounded-btn, .5rem)}.menu :where(li.bordered > *){border-left-width:4px;--tw-border-opacity: 1;border-color:hsl(var(--p) / var(--tw-border-opacity))}.menu :where(li)>:where(*:not(ul)){gap:.75rem;padding:.75rem 1rem;color:currentColor}.menu :where(li:not(.menu-title):not(:empty))>:where(*:not(ul):focus),.menu :where(li:not(.menu-title):not(:empty))>:where(*:not(ul):hover){background-color:hsl(var(--bc) / var(--tw-bg-opacity));--tw-bg-opacity: .1}.menu :where(li:not(.menu-title):not(:empty))>:where(:not(ul).active),.menu :where(li:not(.menu-title):not(:empty))>:where(*:not(ul):active){--tw-bg-opacity: 1;background-color:hsl(var(--p) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--pc) / var(--tw-text-opacity))}{--tw-bg-opacity: 1 !important;background-color:hsl(var(--p) / var(--tw-bg-opacity))!important;--tw-text-opacity: 1 !important;color:hsl(var(--pc) / var(--tw-text-opacity))!important}.menu :where(li:empty){margin:.5rem 1rem;height:1px;background-color:hsl(var(--bc) / var(--tw-bg-opacity));--tw-bg-opacity: .1}.menu li.disabled>*{-webkit-user-select:none;-moz-user-select:none;user-select:none;color:hsl(var(--bc) / var(--tw-text-opacity));--tw-text-opacity: .2}.menu li.disabled>*:hover{background-color:transparent}.menu li.hover-bordered a{border-left-width:4px;border-color:transparent}.menu li.hover-bordered a:hover{--tw-border-opacity: 1;border-color:hsl(var(--p) / var(--tw-border-opacity))}.menu.compact li>a,.menu.compact li>span{padding-top:.5rem;padding-bottom:.5rem;font-size:.875rem;line-height:1.25rem}.menu .menu-title>*{padding-top:.25rem;padding-bottom:.25rem;font-size:.75rem;line-height:1rem;font-weight:700;color:hsl(var(--bc) / var(--tw-text-opacity));--tw-text-opacity: .4}.menu :where(li:not(.disabled))>:where(*:not(ul)){outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.menu>:where(li:first-child){border-top-left-radius:inherit;border-top-right-radius:inherit;border-bottom-right-radius:unset;border-bottom-left-radius:unset}.menu>:where(li:first-child)>:where(:not(ul)){border-top-left-radius:inherit;border-top-right-radius:inherit;border-bottom-right-radius:unset;border-bottom-left-radius:unset}.menu>:where(li:last-child){border-top-left-radius:unset;border-top-right-radius:unset;border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.menu>:where(li:last-child)>:where(:not(ul)){border-top-left-radius:unset;border-top-right-radius:unset;border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.menu>:where(li)>:where(ul) :where(li){width:100%;white-space:nowrap}.menu>:where(li)>:where(ul) :where(li) :where(ul){padding-left:1rem}.menu>:where(li)>:where(ul) :where(li)>:where(:not(ul)){width:100%;white-space:nowrap}.menu>:where(li)>:where(ul)>:where(li:first-child){border-top-left-radius:inherit;border-top-right-radius:inherit;border-bottom-right-radius:unset;border-bottom-left-radius:unset}.menu>:where(li)>:where(ul)>:where(li:first-child)>:where(:not(ul)){border-top-left-radius:inherit;border-top-right-radius:inherit;border-bottom-right-radius:unset;border-bottom-left-radius:unset}.menu>:where(li)>:where(ul)>:where(li:last-child){border-top-left-radius:unset;border-top-right-radius:unset;border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.menu>:where(li)>:where(ul)>:where(li:last-child)>:where(:not(ul)){border-top-left-radius:unset;border-top-right-radius:unset;border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}@keyframes progress-loading{50%{left:107%}}@keyframes radiomark{0%{box-shadow:0 0 0 12px hsl(var(--b1)) inset,0 0 0 12px hsl(var(--b1)) inset}50%{box-shadow:0 0 0 3px hsl(var(--b1)) inset,0 0 0 3px hsl(var(--b1)) inset}to{box-shadow:0 0 0 4px hsl(var(--b1)) inset,0 0 0 4px hsl(var(--b1)) inset}}@keyframes rating-pop{0%{transform:translateY(-.125em)}40%{transform:translateY(-.125em)}to{transform:translateY(0)}}.select:focus{outline:2px solid hsla(var(--bc) / .2);outline-offset:2px}.select-disabled,.select[disabled]{cursor:not-allowed;--tw-border-opacity: 1;border-color:hsl(var(--b2, var(--b1)) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--b2, var(--b1)) / var(--tw-bg-opacity));--tw-text-opacity: .2}.select-disabled::-moz-placeholder,.select[disabled]::-moz-placeholder{color:hsl(var(--bc) / var(--tw-placeholder-opacity));--tw-placeholder-opacity: .2}.select-disabled::placeholder,.select[disabled]::placeholder{color:hsl(var(--bc) / var(--tw-placeholder-opacity));--tw-placeholder-opacity: .2}.select-multiple,.select[multiple],.select[size].select:not([size="1"]){background-image:none;padding-right:1rem}:where(.stats)>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)));--tw-divide-y-reverse: 0;border-top-width:calc(0px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(0px * var(--tw-divide-y-reverse))}.steps .step:before{top:0px;grid-column-start:1;grid-row-start:1;height:.5rem;width:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity: 1;background-color:hsl(var(--b3, var(--b2)) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--bc) / var(--tw-text-opacity));content:"";margin-left:-100%}.steps .step:after{content:counter(step);counter-increment:step;z-index:1;position:relative;grid-column-start:1;grid-row-start:1;display:grid;height:2rem;width:2rem;place-items:center;place-self:center;border-radius:9999px;--tw-bg-opacity: 1;background-color:hsl(var(--b3, var(--b2)) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--bc) / var(--tw-text-opacity))}.steps .step:first-child:before{content:none}.steps .step[data-content]:after{content:attr(data-content)}.tab:hover{--tw-text-opacity: 1}.tab.tab-active{border-color:hsl(var(--bc) / var(--tw-border-opacity));--tw-border-opacity: 1;--tw-text-opacity: 1}.tab:focus{outline:2px solid transparent;outline-offset:2px}.tab:focus-visible{outline:2px solid currentColor;outline-offset:-3px}.tab:focus-visible.tab-lifted{border-bottom-right-radius:var(--tab-radius, .5rem);border-bottom-left-radius:var(--tab-radius, .5rem)}.table :where(th,td){white-space:nowrap;padding:1rem;vertical-align:middle}.table tr.active th,.table tr.active td,.table tr.active:nth-child(even) th,.table tr.active:nth-child(even) td{--tw-bg-opacity: 1;background-color:hsl(var(--b3, var(--b2)) / var(--tw-bg-opacity))}.table tr.\!active th,.table tr.\!active td,.table tr.\!active:nth-child(even) th,.table tr.\!active:nth-child(even) td{--tw-bg-opacity: 1 !important;background-color:hsl(var(--b3, var(--b2)) / var(--tw-bg-opacity))!important}.table tr.hover:hover th,.table tr.hover:hover td,.table tr.hover:nth-child(even):hover th,.table tr.hover:nth-child(even):hover td{--tw-bg-opacity: 1;background-color:hsl(var(--b3, var(--b2)) / var(--tw-bg-opacity))}.table:where(:not(.table-zebra)) :where(thead,tbody,tfoot) :where(tr:not(:last-child) :where(th,td)){border-bottom-width:1px;--tw-border-opacity: 1;border-color:hsl(var(--b2, var(--b1)) / var(--tw-border-opacity))}.table :where(thead,tfoot) :where(th,td){--tw-bg-opacity: 1;background-color:hsl(var(--b2, var(--b1)) / var(--tw-bg-opacity));font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase}.table :where(tbody th,tbody td){--tw-bg-opacity: 1;background-color:hsl(var(--b1) / var(--tw-bg-opacity))}:where(.table *:first-child) :where(*:first-child) :where(th,td):first-child{border-top-left-radius:.5rem}:where(.table *:first-child) :where(*:first-child) :where(th,td):last-child{border-top-right-radius:.5rem}:where(.table *:last-child) :where(*:last-child) :where(th,td):first-child{border-bottom-left-radius:.5rem}:where(.table *:last-child) :where(*:last-child) :where(th,td):last-child{border-bottom-right-radius:.5rem}@keyframes toast-pop{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}[dir=rtl] .toggle{--handleoffsetcalculator: calc(var(--handleoffset) * 1)}.toggle:focus-visible{outline:2px solid hsl(var(--bc));outline-offset:2px}.toggle:checked,.toggle[checked=true],.toggle[aria-checked=true]{--handleoffsetcalculator: var(--handleoffset);--tw-border-opacity: 1;--tw-bg-opacity: 1}[dir=rtl] .toggle:checked,[dir=rtl] .toggle[checked=true],[dir=rtl] .toggle[aria-checked=true]{--handleoffsetcalculator: calc(var(--handleoffset) * -1)}.toggle:indeterminate{--tw-border-opacity: 1;--tw-bg-opacity: 1;box-shadow:calc(var(--handleoffset) / 2) 0 0 2px var(--tglbg) inset,calc(var(--handleoffset) / -2) 0 0 2px var(--tglbg) inset,0 0 0 2px var(--tglbg) inset}[dir=rtl] .toggle:indeterminate{box-shadow:calc(var(--handleoffset) / 2) 0 0 2px var(--tglbg) inset,calc(var(--handleoffset) / -2) 0 0 2px var(--tglbg) inset,0 0 0 2px var(--tglbg) inset}.toggle:disabled{cursor:not-allowed;--tw-border-opacity: 1;border-color:hsl(var(--bc) / var(--tw-border-opacity));background-color:transparent;opacity:.3;--togglehandleborder: 0 0 0 3px hsl(var(--bc)) inset, var(--handleoffsetcalculator) 0 0 3px hsl(var(--bc)) inset}.tooltip:before,.tooltip:after{opacity:0;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-delay:.1s;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.tooltip:after{position:absolute;content:"";border-style:solid;border-width:var(--tooltip-tail, 0);width:0;height:0;display:block}.tooltip.tooltip-open:before,.tooltip.tooltip-open:after,.tooltip:hover:before,.tooltip:hover:after{opacity:1;transition-delay:75ms}.tooltip:after,.tooltip-top:after{transform:translate(-50%);border-color:var(--tooltip-color) transparent transparent transparent;top:auto;left:50%;right:auto;bottom:var(--tooltip-tail-offset)}.rounded-box{border-radius:var(--rounded-box, 1rem)}.badge-sm{height:1rem;font-size:.75rem;line-height:1rem;padding-left:.438rem;padding-right:.438rem}.btm-nav-xs>*:where(.active){border-top-width:1px}{border-top-width:1px!important}.btm-nav-sm>*:where(.active){border-top-width:2px}{border-top-width:2px!important}.btm-nav-md>*:where(.active){border-top-width:2px}{border-top-width:2px!important}.btm-nav-lg>*:where(.active){border-top-width:4px}{border-top-width:4px!important}.btn-xs{height:1.5rem;padding-left:.5rem;padding-right:.5rem;min-height:1.5rem;font-size:.75rem}.btn-sm{height:2rem;padding-left:.75rem;padding-right:.75rem;min-height:2rem;font-size:.875rem}.btn-square:where(.btn-xs){height:1.5rem;width:1.5rem;padding:0}.btn-square:where(.btn-sm){height:2rem;width:2rem;padding:0}.btn-circle:where(.btn-xs){height:1.5rem;width:1.5rem;border-radius:9999px;padding:0}.btn-circle:where(.btn-sm){height:2rem;width:2rem;border-radius:9999px;padding:0}.btn-group-horizontal{flex-direction:row}.input-sm{height:2rem;padding-left:.75rem;padding-right:.75rem;font-size:.875rem;line-height:2rem}.menu-vertical{flex-direction:column}.menu-vertical :where(li){flex-direction:column}.menu-vertical>:where(li)>:where(ul){top:initial;left:100%}.menu-horizontal{display:inline-flex;width:-moz-max-content;width:max-content;flex-direction:row}.menu-horizontal :where(li){flex-direction:row}.menu-horizontal>:where(li)>:where(ul){top:100%;left:initial}.steps-horizontal .step{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));place-items:center;text-align:center}.steps-vertical .step{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(1,minmax(0,1fr))}.avatar.online:before{content:"";position:absolute;z-index:10;display:block;border-radius:9999px;--tw-bg-opacity: 1;background-color:hsl(var(--su) / var(--tw-bg-opacity));width:15%;height:15%;top:7%;right:7%;box-shadow:0 0 0 2px hsl(var(--b1))}.btn-group .btn:not(:first-child):not(:last-child),.btn-group.btn-group-horizontal .btn:not(:first-child):not(:last-child){border-radius:0}.btn-group .btn:first-child:not(:last-child),.btn-group.btn-group-horizontal .btn:first-child:not(:last-child){margin-left:-1px;margin-top:-0px;border-top-left-radius:var(--rounded-btn, .5rem);border-top-right-radius:0;border-bottom-left-radius:var(--rounded-btn, .5rem);border-bottom-right-radius:0}.btn-group .btn:last-child:not(:first-child),.btn-group.btn-group-horizontal .btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:var(--rounded-btn, .5rem);border-bottom-left-radius:0;border-bottom-right-radius:var(--rounded-btn, .5rem)}.btn-group.btn-group-vertical .btn:first-child:not(:last-child){margin-left:-0px;margin-top:-1px;border-top-left-radius:var(--rounded-btn, .5rem);border-top-right-radius:var(--rounded-btn, .5rem);border-bottom-left-radius:0;border-bottom-right-radius:0}.btn-group.btn-group-vertical .btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:var(--rounded-btn, .5rem);border-bottom-right-radius:var(--rounded-btn, .5rem)}.card-compact .card-body{padding:1rem;font-size:.875rem;line-height:1.25rem}.card-normal .card-body{padding:var(--padding-card, 2rem);font-size:1rem;line-height:1.5rem}.menu-vertical :where(li.bordered > *){border-left-width:4px;border-bottom-width:0px}.menu-horizontal :where(li.bordered > *){border-left-width:0px;border-bottom-width:4px}.menu-compact :where(li > *){padding-top:.5rem;padding-bottom:.5rem;font-size:.875rem;line-height:1.25rem}.menu-vertical>:where(li:first-child){border-top-left-radius:inherit;border-top-right-radius:inherit;border-bottom-right-radius:unset;border-bottom-left-radius:unset}.menu-vertical>:where(li:first-child)>:where(*:not(ul)){border-top-left-radius:inherit;border-top-right-radius:inherit;border-bottom-right-radius:unset;border-bottom-left-radius:unset}.menu-vertical>:where(li:last-child){border-top-left-radius:unset;border-top-right-radius:unset;border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.menu-vertical>:where(li:last-child)>:where(*:not(ul)){border-top-left-radius:unset;border-top-right-radius:unset;border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.menu-horizontal>:where(li:first-child){border-top-left-radius:inherit;border-top-right-radius:unset;border-bottom-right-radius:unset;border-bottom-left-radius:inherit}.menu-horizontal>:where(li:first-child)>:where(*:not(ul)){border-top-left-radius:inherit;border-top-right-radius:unset;border-bottom-right-radius:unset;border-bottom-left-radius:inherit}.menu-horizontal>:where(li:last-child){border-top-left-radius:unset;border-top-right-radius:inherit;border-bottom-right-radius:inherit;border-bottom-left-radius:unset}.menu-horizontal>:where(li:last-child)>:where(*:not(ul)){border-top-left-radius:unset;border-top-right-radius:inherit;border-bottom-right-radius:inherit;border-bottom-left-radius:unset}.steps-horizontal .step{grid-template-rows:40px 1fr;grid-template-columns:auto;min-width:4rem}.steps-horizontal .step:before{height:.5rem;width:100%;--tw-translate-y: 0px;--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));content:"";margin-left:-100%}.steps-vertical .step{gap:.5rem;grid-template-columns:40px 1fr;grid-template-rows:auto;min-height:4rem;justify-items:start}.steps-vertical .step:before{height:100%;width:.5rem;--tw-translate-y: -50%;--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));margin-left:50%}.table-normal :where(th,td){padding:1rem;font-size:1rem;line-height:1.5rem}.table-compact :where(th,td){padding:.5rem;font-size:.875rem;line-height:1.25rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-auto{pointer-events:auto}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0px;right:0px;bottom:0px;left:0px}.inset-y-0{top:0px;bottom:0px}.right-0{right:0px}.top-\[100\%\],.top-full{top:100%}.z-20{z-index:20}.z-30{z-index:30}.z-10{z-index:10}.m-1{margin:.25rem}.m-2{margin:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.mr-2{margin-right:.5rem}.mr-20{margin-right:5rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.ml-2{margin-left:.5rem}.mt-2{margin-top:.5rem}.ml-1{margin-left:.25rem}.mb-1{margin-bottom:.25rem}.mt-4{margin-top:1rem}.mr-1{margin-right:.25rem}.mt-10{margin-top:2.5rem}.box-border{box-sizing:border-box}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-\[100vh\]{height:100vh}.h-6{height:1.5rem}.h-0{height:0px}.h-full{height:100%}.h-screen{height:100vh}.h-\[10vh\]{height:10vh}.h-\[90vh\]{height:90vh}.h-4{height:1rem}.h-20{height:5rem}.h-1\/2{height:50%}.h-10{height:2.5rem}.h-auto{height:auto}.h-80{height:20rem}.h-12{height:3rem}.h-5{height:1.25rem}.h-60{height:15rem}.h-64{height:16rem}.h-\[40vh\]{height:40vh}.h-\[5vh\]{height:5vh}.h-\[50vh\]{height:50vh}.h-\[8vh\]{height:8vh}.max-h-\[70vh\]{max-height:70vh}.max-h-60{max-height:15rem}.max-h-80{max-height:20rem}.min-h-max{min-height:-moz-max-content;min-height:max-content}.w-\[100vw\]{width:100vw}.w-6{width:1.5rem}.w-20{width:5rem}.w-full{width:100%}.w-4{width:1rem}.w-32{width:8rem}.w-40{width:10rem}.w-11\/12{width:91.666667%}.w-24{width:6rem}.w-1\/3{width:33.333333%}.w-0{width:0px}.w-12{width:3rem}.w-5{width:1.25rem}.w-1\/5{width:20%}.w-3\/5{width:60%}.w-11{width:2.75rem}.w-1\/2{width:50%}.w-52{width:13rem}.w-\[10vw\]{width:10vw}.w-80{width:20rem}.w-10\/12{width:83.333333%}.w-1\/4{width:25%}.w-2\/3{width:66.666667%}.w-44{width:11rem}.min-w-max{min-width:-moz-max-content;min-width:max-content}.min-w-\[15rem\]{min-width:15rem}.max-w-4xl{max-width:56rem}.flex-auto{flex:1 1 auto}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.translate-x-6{--tw-translate-x: 1.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-spin-rev-pause{animation:.3s linear 0s infinite reverse both pause spin}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin-rev-running{animation:.3s linear 0s infinite reverse both running spin}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-start{place-items:start}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-clip{overflow:clip}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.overscroll-auto{overscroll-behavior:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.border{border-width:1px}.border-x-0{border-left-width:0px;border-right-width:0px}.border-b-2{border-bottom-width:2px}.border-t-2{border-top-width:2px}.border-l{border-left-width:1px}.border-none{border-style:none}.border-base-100{--tw-border-opacity: 1;border-color:hsl(var(--b1) / var(--tw-border-opacity))}.border-slate-400{--tw-border-opacity: 1;border-color:rgb(148 163 184 / var(--tw-border-opacity))}.border-slate-300{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity))}.border-black{--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-neutral{--tw-border-opacity: 1;border-color:hsl(var(--n) / var(--tw-border-opacity))}.border-primary-focus{--tw-border-opacity: 1;border-color:hsl(var(--pf, var(--p)) / var(--tw-border-opacity))}.bg-base-100{--tw-bg-opacity: 1;background-color:hsl(var(--b1) / var(--tw-bg-opacity))}.bg-secondary{--tw-bg-opacity: 1;background-color:hsl(var(--s) / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-primary{--tw-bg-opacity: 1;background-color:hsl(var(--p) / var(--tw-bg-opacity))}.bg-base-200{--tw-bg-opacity: 1;background-color:hsl(var(--b2, var(--b1)) / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-green-200{--tw-bg-opacity: 1;background-color:rgb(187 247 208 / var(--tw-bg-opacity))}.bg-blue-200{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity))}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-teal-700{--tw-bg-opacity: 1;background-color:rgb(15 118 110 / var(--tw-bg-opacity))}.bg-blue-300{--tw-bg-opacity: 1;background-color:rgb(147 197 253 / var(--tw-bg-opacity))}.bg-neutral{--tw-bg-opacity: 1;background-color:hsl(var(--n) / var(--tw-bg-opacity))}.bg-neutral-focus{--tw-bg-opacity: 1;background-color:hsl(var(--nf, var(--n)) / var(--tw-bg-opacity))}.bg-info{--tw-bg-opacity: 1;background-color:hsl(var(--in) / var(--tw-bg-opacity))}.bg-accent{--tw-bg-opacity: 1;background-color:hsl(var(--a) / var(--tw-bg-opacity))}.bg-base-300{--tw-bg-opacity: 1;background-color:hsl(var(--b3, var(--b2)) / var(--tw-bg-opacity))}.bg-success{--tw-bg-opacity: 1;background-color:hsl(var(--su) / var(--tw-bg-opacity))}.bg-primary-focus{--tw-bg-opacity: 1;background-color:hsl(var(--pf, var(--p)) / var(--tw-bg-opacity))}.bg-\[\#f6f6f6\]{--tw-bg-opacity: 1;background-color:rgb(246 246 246 / var(--tw-bg-opacity))}.bg-opacity-25{--tw-bg-opacity: .25}.p-2{padding:.5rem}.p-10{padding:2.5rem}.p-1{padding:.25rem}.p-4{padding:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.pl-3{padding-left:.75rem}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pt-4{padding-top:1rem}.pt-2{padding-top:.5rem}.pl-10{padding-left:2.5rem}.text-left{text-align:left}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-bold{font-weight:700}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.leading-5{line-height:1.25rem}.text-secondary-content{--tw-text-opacity: 1;color:hsl(var(--sc) / var(--tw-text-opacity))}.text-primary-content{--tw-text-opacity: 1;color:hsl(var(--pc) / var(--tw-text-opacity))}.text-error{--tw-text-opacity: 1;color:hsl(var(--er) / var(--tw-text-opacity))}.text-success{--tw-text-opacity: 1;color:hsl(var(--su) / var(--tw-text-opacity))}.text-warning{--tw-text-opacity: 1;color:hsl(var(--wa) / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-teal-600{--tw-text-opacity: 1;color:rgb(13 148 136 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-neutral-content{--tw-text-opacity: 1;color:hsl(var(--nc) / var(--tw-text-opacity))}.text-info-content{--tw-text-opacity: 1;color:hsl(var(--inc, var(--nc)) / var(--tw-text-opacity))}.text-accent-content{--tw-text-opacity: 1;color:hsl(var(--ac) / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-base-content{--tw-text-opacity: 1;color:hsl(var(--bc) / var(--tw-text-opacity))}.text-neutral{--tw-text-opacity: 1;color:hsl(var(--n) / var(--tw-text-opacity))}.text-success-content{--tw-text-opacity: 1;color:hsl(var(--suc, var(--nc)) / var(--tw-text-opacity))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-1{outline-width:1px}.outline-2{outline-width:2px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-200{transition-duration:.2s}.duration-75{transition-duration:75ms}.duration-500{transition-duration:.5s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.btn-outline .focus-within\:outline:focus-within.badge{--tw-border-opacity: 1;border-color:hsl(var(--nf, var(--n)) / var(--tw-border-opacity));background-color:transparent}.focus-within\:outline:focus-within{outline-style:solid}.btn-outline:hover .focus-within\:outline:focus-within.badge{--tw-border-opacity: 1;border-color:hsl(var(--b2, var(--b1)) / var(--tw-border-opacity));--tw-text-opacity: 1;color:hsl(var(--nc) / var(--tw-text-opacity))}.btn-outline.btn-primary:hover .focus-within\:outline:focus-within.badge{--tw-border-opacity: 1;border-color:hsl(var(--pc) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--pf, var(--p)) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--pc) / var(--tw-text-opacity))}.btn-outline.btn-secondary:hover .focus-within\:outline:focus-within.badge{--tw-border-opacity: 1;border-color:hsl(var(--sc) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--sf, var(--s)) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--sc) / var(--tw-text-opacity))}.btn-outline.btn-accent:hover .focus-within\:outline:focus-within.badge{--tw-border-opacity: 1;border-color:hsl(var(--ac) / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:hsl(var(--af, var(--a)) / var(--tw-bg-opacity));--tw-text-opacity: 1;color:hsl(var(--ac) / var(--tw-text-opacity))}.hover\:bg-secondary-focus:hover{--tw-bg-opacity: 1;background-color:hsl(var(--sf, var(--s)) / var(--tw-bg-opacity))}.hover\:bg-blue-500:hover{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.hover\:text-sky-500:hover{--tw-text-opacity: 1;color:rgb(14 165 233 / var(--tw-text-opacity))}.hover\:opacity-50:hover{opacity:.5}.hover\:shadow:hover{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-gray-400:hover{--tw-shadow-color: #9ca3af;--tw-shadow: var(--tw-shadow-colored)}.focus\:bg-secondary-focus:focus{--tw-bg-opacity: 1;background-color:hsl(var(--sf, var(--s)) / var(--tw-bg-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline-gray-600:focus-visible{outline-color:#4b5563}.group:first-child .group-first\:z-0{z-index:0}.group:focus-within .group-focus-within\:h-auto{height:auto}.group:hover .group-hover\:h-auto{height:auto}.group:hover .group-hover\:opacity-100{opacity:1}@media (prefers-color-scheme: dark){.dark\:hover\:text-sky-400:hover{--tw-text-opacity: 1;color:rgb(56 189 248 / var(--tw-text-opacity))}}@media (min-width: 768px){.md\:flex-row{flex-direction:row}.md\:btn-group-vertical{flex-direction:column}.md\:btn-group-vertical.btn-group .btn:first-child:not(:last-child){margin-left:-0px;margin-top:-1px;border-top-left-radius:var(--rounded-btn, .5rem);border-top-right-radius:var(--rounded-btn, .5rem);border-bottom-left-radius:0;border-bottom-right-radius:0}.md\:btn-group-vertical.btn-group .btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:var(--rounded-btn, .5rem);border-bottom-right-radius:var(--rounded-btn, .5rem)}}@media (min-width: 1024px){.lg\:flex-row{flex-direction:row}}@media (min-width: 1280px){.xl\:flex{display:flex}.xl\:hidden{display:none}.xl\:flex-row{flex-direction:row}}@media (min-width: 1536px){.\32xl\:hidden{display:none}.\32xl\:btn-group-horizontal{flex-direction:row}.\32xl\:menu-horizontal{display:inline-flex;width:-moz-max-content;width:max-content;flex-direction:row}.\32xl\:menu-horizontal :where(li){flex-direction:row}.\32xl\:menu-horizontal>:where(li)>:where(ul){top:100%;left:initial}.\32xl\:btn-group-horizontal .btn-group .btn:not(:first-child):not(:last-child){border-radius:0}.\32xl\:btn-group-horizontal .btn-group .btn:first-child:not(:last-child){margin-left:-1px;margin-top:-0px;border-top-left-radius:var(--rounded-btn, .5rem);border-top-right-radius:0;border-bottom-left-radius:var(--rounded-btn, .5rem);border-bottom-right-radius:0}.\32xl\:btn-group-horizontal .btn-group .btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:var(--rounded-btn, .5rem);border-bottom-left-radius:0;border-bottom-right-radius:var(--rounded-btn, .5rem)}.\32xl\:menu-horizontal :where(li.bordered > *){border-left-width:0px;border-bottom-width:4px}.\32xl\:menu-horizontal>:where(li:first-child){border-top-left-radius:inherit;border-top-right-radius:unset;border-bottom-right-radius:unset;border-bottom-left-radius:inherit}.\32xl\:menu-horizontal>:where(li:first-child)>:where(*:not(ul)){border-top-left-radius:inherit;border-top-right-radius:unset;border-bottom-right-radius:unset;border-bottom-left-radius:inherit}.\32xl\:menu-horizontal>:where(li:last-child){border-top-left-radius:unset;border-top-right-radius:inherit;border-bottom-right-radius:inherit;border-bottom-left-radius:unset}.\32xl\:menu-horizontal>:where(li:last-child)>:where(*:not(ul)){border-top-left-radius:unset;border-top-right-radius:inherit;border-bottom-right-radius:inherit;border-bottom-left-radius:unset}} diff --git a/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/css/xterm-2831e07f.css b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/css/xterm-2831e07f.css new file mode 100644 index 00000000000..2b85b0e97ee --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/css/xterm-2831e07f.css @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2014 The xterm.js authors. All rights reserved. + * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License) + * https://github.com/chjj/term.js + * @license MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * Originally forked from (with the author's permission): + * Fabrice Bellard's javascript vt100 for jslinux: + * http://bellard.org/jslinux/ + * Copyright (c) 2011 Fabrice Bellard + * The original design remains. The terminal itself + * has been extended to include xterm CSI codes, among + * other features. + */.xterm{cursor:text;position:relative;-moz-user-select:none;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility,.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:.5}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:double underline;text-decoration:double underline}.xterm-underline-3{-webkit-text-decoration:wavy underline;text-decoration:wavy underline}.xterm-underline-4{-webkit-text-decoration:dotted underline;text-decoration:dotted underline}.xterm-underline-5{-webkit-text-decoration:dashed underline;text-decoration:dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-decoration-overview-ruler{z-index:7;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative} diff --git a/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/Agent-7549a395.js b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/Agent-7549a395.js new file mode 100644 index 00000000000..f50144df6b9 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/Agent-7549a395.js @@ -0,0 +1 @@ +import{_ as c,d as p,r as h,o as m,a,b as r,e as t,F as _,f as u,t as o}from"./main-38ee3337.js";import{a as d}from"./axios-1e59ba81.js";const v={class:"table table-normal w-[100vw]"},w=t("thead",null,[t("tr",null,[t("th",{class:"normal-case"},"IP"),t("th",{class:"normal-case"},"http-port"),t("th",{class:"normal-case"},"ws-port"),t("th",{class:"normal-case"},"Option")])],-1),b=["href"],f=p({__name:"Agent",setup(y){const s=h([]),i=async()=>{let n=window.location.origin+"/api/native-agent";const l={operation:"listNativeAgent"};try{const e=await d.post(n,l);Array.isArray(e.data)&&s.splice(0,s.length,...e.data)}catch{}};return m(()=>{i()}),(n,l)=>(a(),r("table",v,[w,t("tbody",null,[(a(!0),r(_,null,u(s,e=>(a(),r("tr",{key:e.ip,class:"hover"},[t("td",null,o(e.ip),1),t("td",null,o(e.httpPort),1),t("td",null,o(e.wsPort),1),t("td",null,[t("a",{class:"btn btn-primary btn-sm",href:"processes.html?ip="+e.ip+"&httpPort="+e.httpPort+"&wsPort="+e.wsPort},"view java processes info",8,b)])]))),128))])]))}});var P=c(f,[["__file","D:/code/java/read/arthas/web-ui/arthasWebConsole/all/native-agent/src/Agent.vue"]]);export{P as A}; diff --git a/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/agents-b07f3b75.js b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/agents-b07f3b75.js new file mode 100644 index 00000000000..24af6a3143d --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/agents-b07f3b75.js @@ -0,0 +1 @@ +import{c as p}from"./main-38ee3337.js";import{A as o}from"./Agent-7549a395.js";import"./axios-1e59ba81.js";const m=p(o);m.mount("#app"); diff --git a/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/axios-1e59ba81.js b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/axios-1e59ba81.js new file mode 100644 index 00000000000..be38a0cb527 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/axios-1e59ba81.js @@ -0,0 +1,6 @@ +function Fe(e,t){return function(){return e.apply(t,arguments)}}const{toString:tt}=Object.prototype,{getPrototypeOf:ue}=Object,V=(e=>t=>{const n=tt.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),C=e=>(e=e.toLowerCase(),t=>V(t)===e),W=e=>t=>typeof t===e,{isArray:D}=Array,j=W("undefined");function nt(e){return e!==null&&!j(e)&&e.constructor!==null&&!j(e.constructor)&&A(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Be=C("ArrayBuffer");function rt(e){let t;return typeof ArrayBuffer!="undefined"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Be(e.buffer),t}const st=W("string"),A=W("function"),Le=W("number"),K=e=>e!==null&&typeof e=="object",ot=e=>e===!0||e===!1,I=e=>{if(V(e)!=="object")return!1;const t=ue(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},it=C("Date"),at=C("File"),ct=C("Blob"),ut=C("FileList"),lt=e=>K(e)&&A(e.pipe),ft=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||A(e.append)&&((t=V(e))==="formdata"||t==="object"&&A(e.toString)&&e.toString()==="[object FormData]"))},dt=C("URLSearchParams"),[pt,ht,mt,yt]=["ReadableStream","Request","Response","Headers"].map(C),bt=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function q(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e=="undefined")return;let r,s;if(typeof e!="object"&&(e=[e]),D(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const B=(()=>typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:global)(),Ue=e=>!j(e)&&e!==B;function ne(){const{caseless:e}=Ue(this)&&this||{},t={},n=(r,s)=>{const o=e&&De(t,s)||s;I(t[o])&&I(r)?t[o]=ne(t[o],r):I(r)?t[o]=ne({},r):D(r)?t[o]=r.slice():t[o]=r};for(let r=0,s=arguments.length;r(q(t,(s,o)=>{n&&A(s)?e[o]=Fe(s,n):e[o]=s},{allOwnKeys:r}),e),Et=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),St=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},gt=(e,t,n,r)=>{let s,o,i;const c={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)i=s[o],(!r||r(i,e,t))&&!c[i]&&(t[i]=e[i],c[i]=!0);e=n!==!1&&ue(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Rt=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},Ot=e=>{if(!e)return null;if(D(e))return e;let t=e.length;if(!Le(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},Tt=(e=>t=>e&&t instanceof e)(typeof Uint8Array!="undefined"&&ue(Uint8Array)),At=(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let s;for(;(s=r.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},xt=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},Ct=C("HTMLFormElement"),Nt=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),be=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Pt=C("RegExp"),ke=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};q(n,(s,o)=>{let i;(i=t(s,o,e))!==!1&&(r[o]=i||s)}),Object.defineProperties(e,r)},_t=e=>{ke(e,(t,n)=>{if(A(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(!!A(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Ft=(e,t)=>{const n={},r=s=>{s.forEach(o=>{n[o]=!0})};return D(e)?r(e):r(String(e).split(t)),n},Bt=()=>{},Lt=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t,Z="abcdefghijklmnopqrstuvwxyz",we="0123456789",je={DIGIT:we,ALPHA:Z,ALPHA_DIGIT:Z+Z.toUpperCase()+we},Dt=(e=16,t=je.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function Ut(e){return!!(e&&A(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const kt=e=>{const t=new Array(10),n=(r,s)=>{if(K(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[s]=r;const o=D(r)?[]:{};return q(r,(i,c)=>{const f=n(i,s+1);!j(f)&&(o[c]=f)}),t[s]=void 0,o}}return r};return n(e,0)},jt=C("AsyncFunction"),qt=e=>e&&(K(e)||A(e))&&A(e.then)&&A(e.catch),qe=((e,t)=>e?setImmediate:t?((n,r)=>(B.addEventListener("message",({source:s,data:o})=>{s===B&&o===n&&r.length&&r.shift()()},!1),s=>{r.push(s),B.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",A(B.postMessage)),Ht=typeof queueMicrotask!="undefined"?queueMicrotask.bind(B):typeof process!="undefined"&&process.nextTick||qe;var a={isArray:D,isArrayBuffer:Be,isBuffer:nt,isFormData:ft,isArrayBufferView:rt,isString:st,isNumber:Le,isBoolean:ot,isObject:K,isPlainObject:I,isReadableStream:pt,isRequest:ht,isResponse:mt,isHeaders:yt,isUndefined:j,isDate:it,isFile:at,isBlob:ct,isRegExp:Pt,isFunction:A,isStream:lt,isURLSearchParams:dt,isTypedArray:Tt,isFileList:ut,forEach:q,merge:ne,extend:wt,trim:bt,stripBOM:Et,inherits:St,toFlatObject:gt,kindOf:V,kindOfTest:C,endsWith:Rt,toArray:Ot,forEachEntry:At,matchAll:xt,isHTMLForm:Ct,hasOwnProperty:be,hasOwnProp:be,reduceDescriptors:ke,freezeMethods:_t,toObjectSet:Ft,toCamelCase:Nt,noop:Bt,toFiniteNumber:Lt,findKey:De,global:B,isContextDefined:Ue,ALPHABET:je,generateString:Dt,isSpecCompliantForm:Ut,toJSONObject:kt,isAsyncFn:jt,isThenable:qt,setImmediate:qe,asap:Ht};function m(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}a.inherits(m,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.status}}});const He=m.prototype,Ie={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Ie[e]={value:e}});Object.defineProperties(m,Ie);Object.defineProperty(He,"isAxiosError",{value:!0});m.from=(e,t,n,r,s,o)=>{const i=Object.create(He);return a.toFlatObject(e,i,function(f){return f!==Error.prototype},c=>c!=="isAxiosError"),m.call(i,e.message,t,n,r,s),i.cause=e,i.name=e.name,o&&Object.assign(i,o),i};var It=null;function re(e){return a.isPlainObject(e)||a.isArray(e)}function ve(e){return a.endsWith(e,"[]")?e.slice(0,-2):e}function Ee(e,t,n){return e?e.concat(t).map(function(s,o){return s=ve(s),!n&&o?"["+s+"]":s}).join(n?".":""):t}function vt(e){return a.isArray(e)&&!e.some(re)}const Mt=a.toFlatObject(a,{},null,function(t){return/^is[A-Z]/.test(t)});function G(e,t,n){if(!a.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=a.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(y,h){return!a.isUndefined(h[y])});const r=n.metaTokens,s=n.visitor||l,o=n.dots,i=n.indexes,f=(n.Blob||typeof Blob!="undefined"&&Blob)&&a.isSpecCompliantForm(t);if(!a.isFunction(s))throw new TypeError("visitor must be a function");function u(p){if(p===null)return"";if(a.isDate(p))return p.toISOString();if(!f&&a.isBlob(p))throw new m("Blob is not supported. Use a Buffer instead.");return a.isArrayBuffer(p)||a.isTypedArray(p)?f&&typeof Blob=="function"?new Blob([p]):Buffer.from(p):p}function l(p,y,h){let w=p;if(p&&!h&&typeof p=="object"){if(a.endsWith(y,"{}"))y=r?y:y.slice(0,-2),p=JSON.stringify(p);else if(a.isArray(p)&&vt(p)||(a.isFileList(p)||a.endsWith(y,"[]"))&&(w=a.toArray(p)))return y=ve(y),w.forEach(function(R,N){!(a.isUndefined(R)||R===null)&&t.append(i===!0?Ee([y],N,o):i===null?y:y+"[]",u(R))}),!1}return re(p)?!0:(t.append(Ee(h,y,o),u(p)),!1)}const d=[],b=Object.assign(Mt,{defaultVisitor:l,convertValue:u,isVisitable:re});function S(p,y){if(!a.isUndefined(p)){if(d.indexOf(p)!==-1)throw Error("Circular reference detected in "+y.join("."));d.push(p),a.forEach(p,function(w,g){(!(a.isUndefined(w)||w===null)&&s.call(t,w,a.isString(g)?g.trim():g,y,b))===!0&&S(w,y?y.concat(g):[g])}),d.pop()}}if(!a.isObject(e))throw new TypeError("data must be an object");return S(e),t}function Se(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function le(e,t){this._pairs=[],e&&G(e,this,t)}const Me=le.prototype;Me.append=function(t,n){this._pairs.push([t,n])};Me.toString=function(t){const n=t?function(r){return t.call(this,r,Se)}:Se;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function zt(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ze(e,t,n){if(!t)return e;const r=n&&n.encode||zt,s=n&&n.serialize;let o;if(s?o=s(t,n):o=a.isURLSearchParams(t)?t.toString():new le(t,n).toString(r),o){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class Jt{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){a.forEach(this.handlers,function(r){r!==null&&t(r)})}}var ge=Jt,Je={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},$t=typeof URLSearchParams!="undefined"?URLSearchParams:le,Vt=typeof FormData!="undefined"?FormData:null,Wt=typeof Blob!="undefined"?Blob:null,Kt={isBrowser:!0,classes:{URLSearchParams:$t,FormData:Vt,Blob:Wt},protocols:["http","https","file","blob","url","data"]};const fe=typeof window!="undefined"&&typeof document!="undefined",se=typeof navigator=="object"&&navigator||void 0,Gt=fe&&(!se||["ReactNative","NativeScript","NS"].indexOf(se.product)<0),Xt=(()=>typeof WorkerGlobalScope!="undefined"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),Qt=fe&&window.location.href||"http://localhost";var Zt=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:fe,hasStandardBrowserWebWorkerEnv:Xt,hasStandardBrowserEnv:Gt,navigator:se,origin:Qt},Symbol.toStringTag,{value:"Module"})),T={...Zt,...Kt};function Yt(e,t){return G(e,new T.classes.URLSearchParams,Object.assign({visitor:function(n,r,s,o){return T.isNode&&a.isBuffer(n)?(this.append(r,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},t))}function en(e){return a.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function tn(e){const t={},n=Object.keys(e);let r;const s=n.length;let o;for(r=0;r=n.length;return i=!i&&a.isArray(s)?s.length:i,f?(a.hasOwnProp(s,i)?s[i]=[s[i],r]:s[i]=r,!c):((!s[i]||!a.isObject(s[i]))&&(s[i]=[]),t(n,r,s[i],o)&&a.isArray(s[i])&&(s[i]=tn(s[i])),!c)}if(a.isFormData(e)&&a.isFunction(e.entries)){const n={};return a.forEachEntry(e,(r,s)=>{t(en(r),s,n,0)}),n}return null}function nn(e,t,n){if(a.isString(e))try{return(t||JSON.parse)(e),a.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const de={transitional:Je,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,o=a.isObject(t);if(o&&a.isHTMLForm(t)&&(t=new FormData(t)),a.isFormData(t))return s?JSON.stringify($e(t)):t;if(a.isArrayBuffer(t)||a.isBuffer(t)||a.isStream(t)||a.isFile(t)||a.isBlob(t)||a.isReadableStream(t))return t;if(a.isArrayBufferView(t))return t.buffer;if(a.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let c;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return Yt(t,this.formSerializer).toString();if((c=a.isFileList(t))||r.indexOf("multipart/form-data")>-1){const f=this.env&&this.env.FormData;return G(c?{"files[]":t}:t,f&&new f,this.formSerializer)}}return o||s?(n.setContentType("application/json",!1),nn(t)):t}],transformResponse:[function(t){const n=this.transitional||de.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(a.isResponse(t)||a.isReadableStream(t))return t;if(t&&a.isString(t)&&(r&&!this.responseType||s)){const i=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(c){if(i)throw c.name==="SyntaxError"?m.from(c,m.ERR_BAD_RESPONSE,this,null,this.response):c}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:T.classes.FormData,Blob:T.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};a.forEach(["delete","get","head","post","put","patch"],e=>{de.headers[e]={}});var pe=de;const rn=a.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);var sn=e=>{const t={};let n,r,s;return e&&e.split(` +`).forEach(function(i){s=i.indexOf(":"),n=i.substring(0,s).trim().toLowerCase(),r=i.substring(s+1).trim(),!(!n||t[n]&&rn[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t};const Re=Symbol("internals");function k(e){return e&&String(e).trim().toLowerCase()}function v(e){return e===!1||e==null?e:a.isArray(e)?e.map(v):String(e)}function on(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const an=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Y(e,t,n,r,s){if(a.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!a.isString(t)){if(a.isString(r))return t.indexOf(r)!==-1;if(a.isRegExp(r))return r.test(t)}}function cn(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function un(e,t){const n=a.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,o,i){return this[r].call(this,t,s,o,i)},configurable:!0})})}class X{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function o(c,f,u){const l=k(f);if(!l)throw new Error("header name must be a non-empty string");const d=a.findKey(s,l);(!d||s[d]===void 0||u===!0||u===void 0&&s[d]!==!1)&&(s[d||f]=v(c))}const i=(c,f)=>a.forEach(c,(u,l)=>o(u,l,f));if(a.isPlainObject(t)||t instanceof this.constructor)i(t,n);else if(a.isString(t)&&(t=t.trim())&&!an(t))i(sn(t),n);else if(a.isHeaders(t))for(const[c,f]of t.entries())o(f,c,r);else t!=null&&o(n,t,r);return this}get(t,n){if(t=k(t),t){const r=a.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return on(s);if(a.isFunction(n))return n.call(this,s,r);if(a.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=k(t),t){const r=a.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||Y(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function o(i){if(i=k(i),i){const c=a.findKey(r,i);c&&(!n||Y(r,r[c],c,n))&&(delete r[c],s=!0)}}return a.isArray(t)?t.forEach(o):o(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const o=n[r];(!t||Y(this,this[o],o,t,!0))&&(delete this[o],s=!0)}return s}normalize(t){const n=this,r={};return a.forEach(this,(s,o)=>{const i=a.findKey(r,o);if(i){n[i]=v(s),delete n[o];return}const c=t?cn(o):String(o).trim();c!==o&&delete n[o],n[c]=v(s),r[c]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return a.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&a.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` +`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[Re]=this[Re]={accessors:{}}).accessors,s=this.prototype;function o(i){const c=k(i);r[c]||(un(s,i),r[c]=!0)}return a.isArray(t)?t.forEach(o):o(t),this}}X.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);a.reduceDescriptors(X.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});a.freezeMethods(X);var x=X;function ee(e,t){const n=this||pe,r=t||n,s=x.from(r.headers);let o=r.data;return a.forEach(e,function(c){o=c.call(n,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function Ve(e){return!!(e&&e.__CANCEL__)}function U(e,t,n){m.call(this,e==null?"canceled":e,m.ERR_CANCELED,t,n),this.name="CanceledError"}a.inherits(U,m,{__CANCEL__:!0});function We(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new m("Request failed with status code "+n.status,[m.ERR_BAD_REQUEST,m.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function ln(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function fn(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,o=0,i;return t=t!==void 0?t:1e3,function(f){const u=Date.now(),l=r[o];i||(i=u),n[s]=f,r[s]=u;let d=o,b=0;for(;d!==s;)b+=n[d++],d=d%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),u-i{n=l,s=null,o&&(clearTimeout(o),o=null),e.apply(null,u)};return[(...u)=>{const l=Date.now(),d=l-n;d>=r?i(u,l):(s=u,o||(o=setTimeout(()=>{o=null,i(s)},r-d)))},()=>s&&i(s)]}const z=(e,t,n=3)=>{let r=0;const s=fn(50,250);return dn(o=>{const i=o.loaded,c=o.lengthComputable?o.total:void 0,f=i-r,u=s(f),l=i<=c;r=i;const d={loaded:i,total:c,progress:c?i/c:void 0,bytes:f,rate:u||void 0,estimated:u&&c&&l?(c-i)/u:void 0,event:o,lengthComputable:c!=null,[t?"download":"upload"]:!0};e(d)},n)},Oe=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Te=e=>(...t)=>a.asap(()=>e(...t));var pn=T.hasStandardBrowserEnv?function(){const t=T.navigator&&/(msie|trident)/i.test(T.navigator.userAgent),n=document.createElement("a");let r;function s(o){let i=o;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=s(window.location.href),function(i){const c=a.isString(i)?s(i):i;return c.protocol===r.protocol&&c.host===r.host}}():function(){return function(){return!0}}(),hn=T.hasStandardBrowserEnv?{write(e,t,n,r,s,o){const i=[e+"="+encodeURIComponent(t)];a.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),a.isString(r)&&i.push("path="+r),a.isString(s)&&i.push("domain="+s),o===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function mn(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function yn(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Ke(e,t){return e&&!mn(t)?yn(e,t):t}const Ae=e=>e instanceof x?{...e}:e;function L(e,t){t=t||{};const n={};function r(u,l,d){return a.isPlainObject(u)&&a.isPlainObject(l)?a.merge.call({caseless:d},u,l):a.isPlainObject(l)?a.merge({},l):a.isArray(l)?l.slice():l}function s(u,l,d){if(a.isUndefined(l)){if(!a.isUndefined(u))return r(void 0,u,d)}else return r(u,l,d)}function o(u,l){if(!a.isUndefined(l))return r(void 0,l)}function i(u,l){if(a.isUndefined(l)){if(!a.isUndefined(u))return r(void 0,u)}else return r(void 0,l)}function c(u,l,d){if(d in t)return r(u,l);if(d in e)return r(void 0,u)}const f={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:c,headers:(u,l)=>s(Ae(u),Ae(l),!0)};return a.forEach(Object.keys(Object.assign({},e,t)),function(l){const d=f[l]||s,b=d(e[l],t[l],l);a.isUndefined(b)&&d!==c||(n[l]=b)}),n}var Ge=e=>{const t=L({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:o,headers:i,auth:c}=t;t.headers=i=x.from(i),t.url=ze(Ke(t.baseURL,t.url),e.params,e.paramsSerializer),c&&i.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):"")));let f;if(a.isFormData(n)){if(T.hasStandardBrowserEnv||T.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((f=i.getContentType())!==!1){const[u,...l]=f?f.split(";").map(d=>d.trim()).filter(Boolean):[];i.setContentType([u||"multipart/form-data",...l].join("; "))}}if(T.hasStandardBrowserEnv&&(r&&a.isFunction(r)&&(r=r(t)),r||r!==!1&&pn(t.url))){const u=s&&o&&hn.read(o);u&&i.set(s,u)}return t};const bn=typeof XMLHttpRequest!="undefined";var wn=bn&&function(e){return new Promise(function(n,r){const s=Ge(e);let o=s.data;const i=x.from(s.headers).normalize();let{responseType:c,onUploadProgress:f,onDownloadProgress:u}=s,l,d,b,S,p;function y(){S&&S(),p&&p(),s.cancelToken&&s.cancelToken.unsubscribe(l),s.signal&&s.signal.removeEventListener("abort",l)}let h=new XMLHttpRequest;h.open(s.method.toUpperCase(),s.url,!0),h.timeout=s.timeout;function w(){if(!h)return;const R=x.from("getAllResponseHeaders"in h&&h.getAllResponseHeaders()),O={data:!c||c==="text"||c==="json"?h.responseText:h.response,status:h.status,statusText:h.statusText,headers:R,config:e,request:h};We(function(F){n(F),y()},function(F){r(F),y()},O),h=null}"onloadend"in h?h.onloadend=w:h.onreadystatechange=function(){!h||h.readyState!==4||h.status===0&&!(h.responseURL&&h.responseURL.indexOf("file:")===0)||setTimeout(w)},h.onabort=function(){!h||(r(new m("Request aborted",m.ECONNABORTED,e,h)),h=null)},h.onerror=function(){r(new m("Network Error",m.ERR_NETWORK,e,h)),h=null},h.ontimeout=function(){let N=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const O=s.transitional||Je;s.timeoutErrorMessage&&(N=s.timeoutErrorMessage),r(new m(N,O.clarifyTimeoutError?m.ETIMEDOUT:m.ECONNABORTED,e,h)),h=null},o===void 0&&i.setContentType(null),"setRequestHeader"in h&&a.forEach(i.toJSON(),function(N,O){h.setRequestHeader(O,N)}),a.isUndefined(s.withCredentials)||(h.withCredentials=!!s.withCredentials),c&&c!=="json"&&(h.responseType=s.responseType),u&&([b,p]=z(u,!0),h.addEventListener("progress",b)),f&&h.upload&&([d,S]=z(f),h.upload.addEventListener("progress",d),h.upload.addEventListener("loadend",S)),(s.cancelToken||s.signal)&&(l=R=>{!h||(r(!R||R.type?new U(null,e,h):R),h.abort(),h=null)},s.cancelToken&&s.cancelToken.subscribe(l),s.signal&&(s.signal.aborted?l():s.signal.addEventListener("abort",l)));const g=ln(s.url);if(g&&T.protocols.indexOf(g)===-1){r(new m("Unsupported protocol "+g+":",m.ERR_BAD_REQUEST,e));return}h.send(o||null)})};const En=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const o=function(u){if(!s){s=!0,c();const l=u instanceof Error?u:this.reason;r.abort(l instanceof m?l:new U(l instanceof Error?l.message:l))}};let i=t&&setTimeout(()=>{i=null,o(new m(`timeout ${t} of ms exceeded`,m.ETIMEDOUT))},t);const c=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(u=>{u.unsubscribe?u.unsubscribe(o):u.removeEventListener("abort",o)}),e=null)};e.forEach(u=>u.addEventListener("abort",o));const{signal:f}=r;return f.unsubscribe=()=>a.asap(c),f}};var Sn=En;const gn=function*(e,t){let n=e.byteLength;if(!t||n{const s=Rn(e,t);let o=0,i,c=f=>{i||(i=!0,r&&r(f))};return new ReadableStream({async pull(f){try{const{done:u,value:l}=await s.next();if(u){c(),f.close();return}let d=l.byteLength;if(n){let b=o+=d;n(b)}f.enqueue(new Uint8Array(l))}catch(u){throw c(u),u}},cancel(f){return c(f),s.return()}},{highWaterMark:2})},Q=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",Xe=Q&&typeof ReadableStream=="function",Tn=Q&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),Qe=(e,...t)=>{try{return!!e(...t)}catch{return!1}},An=Xe&&Qe(()=>{let e=!1;const t=new Request(T.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),Ce=64*1024,oe=Xe&&Qe(()=>a.isReadableStream(new Response("").body)),J={stream:oe&&(e=>e.body)};Q&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!J[t]&&(J[t]=a.isFunction(e[t])?n=>n[t]():(n,r)=>{throw new m(`Response type '${t}' is not supported`,m.ERR_NOT_SUPPORT,r)})})})(new Response);const xn=async e=>{if(e==null)return 0;if(a.isBlob(e))return e.size;if(a.isSpecCompliantForm(e))return(await new Request(T.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(a.isArrayBufferView(e)||a.isArrayBuffer(e))return e.byteLength;if(a.isURLSearchParams(e)&&(e=e+""),a.isString(e))return(await Tn(e)).byteLength},Cn=async(e,t)=>{const n=a.toFiniteNumber(e.getContentLength());return n==null?xn(t):n};var Nn=Q&&(async e=>{let{url:t,method:n,data:r,signal:s,cancelToken:o,timeout:i,onDownloadProgress:c,onUploadProgress:f,responseType:u,headers:l,withCredentials:d="same-origin",fetchOptions:b}=Ge(e);u=u?(u+"").toLowerCase():"text";let S=Sn([s,o&&o.toAbortSignal()],i),p;const y=S&&S.unsubscribe&&(()=>{S.unsubscribe()});let h;try{if(f&&An&&n!=="get"&&n!=="head"&&(h=await Cn(l,r))!==0){let O=new Request(t,{method:"POST",body:r,duplex:"half"}),P;if(a.isFormData(r)&&(P=O.headers.get("content-type"))&&l.setContentType(P),O.body){const[F,H]=Oe(h,z(Te(f)));r=xe(O.body,Ce,F,H)}}a.isString(d)||(d=d?"include":"omit");const w="credentials"in Request.prototype;p=new Request(t,{...b,signal:S,method:n.toUpperCase(),headers:l.normalize().toJSON(),body:r,duplex:"half",credentials:w?d:void 0});let g=await fetch(p);const R=oe&&(u==="stream"||u==="response");if(oe&&(c||R&&y)){const O={};["status","statusText","headers"].forEach(ye=>{O[ye]=g[ye]});const P=a.toFiniteNumber(g.headers.get("content-length")),[F,H]=c&&Oe(P,z(Te(c),!0))||[];g=new Response(xe(g.body,Ce,F,()=>{H&&H(),y&&y()}),O)}u=u||"text";let N=await J[a.findKey(J,u)||"text"](g,e);return!R&&y&&y(),await new Promise((O,P)=>{We(O,P,{data:N,headers:x.from(g.headers),status:g.status,statusText:g.statusText,config:e,request:p})})}catch(w){throw y&&y(),w&&w.name==="TypeError"&&/fetch/i.test(w.message)?Object.assign(new m("Network Error",m.ERR_NETWORK,e,p),{cause:w.cause||w}):m.from(w,w&&w.code,e,p)}});const ie={http:It,xhr:wn,fetch:Nn};a.forEach(ie,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Ne=e=>`- ${e}`,Pn=e=>a.isFunction(e)||e===null||e===!1;var Ze={getAdapter:e=>{e=a.isArray(e)?e:[e];const{length:t}=e;let n,r;const s={};for(let o=0;o`adapter ${c} `+(f===!1?"is not supported by the environment":"is not available in the build"));let i=t?o.length>1?`since : +`+o.map(Ne).join(` +`):" "+Ne(o[0]):"as no adapter specified";throw new m("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return r},adapters:ie};function te(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new U(null,e)}function Pe(e){return te(e),e.headers=x.from(e.headers),e.data=ee.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Ze.getAdapter(e.adapter||pe.adapter)(e).then(function(r){return te(e),r.data=ee.call(e,e.transformResponse,r),r.headers=x.from(r.headers),r},function(r){return Ve(r)||(te(e),r&&r.response&&(r.response.data=ee.call(e,e.transformResponse,r.response),r.response.headers=x.from(r.response.headers))),Promise.reject(r)})}const Ye="1.7.7",he={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{he[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const _e={};he.transitional=function(t,n,r){function s(o,i){return"[Axios v"+Ye+"] Transitional option '"+o+"'"+i+(r?". "+r:"")}return(o,i,c)=>{if(t===!1)throw new m(s(i," has been removed"+(n?" in "+n:"")),m.ERR_DEPRECATED);return n&&!_e[i]&&(_e[i]=!0),t?t(o,i,c):!0}};function _n(e,t,n){if(typeof e!="object")throw new m("options must be an object",m.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const o=r[s],i=t[o];if(i){const c=e[o],f=c===void 0||i(c,o,e);if(f!==!0)throw new m("option "+o+" must be "+f,m.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new m("Unknown option "+o,m.ERR_BAD_OPTION)}}var ae={assertOptions:_n,validators:he};const _=ae.validators;class ${constructor(t){this.defaults=t,this.interceptors={request:new ge,response:new ge}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s;Error.captureStackTrace?Error.captureStackTrace(s={}):s=new Error;const o=s.stack?s.stack.replace(/^.+\n/,""):"";try{r.stack?o&&!String(r.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(r.stack+=` +`+o):r.stack=o}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=L(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&ae.assertOptions(r,{silentJSONParsing:_.transitional(_.boolean),forcedJSONParsing:_.transitional(_.boolean),clarifyTimeoutError:_.transitional(_.boolean)},!1),s!=null&&(a.isFunction(s)?n.paramsSerializer={serialize:s}:ae.assertOptions(s,{encode:_.function,serialize:_.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&a.merge(o.common,o[n.method]);o&&a.forEach(["delete","get","head","post","put","patch","common"],p=>{delete o[p]}),n.headers=x.concat(i,o);const c=[];let f=!0;this.interceptors.request.forEach(function(y){typeof y.runWhen=="function"&&y.runWhen(n)===!1||(f=f&&y.synchronous,c.unshift(y.fulfilled,y.rejected))});const u=[];this.interceptors.response.forEach(function(y){u.push(y.fulfilled,y.rejected)});let l,d=0,b;if(!f){const p=[Pe.bind(this),void 0];for(p.unshift.apply(p,c),p.push.apply(p,u),b=p.length,l=Promise.resolve(n);d{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const i=new Promise(c=>{r.subscribe(c),o=c}).then(s);return i.cancel=function(){r.unsubscribe(o)},i},t(function(o,i,c){r.reason||(r.reason=new U(o,i,c),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new me(function(s){t=s}),cancel:t}}}var Fn=me;function Bn(e){return function(n){return e.apply(null,n)}}function Ln(e){return a.isObject(e)&&e.isAxiosError===!0}const ce={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(ce).forEach(([e,t])=>{ce[t]=e});var Dn=ce;function et(e){const t=new M(e),n=Fe(M.prototype.request,t);return a.extend(n,M.prototype,t,{allOwnKeys:!0}),a.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return et(L(e,s))},n}const E=et(pe);E.Axios=M;E.CanceledError=U;E.CancelToken=Fn;E.isCancel=Ve;E.VERSION=Ye;E.toFormData=G;E.AxiosError=m;E.Cancel=E.CanceledError;E.all=function(t){return Promise.all(t)};E.spread=Bn;E.isAxiosError=Ln;E.mergeConfig=L;E.AxiosHeaders=x;E.formToJSON=e=>$e(a.isHTMLForm(e)?new FormData(e):e);E.getAdapter=Ze.getAdapter;E.HttpStatusCode=Dn;E.default=E;var Un=E;export{Un as a}; diff --git a/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/console-35a3b78f.js b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/console-35a3b78f.js new file mode 100644 index 00000000000..2cdc631f4f9 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/console-35a3b78f.js @@ -0,0 +1,58 @@ +import{a as ce,i as ke,j as Ee,_ as Be,d as Te,k as ae,l as Ie,o as Pe,b as ue,e as G,u as fe,n as ye,w as pe,v as me,g as Ce,m as Le,p as xe,c as Oe,h as He}from"./main-38ee3337.js";/* empty css */var Se={exports:{}};(function(X,z){(function(ee,J){X.exports=J()})(self,function(){return(()=>{var ee={4567:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.AccessibilityManager=void 0;const o=h(9042),d=h(6114),c=h(9924),_=h(3656),l=h(844),a=h(5596),i=h(9631);class e extends l.Disposable{constructor(t,s){super(),this._terminal=t,this._renderService=s,this._liveRegionLineCount=0,this._charsToConsume=[],this._charsToAnnounce="",this._accessibilityTreeRoot=document.createElement("div"),this._accessibilityTreeRoot.classList.add("xterm-accessibility"),this._accessibilityTreeRoot.tabIndex=0,this._rowContainer=document.createElement("div"),this._rowContainer.setAttribute("role","list"),this._rowContainer.classList.add("xterm-accessibility-tree"),this._rowElements=[];for(let f=0;fthis._onBoundaryFocus(f,0),this._bottomBoundaryFocusListener=f=>this._onBoundaryFocus(f,1),this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions(),this._accessibilityTreeRoot.appendChild(this._rowContainer),this._renderRowsDebouncer=new c.TimeBasedDebouncer(this._renderRows.bind(this)),this._refreshRows(),this._liveRegion=document.createElement("div"),this._liveRegion.classList.add("live-region"),this._liveRegion.setAttribute("aria-live","assertive"),this._accessibilityTreeRoot.appendChild(this._liveRegion),!this._terminal.element)throw new Error("Cannot enable accessibility before Terminal.open");this._terminal.element.insertAdjacentElement("afterbegin",this._accessibilityTreeRoot),this.register(this._renderRowsDebouncer),this.register(this._terminal.onResize(f=>this._onResize(f.rows))),this.register(this._terminal.onRender(f=>this._refreshRows(f.start,f.end))),this.register(this._terminal.onScroll(()=>this._refreshRows())),this.register(this._terminal.onA11yChar(f=>this._onChar(f))),this.register(this._terminal.onLineFeed(()=>this._onChar(` +`))),this.register(this._terminal.onA11yTab(f=>this._onTab(f))),this.register(this._terminal.onKey(f=>this._onKey(f.key))),this.register(this._terminal.onBlur(()=>this._clearLiveRegion())),this.register(this._renderService.onDimensionsChange(()=>this._refreshRowsDimensions())),this._screenDprMonitor=new a.ScreenDprMonitor(window),this.register(this._screenDprMonitor),this._screenDprMonitor.setListener(()=>this._refreshRowsDimensions()),this.register((0,_.addDisposableDomListener)(window,"resize",()=>this._refreshRowsDimensions()))}dispose(){super.dispose(),(0,i.removeElementFromParent)(this._accessibilityTreeRoot),this._rowElements.length=0}_onBoundaryFocus(t,s){const f=t.target,v=this._rowElements[s===0?1:this._rowElements.length-2];if(f.getAttribute("aria-posinset")===(s===0?"1":`${this._terminal.buffer.lines.length}`)||t.relatedTarget!==v)return;let u,C;if(s===0?(u=f,C=this._rowElements.pop(),this._rowContainer.removeChild(C)):(u=this._rowElements.shift(),C=f,this._rowContainer.removeChild(u)),u.removeEventListener("focus",this._topBoundaryFocusListener),C.removeEventListener("focus",this._bottomBoundaryFocusListener),s===0){const g=this._createAccessibilityTreeNode();this._rowElements.unshift(g),this._rowContainer.insertAdjacentElement("afterbegin",g)}else{const g=this._createAccessibilityTreeNode();this._rowElements.push(g),this._rowContainer.appendChild(g)}this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._terminal.scrollLines(s===0?-1:1),this._rowElements[s===0?1:this._rowElements.length-2].focus(),t.preventDefault(),t.stopImmediatePropagation()}_onResize(t){this._rowElements[this._rowElements.length-1].removeEventListener("focus",this._bottomBoundaryFocusListener);for(let s=this._rowContainer.children.length;st;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()}_createAccessibilityTreeNode(){const t=document.createElement("div");return t.setAttribute("role","listitem"),t.tabIndex=-1,this._refreshRowDimensions(t),t}_onTab(t){for(let s=0;s0?this._charsToConsume.shift()!==t&&(this._charsToAnnounce+=t):this._charsToAnnounce+=t,t===` +`&&(this._liveRegionLineCount++,this._liveRegionLineCount===21&&(this._liveRegion.textContent+=o.tooMuchOutput)),d.isMac&&this._liveRegion.textContent&&this._liveRegion.textContent.length>0&&!this._liveRegion.parentNode&&setTimeout(()=>{this._accessibilityTreeRoot.appendChild(this._liveRegion)},0))}_clearLiveRegion(){this._liveRegion.textContent="",this._liveRegionLineCount=0,d.isMac&&(0,i.removeElementFromParent)(this._liveRegion)}_onKey(t){this._clearLiveRegion(),this._charsToConsume.push(t)}_refreshRows(t,s){this._renderRowsDebouncer.refresh(t,s,this._terminal.rows)}_renderRows(t,s){const f=this._terminal.buffer,v=f.lines.length.toString();for(let u=t;u<=s;u++){const C=f.translateBufferLineToString(f.ydisp+u,!0),g=(f.ydisp+u+1).toString(),m=this._rowElements[u];m&&(C.length===0?m.innerText="\xA0":m.textContent=C,m.setAttribute("aria-posinset",g),m.setAttribute("aria-setsize",v))}this._announceCharacters()}_refreshRowsDimensions(){if(this._renderService.dimensions.actualCellHeight){this._rowElements.length!==this._terminal.rows&&this._onResize(this._terminal.rows);for(let t=0;t{function h(_){return _.replace(/\r?\n/g,"\r")}function o(_,l){return l?"\x1B[200~"+_+"\x1B[201~":_}function d(_,l,a){_=o(_=h(_),a.decPrivateModes.bracketedPasteMode),a.triggerDataEvent(_,!0),l.value=""}function c(_,l,a){const i=a.getBoundingClientRect(),e=_.clientX-i.left-10,n=_.clientY-i.top-10;l.style.width="20px",l.style.height="20px",l.style.left=`${e}px`,l.style.top=`${n}px`,l.style.zIndex="1000",l.focus()}Object.defineProperty(r,"__esModule",{value:!0}),r.rightClickHandler=r.moveTextAreaUnderMouseCursor=r.paste=r.handlePasteEvent=r.copyHandler=r.bracketTextForPaste=r.prepareTextForTerminal=void 0,r.prepareTextForTerminal=h,r.bracketTextForPaste=o,r.copyHandler=function(_,l){_.clipboardData&&_.clipboardData.setData("text/plain",l.selectionText),_.preventDefault()},r.handlePasteEvent=function(_,l,a){_.stopPropagation(),_.clipboardData&&d(_.clipboardData.getData("text/plain"),l,a)},r.paste=d,r.moveTextAreaUnderMouseCursor=c,r.rightClickHandler=function(_,l,a,i,e){c(_,l,a),e&&i.rightClickSelect(_),l.value=i.selectionText,l.select()}},7239:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ColorContrastCache=void 0;const o=h(1505);r.ColorContrastCache=class{constructor(){this._color=new o.TwoKeyMap,this._css=new o.TwoKeyMap}setCss(d,c,_){this._css.set(d,c,_)}getCss(d,c){return this._css.get(d,c)}setColor(d,c,_){this._color.set(d,c,_)}getColor(d,c){return this._color.get(d,c)}clear(){this._color.clear(),this._css.clear()}}},5680:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ColorManager=r.DEFAULT_ANSI_COLORS=void 0;const o=h(8055),d=h(7239),c=o.css.toColor("#ffffff"),_=o.css.toColor("#000000"),l=o.css.toColor("#ffffff"),a=o.css.toColor("#000000"),i={css:"rgba(255, 255, 255, 0.3)",rgba:4294967117};r.DEFAULT_ANSI_COLORS=Object.freeze((()=>{const e=[o.css.toColor("#2e3436"),o.css.toColor("#cc0000"),o.css.toColor("#4e9a06"),o.css.toColor("#c4a000"),o.css.toColor("#3465a4"),o.css.toColor("#75507b"),o.css.toColor("#06989a"),o.css.toColor("#d3d7cf"),o.css.toColor("#555753"),o.css.toColor("#ef2929"),o.css.toColor("#8ae234"),o.css.toColor("#fce94f"),o.css.toColor("#729fcf"),o.css.toColor("#ad7fa8"),o.css.toColor("#34e2e2"),o.css.toColor("#eeeeec")],n=[0,95,135,175,215,255];for(let t=0;t<216;t++){const s=n[t/36%6|0],f=n[t/6%6|0],v=n[t%6];e.push({css:o.channels.toCss(s,f,v),rgba:o.channels.toRgba(s,f,v)})}for(let t=0;t<24;t++){const s=8+10*t;e.push({css:o.channels.toCss(s,s,s),rgba:o.channels.toRgba(s,s,s)})}return e})()),r.ColorManager=class{constructor(e,n){this.allowTransparency=n;const t=e.createElement("canvas");t.width=1,t.height=1;const s=t.getContext("2d");if(!s)throw new Error("Could not get rendering context");this._ctx=s,this._ctx.globalCompositeOperation="copy",this._litmusColor=this._ctx.createLinearGradient(0,0,1,1),this._contrastCache=new d.ColorContrastCache,this.colors={foreground:c,background:_,cursor:l,cursorAccent:a,selectionForeground:void 0,selectionBackgroundTransparent:i,selectionBackgroundOpaque:o.color.blend(_,i),selectionInactiveBackgroundTransparent:i,selectionInactiveBackgroundOpaque:o.color.blend(_,i),ansi:r.DEFAULT_ANSI_COLORS.slice(),contrastCache:this._contrastCache},this._updateRestoreColors()}onOptionsChange(e,n){switch(e){case"minimumContrastRatio":this._contrastCache.clear();break;case"allowTransparency":this.allowTransparency=n}}setTheme(e={}){this.colors.foreground=this._parseColor(e.foreground,c),this.colors.background=this._parseColor(e.background,_),this.colors.cursor=this._parseColor(e.cursor,l,!0),this.colors.cursorAccent=this._parseColor(e.cursorAccent,a,!0),this.colors.selectionBackgroundTransparent=this._parseColor(e.selectionBackground,i,!0),this.colors.selectionBackgroundOpaque=o.color.blend(this.colors.background,this.colors.selectionBackgroundTransparent),this.colors.selectionInactiveBackgroundTransparent=this._parseColor(e.selectionInactiveBackground,this.colors.selectionBackgroundTransparent,!0),this.colors.selectionInactiveBackgroundOpaque=o.color.blend(this.colors.background,this.colors.selectionInactiveBackgroundTransparent);const n={css:"",rgba:0};if(this.colors.selectionForeground=e.selectionForeground?this._parseColor(e.selectionForeground,n):void 0,this.colors.selectionForeground===n&&(this.colors.selectionForeground=void 0),o.color.isOpaque(this.colors.selectionBackgroundTransparent)&&(this.colors.selectionBackgroundTransparent=o.color.opacity(this.colors.selectionBackgroundTransparent,.3)),o.color.isOpaque(this.colors.selectionInactiveBackgroundTransparent)&&(this.colors.selectionInactiveBackgroundTransparent=o.color.opacity(this.colors.selectionInactiveBackgroundTransparent,.3)),this.colors.ansi=r.DEFAULT_ANSI_COLORS.slice(),this.colors.ansi[0]=this._parseColor(e.black,r.DEFAULT_ANSI_COLORS[0]),this.colors.ansi[1]=this._parseColor(e.red,r.DEFAULT_ANSI_COLORS[1]),this.colors.ansi[2]=this._parseColor(e.green,r.DEFAULT_ANSI_COLORS[2]),this.colors.ansi[3]=this._parseColor(e.yellow,r.DEFAULT_ANSI_COLORS[3]),this.colors.ansi[4]=this._parseColor(e.blue,r.DEFAULT_ANSI_COLORS[4]),this.colors.ansi[5]=this._parseColor(e.magenta,r.DEFAULT_ANSI_COLORS[5]),this.colors.ansi[6]=this._parseColor(e.cyan,r.DEFAULT_ANSI_COLORS[6]),this.colors.ansi[7]=this._parseColor(e.white,r.DEFAULT_ANSI_COLORS[7]),this.colors.ansi[8]=this._parseColor(e.brightBlack,r.DEFAULT_ANSI_COLORS[8]),this.colors.ansi[9]=this._parseColor(e.brightRed,r.DEFAULT_ANSI_COLORS[9]),this.colors.ansi[10]=this._parseColor(e.brightGreen,r.DEFAULT_ANSI_COLORS[10]),this.colors.ansi[11]=this._parseColor(e.brightYellow,r.DEFAULT_ANSI_COLORS[11]),this.colors.ansi[12]=this._parseColor(e.brightBlue,r.DEFAULT_ANSI_COLORS[12]),this.colors.ansi[13]=this._parseColor(e.brightMagenta,r.DEFAULT_ANSI_COLORS[13]),this.colors.ansi[14]=this._parseColor(e.brightCyan,r.DEFAULT_ANSI_COLORS[14]),this.colors.ansi[15]=this._parseColor(e.brightWhite,r.DEFAULT_ANSI_COLORS[15]),e.extendedAnsi){const t=Math.min(this.colors.ansi.length-16,e.extendedAnsi.length);for(let s=0;sNumber(m)),g=Math.round(255*C);return{rgba:o.channels.toRgba(f,v,u,g),css:e}}return{css:this._ctx.fillStyle,rgba:o.channels.toRgba(s[0],s[1],s[2],s[3])}}}},9631:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.removeElementFromParent=void 0,r.removeElementFromParent=function(...h){var o;for(const d of h)(o=d==null?void 0:d.parentElement)===null||o===void 0||o.removeChild(d)}},3656:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.addDisposableDomListener=void 0,r.addDisposableDomListener=function(h,o,d,c){h.addEventListener(o,d,c);let _=!1;return{dispose:()=>{_||(_=!0,h.removeEventListener(o,d,c))}}}},6465:function(D,r,h){var o=this&&this.__decorate||function(e,n,t,s){var f,v=arguments.length,u=v<3?n:s===null?s=Object.getOwnPropertyDescriptor(n,t):s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(e,n,t,s);else for(var C=e.length-1;C>=0;C--)(f=e[C])&&(u=(v<3?f(u):v>3?f(n,t,u):f(n,t))||u);return v>3&&u&&Object.defineProperty(n,t,u),u},d=this&&this.__param||function(e,n){return function(t,s){n(t,s,e)}};Object.defineProperty(r,"__esModule",{value:!0}),r.Linkifier2=void 0;const c=h(2585),_=h(8460),l=h(844),a=h(3656);let i=class extends l.Disposable{constructor(e){super(),this._bufferService=e,this._linkProviders=[],this._linkCacheDisposables=[],this._isMouseOut=!0,this._activeLine=-1,this._onShowLinkUnderline=this.register(new _.EventEmitter),this._onHideLinkUnderline=this.register(new _.EventEmitter),this.register((0,l.getDisposeArrayDisposable)(this._linkCacheDisposables))}get currentLink(){return this._currentLink}get onShowLinkUnderline(){return this._onShowLinkUnderline.event}get onHideLinkUnderline(){return this._onHideLinkUnderline.event}dispose(){super.dispose(),this._lastMouseEvent=void 0}registerLinkProvider(e){return this._linkProviders.push(e),{dispose:()=>{const n=this._linkProviders.indexOf(e);n!==-1&&this._linkProviders.splice(n,1)}}}attachToDom(e,n,t){this._element=e,this._mouseService=n,this._renderService=t,this.register((0,a.addDisposableDomListener)(this._element,"mouseleave",()=>{this._isMouseOut=!0,this._clearCurrentLink()})),this.register((0,a.addDisposableDomListener)(this._element,"mousemove",this._onMouseMove.bind(this))),this.register((0,a.addDisposableDomListener)(this._element,"mousedown",this._handleMouseDown.bind(this))),this.register((0,a.addDisposableDomListener)(this._element,"mouseup",this._handleMouseUp.bind(this)))}_onMouseMove(e){if(this._lastMouseEvent=e,!this._element||!this._mouseService)return;const n=this._positionFromMouseEvent(e,this._element,this._mouseService);if(!n)return;this._isMouseOut=!1;const t=e.composedPath();for(let s=0;s{v==null||v.forEach(u=>{u.link.dispose&&u.link.dispose()})}),this._activeProviderReplies=new Map,this._activeLine=e.y);let f=!1;for(const[v,u]of this._linkProviders.entries())n?!((s=this._activeProviderReplies)===null||s===void 0)&&s.get(v)&&(f=this._checkLinkProviderResult(v,e,f)):u.provideLinks(e.y,C=>{var g,m;if(this._isMouseOut)return;const b=C==null?void 0:C.map(y=>({link:y}));(g=this._activeProviderReplies)===null||g===void 0||g.set(v,b),f=this._checkLinkProviderResult(v,e,f),((m=this._activeProviderReplies)===null||m===void 0?void 0:m.size)===this._linkProviders.length&&this._removeIntersectingLinks(e.y,this._activeProviderReplies)})}_removeIntersectingLinks(e,n){const t=new Set;for(let s=0;se?this._bufferService.cols:u.link.range.end.x;for(let m=C;m<=g;m++){if(t.has(m)){f.splice(v--,1);break}t.add(m)}}}}_checkLinkProviderResult(e,n,t){var s;if(!this._activeProviderReplies)return t;const f=this._activeProviderReplies.get(e);let v=!1;for(let u=0;uthis._linkAtPosition(C.link,n));u&&(t=!0,this._handleNewLink(u))}if(this._activeProviderReplies.size===this._linkProviders.length&&!t)for(let u=0;uthis._linkAtPosition(g.link,n));if(C){t=!0,this._handleNewLink(C);break}}return t}_handleMouseDown(){this._mouseDownLink=this._currentLink}_handleMouseUp(e){if(!this._element||!this._mouseService||!this._currentLink)return;const n=this._positionFromMouseEvent(e,this._element,this._mouseService);n&&this._mouseDownLink===this._currentLink&&this._linkAtPosition(this._currentLink.link,n)&&this._currentLink.link.activate(e,this._currentLink.link.text)}_clearCurrentLink(e,n){this._element&&this._currentLink&&this._lastMouseEvent&&(!e||!n||this._currentLink.link.range.start.y>=e&&this._currentLink.link.range.end.y<=n)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,(0,l.disposeArray)(this._linkCacheDisposables))}_handleNewLink(e){if(!this._element||!this._lastMouseEvent||!this._mouseService)return;const n=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);n&&this._linkAtPosition(e.link,n)&&(this._currentLink=e,this._currentLink.state={decorations:{underline:e.link.decorations===void 0||e.link.decorations.underline,pointerCursor:e.link.decorations===void 0||e.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,e.link,this._lastMouseEvent),e.link.decorations={},Object.defineProperties(e.link.decorations,{pointerCursor:{get:()=>{var t,s;return(s=(t=this._currentLink)===null||t===void 0?void 0:t.state)===null||s===void 0?void 0:s.decorations.pointerCursor},set:t=>{var s,f;((s=this._currentLink)===null||s===void 0?void 0:s.state)&&this._currentLink.state.decorations.pointerCursor!==t&&(this._currentLink.state.decorations.pointerCursor=t,this._currentLink.state.isHovered&&((f=this._element)===null||f===void 0||f.classList.toggle("xterm-cursor-pointer",t)))}},underline:{get:()=>{var t,s;return(s=(t=this._currentLink)===null||t===void 0?void 0:t.state)===null||s===void 0?void 0:s.decorations.underline},set:t=>{var s,f,v;((s=this._currentLink)===null||s===void 0?void 0:s.state)&&((v=(f=this._currentLink)===null||f===void 0?void 0:f.state)===null||v===void 0?void 0:v.decorations.underline)!==t&&(this._currentLink.state.decorations.underline=t,this._currentLink.state.isHovered&&this._fireUnderlineEvent(e.link,t))}}}),this._renderService&&this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange(t=>{const s=t.start===0?0:t.start+1+this._bufferService.buffer.ydisp;this._clearCurrentLink(s,t.end+1+this._bufferService.buffer.ydisp)})))}_linkHover(e,n,t){var s;!((s=this._currentLink)===null||s===void 0)&&s.state&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(n,!0),this._currentLink.state.decorations.pointerCursor&&e.classList.add("xterm-cursor-pointer")),n.hover&&n.hover(t,n.text)}_fireUnderlineEvent(e,n){const t=e.range,s=this._bufferService.buffer.ydisp,f=this._createLinkUnderlineEvent(t.start.x-1,t.start.y-s-1,t.end.x,t.end.y-s-1,void 0);(n?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(f)}_linkLeave(e,n,t){var s;!((s=this._currentLink)===null||s===void 0)&&s.state&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(n,!1),this._currentLink.state.decorations.pointerCursor&&e.classList.remove("xterm-cursor-pointer")),n.leave&&n.leave(t,n.text)}_linkAtPosition(e,n){const t=e.range.start.y===e.range.end.y,s=e.range.start.yn.y;return(t&&e.range.start.x<=n.x&&e.range.end.x>=n.x||s&&e.range.end.x>=n.x||f&&e.range.start.x<=n.x||s&&f)&&e.range.start.y<=n.y&&e.range.end.y>=n.y}_positionFromMouseEvent(e,n,t){const s=t.getCoords(e,n,this._bufferService.cols,this._bufferService.rows);if(s)return{x:s[0],y:s[1]+this._bufferService.buffer.ydisp}}_createLinkUnderlineEvent(e,n,t,s,f){return{x1:e,y1:n,x2:t,y2:s,cols:this._bufferService.cols,fg:f}}};i=o([d(0,c.IBufferService)],i),r.Linkifier2=i},9042:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.tooMuchOutput=r.promptLabel=void 0,r.promptLabel="Terminal input",r.tooMuchOutput="Too much output to announce, navigate to rows manually to read"},2962:function(D,r,h){var o=this&&this.__decorate||function(i,e,n,t){var s,f=arguments.length,v=f<3?e:t===null?t=Object.getOwnPropertyDescriptor(e,n):t;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")v=Reflect.decorate(i,e,n,t);else for(var u=i.length-1;u>=0;u--)(s=i[u])&&(v=(f<3?s(v):f>3?s(e,n,v):s(e,n))||v);return f>3&&v&&Object.defineProperty(e,n,v),v},d=this&&this.__param||function(i,e){return function(n,t){e(n,t,i)}};Object.defineProperty(r,"__esModule",{value:!0}),r.OscLinkProvider=void 0;const c=h(511),_=h(2585);let l=class{constructor(i,e,n){this._bufferService=i,this._optionsService=e,this._oscLinkService=n}provideLinks(i,e){var n;const t=this._bufferService.buffer.lines.get(i-1);if(!t)return void e(void 0);const s=[],f=this._optionsService.rawOptions.linkHandler,v=new c.CellData,u=t.getTrimmedLength();let C=-1,g=-1,m=!1;for(let b=0;bf?f.activate(p,S,w):a(0,S),hover:(p,S)=>{var L;return(L=f==null?void 0:f.hover)===null||L===void 0?void 0:L.call(f,p,S,w)},leave:(p,S)=>{var L;return(L=f==null?void 0:f.leave)===null||L===void 0?void 0:L.call(f,p,S,w)}})}m=!1,v.hasExtendedAttrs()&&v.extended.urlId?(g=b,C=v.extended.urlId):(g=-1,C=-1)}}e(s)}};function a(i,e){if(confirm(`Do you want to navigate to ${e}?`)){const n=window.open();if(n){try{n.opener=null}catch{}n.location.href=e}}}l=o([d(0,_.IBufferService),d(1,_.IOptionsService),d(2,_.IOscLinkService)],l),r.OscLinkProvider=l},6193:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.RenderDebouncer=void 0,r.RenderDebouncer=class{constructor(h,o){this._parentWindow=h,this._renderCallback=o,this._refreshCallbacks=[]}dispose(){this._animationFrame&&(this._parentWindow.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)}addRefreshCallback(h){return this._refreshCallbacks.push(h),this._animationFrame||(this._animationFrame=this._parentWindow.requestAnimationFrame(()=>this._innerRefresh())),this._animationFrame}refresh(h,o,d){this._rowCount=d,h=h!==void 0?h:0,o=o!==void 0?o:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,h):h,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,o):o,this._animationFrame||(this._animationFrame=this._parentWindow.requestAnimationFrame(()=>this._innerRefresh()))}_innerRefresh(){if(this._animationFrame=void 0,this._rowStart===void 0||this._rowEnd===void 0||this._rowCount===void 0)return void this._runRefreshCallbacks();const h=Math.max(this._rowStart,0),o=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(h,o),this._runRefreshCallbacks()}_runRefreshCallbacks(){for(const h of this._refreshCallbacks)h(0);this._refreshCallbacks=[]}}},5596:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ScreenDprMonitor=void 0;const o=h(844);class d extends o.Disposable{constructor(_){super(),this._parentWindow=_,this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio}setListener(_){this._listener&&this.clearListener(),this._listener=_,this._outerListener=()=>{this._listener&&(this._listener(this._parentWindow.devicePixelRatio,this._currentDevicePixelRatio),this._updateDpr())},this._updateDpr()}dispose(){super.dispose(),this.clearListener()}_updateDpr(){var _;this._outerListener&&((_=this._resolutionMediaMatchList)===null||_===void 0||_.removeListener(this._outerListener),this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this._resolutionMediaMatchList=this._parentWindow.matchMedia(`screen and (resolution: ${this._parentWindow.devicePixelRatio}dppx)`),this._resolutionMediaMatchList.addListener(this._outerListener))}clearListener(){this._resolutionMediaMatchList&&this._listener&&this._outerListener&&(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._listener=void 0,this._outerListener=void 0)}}r.ScreenDprMonitor=d},3236:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.Terminal=void 0;const o=h(2950),d=h(1680),c=h(3614),_=h(2584),l=h(5435),a=h(9312),i=h(6114),e=h(3656),n=h(9042),t=h(4567),s=h(1296),f=h(7399),v=h(8460),u=h(8437),C=h(5680),g=h(3230),m=h(4725),b=h(428),y=h(8934),w=h(6465),p=h(5114),S=h(8969),L=h(8055),E=h(4269),A=h(5941),k=h(3107),O=h(5744),T=h(9074),H=h(2585),W=h(2962),x=typeof window!="undefined"?window.document:null;class B extends S.CoreTerminal{constructor(R={}){super(R),this.browser=i,this._keyDownHandled=!1,this._keyDownSeen=!1,this._keyPressHandled=!1,this._unprocessedDeadKey=!1,this._onCursorMove=new v.EventEmitter,this._onKey=new v.EventEmitter,this._onRender=new v.EventEmitter,this._onSelectionChange=new v.EventEmitter,this._onTitleChange=new v.EventEmitter,this._onBell=new v.EventEmitter,this._onFocus=new v.EventEmitter,this._onBlur=new v.EventEmitter,this._onA11yCharEmitter=new v.EventEmitter,this._onA11yTabEmitter=new v.EventEmitter,this._setup(),this.linkifier2=this.register(this._instantiationService.createInstance(w.Linkifier2)),this.linkifier2.registerLinkProvider(this._instantiationService.createInstance(W.OscLinkProvider)),this._decorationService=this._instantiationService.createInstance(T.DecorationService),this._instantiationService.setService(H.IDecorationService,this._decorationService),this.register(this._inputHandler.onRequestBell(()=>this._onBell.fire())),this.register(this._inputHandler.onRequestRefreshRows((M,F)=>this.refresh(M,F))),this.register(this._inputHandler.onRequestSendFocus(()=>this._reportFocus())),this.register(this._inputHandler.onRequestReset(()=>this.reset())),this.register(this._inputHandler.onRequestWindowsOptionsReport(M=>this._reportWindowsOptions(M))),this.register(this._inputHandler.onColor(M=>this._handleColorEvent(M))),this.register((0,v.forwardEvent)(this._inputHandler.onCursorMove,this._onCursorMove)),this.register((0,v.forwardEvent)(this._inputHandler.onTitleChange,this._onTitleChange)),this.register((0,v.forwardEvent)(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this.register((0,v.forwardEvent)(this._inputHandler.onA11yTab,this._onA11yTabEmitter)),this.register(this._bufferService.onResize(M=>this._afterResize(M.cols,M.rows)))}get onCursorMove(){return this._onCursorMove.event}get onKey(){return this._onKey.event}get onRender(){return this._onRender.event}get onSelectionChange(){return this._onSelectionChange.event}get onTitleChange(){return this._onTitleChange.event}get onBell(){return this._onBell.event}get onFocus(){return this._onFocus.event}get onBlur(){return this._onBlur.event}get onA11yChar(){return this._onA11yCharEmitter.event}get onA11yTab(){return this._onA11yTabEmitter.event}_handleColorEvent(R){var M,F;if(this._colorManager){for(const U of R){let $,I="";switch(U.index){case 256:$="foreground",I="10";break;case 257:$="background",I="11";break;case 258:$="cursor",I="12";break;default:$="ansi",I="4;"+U.index}switch(U.type){case 0:const K=L.color.toColorRGB($==="ansi"?this._colorManager.colors.ansi[U.index]:this._colorManager.colors[$]);this.coreService.triggerDataEvent(`${_.C0.ESC}]${I};${(0,A.toRgbString)(K)}${_.C1_ESCAPED.ST}`);break;case 1:$==="ansi"?this._colorManager.colors.ansi[U.index]=L.rgba.toColor(...U.color):this._colorManager.colors[$]=L.rgba.toColor(...U.color);break;case 2:this._colorManager.restoreColor(U.index)}}(M=this._renderService)===null||M===void 0||M.setColors(this._colorManager.colors),(F=this.viewport)===null||F===void 0||F.onThemeChange(this._colorManager.colors)}}dispose(){var R,M,F;this._isDisposed||(super.dispose(),(R=this._renderService)===null||R===void 0||R.dispose(),this._customKeyEventHandler=void 0,this.write=()=>{},(F=(M=this.element)===null||M===void 0?void 0:M.parentNode)===null||F===void 0||F.removeChild(this.element))}_setup(){super._setup(),this._customKeyEventHandler=void 0}get buffer(){return this.buffers.active}focus(){this.textarea&&this.textarea.focus({preventScroll:!0})}_updateOptions(R){var M,F,U,$;switch(super._updateOptions(R),R){case"fontFamily":case"fontSize":(M=this._renderService)===null||M===void 0||M.clear(),(F=this._charSizeService)===null||F===void 0||F.measure();break;case"cursorBlink":case"cursorStyle":this.refresh(this.buffer.y,this.buffer.y);break;case"customGlyphs":case"drawBoldTextInBrightColors":case"letterSpacing":case"lineHeight":case"fontWeight":case"fontWeightBold":case"minimumContrastRatio":this._renderService&&(this._renderService.clear(),this._renderService.onResize(this.cols,this.rows),this.refresh(0,this.rows-1));break;case"scrollback":(U=this.viewport)===null||U===void 0||U.syncScrollArea();break;case"screenReaderMode":this.optionsService.rawOptions.screenReaderMode?!this._accessibilityManager&&this._renderService&&(this._accessibilityManager=new t.AccessibilityManager(this,this._renderService)):(($=this._accessibilityManager)===null||$===void 0||$.dispose(),this._accessibilityManager=void 0);break;case"tabStopWidth":this.buffers.setupTabStops();break;case"theme":this._setTheme(this.optionsService.rawOptions.theme)}}_onTextAreaFocus(R){this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(_.C0.ESC+"[I"),this.updateCursorStyle(R),this.element.classList.add("focus"),this._showCursor(),this._onFocus.fire()}blur(){var R;return(R=this.textarea)===null||R===void 0?void 0:R.blur()}_onTextAreaBlur(){this.textarea.value="",this.refresh(this.buffer.y,this.buffer.y),this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(_.C0.ESC+"[O"),this.element.classList.remove("focus"),this._onBlur.fire()}_syncTextArea(){if(!this.textarea||!this.buffer.isCursorInViewport||this._compositionHelper.isComposing||!this._renderService)return;const R=this.buffer.ybase+this.buffer.y,M=this.buffer.lines.get(R);if(!M)return;const F=Math.min(this.buffer.x,this.cols-1),U=this._renderService.dimensions.actualCellHeight,$=M.getWidth(F),I=this._renderService.dimensions.actualCellWidth*$,K=this.buffer.y*this._renderService.dimensions.actualCellHeight,N=F*this._renderService.dimensions.actualCellWidth;this.textarea.style.left=N+"px",this.textarea.style.top=K+"px",this.textarea.style.width=I+"px",this.textarea.style.height=U+"px",this.textarea.style.lineHeight=U+"px",this.textarea.style.zIndex="-5"}_initGlobal(){this._bindKeys(),this.register((0,e.addDisposableDomListener)(this.element,"copy",M=>{this.hasSelection()&&(0,c.copyHandler)(M,this._selectionService)}));const R=M=>(0,c.handlePasteEvent)(M,this.textarea,this.coreService);this.register((0,e.addDisposableDomListener)(this.textarea,"paste",R)),this.register((0,e.addDisposableDomListener)(this.element,"paste",R)),i.isFirefox?this.register((0,e.addDisposableDomListener)(this.element,"mousedown",M=>{M.button===2&&(0,c.rightClickHandler)(M,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})):this.register((0,e.addDisposableDomListener)(this.element,"contextmenu",M=>{(0,c.rightClickHandler)(M,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})),i.isLinux&&this.register((0,e.addDisposableDomListener)(this.element,"auxclick",M=>{M.button===1&&(0,c.moveTextAreaUnderMouseCursor)(M,this.textarea,this.screenElement)}))}_bindKeys(){this.register((0,e.addDisposableDomListener)(this.textarea,"keyup",R=>this._keyUp(R),!0)),this.register((0,e.addDisposableDomListener)(this.textarea,"keydown",R=>this._keyDown(R),!0)),this.register((0,e.addDisposableDomListener)(this.textarea,"keypress",R=>this._keyPress(R),!0)),this.register((0,e.addDisposableDomListener)(this.textarea,"compositionstart",()=>this._compositionHelper.compositionstart())),this.register((0,e.addDisposableDomListener)(this.textarea,"compositionupdate",R=>this._compositionHelper.compositionupdate(R))),this.register((0,e.addDisposableDomListener)(this.textarea,"compositionend",()=>this._compositionHelper.compositionend())),this.register((0,e.addDisposableDomListener)(this.textarea,"input",R=>this._inputEvent(R),!0)),this.register(this.onRender(()=>this._compositionHelper.updateCompositionElements()))}open(R){var M;if(!R)throw new Error("Terminal requires a parent element.");R.isConnected||this._logService.debug("Terminal.open was called on an element that was not attached to the DOM"),this._document=R.ownerDocument,this.element=this._document.createElement("div"),this.element.dir="ltr",this.element.classList.add("terminal"),this.element.classList.add("xterm"),this.element.setAttribute("tabindex","0"),R.appendChild(this.element);const F=x.createDocumentFragment();this._viewportElement=x.createElement("div"),this._viewportElement.classList.add("xterm-viewport"),F.appendChild(this._viewportElement),this._viewportScrollArea=x.createElement("div"),this._viewportScrollArea.classList.add("xterm-scroll-area"),this._viewportElement.appendChild(this._viewportScrollArea),this.screenElement=x.createElement("div"),this.screenElement.classList.add("xterm-screen"),this._helperContainer=x.createElement("div"),this._helperContainer.classList.add("xterm-helpers"),this.screenElement.appendChild(this._helperContainer),F.appendChild(this.screenElement),this.textarea=x.createElement("textarea"),this.textarea.classList.add("xterm-helper-textarea"),this.textarea.setAttribute("aria-label",n.promptLabel),this.textarea.setAttribute("aria-multiline","false"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.tabIndex=0,this.register((0,e.addDisposableDomListener)(this.textarea,"focus",$=>this._onTextAreaFocus($))),this.register((0,e.addDisposableDomListener)(this.textarea,"blur",()=>this._onTextAreaBlur())),this._helperContainer.appendChild(this.textarea),this._coreBrowserService=this._instantiationService.createInstance(p.CoreBrowserService,this.textarea,(M=this._document.defaultView)!==null&&M!==void 0?M:window),this._instantiationService.setService(m.ICoreBrowserService,this._coreBrowserService),this._charSizeService=this._instantiationService.createInstance(b.CharSizeService,this._document,this._helperContainer),this._instantiationService.setService(m.ICharSizeService,this._charSizeService),this._theme=this.options.theme||this._theme,this._colorManager=new C.ColorManager(x,this.options.allowTransparency),this.register(this.optionsService.onOptionChange($=>this._colorManager.onOptionsChange($,this.optionsService.rawOptions[$]))),this._colorManager.setTheme(this._theme),this._characterJoinerService=this._instantiationService.createInstance(E.CharacterJoinerService),this._instantiationService.setService(m.ICharacterJoinerService,this._characterJoinerService);const U=this._createRenderer();this._renderService=this.register(this._instantiationService.createInstance(g.RenderService,U,this.rows,this.screenElement)),this._instantiationService.setService(m.IRenderService,this._renderService),this.register(this._renderService.onRenderedViewportChange($=>this._onRender.fire($))),this.onResize($=>this._renderService.resize($.cols,$.rows)),this._compositionView=x.createElement("div"),this._compositionView.classList.add("composition-view"),this._compositionHelper=this._instantiationService.createInstance(o.CompositionHelper,this.textarea,this._compositionView),this._helperContainer.appendChild(this._compositionView),this.element.appendChild(F),this._mouseService=this._instantiationService.createInstance(y.MouseService),this._instantiationService.setService(m.IMouseService,this._mouseService),this.viewport=this._instantiationService.createInstance(d.Viewport,$=>this.scrollLines($,!0,1),this._viewportElement,this._viewportScrollArea,this.element),this.viewport.onThemeChange(this._colorManager.colors),this.register(this._inputHandler.onRequestSyncScrollBar(()=>this.viewport.syncScrollArea())),this.register(this.viewport),this.register(this.onCursorMove(()=>{this._renderService.onCursorMove(),this._syncTextArea()})),this.register(this.onResize(()=>this._renderService.onResize(this.cols,this.rows))),this.register(this.onBlur(()=>this._renderService.onBlur())),this.register(this.onFocus(()=>this._renderService.onFocus())),this.register(this._renderService.onDimensionsChange(()=>this.viewport.syncScrollArea())),this._selectionService=this.register(this._instantiationService.createInstance(a.SelectionService,this.element,this.screenElement,this.linkifier2)),this._instantiationService.setService(m.ISelectionService,this._selectionService),this.register(this._selectionService.onRequestScrollLines($=>this.scrollLines($.amount,$.suppressScrollEvent))),this.register(this._selectionService.onSelectionChange(()=>this._onSelectionChange.fire())),this.register(this._selectionService.onRequestRedraw($=>this._renderService.onSelectionChanged($.start,$.end,$.columnSelectMode))),this.register(this._selectionService.onLinuxMouseSelection($=>{this.textarea.value=$,this.textarea.focus(),this.textarea.select()})),this.register(this._onScroll.event($=>{this.viewport.syncScrollArea(),this._selectionService.refresh()})),this.register((0,e.addDisposableDomListener)(this._viewportElement,"scroll",()=>this._selectionService.refresh())),this.linkifier2.attachToDom(this.screenElement,this._mouseService,this._renderService),this.register(this._instantiationService.createInstance(k.BufferDecorationRenderer,this.screenElement)),this.register((0,e.addDisposableDomListener)(this.element,"mousedown",$=>this._selectionService.onMouseDown($))),this.coreMouseService.areMouseEventsActive?(this._selectionService.disable(),this.element.classList.add("enable-mouse-events")):this._selectionService.enable(),this.options.screenReaderMode&&(this._accessibilityManager=new t.AccessibilityManager(this,this._renderService)),this.options.overviewRulerWidth&&(this._overviewRulerRenderer=this.register(this._instantiationService.createInstance(O.OverviewRulerRenderer,this._viewportElement,this.screenElement))),this.optionsService.onOptionChange(()=>{!this._overviewRulerRenderer&&this.options.overviewRulerWidth&&this._viewportElement&&this.screenElement&&(this._overviewRulerRenderer=this.register(this._instantiationService.createInstance(O.OverviewRulerRenderer,this._viewportElement,this.screenElement)))}),this._charSizeService.measure(),this.refresh(0,this.rows-1),this._initGlobal(),this.bindMouse()}_createRenderer(){return this._instantiationService.createInstance(s.DomRenderer,this._colorManager.colors,this.element,this.screenElement,this._viewportElement,this.linkifier2)}_setTheme(R){var M,F,U;this._theme=R,(M=this._colorManager)===null||M===void 0||M.setTheme(R),(F=this._renderService)===null||F===void 0||F.setColors(this._colorManager.colors),(U=this.viewport)===null||U===void 0||U.onThemeChange(this._colorManager.colors)}bindMouse(){const R=this,M=this.element;function F(I){const K=R._mouseService.getMouseReportCoords(I,R.screenElement);if(!K)return!1;let N,Z;switch(I.overrideType||I.type){case"mousemove":Z=32,I.buttons===void 0?(N=3,I.button!==void 0&&(N=I.button<3?I.button:3)):N=1&I.buttons?0:4&I.buttons?1:2&I.buttons?2:3;break;case"mouseup":Z=0,N=I.button<3?I.button:3;break;case"mousedown":Z=1,N=I.button<3?I.button:3;break;case"wheel":if(R.viewport.getLinesScrolled(I)===0)return!1;Z=I.deltaY<0?0:1,N=4;break;default:return!1}return!(Z===void 0||N===void 0||N>4)&&R.coreMouseService.triggerMouseEvent({col:K.col,row:K.row,x:K.x,y:K.y,button:N,action:Z,ctrl:I.ctrlKey,alt:I.altKey,shift:I.shiftKey})}const U={mouseup:null,wheel:null,mousedrag:null,mousemove:null},$={mouseup:I=>(F(I),I.buttons||(this._document.removeEventListener("mouseup",U.mouseup),U.mousedrag&&this._document.removeEventListener("mousemove",U.mousedrag)),this.cancel(I)),wheel:I=>(F(I),this.cancel(I,!0)),mousedrag:I=>{I.buttons&&F(I)},mousemove:I=>{I.buttons||F(I)}};this.register(this.coreMouseService.onProtocolChange(I=>{I?(this.optionsService.rawOptions.logLevel==="debug"&&this._logService.debug("Binding to mouse events:",this.coreMouseService.explainEvents(I)),this.element.classList.add("enable-mouse-events"),this._selectionService.disable()):(this._logService.debug("Unbinding from mouse events."),this.element.classList.remove("enable-mouse-events"),this._selectionService.enable()),8&I?U.mousemove||(M.addEventListener("mousemove",$.mousemove),U.mousemove=$.mousemove):(M.removeEventListener("mousemove",U.mousemove),U.mousemove=null),16&I?U.wheel||(M.addEventListener("wheel",$.wheel,{passive:!1}),U.wheel=$.wheel):(M.removeEventListener("wheel",U.wheel),U.wheel=null),2&I?U.mouseup||(U.mouseup=$.mouseup):(this._document.removeEventListener("mouseup",U.mouseup),U.mouseup=null),4&I?U.mousedrag||(U.mousedrag=$.mousedrag):(this._document.removeEventListener("mousemove",U.mousedrag),U.mousedrag=null)})),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this.register((0,e.addDisposableDomListener)(M,"mousedown",I=>{if(I.preventDefault(),this.focus(),this.coreMouseService.areMouseEventsActive&&!this._selectionService.shouldForceSelection(I))return F(I),U.mouseup&&this._document.addEventListener("mouseup",U.mouseup),U.mousedrag&&this._document.addEventListener("mousemove",U.mousedrag),this.cancel(I)})),this.register((0,e.addDisposableDomListener)(M,"wheel",I=>{if(!U.wheel){if(!this.buffer.hasScrollback){const K=this.viewport.getLinesScrolled(I);if(K===0)return;const N=_.C0.ESC+(this.coreService.decPrivateModes.applicationCursorKeys?"O":"[")+(I.deltaY<0?"A":"B");let Z="";for(let oe=0;oe{if(!this.coreMouseService.areMouseEventsActive)return this.viewport.onTouchStart(I),this.cancel(I)},{passive:!0})),this.register((0,e.addDisposableDomListener)(M,"touchmove",I=>{if(!this.coreMouseService.areMouseEventsActive)return this.viewport.onTouchMove(I)?void 0:this.cancel(I)},{passive:!1}))}refresh(R,M){var F;(F=this._renderService)===null||F===void 0||F.refreshRows(R,M)}updateCursorStyle(R){var M;!((M=this._selectionService)===null||M===void 0)&&M.shouldColumnSelect(R)?this.element.classList.add("column-select"):this.element.classList.remove("column-select")}_showCursor(){this.coreService.isCursorInitialized||(this.coreService.isCursorInitialized=!0,this.refresh(this.buffer.y,this.buffer.y))}scrollLines(R,M,F=0){super.scrollLines(R,M,F),this.refresh(0,this.rows-1)}paste(R){(0,c.paste)(R,this.textarea,this.coreService)}attachCustomKeyEventHandler(R){this._customKeyEventHandler=R}registerLinkProvider(R){return this.linkifier2.registerLinkProvider(R)}registerCharacterJoiner(R){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");const M=this._characterJoinerService.register(R);return this.refresh(0,this.rows-1),M}deregisterCharacterJoiner(R){if(!this._characterJoinerService)throw new Error("Terminal must be opened first");this._characterJoinerService.deregister(R)&&this.refresh(0,this.rows-1)}get markers(){return this.buffer.markers}addMarker(R){return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+R)}registerDecoration(R){return this._decorationService.registerDecoration(R)}hasSelection(){return!!this._selectionService&&this._selectionService.hasSelection}select(R,M,F){this._selectionService.setSelection(R,M,F)}getSelection(){return this._selectionService?this._selectionService.selectionText:""}getSelectionPosition(){if(this._selectionService&&this._selectionService.hasSelection)return{start:{x:this._selectionService.selectionStart[0],y:this._selectionService.selectionStart[1]},end:{x:this._selectionService.selectionEnd[0],y:this._selectionService.selectionEnd[1]}}}clearSelection(){var R;(R=this._selectionService)===null||R===void 0||R.clearSelection()}selectAll(){var R;(R=this._selectionService)===null||R===void 0||R.selectAll()}selectLines(R,M){var F;(F=this._selectionService)===null||F===void 0||F.selectLines(R,M)}_keyDown(R){if(this._keyDownHandled=!1,this._keyDownSeen=!0,this._customKeyEventHandler&&this._customKeyEventHandler(R)===!1)return!1;const M=this.browser.isMac&&this.options.macOptionIsMeta&&R.altKey;if(!M&&!this._compositionHelper.keydown(R))return this.buffer.ybase!==this.buffer.ydisp&&this._bufferService.scrollToBottom(),!1;M||R.key!=="Dead"&&R.key!=="AltGraph"||(this._unprocessedDeadKey=!0);const F=(0,f.evaluateKeyboardEvent)(R,this.coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);if(this.updateCursorStyle(R),F.type===3||F.type===2){const U=this.rows-1;return this.scrollLines(F.type===2?-U:U),this.cancel(R,!0)}return F.type===1&&this.selectAll(),!!this._isThirdLevelShift(this.browser,R)||(F.cancel&&this.cancel(R,!0),!F.key||!!(R.key&&!R.ctrlKey&&!R.altKey&&!R.metaKey&&R.key.length===1&&R.key.charCodeAt(0)>=65&&R.key.charCodeAt(0)<=90)||(this._unprocessedDeadKey?(this._unprocessedDeadKey=!1,!0):(F.key!==_.C0.ETX&&F.key!==_.C0.CR||(this.textarea.value=""),this._onKey.fire({key:F.key,domEvent:R}),this._showCursor(),this.coreService.triggerDataEvent(F.key,!0),this.optionsService.rawOptions.screenReaderMode?void(this._keyDownHandled=!0):this.cancel(R,!0))))}_isThirdLevelShift(R,M){const F=R.isMac&&!this.options.macOptionIsMeta&&M.altKey&&!M.ctrlKey&&!M.metaKey||R.isWindows&&M.altKey&&M.ctrlKey&&!M.metaKey||R.isWindows&&M.getModifierState("AltGraph");return M.type==="keypress"?F:F&&(!M.keyCode||M.keyCode>47)}_keyUp(R){this._keyDownSeen=!1,this._customKeyEventHandler&&this._customKeyEventHandler(R)===!1||(function(M){return M.keyCode===16||M.keyCode===17||M.keyCode===18}(R)||this.focus(),this.updateCursorStyle(R),this._keyPressHandled=!1)}_keyPress(R){let M;if(this._keyPressHandled=!1,this._keyDownHandled||this._customKeyEventHandler&&this._customKeyEventHandler(R)===!1)return!1;if(this.cancel(R),R.charCode)M=R.charCode;else if(R.which===null||R.which===void 0)M=R.keyCode;else{if(R.which===0||R.charCode===0)return!1;M=R.which}return!(!M||(R.altKey||R.ctrlKey||R.metaKey)&&!this._isThirdLevelShift(this.browser,R)||(M=String.fromCharCode(M),this._onKey.fire({key:M,domEvent:R}),this._showCursor(),this.coreService.triggerDataEvent(M,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,0))}_inputEvent(R){if(R.data&&R.inputType==="insertText"&&(!R.composed||!this._keyDownSeen)&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;const M=R.data;return this.coreService.triggerDataEvent(M,!0),this.cancel(R),!0}return!1}resize(R,M){R!==this.cols||M!==this.rows?super.resize(R,M):this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure()}_afterResize(R,M){var F,U;(F=this._charSizeService)===null||F===void 0||F.measure(),(U=this.viewport)===null||U===void 0||U.syncScrollArea(!0)}clear(){if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.clearAllMarkers(),this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let R=1;R{Object.defineProperty(r,"__esModule",{value:!0}),r.TimeBasedDebouncer=void 0,r.TimeBasedDebouncer=class{constructor(h,o=1e3){this._renderCallback=h,this._debounceThresholdMS=o,this._lastRefreshMs=0,this._additionalRefreshRequested=!1}dispose(){this._refreshTimeoutID&&clearTimeout(this._refreshTimeoutID)}refresh(h,o,d){this._rowCount=d,h=h!==void 0?h:0,o=o!==void 0?o:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,h):h,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,o):o;const c=Date.now();if(c-this._lastRefreshMs>=this._debounceThresholdMS)this._lastRefreshMs=c,this._innerRefresh();else if(!this._additionalRefreshRequested){const _=c-this._lastRefreshMs,l=this._debounceThresholdMS-_;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout(()=>{this._lastRefreshMs=Date.now(),this._innerRefresh(),this._additionalRefreshRequested=!1,this._refreshTimeoutID=void 0},l)}}_innerRefresh(){if(this._rowStart===void 0||this._rowEnd===void 0||this._rowCount===void 0)return;const h=Math.max(this._rowStart,0),o=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(h,o)}}},1680:function(D,r,h){var o=this&&this.__decorate||function(e,n,t,s){var f,v=arguments.length,u=v<3?n:s===null?s=Object.getOwnPropertyDescriptor(n,t):s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(e,n,t,s);else for(var C=e.length-1;C>=0;C--)(f=e[C])&&(u=(v<3?f(u):v>3?f(n,t,u):f(n,t))||u);return v>3&&u&&Object.defineProperty(n,t,u),u},d=this&&this.__param||function(e,n){return function(t,s){n(t,s,e)}};Object.defineProperty(r,"__esModule",{value:!0}),r.Viewport=void 0;const c=h(844),_=h(3656),l=h(4725),a=h(2585);let i=class extends c.Disposable{constructor(e,n,t,s,f,v,u,C,g){super(),this._scrollLines=e,this._viewportElement=n,this._scrollArea=t,this._element=s,this._bufferService=f,this._optionsService=v,this._charSizeService=u,this._renderService=C,this._coreBrowserService=g,this.scrollBarWidth=0,this._currentRowHeight=0,this._currentScaledCellHeight=0,this._lastRecordedBufferLength=0,this._lastRecordedViewportHeight=0,this._lastRecordedBufferHeight=0,this._lastTouchY=0,this._lastScrollTop=0,this._wheelPartialScroll=0,this._refreshAnimationFrame=null,this._ignoreNextScrollEvent=!1,this._smoothScrollState={startTime:0,origin:-1,target:-1},this.scrollBarWidth=this._viewportElement.offsetWidth-this._scrollArea.offsetWidth||15,this.register((0,_.addDisposableDomListener)(this._viewportElement,"scroll",this._onScroll.bind(this))),this._activeBuffer=this._bufferService.buffer,this.register(this._bufferService.buffers.onBufferActivate(m=>this._activeBuffer=m.activeBuffer)),this._renderDimensions=this._renderService.dimensions,this.register(this._renderService.onDimensionsChange(m=>this._renderDimensions=m)),setTimeout(()=>this.syncScrollArea(),0)}onThemeChange(e){this._viewportElement.style.backgroundColor=e.background.css}_refresh(e){if(e)return this._innerRefresh(),void(this._refreshAnimationFrame!==null&&this._coreBrowserService.window.cancelAnimationFrame(this._refreshAnimationFrame));this._refreshAnimationFrame===null&&(this._refreshAnimationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._innerRefresh()))}_innerRefresh(){if(this._charSizeService.height>0){this._currentRowHeight=this._renderService.dimensions.scaledCellHeight/this._coreBrowserService.dpr,this._currentScaledCellHeight=this._renderService.dimensions.scaledCellHeight,this._lastRecordedViewportHeight=this._viewportElement.offsetHeight;const n=Math.round(this._currentRowHeight*this._lastRecordedBufferLength)+(this._lastRecordedViewportHeight-this._renderService.dimensions.canvasHeight);this._lastRecordedBufferHeight!==n&&(this._lastRecordedBufferHeight=n,this._scrollArea.style.height=this._lastRecordedBufferHeight+"px")}const e=this._bufferService.buffer.ydisp*this._currentRowHeight;this._viewportElement.scrollTop!==e&&(this._ignoreNextScrollEvent=!0,this._viewportElement.scrollTop=e),this._refreshAnimationFrame=null}syncScrollArea(e=!1){if(this._lastRecordedBufferLength!==this._bufferService.buffer.lines.length)return this._lastRecordedBufferLength=this._bufferService.buffer.lines.length,void this._refresh(e);this._lastRecordedViewportHeight===this._renderService.dimensions.canvasHeight&&this._lastScrollTop===this._activeBuffer.ydisp*this._currentRowHeight&&this._renderDimensions.scaledCellHeight===this._currentScaledCellHeight||this._refresh(e)}_onScroll(e){if(this._lastScrollTop=this._viewportElement.scrollTop,!this._viewportElement.offsetParent)return;if(this._ignoreNextScrollEvent)return this._ignoreNextScrollEvent=!1,void this._scrollLines(0);const n=Math.round(this._lastScrollTop/this._currentRowHeight)-this._bufferService.buffer.ydisp;this._scrollLines(n)}_smoothScroll(){if(this._isDisposed||this._smoothScrollState.origin===-1||this._smoothScrollState.target===-1)return;const e=this._smoothScrollPercent();this._viewportElement.scrollTop=this._smoothScrollState.origin+Math.round(e*(this._smoothScrollState.target-this._smoothScrollState.origin)),e<1?this._coreBrowserService.window.requestAnimationFrame(()=>this._smoothScroll()):this._clearSmoothScrollState()}_smoothScrollPercent(){return this._optionsService.rawOptions.smoothScrollDuration&&this._smoothScrollState.startTime?Math.max(Math.min((Date.now()-this._smoothScrollState.startTime)/this._optionsService.rawOptions.smoothScrollDuration,1),0):1}_clearSmoothScrollState(){this._smoothScrollState.startTime=0,this._smoothScrollState.origin=-1,this._smoothScrollState.target=-1}_bubbleScroll(e,n){const t=this._viewportElement.scrollTop+this._lastRecordedViewportHeight;return!(n<0&&this._viewportElement.scrollTop!==0||n>0&&t0?1:-1),this._wheelPartialScroll%=1):e.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(n*=this._bufferService.rows),n}_applyScrollModifier(e,n){const t=this._optionsService.rawOptions.fastScrollModifier;return t==="alt"&&n.altKey||t==="ctrl"&&n.ctrlKey||t==="shift"&&n.shiftKey?e*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:e*this._optionsService.rawOptions.scrollSensitivity}onTouchStart(e){this._lastTouchY=e.touches[0].pageY}onTouchMove(e){const n=this._lastTouchY-e.touches[0].pageY;return this._lastTouchY=e.touches[0].pageY,n!==0&&(this._viewportElement.scrollTop+=n,this._bubbleScroll(e,n))}};i=o([d(4,a.IBufferService),d(5,a.IOptionsService),d(6,l.ICharSizeService),d(7,l.IRenderService),d(8,l.ICoreBrowserService)],i),r.Viewport=i},3107:function(D,r,h){var o=this&&this.__decorate||function(e,n,t,s){var f,v=arguments.length,u=v<3?n:s===null?s=Object.getOwnPropertyDescriptor(n,t):s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(e,n,t,s);else for(var C=e.length-1;C>=0;C--)(f=e[C])&&(u=(v<3?f(u):v>3?f(n,t,u):f(n,t))||u);return v>3&&u&&Object.defineProperty(n,t,u),u},d=this&&this.__param||function(e,n){return function(t,s){n(t,s,e)}};Object.defineProperty(r,"__esModule",{value:!0}),r.BufferDecorationRenderer=void 0;const c=h(3656),_=h(4725),l=h(844),a=h(2585);let i=class extends l.Disposable{constructor(e,n,t,s){super(),this._screenElement=e,this._bufferService=n,this._decorationService=t,this._renderService=s,this._decorationElements=new Map,this._altBufferIsActive=!1,this._dimensionsChanged=!1,this._container=document.createElement("div"),this._container.classList.add("xterm-decoration-container"),this._screenElement.appendChild(this._container),this.register(this._renderService.onRenderedViewportChange(()=>this._queueRefresh())),this.register(this._renderService.onDimensionsChange(()=>{this._dimensionsChanged=!0,this._queueRefresh()})),this.register((0,c.addDisposableDomListener)(window,"resize",()=>this._queueRefresh())),this.register(this._bufferService.buffers.onBufferActivate(()=>{this._altBufferIsActive=this._bufferService.buffer===this._bufferService.buffers.alt})),this.register(this._decorationService.onDecorationRegistered(()=>this._queueRefresh())),this.register(this._decorationService.onDecorationRemoved(f=>this._removeDecoration(f)))}dispose(){this._container.remove(),this._decorationElements.clear(),super.dispose()}_queueRefresh(){this._animationFrame===void 0&&(this._animationFrame=this._renderService.addRefreshCallback(()=>{this.refreshDecorations(),this._animationFrame=void 0}))}refreshDecorations(){for(const e of this._decorationService.decorations)this._renderDecoration(e);this._dimensionsChanged=!1}_renderDecoration(e){this._refreshStyle(e),this._dimensionsChanged&&this._refreshXPosition(e)}_createElement(e){var n;const t=document.createElement("div");t.classList.add("xterm-decoration"),t.style.width=`${Math.round((e.options.width||1)*this._renderService.dimensions.actualCellWidth)}px`,t.style.height=(e.options.height||1)*this._renderService.dimensions.actualCellHeight+"px",t.style.top=(e.marker.line-this._bufferService.buffers.active.ydisp)*this._renderService.dimensions.actualCellHeight+"px",t.style.lineHeight=`${this._renderService.dimensions.actualCellHeight}px`;const s=(n=e.options.x)!==null&&n!==void 0?n:0;return s&&s>this._bufferService.cols&&(t.style.display="none"),this._refreshXPosition(e,t),t}_refreshStyle(e){const n=e.marker.line-this._bufferService.buffers.active.ydisp;if(n<0||n>=this._bufferService.rows)e.element&&(e.element.style.display="none",e.onRenderEmitter.fire(e.element));else{let t=this._decorationElements.get(e);t||(e.onDispose(()=>this._removeDecoration(e)),t=this._createElement(e),e.element=t,this._decorationElements.set(e,t),this._container.appendChild(t)),t.style.top=n*this._renderService.dimensions.actualCellHeight+"px",t.style.display=this._altBufferIsActive?"none":"block",e.onRenderEmitter.fire(t)}}_refreshXPosition(e,n=e.element){var t;if(!n)return;const s=(t=e.options.x)!==null&&t!==void 0?t:0;(e.options.anchor||"left")==="right"?n.style.right=s?s*this._renderService.dimensions.actualCellWidth+"px":"":n.style.left=s?s*this._renderService.dimensions.actualCellWidth+"px":""}_removeDecoration(e){var n;(n=this._decorationElements.get(e))===null||n===void 0||n.remove(),this._decorationElements.delete(e)}};i=o([d(1,a.IBufferService),d(2,a.IDecorationService),d(3,_.IRenderService)],i),r.BufferDecorationRenderer=i},5871:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ColorZoneStore=void 0,r.ColorZoneStore=class{constructor(){this._zones=[],this._zonePool=[],this._zonePoolIndex=0,this._linePadding={full:0,left:0,center:0,right:0}}get zones(){return this._zonePool.length=Math.min(this._zonePool.length,this._zones.length),this._zones}clear(){this._zones.length=0,this._zonePoolIndex=0}addDecoration(h){if(h.options.overviewRulerOptions){for(const o of this._zones)if(o.color===h.options.overviewRulerOptions.color&&o.position===h.options.overviewRulerOptions.position){if(this._lineIntersectsZone(o,h.marker.line))return;if(this._lineAdjacentToZone(o,h.marker.line,h.options.overviewRulerOptions.position))return void this._addLineToZone(o,h.marker.line)}if(this._zonePoolIndex=h.startBufferLine&&o<=h.endBufferLine}_lineAdjacentToZone(h,o,d){return o>=h.startBufferLine-this._linePadding[d||"full"]&&o<=h.endBufferLine+this._linePadding[d||"full"]}_addLineToZone(h,o){h.startBufferLine=Math.min(h.startBufferLine,o),h.endBufferLine=Math.max(h.endBufferLine,o)}}},5744:function(D,r,h){var o=this&&this.__decorate||function(f,v,u,C){var g,m=arguments.length,b=m<3?v:C===null?C=Object.getOwnPropertyDescriptor(v,u):C;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")b=Reflect.decorate(f,v,u,C);else for(var y=f.length-1;y>=0;y--)(g=f[y])&&(b=(m<3?g(b):m>3?g(v,u,b):g(v,u))||b);return m>3&&b&&Object.defineProperty(v,u,b),b},d=this&&this.__param||function(f,v){return function(u,C){v(u,C,f)}};Object.defineProperty(r,"__esModule",{value:!0}),r.OverviewRulerRenderer=void 0;const c=h(5871),_=h(3656),l=h(4725),a=h(844),i=h(2585),e={full:0,left:0,center:0,right:0},n={full:0,left:0,center:0,right:0},t={full:0,left:0,center:0,right:0};let s=class extends a.Disposable{constructor(f,v,u,C,g,m,b){var y;super(),this._viewportElement=f,this._screenElement=v,this._bufferService=u,this._decorationService=C,this._renderService=g,this._optionsService=m,this._coreBrowseService=b,this._colorZoneStore=new c.ColorZoneStore,this._shouldUpdateDimensions=!0,this._shouldUpdateAnchor=!0,this._lastKnownBufferLength=0,this._canvas=document.createElement("canvas"),this._canvas.classList.add("xterm-decoration-overview-ruler"),this._refreshCanvasDimensions(),(y=this._viewportElement.parentElement)===null||y===void 0||y.insertBefore(this._canvas,this._viewportElement);const w=this._canvas.getContext("2d");if(!w)throw new Error("Ctx cannot be null");this._ctx=w,this._registerDecorationListeners(),this._registerBufferChangeListeners(),this._registerDimensionChangeListeners()}get _width(){return this._optionsService.options.overviewRulerWidth||0}_registerDecorationListeners(){this.register(this._decorationService.onDecorationRegistered(()=>this._queueRefresh(void 0,!0))),this.register(this._decorationService.onDecorationRemoved(()=>this._queueRefresh(void 0,!0)))}_registerBufferChangeListeners(){this.register(this._renderService.onRenderedViewportChange(()=>this._queueRefresh())),this.register(this._bufferService.buffers.onBufferActivate(()=>{this._canvas.style.display=this._bufferService.buffer===this._bufferService.buffers.alt?"none":"block"})),this.register(this._bufferService.onScroll(()=>{this._lastKnownBufferLength!==this._bufferService.buffers.normal.lines.length&&(this._refreshDrawHeightConstants(),this._refreshColorZonePadding())}))}_registerDimensionChangeListeners(){this.register(this._renderService.onRender(()=>{this._containerHeight&&this._containerHeight===this._screenElement.clientHeight||(this._queueRefresh(!0),this._containerHeight=this._screenElement.clientHeight)})),this.register(this._optionsService.onOptionChange(f=>{f==="overviewRulerWidth"&&this._queueRefresh(!0)})),this.register((0,_.addDisposableDomListener)(this._coreBrowseService.window,"resize",()=>{this._queueRefresh(!0)})),this._queueRefresh(!0)}dispose(){var f;(f=this._canvas)===null||f===void 0||f.remove(),super.dispose()}_refreshDrawConstants(){const f=Math.floor(this._canvas.width/3),v=Math.ceil(this._canvas.width/3);n.full=this._canvas.width,n.left=f,n.center=v,n.right=f,this._refreshDrawHeightConstants(),t.full=0,t.left=0,t.center=n.left,t.right=n.left+n.center}_refreshDrawHeightConstants(){e.full=Math.round(2*this._coreBrowseService.dpr);const f=this._canvas.height/this._bufferService.buffer.lines.length,v=Math.round(Math.max(Math.min(f,12),6)*this._coreBrowseService.dpr);e.left=v,e.center=v,e.right=v}_refreshColorZonePadding(){this._colorZoneStore.setPadding({full:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*e.full),left:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*e.left),center:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*e.center),right:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*e.right)}),this._lastKnownBufferLength=this._bufferService.buffers.normal.lines.length}_refreshCanvasDimensions(){this._canvas.style.width=`${this._width}px`,this._canvas.width=Math.round(this._width*this._coreBrowseService.dpr),this._canvas.style.height=`${this._screenElement.clientHeight}px`,this._canvas.height=Math.round(this._screenElement.clientHeight*this._coreBrowseService.dpr),this._refreshDrawConstants(),this._refreshColorZonePadding()}_refreshDecorations(){this._shouldUpdateDimensions&&this._refreshCanvasDimensions(),this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height),this._colorZoneStore.clear();for(const v of this._decorationService.decorations)this._colorZoneStore.addDecoration(v);this._ctx.lineWidth=1;const f=this._colorZoneStore.zones;for(const v of f)v.position!=="full"&&this._renderColorZone(v);for(const v of f)v.position==="full"&&this._renderColorZone(v);this._shouldUpdateDimensions=!1,this._shouldUpdateAnchor=!1}_renderColorZone(f){this._ctx.fillStyle=f.color,this._ctx.fillRect(t[f.position||"full"],Math.round((this._canvas.height-1)*(f.startBufferLine/this._bufferService.buffers.active.lines.length)-e[f.position||"full"]/2),n[f.position||"full"],Math.round((this._canvas.height-1)*((f.endBufferLine-f.startBufferLine)/this._bufferService.buffers.active.lines.length)+e[f.position||"full"]))}_queueRefresh(f,v){this._shouldUpdateDimensions=f||this._shouldUpdateDimensions,this._shouldUpdateAnchor=v||this._shouldUpdateAnchor,this._animationFrame===void 0&&(this._animationFrame=this._coreBrowseService.window.requestAnimationFrame(()=>{this._refreshDecorations(),this._animationFrame=void 0}))}};s=o([d(2,i.IBufferService),d(3,i.IDecorationService),d(4,l.IRenderService),d(5,i.IOptionsService),d(6,l.ICoreBrowserService)],s),r.OverviewRulerRenderer=s},2950:function(D,r,h){var o=this&&this.__decorate||function(i,e,n,t){var s,f=arguments.length,v=f<3?e:t===null?t=Object.getOwnPropertyDescriptor(e,n):t;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")v=Reflect.decorate(i,e,n,t);else for(var u=i.length-1;u>=0;u--)(s=i[u])&&(v=(f<3?s(v):f>3?s(e,n,v):s(e,n))||v);return f>3&&v&&Object.defineProperty(e,n,v),v},d=this&&this.__param||function(i,e){return function(n,t){e(n,t,i)}};Object.defineProperty(r,"__esModule",{value:!0}),r.CompositionHelper=void 0;const c=h(4725),_=h(2585),l=h(2584);let a=class{constructor(i,e,n,t,s,f){this._textarea=i,this._compositionView=e,this._bufferService=n,this._optionsService=t,this._coreService=s,this._renderService=f,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0},this._dataAlreadySent=""}get isComposing(){return this._isComposing}compositionstart(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent="",this._dataAlreadySent="",this._compositionView.classList.add("active")}compositionupdate(i){this._compositionView.textContent=i.data,this.updateCompositionElements(),setTimeout(()=>{this._compositionPosition.end=this._textarea.value.length},0)}compositionend(){this._finalizeComposition(!0)}keydown(i){if(this._isComposing||this._isSendingComposition){if(i.keyCode===229||i.keyCode===16||i.keyCode===17||i.keyCode===18)return!1;this._finalizeComposition(!1)}return i.keyCode!==229||(this._handleAnyTextareaChanges(),!1)}_finalizeComposition(i){if(this._compositionView.classList.remove("active"),this._isComposing=!1,i){const e={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout(()=>{if(this._isSendingComposition){let n;this._isSendingComposition=!1,e.start+=this._dataAlreadySent.length,n=this._isComposing?this._textarea.value.substring(e.start,e.end):this._textarea.value.substring(e.start),n.length>0&&this._coreService.triggerDataEvent(n,!0)}},0)}else{this._isSendingComposition=!1;const e=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(e,!0)}}_handleAnyTextareaChanges(){const i=this._textarea.value;setTimeout(()=>{if(!this._isComposing){const e=this._textarea.value,n=e.replace(i,"");this._dataAlreadySent=n,e.length>i.length?this._coreService.triggerDataEvent(n,!0):e.lengththis.updateCompositionElements(!0),0)}}};a=o([d(2,_.IBufferService),d(3,_.IOptionsService),d(4,_.ICoreService),d(5,c.IRenderService)],a),r.CompositionHelper=a},9806:(D,r)=>{function h(o,d,c){const _=c.getBoundingClientRect(),l=o.getComputedStyle(c),a=parseInt(l.getPropertyValue("padding-left")),i=parseInt(l.getPropertyValue("padding-top"));return[d.clientX-_.left-a,d.clientY-_.top-i]}Object.defineProperty(r,"__esModule",{value:!0}),r.getCoords=r.getCoordsRelativeToElement=void 0,r.getCoordsRelativeToElement=h,r.getCoords=function(o,d,c,_,l,a,i,e,n){if(!a)return;const t=h(o,d,c);return t?(t[0]=Math.ceil((t[0]+(n?i/2:0))/i),t[1]=Math.ceil(t[1]/e),t[0]=Math.min(Math.max(t[0],1),_+(n?1:0)),t[1]=Math.min(Math.max(t[1],1),l),t):void 0}},9504:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.moveToCellSequence=void 0;const o=h(2584);function d(e,n,t,s){const f=e-c(t,e),v=n-c(t,n),u=Math.abs(f-v)-function(C,g,m){let b=0;const y=C-c(m,C),w=g-c(m,g);for(let p=0;p=0&&nn?"A":"B"}function l(e,n,t,s,f,v){let u=e,C=n,g="";for(;u!==t||C!==s;)u+=f?1:-1,f&&u>v.cols-1?(g+=v.buffer.translateBufferLineToString(C,!1,e,u),u=0,e=0,C++):!f&&u<0&&(g+=v.buffer.translateBufferLineToString(C,!1,0,e+1),u=v.cols-1,e=u,C--);return g+v.buffer.translateBufferLineToString(C,!1,e,u)}function a(e,n){const t=n?"O":"[";return o.C0.ESC+t+e}function i(e,n){e=Math.floor(e);let t="";for(let s=0;s0?y-c(w,y):m;const L=y,E=function(A,k,O,T,H,W){let x;return x=d(O,T,H,W).length>0?T-c(H,T):k,A=O&&xe?"D":"C",i(Math.abs(f-e),a(u,s));u=v>n?"D":"C";const C=Math.abs(v-n);return i(function(g,m){return m.cols-g}(v>n?e:f,t)+(C-1)*t.cols+1+((v>n?f:e)-1),a(u,s))}},8036:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.TEXT_BASELINE=r.DIM_OPACITY=r.INVERTED_DEFAULT_COLOR=void 0;const o=h(6114);r.INVERTED_DEFAULT_COLOR=257,r.DIM_OPACITY=.5,r.TEXT_BASELINE=o.isFirefox||o.isLegacyEdge?"bottom":"ideographic"},1752:(D,r)=>{function h(o){return 57508<=o&&o<=57558}Object.defineProperty(r,"__esModule",{value:!0}),r.excludeFromContrastRatioDemands=r.isRestrictedPowerlineGlyph=r.isPowerlineGlyph=r.throwIfFalsy=void 0,r.throwIfFalsy=function(o){if(!o)throw new Error("value must not be falsy");return o},r.isPowerlineGlyph=h,r.isRestrictedPowerlineGlyph=function(o){return 57520<=o&&o<=57527},r.excludeFromContrastRatioDemands=function(o){return h(o)||function(d){return 9472<=d&&d<=9631}(o)}},1296:function(D,r,h){var o=this&&this.__decorate||function(C,g,m,b){var y,w=arguments.length,p=w<3?g:b===null?b=Object.getOwnPropertyDescriptor(g,m):b;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")p=Reflect.decorate(C,g,m,b);else for(var S=C.length-1;S>=0;S--)(y=C[S])&&(p=(w<3?y(p):w>3?y(g,m,p):y(g,m))||p);return w>3&&p&&Object.defineProperty(g,m,p),p},d=this&&this.__param||function(C,g){return function(m,b){g(m,b,C)}};Object.defineProperty(r,"__esModule",{value:!0}),r.DomRenderer=void 0;const c=h(3787),_=h(8036),l=h(844),a=h(4725),i=h(2585),e=h(8460),n=h(8055),t=h(9631),s="xterm-dom-renderer-owner-",f="xterm-focus";let v=1,u=class extends l.Disposable{constructor(C,g,m,b,y,w,p,S,L,E){super(),this._colors=C,this._element=g,this._screenElement=m,this._viewportElement=b,this._linkifier2=y,this._charSizeService=p,this._optionsService=S,this._bufferService=L,this._coreBrowserService=E,this._terminalClass=v++,this._rowElements=[],this._rowContainer=document.createElement("div"),this._rowContainer.classList.add("xterm-rows"),this._rowContainer.style.lineHeight="normal",this._rowContainer.setAttribute("aria-hidden","true"),this._refreshRowElements(this._bufferService.cols,this._bufferService.rows),this._selectionContainer=document.createElement("div"),this._selectionContainer.classList.add("xterm-selection"),this._selectionContainer.setAttribute("aria-hidden","true"),this.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},this._updateDimensions(),this._injectCss(),this._rowFactory=w.createInstance(c.DomRendererRowFactory,document,this._colors),this._element.classList.add(s+this._terminalClass),this._screenElement.appendChild(this._rowContainer),this._screenElement.appendChild(this._selectionContainer),this.register(this._linkifier2.onShowLinkUnderline(A=>this._onLinkHover(A))),this.register(this._linkifier2.onHideLinkUnderline(A=>this._onLinkLeave(A)))}get onRequestRedraw(){return new e.EventEmitter().event}dispose(){this._element.classList.remove(s+this._terminalClass),(0,t.removeElementFromParent)(this._rowContainer,this._selectionContainer,this._themeStyleElement,this._dimensionsStyleElement),super.dispose()}_updateDimensions(){const C=this._coreBrowserService.dpr;this.dimensions.scaledCharWidth=this._charSizeService.width*C,this.dimensions.scaledCharHeight=Math.ceil(this._charSizeService.height*C),this.dimensions.scaledCellWidth=this.dimensions.scaledCharWidth+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.scaledCellHeight=Math.floor(this.dimensions.scaledCharHeight*this._optionsService.rawOptions.lineHeight),this.dimensions.scaledCharLeft=0,this.dimensions.scaledCharTop=0,this.dimensions.scaledCanvasWidth=this.dimensions.scaledCellWidth*this._bufferService.cols,this.dimensions.scaledCanvasHeight=this.dimensions.scaledCellHeight*this._bufferService.rows,this.dimensions.canvasWidth=Math.round(this.dimensions.scaledCanvasWidth/C),this.dimensions.canvasHeight=Math.round(this.dimensions.scaledCanvasHeight/C),this.dimensions.actualCellWidth=this.dimensions.canvasWidth/this._bufferService.cols,this.dimensions.actualCellHeight=this.dimensions.canvasHeight/this._bufferService.rows;for(const m of this._rowElements)m.style.width=`${this.dimensions.canvasWidth}px`,m.style.height=`${this.dimensions.actualCellHeight}px`,m.style.lineHeight=`${this.dimensions.actualCellHeight}px`,m.style.overflow="hidden";this._dimensionsStyleElement||(this._dimensionsStyleElement=document.createElement("style"),this._screenElement.appendChild(this._dimensionsStyleElement));const g=`${this._terminalSelector} .xterm-rows span { display: inline-block; height: 100%; vertical-align: top; width: ${this.dimensions.actualCellWidth}px}`;this._dimensionsStyleElement.textContent=g,this._selectionContainer.style.height=this._viewportElement.style.height,this._screenElement.style.width=`${this.dimensions.canvasWidth}px`,this._screenElement.style.height=`${this.dimensions.canvasHeight}px`}setColors(C){this._colors=C,this._injectCss()}_injectCss(){this._themeStyleElement||(this._themeStyleElement=document.createElement("style"),this._screenElement.appendChild(this._themeStyleElement));let C=`${this._terminalSelector} .xterm-rows { color: ${this._colors.foreground.css}; font-family: ${this._optionsService.rawOptions.fontFamily}; font-size: ${this._optionsService.rawOptions.fontSize}px;}`;C+=`${this._terminalSelector} span:not(.${c.BOLD_CLASS}) { font-weight: ${this._optionsService.rawOptions.fontWeight};}${this._terminalSelector} span.${c.BOLD_CLASS} { font-weight: ${this._optionsService.rawOptions.fontWeightBold};}${this._terminalSelector} span.${c.ITALIC_CLASS} { font-style: italic;}`,C+="@keyframes blink_box_shadow_"+this._terminalClass+" { 50% { box-shadow: none; }}",C+="@keyframes blink_block_"+this._terminalClass+` { 0% { background-color: ${this._colors.cursor.css}; color: ${this._colors.cursorAccent.css}; } 50% { background-color: ${this._colors.cursorAccent.css}; color: ${this._colors.cursor.css}; }}`,C+=`${this._terminalSelector} .xterm-rows:not(.xterm-focus) .${c.CURSOR_CLASS}.${c.CURSOR_STYLE_BLOCK_CLASS} { outline: 1px solid ${this._colors.cursor.css}; outline-offset: -1px;}${this._terminalSelector} .xterm-rows.xterm-focus .${c.CURSOR_CLASS}.${c.CURSOR_BLINK_CLASS}:not(.${c.CURSOR_STYLE_BLOCK_CLASS}) { animation: blink_box_shadow_`+this._terminalClass+` 1s step-end infinite;}${this._terminalSelector} .xterm-rows.xterm-focus .${c.CURSOR_CLASS}.${c.CURSOR_BLINK_CLASS}.${c.CURSOR_STYLE_BLOCK_CLASS} { animation: blink_block_`+this._terminalClass+` 1s step-end infinite;}${this._terminalSelector} .xterm-rows.xterm-focus .${c.CURSOR_CLASS}.${c.CURSOR_STYLE_BLOCK_CLASS} { background-color: ${this._colors.cursor.css}; color: ${this._colors.cursorAccent.css};}${this._terminalSelector} .xterm-rows .${c.CURSOR_CLASS}.${c.CURSOR_STYLE_BAR_CLASS} { box-shadow: ${this._optionsService.rawOptions.cursorWidth}px 0 0 ${this._colors.cursor.css} inset;}${this._terminalSelector} .xterm-rows .${c.CURSOR_CLASS}.${c.CURSOR_STYLE_UNDERLINE_CLASS} { box-shadow: 0 -1px 0 ${this._colors.cursor.css} inset;}`,C+=`${this._terminalSelector} .xterm-selection { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}${this._terminalSelector}.focus .xterm-selection div { position: absolute; background-color: ${this._colors.selectionBackgroundOpaque.css};}${this._terminalSelector} .xterm-selection div { position: absolute; background-color: ${this._colors.selectionInactiveBackgroundOpaque.css};}`,this._colors.ansi.forEach((g,m)=>{C+=`${this._terminalSelector} .xterm-fg-${m} { color: ${g.css}; }${this._terminalSelector} .xterm-bg-${m} { background-color: ${g.css}; }`}),C+=`${this._terminalSelector} .xterm-fg-${_.INVERTED_DEFAULT_COLOR} { color: ${n.color.opaque(this._colors.background).css}; }${this._terminalSelector} .xterm-bg-${_.INVERTED_DEFAULT_COLOR} { background-color: ${this._colors.foreground.css}; }`,this._themeStyleElement.textContent=C}onDevicePixelRatioChange(){this._updateDimensions()}_refreshRowElements(C,g){for(let m=this._rowElements.length;m<=g;m++){const b=document.createElement("div");this._rowContainer.appendChild(b),this._rowElements.push(b)}for(;this._rowElements.length>g;)this._rowContainer.removeChild(this._rowElements.pop())}onResize(C,g){this._refreshRowElements(C,g),this._updateDimensions()}onCharSizeChanged(){this._updateDimensions()}onBlur(){this._rowContainer.classList.remove(f)}onFocus(){this._rowContainer.classList.add(f)}onSelectionChanged(C,g,m){for(;this._selectionContainer.children.length;)this._selectionContainer.removeChild(this._selectionContainer.children[0]);if(this._rowFactory.onSelectionChanged(C,g,m),this.renderRows(0,this._bufferService.rows-1),!C||!g)return;const b=C[1]-this._bufferService.buffer.ydisp,y=g[1]-this._bufferService.buffer.ydisp,w=Math.max(b,0),p=Math.min(y,this._bufferService.rows-1);if(w>=this._bufferService.rows||p<0)return;const S=document.createDocumentFragment();if(m){const L=C[0]>g[0];S.appendChild(this._createSelectionElement(w,L?g[0]:C[0],L?C[0]:g[0],p-w+1))}else{const L=b===w?C[0]:0,E=w===y?g[0]:this._bufferService.cols;S.appendChild(this._createSelectionElement(w,L,E));const A=p-w-1;if(S.appendChild(this._createSelectionElement(w+1,0,this._bufferService.cols,A)),w!==p){const k=y===p?g[0]:this._bufferService.cols;S.appendChild(this._createSelectionElement(p,0,k))}}this._selectionContainer.appendChild(S)}_createSelectionElement(C,g,m,b=1){const y=document.createElement("div");return y.style.height=b*this.dimensions.actualCellHeight+"px",y.style.top=C*this.dimensions.actualCellHeight+"px",y.style.left=g*this.dimensions.actualCellWidth+"px",y.style.width=this.dimensions.actualCellWidth*(m-g)+"px",y}onCursorMove(){}onOptionsChanged(){this._updateDimensions(),this._injectCss()}clear(){for(const C of this._rowElements)C.innerText=""}renderRows(C,g){const m=this._bufferService.buffer.ybase+this._bufferService.buffer.y,b=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1),y=this._optionsService.rawOptions.cursorBlink;for(let w=C;w<=g;w++){const p=this._rowElements[w];p.innerText="";const S=w+this._bufferService.buffer.ydisp,L=this._bufferService.buffer.lines.get(S),E=this._optionsService.rawOptions.cursorStyle;p.appendChild(this._rowFactory.createRow(L,S,S===m,E,b,y,this.dimensions.actualCellWidth,this._bufferService.cols))}}get _terminalSelector(){return`.${s}${this._terminalClass}`}_onLinkHover(C){this._setCellUnderline(C.x1,C.x2,C.y1,C.y2,C.cols,!0)}_onLinkLeave(C){this._setCellUnderline(C.x1,C.x2,C.y1,C.y2,C.cols,!1)}_setCellUnderline(C,g,m,b,y,w){for(;C!==g||m!==b;){const p=this._rowElements[m];if(!p)return;const S=p.children[C];S&&(S.style.textDecoration=w?"underline":"none"),++C>=y&&(C=0,m++)}}};u=o([d(5,i.IInstantiationService),d(6,a.ICharSizeService),d(7,i.IOptionsService),d(8,i.IBufferService),d(9,a.ICoreBrowserService)],u),r.DomRenderer=u},3787:function(D,r,h){var o=this&&this.__decorate||function(u,C,g,m){var b,y=arguments.length,w=y<3?C:m===null?m=Object.getOwnPropertyDescriptor(C,g):m;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")w=Reflect.decorate(u,C,g,m);else for(var p=u.length-1;p>=0;p--)(b=u[p])&&(w=(y<3?b(w):y>3?b(C,g,w):b(C,g))||w);return y>3&&w&&Object.defineProperty(C,g,w),w},d=this&&this.__param||function(u,C){return function(g,m){C(g,m,u)}};Object.defineProperty(r,"__esModule",{value:!0}),r.DomRendererRowFactory=r.CURSOR_STYLE_UNDERLINE_CLASS=r.CURSOR_STYLE_BAR_CLASS=r.CURSOR_STYLE_BLOCK_CLASS=r.CURSOR_BLINK_CLASS=r.CURSOR_CLASS=r.STRIKETHROUGH_CLASS=r.UNDERLINE_CLASS=r.ITALIC_CLASS=r.DIM_CLASS=r.BOLD_CLASS=void 0;const c=h(8036),_=h(643),l=h(511),a=h(2585),i=h(8055),e=h(4725),n=h(4269),t=h(1752),s=h(3734);r.BOLD_CLASS="xterm-bold",r.DIM_CLASS="xterm-dim",r.ITALIC_CLASS="xterm-italic",r.UNDERLINE_CLASS="xterm-underline",r.STRIKETHROUGH_CLASS="xterm-strikethrough",r.CURSOR_CLASS="xterm-cursor",r.CURSOR_BLINK_CLASS="xterm-cursor-blink",r.CURSOR_STYLE_BLOCK_CLASS="xterm-cursor-block",r.CURSOR_STYLE_BAR_CLASS="xterm-cursor-bar",r.CURSOR_STYLE_UNDERLINE_CLASS="xterm-cursor-underline";let f=class{constructor(u,C,g,m,b,y,w){this._document=u,this._colors=C,this._characterJoinerService=g,this._optionsService=m,this._coreBrowserService=b,this._coreService=y,this._decorationService=w,this._workCell=new l.CellData,this._columnSelectMode=!1}setColors(u){this._colors=u}onSelectionChanged(u,C,g){this._selectionStart=u,this._selectionEnd=C,this._columnSelectMode=g}createRow(u,C,g,m,b,y,w,p){const S=this._document.createDocumentFragment(),L=this._characterJoinerService.getJoinedCharacters(C);let E=0;for(let A=Math.min(u.length,p)-1;A>=0;A--)if(u.loadCell(A,this._workCell).getCode()!==_.NULL_CELL_CODE||g&&A===b){E=A+1;break}for(let A=0;A0&&A===L[0][0]){O=!0;const N=L.shift();H=new n.JoinedCellData(this._workCell,u.translateToString(!0,N[0],N[1]),N[1]-N[0]),T=N[1]-1,k=H.getWidth()}const W=this._document.createElement("span");if(k>1&&(W.style.width=w*k+"px"),O&&(W.style.display="inline",b>=A&&b<=T&&(b=A)),!this._coreService.isCursorHidden&&g&&A===b)switch(W.classList.add(r.CURSOR_CLASS),y&&W.classList.add(r.CURSOR_BLINK_CLASS),m){case"bar":W.classList.add(r.CURSOR_STYLE_BAR_CLASS);break;case"underline":W.classList.add(r.CURSOR_STYLE_UNDERLINE_CLASS);break;default:W.classList.add(r.CURSOR_STYLE_BLOCK_CLASS)}if(H.isBold()&&W.classList.add(r.BOLD_CLASS),H.isItalic()&&W.classList.add(r.ITALIC_CLASS),H.isDim()&&W.classList.add(r.DIM_CLASS),H.isInvisible()?W.textContent=_.WHITESPACE_CELL_CHAR:W.textContent=H.getChars()||_.WHITESPACE_CELL_CHAR,H.isUnderline()&&(W.classList.add(`${r.UNDERLINE_CLASS}-${H.extended.underlineStyle}`),W.textContent===" "&&(W.innerHTML=" "),!H.isUnderlineColorDefault()))if(H.isUnderlineColorRGB())W.style.textDecorationColor=`rgb(${s.AttributeData.toColorRGB(H.getUnderlineColor()).join(",")})`;else{let N=H.getUnderlineColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&H.isBold()&&N<8&&(N+=8),W.style.textDecorationColor=this._colors.ansi[N].css}H.isStrikethrough()&&W.classList.add(r.STRIKETHROUGH_CLASS);let x=H.getFgColor(),B=H.getFgColorMode(),P=H.getBgColor(),R=H.getBgColorMode();const M=!!H.isInverse();if(M){const N=x;x=P,P=N;const Z=B;B=R,R=Z}let F,U,$=!1;this._decorationService.forEachDecorationAtCell(A,C,void 0,N=>{N.options.layer!=="top"&&$||(N.backgroundColorRGB&&(R=50331648,P=N.backgroundColorRGB.rgba>>8&16777215,F=N.backgroundColorRGB),N.foregroundColorRGB&&(B=50331648,x=N.foregroundColorRGB.rgba>>8&16777215,U=N.foregroundColorRGB),$=N.options.layer==="top")});const I=this._isCellInSelection(A,C);let K;switch($||this._colors.selectionForeground&&I&&(B=50331648,x=this._colors.selectionForeground.rgba>>8&16777215,U=this._colors.selectionForeground),I&&(F=this._coreBrowserService.isFocused?this._colors.selectionBackgroundOpaque:this._colors.selectionInactiveBackgroundOpaque,$=!0),$&&W.classList.add("xterm-decoration-top"),R){case 16777216:case 33554432:K=this._colors.ansi[P],W.classList.add(`xterm-bg-${P}`);break;case 50331648:K=i.rgba.toColor(P>>16,P>>8&255,255&P),this._addStyle(W,`background-color:#${v((P>>>0).toString(16),"0",6)}`);break;default:M?(K=this._colors.foreground,W.classList.add(`xterm-bg-${c.INVERTED_DEFAULT_COLOR}`)):K=this._colors.background}switch(F||H.isDim()&&(F=i.color.multiplyOpacity(K,.5)),B){case 16777216:case 33554432:H.isBold()&&x<8&&this._optionsService.rawOptions.drawBoldTextInBrightColors&&(x+=8),this._applyMinimumContrast(W,K,this._colors.ansi[x],H,F,void 0)||W.classList.add(`xterm-fg-${x}`);break;case 50331648:const N=i.rgba.toColor(x>>16&255,x>>8&255,255&x);this._applyMinimumContrast(W,K,N,H,F,U)||this._addStyle(W,`color:#${v(x.toString(16),"0",6)}`);break;default:this._applyMinimumContrast(W,K,this._colors.foreground,H,F,void 0)||M&&W.classList.add(`xterm-fg-${c.INVERTED_DEFAULT_COLOR}`)}S.appendChild(W),A=T}return S}_applyMinimumContrast(u,C,g,m,b,y){if(this._optionsService.rawOptions.minimumContrastRatio===1||(0,t.excludeFromContrastRatioDemands)(m.getCode()))return!1;let w;return b||y||(w=this._colors.contrastCache.getColor(C.rgba,g.rgba)),w===void 0&&(w=i.color.ensureContrastRatio(b||C,y||g,this._optionsService.rawOptions.minimumContrastRatio),this._colors.contrastCache.setColor((b||C).rgba,(y||g).rgba,w!=null?w:null)),!!w&&(this._addStyle(u,`color:${w.css}`),!0)}_addStyle(u,C){u.setAttribute("style",`${u.getAttribute("style")||""}${C};`)}_isCellInSelection(u,C){const g=this._selectionStart,m=this._selectionEnd;return!(!g||!m)&&(this._columnSelectMode?g[0]<=m[0]?u>=g[0]&&C>=g[1]&&u=g[1]&&u>=m[0]&&C<=m[1]:C>g[1]&&C=g[0]&&u=g[0])}};function v(u,C,g){for(;u.length{Object.defineProperty(r,"__esModule",{value:!0}),r.SelectionModel=void 0,r.SelectionModel=class{constructor(h){this._bufferService=h,this.isSelectAllActive=!1,this.selectionStartLength=0}clearSelection(){this.selectionStart=void 0,this.selectionEnd=void 0,this.isSelectAllActive=!1,this.selectionStartLength=0}get finalSelectionStart(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart}get finalSelectionEnd(){if(this.isSelectAllActive)return[this._bufferService.cols,this._bufferService.buffer.ybase+this._bufferService.rows-1];if(this.selectionStart){if(!this.selectionEnd||this.areSelectionValuesReversed()){const h=this.selectionStart[0]+this.selectionStartLength;return h>this._bufferService.cols?h%this._bufferService.cols==0?[this._bufferService.cols,this.selectionStart[1]+Math.floor(h/this._bufferService.cols)-1]:[h%this._bufferService.cols,this.selectionStart[1]+Math.floor(h/this._bufferService.cols)]:[h,this.selectionStart[1]]}if(this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]){const h=this.selectionStart[0]+this.selectionStartLength;return h>this._bufferService.cols?[h%this._bufferService.cols,this.selectionStart[1]+Math.floor(h/this._bufferService.cols)]:[Math.max(h,this.selectionEnd[0]),this.selectionEnd[1]]}return this.selectionEnd}}areSelectionValuesReversed(){const h=this.selectionStart,o=this.selectionEnd;return!(!h||!o)&&(h[1]>o[1]||h[1]===o[1]&&h[0]>o[0])}onTrim(h){return this.selectionStart&&(this.selectionStart[1]-=h),this.selectionEnd&&(this.selectionEnd[1]-=h),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)}}},428:function(D,r,h){var o=this&&this.__decorate||function(i,e,n,t){var s,f=arguments.length,v=f<3?e:t===null?t=Object.getOwnPropertyDescriptor(e,n):t;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")v=Reflect.decorate(i,e,n,t);else for(var u=i.length-1;u>=0;u--)(s=i[u])&&(v=(f<3?s(v):f>3?s(e,n,v):s(e,n))||v);return f>3&&v&&Object.defineProperty(e,n,v),v},d=this&&this.__param||function(i,e){return function(n,t){e(n,t,i)}};Object.defineProperty(r,"__esModule",{value:!0}),r.CharSizeService=void 0;const c=h(2585),_=h(8460);let l=class{constructor(i,e,n){this._optionsService=n,this.width=0,this.height=0,this._onCharSizeChange=new _.EventEmitter,this._measureStrategy=new a(i,e,this._optionsService)}get hasValidSize(){return this.width>0&&this.height>0}get onCharSizeChange(){return this._onCharSizeChange.event}measure(){const i=this._measureStrategy.measure();i.width===this.width&&i.height===this.height||(this.width=i.width,this.height=i.height,this._onCharSizeChange.fire())}};l=o([d(2,c.IOptionsService)],l),r.CharSizeService=l;class a{constructor(e,n,t){this._document=e,this._parentElement=n,this._optionsService=t,this._result={width:0,height:0},this._measureElement=this._document.createElement("span"),this._measureElement.classList.add("xterm-char-measure-element"),this._measureElement.textContent="W",this._measureElement.setAttribute("aria-hidden","true"),this._parentElement.appendChild(this._measureElement)}measure(){this._measureElement.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._measureElement.style.fontSize=`${this._optionsService.rawOptions.fontSize}px`;const e=this._measureElement.getBoundingClientRect();return e.width!==0&&e.height!==0&&(this._result.width=e.width,this._result.height=Math.ceil(e.height)),this._result}}},4269:function(D,r,h){var o=this&&this.__decorate||function(n,t,s,f){var v,u=arguments.length,C=u<3?t:f===null?f=Object.getOwnPropertyDescriptor(t,s):f;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")C=Reflect.decorate(n,t,s,f);else for(var g=n.length-1;g>=0;g--)(v=n[g])&&(C=(u<3?v(C):u>3?v(t,s,C):v(t,s))||C);return u>3&&C&&Object.defineProperty(t,s,C),C},d=this&&this.__param||function(n,t){return function(s,f){t(s,f,n)}};Object.defineProperty(r,"__esModule",{value:!0}),r.CharacterJoinerService=r.JoinedCellData=void 0;const c=h(3734),_=h(643),l=h(511),a=h(2585);class i extends c.AttributeData{constructor(t,s,f){super(),this.content=0,this.combinedData="",this.fg=t.fg,this.bg=t.bg,this.combinedData=s,this._width=f}isCombined(){return 2097152}getWidth(){return this._width}getChars(){return this.combinedData}getCode(){return 2097151}setFromCharData(t){throw new Error("not implemented")}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}r.JoinedCellData=i;let e=class Re{constructor(t){this._bufferService=t,this._characterJoiners=[],this._nextCharacterJoinerId=0,this._workCell=new l.CellData}register(t){const s={id:this._nextCharacterJoinerId++,handler:t};return this._characterJoiners.push(s),s.id}deregister(t){for(let s=0;s1){const w=this._getJoinedRanges(v,g,C,s,u);for(let p=0;p1){const y=this._getJoinedRanges(v,g,C,s,u);for(let w=0;w{Object.defineProperty(r,"__esModule",{value:!0}),r.CoreBrowserService=void 0,r.CoreBrowserService=class{constructor(h,o){this._textarea=h,this.window=o}get dpr(){return this.window.devicePixelRatio}get isFocused(){return(this._textarea.getRootNode?this._textarea.getRootNode():this._textarea.ownerDocument).activeElement===this._textarea&&this._textarea.ownerDocument.hasFocus()}}},8934:function(D,r,h){var o=this&&this.__decorate||function(a,i,e,n){var t,s=arguments.length,f=s<3?i:n===null?n=Object.getOwnPropertyDescriptor(i,e):n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")f=Reflect.decorate(a,i,e,n);else for(var v=a.length-1;v>=0;v--)(t=a[v])&&(f=(s<3?t(f):s>3?t(i,e,f):t(i,e))||f);return s>3&&f&&Object.defineProperty(i,e,f),f},d=this&&this.__param||function(a,i){return function(e,n){i(e,n,a)}};Object.defineProperty(r,"__esModule",{value:!0}),r.MouseService=void 0;const c=h(4725),_=h(9806);let l=class{constructor(a,i){this._renderService=a,this._charSizeService=i}getCoords(a,i,e,n,t){return(0,_.getCoords)(window,a,i,e,n,this._charSizeService.hasValidSize,this._renderService.dimensions.actualCellWidth,this._renderService.dimensions.actualCellHeight,t)}getMouseReportCoords(a,i){const e=(0,_.getCoordsRelativeToElement)(window,a,i);if(!(!this._charSizeService.hasValidSize||e[0]<0||e[1]<0||e[0]>=this._renderService.dimensions.canvasWidth||e[1]>=this._renderService.dimensions.canvasHeight))return{col:Math.floor(e[0]/this._renderService.dimensions.actualCellWidth),row:Math.floor(e[1]/this._renderService.dimensions.actualCellHeight),x:Math.floor(e[0]),y:Math.floor(e[1])}}};l=o([d(0,c.IRenderService),d(1,c.ICharSizeService)],l),r.MouseService=l},3230:function(D,r,h){var o=this&&this.__decorate||function(s,f,v,u){var C,g=arguments.length,m=g<3?f:u===null?u=Object.getOwnPropertyDescriptor(f,v):u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")m=Reflect.decorate(s,f,v,u);else for(var b=s.length-1;b>=0;b--)(C=s[b])&&(m=(g<3?C(m):g>3?C(f,v,m):C(f,v))||m);return g>3&&m&&Object.defineProperty(f,v,m),m},d=this&&this.__param||function(s,f){return function(v,u){f(v,u,s)}};Object.defineProperty(r,"__esModule",{value:!0}),r.RenderService=void 0;const c=h(6193),_=h(8460),l=h(844),a=h(5596),i=h(3656),e=h(2585),n=h(4725);let t=class extends l.Disposable{constructor(s,f,v,u,C,g,m,b){if(super(),this._renderer=s,this._rowCount=f,this._charSizeService=C,this._isPaused=!1,this._needsFullRefresh=!1,this._isNextRenderRedrawOnly=!0,this._needsSelectionRefresh=!1,this._canvasWidth=0,this._canvasHeight=0,this._selectionState={start:void 0,end:void 0,columnSelectMode:!1},this._onDimensionsChange=new _.EventEmitter,this._onRenderedViewportChange=new _.EventEmitter,this._onRender=new _.EventEmitter,this._onRefreshRequest=new _.EventEmitter,this.register({dispose:()=>this._renderer.dispose()}),this._renderDebouncer=new c.RenderDebouncer(b.window,(y,w)=>this._renderRows(y,w)),this.register(this._renderDebouncer),this._screenDprMonitor=new a.ScreenDprMonitor(b.window),this._screenDprMonitor.setListener(()=>this.onDevicePixelRatioChange()),this.register(this._screenDprMonitor),this.register(m.onResize(()=>this._fullRefresh())),this.register(m.buffers.onBufferActivate(()=>{var y;return(y=this._renderer)===null||y===void 0?void 0:y.clear()})),this.register(u.onOptionChange(()=>this._handleOptionsChanged())),this.register(this._charSizeService.onCharSizeChange(()=>this.onCharSizeChanged())),this.register(g.onDecorationRegistered(()=>this._fullRefresh())),this.register(g.onDecorationRemoved(()=>this._fullRefresh())),this._renderer.onRequestRedraw(y=>this.refreshRows(y.start,y.end,!0)),this.register((0,i.addDisposableDomListener)(b.window,"resize",()=>this.onDevicePixelRatioChange())),"IntersectionObserver"in b.window){const y=new b.window.IntersectionObserver(w=>this._onIntersectionChange(w[w.length-1]),{threshold:0});y.observe(v),this.register({dispose:()=>y.disconnect()})}}get onDimensionsChange(){return this._onDimensionsChange.event}get onRenderedViewportChange(){return this._onRenderedViewportChange.event}get onRender(){return this._onRender.event}get onRefreshRequest(){return this._onRefreshRequest.event}get dimensions(){return this._renderer.dimensions}_onIntersectionChange(s){this._isPaused=s.isIntersecting===void 0?s.intersectionRatio===0:!s.isIntersecting,this._isPaused||this._charSizeService.hasValidSize||this._charSizeService.measure(),!this._isPaused&&this._needsFullRefresh&&(this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)}refreshRows(s,f,v=!1){this._isPaused?this._needsFullRefresh=!0:(v||(this._isNextRenderRedrawOnly=!1),this._renderDebouncer.refresh(s,f,this._rowCount))}_renderRows(s,f){this._renderer.renderRows(s,f),this._needsSelectionRefresh&&(this._renderer.onSelectionChanged(this._selectionState.start,this._selectionState.end,this._selectionState.columnSelectMode),this._needsSelectionRefresh=!1),this._isNextRenderRedrawOnly||this._onRenderedViewportChange.fire({start:s,end:f}),this._onRender.fire({start:s,end:f}),this._isNextRenderRedrawOnly=!0}resize(s,f){this._rowCount=f,this._fireOnCanvasResize()}_handleOptionsChanged(){this._renderer.onOptionsChanged(),this.refreshRows(0,this._rowCount-1),this._fireOnCanvasResize()}_fireOnCanvasResize(){this._renderer.dimensions.canvasWidth===this._canvasWidth&&this._renderer.dimensions.canvasHeight===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.dimensions)}dispose(){super.dispose()}setRenderer(s){this._renderer.dispose(),this._renderer=s,this._renderer.onRequestRedraw(f=>this.refreshRows(f.start,f.end,!0)),this._needsSelectionRefresh=!0,this._fullRefresh()}addRefreshCallback(s){return this._renderDebouncer.addRefreshCallback(s)}_fullRefresh(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)}clearTextureAtlas(){var s,f;(f=(s=this._renderer)===null||s===void 0?void 0:s.clearTextureAtlas)===null||f===void 0||f.call(s),this._fullRefresh()}setColors(s){this._renderer.setColors(s),this._fullRefresh()}onDevicePixelRatioChange(){this._charSizeService.measure(),this._renderer.onDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1)}onResize(s,f){this._renderer.onResize(s,f),this._fullRefresh()}onCharSizeChanged(){this._renderer.onCharSizeChanged()}onBlur(){this._renderer.onBlur()}onFocus(){this._renderer.onFocus()}onSelectionChanged(s,f,v){this._selectionState.start=s,this._selectionState.end=f,this._selectionState.columnSelectMode=v,this._renderer.onSelectionChanged(s,f,v)}onCursorMove(){this._renderer.onCursorMove()}clear(){this._renderer.clear()}};t=o([d(3,e.IOptionsService),d(4,n.ICharSizeService),d(5,e.IDecorationService),d(6,e.IBufferService),d(7,n.ICoreBrowserService)],t),r.RenderService=t},9312:function(D,r,h){var o=this&&this.__decorate||function(g,m,b,y){var w,p=arguments.length,S=p<3?m:y===null?y=Object.getOwnPropertyDescriptor(m,b):y;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")S=Reflect.decorate(g,m,b,y);else for(var L=g.length-1;L>=0;L--)(w=g[L])&&(S=(p<3?w(S):p>3?w(m,b,S):w(m,b))||S);return p>3&&S&&Object.defineProperty(m,b,S),S},d=this&&this.__param||function(g,m){return function(b,y){m(b,y,g)}};Object.defineProperty(r,"__esModule",{value:!0}),r.SelectionService=void 0;const c=h(6114),_=h(456),l=h(511),a=h(8460),i=h(4725),e=h(2585),n=h(9806),t=h(9504),s=h(844),f=h(4841),v=String.fromCharCode(160),u=new RegExp(v,"g");let C=class extends s.Disposable{constructor(g,m,b,y,w,p,S,L,E){super(),this._element=g,this._screenElement=m,this._linkifier=b,this._bufferService=y,this._coreService=w,this._mouseService=p,this._optionsService=S,this._renderService=L,this._coreBrowserService=E,this._dragScrollAmount=0,this._enabled=!0,this._workCell=new l.CellData,this._mouseDownTimeStamp=0,this._oldHasSelection=!1,this._oldSelectionStart=void 0,this._oldSelectionEnd=void 0,this._onLinuxMouseSelection=this.register(new a.EventEmitter),this._onRedrawRequest=this.register(new a.EventEmitter),this._onSelectionChange=this.register(new a.EventEmitter),this._onRequestScrollLines=this.register(new a.EventEmitter),this._mouseMoveListener=A=>this._onMouseMove(A),this._mouseUpListener=A=>this._onMouseUp(A),this._coreService.onUserInput(()=>{this.hasSelection&&this.clearSelection()}),this._trimListener=this._bufferService.buffer.lines.onTrim(A=>this._onTrim(A)),this.register(this._bufferService.buffers.onBufferActivate(A=>this._onBufferActivate(A))),this.enable(),this._model=new _.SelectionModel(this._bufferService),this._activeSelectionMode=0}get onLinuxMouseSelection(){return this._onLinuxMouseSelection.event}get onRequestRedraw(){return this._onRedrawRequest.event}get onSelectionChange(){return this._onSelectionChange.event}get onRequestScrollLines(){return this._onRequestScrollLines.event}dispose(){this._removeMouseDownListeners()}reset(){this.clearSelection()}disable(){this.clearSelection(),this._enabled=!1}enable(){this._enabled=!0}get selectionStart(){return this._model.finalSelectionStart}get selectionEnd(){return this._model.finalSelectionEnd}get hasSelection(){const g=this._model.finalSelectionStart,m=this._model.finalSelectionEnd;return!(!g||!m||g[0]===m[0]&&g[1]===m[1])}get selectionText(){const g=this._model.finalSelectionStart,m=this._model.finalSelectionEnd;if(!g||!m)return"";const b=this._bufferService.buffer,y=[];if(this._activeSelectionMode===3){if(g[0]===m[0])return"";const w=g[0]w.replace(u," ")).join(c.isWindows?`\r +`:` +`)}clearSelection(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh(),this._onSelectionChange.fire()}refresh(g){this._refreshAnimationFrame||(this._refreshAnimationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._refresh())),c.isLinux&&g&&this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText)}_refresh(){this._refreshAnimationFrame=void 0,this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:this._activeSelectionMode===3})}_isClickInSelection(g){const m=this._getMouseBufferCoords(g),b=this._model.finalSelectionStart,y=this._model.finalSelectionEnd;return!!(b&&y&&m)&&this._areCoordsInSelection(m,b,y)}isCellInSelection(g,m){const b=this._model.finalSelectionStart,y=this._model.finalSelectionEnd;return!(!b||!y)&&this._areCoordsInSelection([g,m],b,y)}_areCoordsInSelection(g,m,b){return g[1]>m[1]&&g[1]=m[0]&&g[0]=m[0]}_selectWordAtCursor(g,m){var b,y;const w=(y=(b=this._linkifier.currentLink)===null||b===void 0?void 0:b.link)===null||y===void 0?void 0:y.range;if(w)return this._model.selectionStart=[w.start.x-1,w.start.y-1],this._model.selectionStartLength=(0,f.getRangeLength)(w,this._bufferService.cols),this._model.selectionEnd=void 0,!0;const p=this._getMouseBufferCoords(g);return!!p&&(this._selectWordAt(p,m),this._model.selectionEnd=void 0,!0)}selectAll(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()}selectLines(g,m){this._model.clearSelection(),g=Math.max(g,0),m=Math.min(m,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,g],this._model.selectionEnd=[this._bufferService.cols,m],this.refresh(),this._onSelectionChange.fire()}_onTrim(g){this._model.onTrim(g)&&this.refresh()}_getMouseBufferCoords(g){const m=this._mouseService.getCoords(g,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(m)return m[0]--,m[1]--,m[1]+=this._bufferService.buffer.ydisp,m}_getMouseEventScrollAmount(g){let m=(0,n.getCoordsRelativeToElement)(this._coreBrowserService.window,g,this._screenElement)[1];const b=this._renderService.dimensions.canvasHeight;return m>=0&&m<=b?0:(m>b&&(m-=b),m=Math.min(Math.max(m,-50),50),m/=50,m/Math.abs(m)+Math.round(14*m))}shouldForceSelection(g){return c.isMac?g.altKey&&this._optionsService.rawOptions.macOptionClickForcesSelection:g.shiftKey}onMouseDown(g){if(this._mouseDownTimeStamp=g.timeStamp,(g.button!==2||!this.hasSelection)&&g.button===0){if(!this._enabled){if(!this.shouldForceSelection(g))return;g.stopPropagation()}g.preventDefault(),this._dragScrollAmount=0,this._enabled&&g.shiftKey?this._onIncrementalClick(g):g.detail===1?this._onSingleClick(g):g.detail===2?this._onDoubleClick(g):g.detail===3&&this._onTripleClick(g),this._addMouseDownListeners(),this.refresh(!0)}}_addMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener("mouseup",this._mouseUpListener)),this._dragScrollIntervalTimer=this._coreBrowserService.window.setInterval(()=>this._dragScroll(),50)}_removeMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener("mousemove",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener("mouseup",this._mouseUpListener)),this._coreBrowserService.window.clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0}_onIncrementalClick(g){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(g))}_onSingleClick(g){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(g)?3:0,this._model.selectionStart=this._getMouseBufferCoords(g),!this._model.selectionStart)return;this._model.selectionEnd=void 0;const m=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);m&&m.length!==this._model.selectionStart[0]&&m.hasWidth(this._model.selectionStart[0])===0&&this._model.selectionStart[0]++}_onDoubleClick(g){this._selectWordAtCursor(g,!0)&&(this._activeSelectionMode=1)}_onTripleClick(g){const m=this._getMouseBufferCoords(g);m&&(this._activeSelectionMode=2,this._selectLineAt(m[1]))}shouldColumnSelect(g){return g.altKey&&!(c.isMac&&this._optionsService.rawOptions.macOptionClickForcesSelection)}_onMouseMove(g){if(g.stopImmediatePropagation(),!this._model.selectionStart)return;const m=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(g),!this._model.selectionEnd)return void this.refresh(!0);this._activeSelectionMode===2?this._model.selectionEnd[1]0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));const b=this._bufferService.buffer;if(this._model.selectionEnd[1]0?(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(g.ydisp+this._bufferService.rows,g.lines.length-1)):(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=g.ydisp),this.refresh()}}_onMouseUp(g){const m=g.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&m<500&&g.altKey&&this._optionsService.rawOptions.altClickMovesCursor){if(this._bufferService.buffer.ybase===this._bufferService.buffer.ydisp){const b=this._mouseService.getCoords(g,this._element,this._bufferService.cols,this._bufferService.rows,!1);if(b&&b[0]!==void 0&&b[1]!==void 0){const y=(0,t.moveToCellSequence)(b[0]-1,b[1]-1,this._bufferService,this._coreService.decPrivateModes.applicationCursorKeys);this._coreService.triggerDataEvent(y,!0)}}}else this._fireEventIfSelectionChanged()}_fireEventIfSelectionChanged(){const g=this._model.finalSelectionStart,m=this._model.finalSelectionEnd,b=!(!g||!m||g[0]===m[0]&&g[1]===m[1]);b?g&&m&&(this._oldSelectionStart&&this._oldSelectionEnd&&g[0]===this._oldSelectionStart[0]&&g[1]===this._oldSelectionStart[1]&&m[0]===this._oldSelectionEnd[0]&&m[1]===this._oldSelectionEnd[1]||this._fireOnSelectionChange(g,m,b)):this._oldHasSelection&&this._fireOnSelectionChange(g,m,b)}_fireOnSelectionChange(g,m,b){this._oldSelectionStart=g,this._oldSelectionEnd=m,this._oldHasSelection=b,this._onSelectionChange.fire()}_onBufferActivate(g){this.clearSelection(),this._trimListener.dispose(),this._trimListener=g.activeBuffer.lines.onTrim(m=>this._onTrim(m))}_convertViewportColToCharacterIndex(g,m){let b=m[0];for(let y=0;m[0]>=y;y++){const w=g.loadCell(y,this._workCell).getChars().length;this._workCell.getWidth()===0?b--:w>1&&m[0]!==y&&(b+=w-1)}return b}setSelection(g,m,b){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[g,m],this._model.selectionStartLength=b,this.refresh(),this._fireEventIfSelectionChanged()}rightClickSelect(g){this._isClickInSelection(g)||(this._selectWordAtCursor(g,!1)&&this.refresh(!0),this._fireEventIfSelectionChanged())}_getWordAt(g,m,b=!0,y=!0){if(g[0]>=this._bufferService.cols)return;const w=this._bufferService.buffer,p=w.lines.get(g[1]);if(!p)return;const S=w.translateBufferLineToString(g[1],!1);let L=this._convertViewportColToCharacterIndex(p,g),E=L;const A=g[0]-L;let k=0,O=0,T=0,H=0;if(S.charAt(L)===" "){for(;L>0&&S.charAt(L-1)===" ";)L--;for(;E1&&(H+=R-1,E+=R-1);B>0&&L>0&&!this._isCharWordSeparator(p.loadCell(B-1,this._workCell));){p.loadCell(B-1,this._workCell);const M=this._workCell.getChars().length;this._workCell.getWidth()===0?(k++,B--):M>1&&(T+=M-1,L-=M-1),L--,B--}for(;P1&&(H+=M-1,E+=M-1),E++,P++}}E++;let W=L+A-k+T,x=Math.min(this._bufferService.cols,E-L+k+O-T-H);if(m||S.slice(L,E).trim()!==""){if(b&&W===0&&p.getCodePoint(0)!==32){const B=w.lines.get(g[1]-1);if(B&&p.isWrapped&&B.getCodePoint(this._bufferService.cols-1)!==32){const P=this._getWordAt([this._bufferService.cols-1,g[1]-1],!1,!0,!1);if(P){const R=this._bufferService.cols-P.start;W-=R,x+=R}}}if(y&&W+x===this._bufferService.cols&&p.getCodePoint(this._bufferService.cols-1)!==32){const B=w.lines.get(g[1]+1);if((B==null?void 0:B.isWrapped)&&B.getCodePoint(0)!==32){const P=this._getWordAt([0,g[1]+1],!1,!1,!0);P&&(x+=P.length)}}return{start:W,length:x}}}_selectWordAt(g,m){const b=this._getWordAt(g,m);if(b){for(;b.start<0;)b.start+=this._bufferService.cols,g[1]--;this._model.selectionStart=[b.start,g[1]],this._model.selectionStartLength=b.length}}_selectToWordAt(g){const m=this._getWordAt(g,!0);if(m){let b=g[1];for(;m.start<0;)m.start+=this._bufferService.cols,b--;if(!this._model.areSelectionValuesReversed())for(;m.start+m.length>this._bufferService.cols;)m.length-=this._bufferService.cols,b++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?m.start:m.start+m.length,b]}}_isCharWordSeparator(g){return g.getWidth()!==0&&this._optionsService.rawOptions.wordSeparator.indexOf(g.getChars())>=0}_selectLineAt(g){const m=this._bufferService.buffer.getWrappedRangeForLine(g),b={start:{x:0,y:m.first},end:{x:this._bufferService.cols-1,y:m.last}};this._model.selectionStart=[0,m.first],this._model.selectionEnd=void 0,this._model.selectionStartLength=(0,f.getRangeLength)(b,this._bufferService.cols)}};C=o([d(3,e.IBufferService),d(4,e.ICoreService),d(5,i.IMouseService),d(6,e.IOptionsService),d(7,i.IRenderService),d(8,i.ICoreBrowserService)],C),r.SelectionService=C},4725:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ICharacterJoinerService=r.ISelectionService=r.IRenderService=r.IMouseService=r.ICoreBrowserService=r.ICharSizeService=void 0;const o=h(8343);r.ICharSizeService=(0,o.createDecorator)("CharSizeService"),r.ICoreBrowserService=(0,o.createDecorator)("CoreBrowserService"),r.IMouseService=(0,o.createDecorator)("MouseService"),r.IRenderService=(0,o.createDecorator)("RenderService"),r.ISelectionService=(0,o.createDecorator)("SelectionService"),r.ICharacterJoinerService=(0,o.createDecorator)("CharacterJoinerService")},6349:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.CircularList=void 0;const o=h(8460);r.CircularList=class{constructor(d){this._maxLength=d,this.onDeleteEmitter=new o.EventEmitter,this.onInsertEmitter=new o.EventEmitter,this.onTrimEmitter=new o.EventEmitter,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}get onDelete(){return this.onDeleteEmitter.event}get onInsert(){return this.onInsertEmitter.event}get onTrim(){return this.onTrimEmitter.event}get maxLength(){return this._maxLength}set maxLength(d){if(this._maxLength===d)return;const c=new Array(d);for(let _=0;_this._length)for(let c=this._length;c=d;l--)this._array[this._getCyclicIndex(l+_.length)]=this._array[this._getCyclicIndex(l)];for(let l=0;l<_.length;l++)this._array[this._getCyclicIndex(d+l)]=_[l];if(_.length&&this.onInsertEmitter.fire({index:d,amount:_.length}),this._length+_.length>this._maxLength){const l=this._length+_.length-this._maxLength;this._startIndex+=l,this._length=this._maxLength,this.onTrimEmitter.fire(l)}else this._length+=_.length}trimStart(d){d>this._length&&(d=this._length),this._startIndex+=d,this._length-=d,this.onTrimEmitter.fire(d)}shiftElements(d,c,_){if(!(c<=0)){if(d<0||d>=this._length)throw new Error("start argument out of range");if(d+_<0)throw new Error("Cannot shift elements in list beyond index 0");if(_>0){for(let a=c-1;a>=0;a--)this.set(d+a+_,this.get(d+a));const l=d+c+_-this._length;if(l>0)for(this._length+=l;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let l=0;l{Object.defineProperty(r,"__esModule",{value:!0}),r.clone=void 0,r.clone=function h(o,d=5){if(typeof o!="object")return o;const c=Array.isArray(o)?[]:{};for(const _ in o)c[_]=d<=1?o[_]:o[_]&&h(o[_],d-1);return c}},8055:(D,r)=>{var h,o,d;function c(l){const a=l.toString(16);return a.length<2?"0"+a:a}function _(l,a){return l>>0}}(h=r.channels||(r.channels={})),function(l){function a(i,e){const n=Math.round(255*e),[t,s,f]=d.toChannels(i.rgba);return{css:h.toCss(t,s,f,n),rgba:h.toRgba(t,s,f,n)}}l.blend=function(i,e){const n=(255&e.rgba)/255;if(n===1)return{css:e.css,rgba:e.rgba};const t=e.rgba>>24&255,s=e.rgba>>16&255,f=e.rgba>>8&255,v=i.rgba>>24&255,u=i.rgba>>16&255,C=i.rgba>>8&255,g=v+Math.round((t-v)*n),m=u+Math.round((s-u)*n),b=C+Math.round((f-C)*n);return{css:h.toCss(g,m,b),rgba:h.toRgba(g,m,b)}},l.isOpaque=function(i){return(255&i.rgba)==255},l.ensureContrastRatio=function(i,e,n){const t=d.ensureContrastRatio(i.rgba,e.rgba,n);if(t)return d.toColor(t>>24&255,t>>16&255,t>>8&255)},l.opaque=function(i){const e=(255|i.rgba)>>>0,[n,t,s]=d.toChannels(e);return{css:h.toCss(n,t,s),rgba:e}},l.opacity=a,l.multiplyOpacity=function(i,e){return a(i,(255&i.rgba)*e/255)},l.toColorRGB=function(i){return[i.rgba>>24&255,i.rgba>>16&255,i.rgba>>8&255]}}(r.color||(r.color={})),(r.css||(r.css={})).toColor=function(l){if(l.match(/#[0-9a-f]{3,8}/i))switch(l.length){case 4:{const i=parseInt(l.slice(1,2).repeat(2),16),e=parseInt(l.slice(2,3).repeat(2),16),n=parseInt(l.slice(3,4).repeat(2),16);return d.toColor(i,e,n)}case 5:{const i=parseInt(l.slice(1,2).repeat(2),16),e=parseInt(l.slice(2,3).repeat(2),16),n=parseInt(l.slice(3,4).repeat(2),16),t=parseInt(l.slice(4,5).repeat(2),16);return d.toColor(i,e,n,t)}case 7:return{css:l,rgba:(parseInt(l.slice(1),16)<<8|255)>>>0};case 9:return{css:l,rgba:parseInt(l.slice(1),16)>>>0}}const a=l.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(a){const i=parseInt(a[1]),e=parseInt(a[2]),n=parseInt(a[3]),t=Math.round(255*(a[5]===void 0?1:parseFloat(a[5])));return d.toColor(i,e,n,t)}throw new Error("css.toColor: Unsupported css format")},function(l){function a(i,e,n){const t=i/255,s=e/255,f=n/255;return .2126*(t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.7152*(s<=.03928?s/12.92:Math.pow((s+.055)/1.055,2.4))+.0722*(f<=.03928?f/12.92:Math.pow((f+.055)/1.055,2.4))}l.relativeLuminance=function(i){return a(i>>16&255,i>>8&255,255&i)},l.relativeLuminance2=a}(o=r.rgb||(r.rgb={})),function(l){function a(e,n,t){const s=e>>24&255,f=e>>16&255,v=e>>8&255;let u=n>>24&255,C=n>>16&255,g=n>>8&255,m=_(o.relativeLuminance2(u,C,g),o.relativeLuminance2(s,f,v));for(;m0||C>0||g>0);)u-=Math.max(0,Math.ceil(.1*u)),C-=Math.max(0,Math.ceil(.1*C)),g-=Math.max(0,Math.ceil(.1*g)),m=_(o.relativeLuminance2(u,C,g),o.relativeLuminance2(s,f,v));return(u<<24|C<<16|g<<8|255)>>>0}function i(e,n,t){const s=e>>24&255,f=e>>16&255,v=e>>8&255;let u=n>>24&255,C=n>>16&255,g=n>>8&255,m=_(o.relativeLuminance2(u,C,g),o.relativeLuminance2(s,f,v));for(;m>>0}l.ensureContrastRatio=function(e,n,t){const s=o.relativeLuminance(e>>8),f=o.relativeLuminance(n>>8);if(_(s,f)>8));if(g_(s,o.relativeLuminance(m>>8))?C:m}return C}const v=i(e,n,t),u=_(s,o.relativeLuminance(v>>8));if(u_(s,o.relativeLuminance(C>>8))?v:C}return v}},l.reduceLuminance=a,l.increaseLuminance=i,l.toChannels=function(e){return[e>>24&255,e>>16&255,e>>8&255,255&e]},l.toColor=function(e,n,t,s){return{css:h.toCss(e,n,t,s),rgba:h.toRgba(e,n,t,s)}}}(d=r.rgba||(r.rgba={})),r.toPaddedHex=c,r.contrastRatio=_},8969:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.CoreTerminal=void 0;const o=h(844),d=h(2585),c=h(4348),_=h(7866),l=h(744),a=h(7302),i=h(6975),e=h(8460),n=h(1753),t=h(3730),s=h(1480),f=h(7994),v=h(9282),u=h(5435),C=h(5981),g=h(2660);let m=!1;class b extends o.Disposable{constructor(w){super(),this._onBinary=new e.EventEmitter,this._onData=new e.EventEmitter,this._onLineFeed=new e.EventEmitter,this._onResize=new e.EventEmitter,this._onScroll=new e.EventEmitter,this._onWriteParsed=new e.EventEmitter,this._instantiationService=new c.InstantiationService,this.optionsService=new a.OptionsService(w),this._instantiationService.setService(d.IOptionsService,this.optionsService),this._bufferService=this.register(this._instantiationService.createInstance(l.BufferService)),this._instantiationService.setService(d.IBufferService,this._bufferService),this._logService=this._instantiationService.createInstance(_.LogService),this._instantiationService.setService(d.ILogService,this._logService),this.coreService=this.register(this._instantiationService.createInstance(i.CoreService,()=>this.scrollToBottom())),this._instantiationService.setService(d.ICoreService,this.coreService),this.coreMouseService=this._instantiationService.createInstance(n.CoreMouseService),this._instantiationService.setService(d.ICoreMouseService,this.coreMouseService),this._dirtyRowService=this._instantiationService.createInstance(t.DirtyRowService),this._instantiationService.setService(d.IDirtyRowService,this._dirtyRowService),this.unicodeService=this._instantiationService.createInstance(s.UnicodeService),this._instantiationService.setService(d.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(f.CharsetService),this._instantiationService.setService(d.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(g.OscLinkService),this._instantiationService.setService(d.IOscLinkService,this._oscLinkService),this._inputHandler=new u.InputHandler(this._bufferService,this._charsetService,this.coreService,this._dirtyRowService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService),this.register((0,e.forwardEvent)(this._inputHandler.onLineFeed,this._onLineFeed)),this.register(this._inputHandler),this.register((0,e.forwardEvent)(this._bufferService.onResize,this._onResize)),this.register((0,e.forwardEvent)(this.coreService.onData,this._onData)),this.register((0,e.forwardEvent)(this.coreService.onBinary,this._onBinary)),this.register(this.optionsService.onOptionChange(p=>this._updateOptions(p))),this.register(this._bufferService.onScroll(p=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp,source:0}),this._dirtyRowService.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)})),this.register(this._inputHandler.onScroll(p=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp,source:0}),this._dirtyRowService.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)})),this._writeBuffer=new C.WriteBuffer((p,S)=>this._inputHandler.parse(p,S)),this.register((0,e.forwardEvent)(this._writeBuffer.onWriteParsed,this._onWriteParsed))}get onBinary(){return this._onBinary.event}get onData(){return this._onData.event}get onLineFeed(){return this._onLineFeed.event}get onResize(){return this._onResize.event}get onWriteParsed(){return this._onWriteParsed.event}get onScroll(){return this._onScrollApi||(this._onScrollApi=new e.EventEmitter,this.register(this._onScroll.event(w=>{var p;(p=this._onScrollApi)===null||p===void 0||p.fire(w.position)}))),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(w){for(const p in w)this.optionsService.options[p]=w[p]}dispose(){var w;this._isDisposed||(super.dispose(),(w=this._windowsMode)===null||w===void 0||w.dispose(),this._windowsMode=void 0)}write(w,p){this._writeBuffer.write(w,p)}writeSync(w,p){this._logService.logLevel<=d.LogLevelEnum.WARN&&!m&&(this._logService.warn("writeSync is unreliable and will be removed soon."),m=!0),this._writeBuffer.writeSync(w,p)}resize(w,p){isNaN(w)||isNaN(p)||(w=Math.max(w,l.MINIMUM_COLS),p=Math.max(p,l.MINIMUM_ROWS),this._bufferService.resize(w,p))}scroll(w,p=!1){this._bufferService.scroll(w,p)}scrollLines(w,p,S){this._bufferService.scrollLines(w,p,S)}scrollPages(w){this._bufferService.scrollPages(w)}scrollToTop(){this._bufferService.scrollToTop()}scrollToBottom(){this._bufferService.scrollToBottom()}scrollToLine(w){this._bufferService.scrollToLine(w)}registerEscHandler(w,p){return this._inputHandler.registerEscHandler(w,p)}registerDcsHandler(w,p){return this._inputHandler.registerDcsHandler(w,p)}registerCsiHandler(w,p){return this._inputHandler.registerCsiHandler(w,p)}registerOscHandler(w,p){return this._inputHandler.registerOscHandler(w,p)}_setup(){this.optionsService.rawOptions.windowsMode&&this._enableWindowsMode()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_updateOptions(w){var p;switch(w){case"scrollback":this.buffers.resize(this.cols,this.rows);break;case"windowsMode":this.optionsService.rawOptions.windowsMode?this._enableWindowsMode():((p=this._windowsMode)===null||p===void 0||p.dispose(),this._windowsMode=void 0)}}_enableWindowsMode(){if(!this._windowsMode){const w=[];w.push(this.onLineFeed(v.updateWindowsModeWrappedState.bind(null,this._bufferService))),w.push(this.registerCsiHandler({final:"H"},()=>((0,v.updateWindowsModeWrappedState)(this._bufferService),!1))),this._windowsMode={dispose:()=>{for(const p of w)p.dispose()}}}}}r.CoreTerminal=b},8460:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.forwardEvent=r.EventEmitter=void 0,r.EventEmitter=class{constructor(){this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=h=>(this._listeners.push(h),{dispose:()=>{if(!this._disposed){for(let o=0;oo.fire(d))}},5435:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.InputHandler=r.WindowsOptionsReportType=void 0;const o=h(2584),d=h(7116),c=h(2015),_=h(844),l=h(482),a=h(8437),i=h(8460),e=h(643),n=h(511),t=h(3734),s=h(2585),f=h(6242),v=h(6351),u=h(5941),C={"(":0,")":1,"*":2,"+":3,"-":1,".":2},g=131072;function m(w,p){if(w>24)return p.setWinLines||!1;switch(w){case 1:return!!p.restoreWin;case 2:return!!p.minimizeWin;case 3:return!!p.setWinPosition;case 4:return!!p.setWinSizePixels;case 5:return!!p.raiseWin;case 6:return!!p.lowerWin;case 7:return!!p.refreshWin;case 8:return!!p.setWinSizeChars;case 9:return!!p.maximizeWin;case 10:return!!p.fullscreenWin;case 11:return!!p.getWinState;case 13:return!!p.getWinPosition;case 14:return!!p.getWinSizePixels;case 15:return!!p.getScreenSizePixels;case 16:return!!p.getCellSizePixels;case 18:return!!p.getWinSizeChars;case 19:return!!p.getScreenSizeChars;case 20:return!!p.getIconTitle;case 21:return!!p.getWinTitle;case 22:return!!p.pushTitle;case 23:return!!p.popTitle;case 24:return!!p.setWinLines}return!1}var b;(function(w){w[w.GET_WIN_SIZE_PIXELS=0]="GET_WIN_SIZE_PIXELS",w[w.GET_CELL_SIZE_PIXELS=1]="GET_CELL_SIZE_PIXELS"})(b=r.WindowsOptionsReportType||(r.WindowsOptionsReportType={}));class y extends _.Disposable{constructor(p,S,L,E,A,k,O,T,H,W=new c.EscapeSequenceParser){super(),this._bufferService=p,this._charsetService=S,this._coreService=L,this._dirtyRowService=E,this._logService=A,this._optionsService=k,this._oscLinkService=O,this._coreMouseService=T,this._unicodeService=H,this._parser=W,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new l.StringToUtf32,this._utf8Decoder=new l.Utf8ToUtf32,this._workCell=new n.CellData,this._windowTitle="",this._iconName="",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=a.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=a.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=new i.EventEmitter,this._onRequestRefreshRows=new i.EventEmitter,this._onRequestReset=new i.EventEmitter,this._onRequestSendFocus=new i.EventEmitter,this._onRequestSyncScrollBar=new i.EventEmitter,this._onRequestWindowsOptionsReport=new i.EventEmitter,this._onA11yChar=new i.EventEmitter,this._onA11yTab=new i.EventEmitter,this._onCursorMove=new i.EventEmitter,this._onLineFeed=new i.EventEmitter,this._onScroll=new i.EventEmitter,this._onTitleChange=new i.EventEmitter,this._onColor=new i.EventEmitter,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this.register(this._parser),this._activeBuffer=this._bufferService.buffer,this.register(this._bufferService.buffers.onBufferActivate(x=>this._activeBuffer=x.activeBuffer)),this._parser.setCsiHandlerFallback((x,B)=>{this._logService.debug("Unknown CSI code: ",{identifier:this._parser.identToString(x),params:B.toArray()})}),this._parser.setEscHandlerFallback(x=>{this._logService.debug("Unknown ESC code: ",{identifier:this._parser.identToString(x)})}),this._parser.setExecuteHandlerFallback(x=>{this._logService.debug("Unknown EXECUTE code: ",{code:x})}),this._parser.setOscHandlerFallback((x,B,P)=>{this._logService.debug("Unknown OSC code: ",{identifier:x,action:B,data:P})}),this._parser.setDcsHandlerFallback((x,B,P)=>{B==="HOOK"&&(P=P.toArray()),this._logService.debug("Unknown DCS code: ",{identifier:this._parser.identToString(x),action:B,payload:P})}),this._parser.setPrintHandler((x,B,P)=>this.print(x,B,P)),this._parser.registerCsiHandler({final:"@"},x=>this.insertChars(x)),this._parser.registerCsiHandler({intermediates:" ",final:"@"},x=>this.scrollLeft(x)),this._parser.registerCsiHandler({final:"A"},x=>this.cursorUp(x)),this._parser.registerCsiHandler({intermediates:" ",final:"A"},x=>this.scrollRight(x)),this._parser.registerCsiHandler({final:"B"},x=>this.cursorDown(x)),this._parser.registerCsiHandler({final:"C"},x=>this.cursorForward(x)),this._parser.registerCsiHandler({final:"D"},x=>this.cursorBackward(x)),this._parser.registerCsiHandler({final:"E"},x=>this.cursorNextLine(x)),this._parser.registerCsiHandler({final:"F"},x=>this.cursorPrecedingLine(x)),this._parser.registerCsiHandler({final:"G"},x=>this.cursorCharAbsolute(x)),this._parser.registerCsiHandler({final:"H"},x=>this.cursorPosition(x)),this._parser.registerCsiHandler({final:"I"},x=>this.cursorForwardTab(x)),this._parser.registerCsiHandler({final:"J"},x=>this.eraseInDisplay(x,!1)),this._parser.registerCsiHandler({prefix:"?",final:"J"},x=>this.eraseInDisplay(x,!0)),this._parser.registerCsiHandler({final:"K"},x=>this.eraseInLine(x,!1)),this._parser.registerCsiHandler({prefix:"?",final:"K"},x=>this.eraseInLine(x,!0)),this._parser.registerCsiHandler({final:"L"},x=>this.insertLines(x)),this._parser.registerCsiHandler({final:"M"},x=>this.deleteLines(x)),this._parser.registerCsiHandler({final:"P"},x=>this.deleteChars(x)),this._parser.registerCsiHandler({final:"S"},x=>this.scrollUp(x)),this._parser.registerCsiHandler({final:"T"},x=>this.scrollDown(x)),this._parser.registerCsiHandler({final:"X"},x=>this.eraseChars(x)),this._parser.registerCsiHandler({final:"Z"},x=>this.cursorBackwardTab(x)),this._parser.registerCsiHandler({final:"`"},x=>this.charPosAbsolute(x)),this._parser.registerCsiHandler({final:"a"},x=>this.hPositionRelative(x)),this._parser.registerCsiHandler({final:"b"},x=>this.repeatPrecedingCharacter(x)),this._parser.registerCsiHandler({final:"c"},x=>this.sendDeviceAttributesPrimary(x)),this._parser.registerCsiHandler({prefix:">",final:"c"},x=>this.sendDeviceAttributesSecondary(x)),this._parser.registerCsiHandler({final:"d"},x=>this.linePosAbsolute(x)),this._parser.registerCsiHandler({final:"e"},x=>this.vPositionRelative(x)),this._parser.registerCsiHandler({final:"f"},x=>this.hVPosition(x)),this._parser.registerCsiHandler({final:"g"},x=>this.tabClear(x)),this._parser.registerCsiHandler({final:"h"},x=>this.setMode(x)),this._parser.registerCsiHandler({prefix:"?",final:"h"},x=>this.setModePrivate(x)),this._parser.registerCsiHandler({final:"l"},x=>this.resetMode(x)),this._parser.registerCsiHandler({prefix:"?",final:"l"},x=>this.resetModePrivate(x)),this._parser.registerCsiHandler({final:"m"},x=>this.charAttributes(x)),this._parser.registerCsiHandler({final:"n"},x=>this.deviceStatus(x)),this._parser.registerCsiHandler({prefix:"?",final:"n"},x=>this.deviceStatusPrivate(x)),this._parser.registerCsiHandler({intermediates:"!",final:"p"},x=>this.softReset(x)),this._parser.registerCsiHandler({intermediates:" ",final:"q"},x=>this.setCursorStyle(x)),this._parser.registerCsiHandler({final:"r"},x=>this.setScrollRegion(x)),this._parser.registerCsiHandler({final:"s"},x=>this.saveCursor(x)),this._parser.registerCsiHandler({final:"t"},x=>this.windowOptions(x)),this._parser.registerCsiHandler({final:"u"},x=>this.restoreCursor(x)),this._parser.registerCsiHandler({intermediates:"'",final:"}"},x=>this.insertColumns(x)),this._parser.registerCsiHandler({intermediates:"'",final:"~"},x=>this.deleteColumns(x)),this._parser.registerCsiHandler({intermediates:'"',final:"q"},x=>this.selectProtected(x)),this._parser.registerCsiHandler({intermediates:"$",final:"p"},x=>this.requestMode(x,!0)),this._parser.registerCsiHandler({prefix:"?",intermediates:"$",final:"p"},x=>this.requestMode(x,!1)),this._parser.setExecuteHandler(o.C0.BEL,()=>this.bell()),this._parser.setExecuteHandler(o.C0.LF,()=>this.lineFeed()),this._parser.setExecuteHandler(o.C0.VT,()=>this.lineFeed()),this._parser.setExecuteHandler(o.C0.FF,()=>this.lineFeed()),this._parser.setExecuteHandler(o.C0.CR,()=>this.carriageReturn()),this._parser.setExecuteHandler(o.C0.BS,()=>this.backspace()),this._parser.setExecuteHandler(o.C0.HT,()=>this.tab()),this._parser.setExecuteHandler(o.C0.SO,()=>this.shiftOut()),this._parser.setExecuteHandler(o.C0.SI,()=>this.shiftIn()),this._parser.setExecuteHandler(o.C1.IND,()=>this.index()),this._parser.setExecuteHandler(o.C1.NEL,()=>this.nextLine()),this._parser.setExecuteHandler(o.C1.HTS,()=>this.tabSet()),this._parser.registerOscHandler(0,new f.OscHandler(x=>(this.setTitle(x),this.setIconName(x),!0))),this._parser.registerOscHandler(1,new f.OscHandler(x=>this.setIconName(x))),this._parser.registerOscHandler(2,new f.OscHandler(x=>this.setTitle(x))),this._parser.registerOscHandler(4,new f.OscHandler(x=>this.setOrReportIndexedColor(x))),this._parser.registerOscHandler(8,new f.OscHandler(x=>this.setHyperlink(x))),this._parser.registerOscHandler(10,new f.OscHandler(x=>this.setOrReportFgColor(x))),this._parser.registerOscHandler(11,new f.OscHandler(x=>this.setOrReportBgColor(x))),this._parser.registerOscHandler(12,new f.OscHandler(x=>this.setOrReportCursorColor(x))),this._parser.registerOscHandler(104,new f.OscHandler(x=>this.restoreIndexedColor(x))),this._parser.registerOscHandler(110,new f.OscHandler(x=>this.restoreFgColor(x))),this._parser.registerOscHandler(111,new f.OscHandler(x=>this.restoreBgColor(x))),this._parser.registerOscHandler(112,new f.OscHandler(x=>this.restoreCursorColor(x))),this._parser.registerEscHandler({final:"7"},()=>this.saveCursor()),this._parser.registerEscHandler({final:"8"},()=>this.restoreCursor()),this._parser.registerEscHandler({final:"D"},()=>this.index()),this._parser.registerEscHandler({final:"E"},()=>this.nextLine()),this._parser.registerEscHandler({final:"H"},()=>this.tabSet()),this._parser.registerEscHandler({final:"M"},()=>this.reverseIndex()),this._parser.registerEscHandler({final:"="},()=>this.keypadApplicationMode()),this._parser.registerEscHandler({final:">"},()=>this.keypadNumericMode()),this._parser.registerEscHandler({final:"c"},()=>this.fullReset()),this._parser.registerEscHandler({final:"n"},()=>this.setgLevel(2)),this._parser.registerEscHandler({final:"o"},()=>this.setgLevel(3)),this._parser.registerEscHandler({final:"|"},()=>this.setgLevel(3)),this._parser.registerEscHandler({final:"}"},()=>this.setgLevel(2)),this._parser.registerEscHandler({final:"~"},()=>this.setgLevel(1)),this._parser.registerEscHandler({intermediates:"%",final:"@"},()=>this.selectDefaultCharset()),this._parser.registerEscHandler({intermediates:"%",final:"G"},()=>this.selectDefaultCharset());for(const x in d.CHARSETS)this._parser.registerEscHandler({intermediates:"(",final:x},()=>this.selectCharset("("+x)),this._parser.registerEscHandler({intermediates:")",final:x},()=>this.selectCharset(")"+x)),this._parser.registerEscHandler({intermediates:"*",final:x},()=>this.selectCharset("*"+x)),this._parser.registerEscHandler({intermediates:"+",final:x},()=>this.selectCharset("+"+x)),this._parser.registerEscHandler({intermediates:"-",final:x},()=>this.selectCharset("-"+x)),this._parser.registerEscHandler({intermediates:".",final:x},()=>this.selectCharset("."+x)),this._parser.registerEscHandler({intermediates:"/",final:x},()=>this.selectCharset("/"+x));this._parser.registerEscHandler({intermediates:"#",final:"8"},()=>this.screenAlignmentPattern()),this._parser.setErrorHandler(x=>(this._logService.error("Parsing error: ",x),x)),this._parser.registerDcsHandler({intermediates:"$",final:"q"},new v.DcsHandler((x,B)=>this.requestStatusString(x,B)))}getAttrData(){return this._curAttrData}get onRequestBell(){return this._onRequestBell.event}get onRequestRefreshRows(){return this._onRequestRefreshRows.event}get onRequestReset(){return this._onRequestReset.event}get onRequestSendFocus(){return this._onRequestSendFocus.event}get onRequestSyncScrollBar(){return this._onRequestSyncScrollBar.event}get onRequestWindowsOptionsReport(){return this._onRequestWindowsOptionsReport.event}get onA11yChar(){return this._onA11yChar.event}get onA11yTab(){return this._onA11yTab.event}get onCursorMove(){return this._onCursorMove.event}get onLineFeed(){return this._onLineFeed.event}get onScroll(){return this._onScroll.event}get onTitleChange(){return this._onTitleChange.event}get onColor(){return this._onColor.event}dispose(){super.dispose()}_preserveStack(p,S,L,E){this._parseStack.paused=!0,this._parseStack.cursorStartX=p,this._parseStack.cursorStartY=S,this._parseStack.decodedLength=L,this._parseStack.position=E}_logSlowResolvingAsync(p){this._logService.logLevel<=s.LogLevelEnum.WARN&&Promise.race([p,new Promise((S,L)=>setTimeout(()=>L("#SLOW_TIMEOUT"),5e3))]).catch(S=>{if(S!=="#SLOW_TIMEOUT")throw S})}parse(p,S){let L,E=this._activeBuffer.x,A=this._activeBuffer.y,k=0;const O=this._parseStack.paused;if(O){if(L=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,S))return this._logSlowResolvingAsync(L),L;E=this._parseStack.cursorStartX,A=this._parseStack.cursorStartY,this._parseStack.paused=!1,p.length>g&&(k=this._parseStack.position+g)}if(this._logService.logLevel<=s.LogLevelEnum.DEBUG&&this._logService.debug("parsing data"+(typeof p=="string"?` "${p}"`:` "${Array.prototype.map.call(p,T=>String.fromCharCode(T)).join("")}"`),typeof p=="string"?p.split("").map(T=>T.charCodeAt(0)):p),this._parseBuffer.lengthg)for(let T=k;T0&&B.getWidth(this._activeBuffer.x-1)===2&&B.setCellFromCodePoint(this._activeBuffer.x-1,0,1,x.fg,x.bg,x.extended);for(let P=S;P=T){if(H){for(;this._activeBuffer.x=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),B=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y)}else if(this._activeBuffer.x=T-1,A===2)continue}if(W&&(B.insertCells(this._activeBuffer.x,A,this._activeBuffer.getNullCell(x),x),B.getWidth(T-1)===2&&B.setCellFromCodePoint(T-1,e.NULL_CELL_CODE,e.NULL_CELL_WIDTH,x.fg,x.bg,x.extended)),B.setCellFromCodePoint(this._activeBuffer.x++,E,A,x.fg,x.bg,x.extended),A>0)for(;--A;)B.setCellFromCodePoint(this._activeBuffer.x++,0,0,x.fg,x.bg,x.extended)}else B.getWidth(this._activeBuffer.x-1)?B.addCodepointToCell(this._activeBuffer.x-1,E):B.addCodepointToCell(this._activeBuffer.x-2,E)}L-S>0&&(B.loadCell(this._activeBuffer.x-1,this._workCell),this._workCell.getWidth()===2||this._workCell.getCode()>65535?this._parser.precedingCodepoint=0:this._workCell.isCombined()?this._parser.precedingCodepoint=this._workCell.getChars().charCodeAt(0):this._parser.precedingCodepoint=this._workCell.content),this._activeBuffer.x0&&B.getWidth(this._activeBuffer.x)===0&&!B.hasContent(this._activeBuffer.x)&&B.setCellFromCodePoint(this._activeBuffer.x,0,1,x.fg,x.bg,x.extended),this._dirtyRowService.markDirty(this._activeBuffer.y)}registerCsiHandler(p,S){return p.final!=="t"||p.prefix||p.intermediates?this._parser.registerCsiHandler(p,S):this._parser.registerCsiHandler(p,L=>!m(L.params[0],this._optionsService.rawOptions.windowOptions)||S(L))}registerDcsHandler(p,S){return this._parser.registerDcsHandler(p,new v.DcsHandler(S))}registerEscHandler(p,S){return this._parser.registerEscHandler(p,S)}registerOscHandler(p,S){return this._parser.registerOscHandler(p,new f.OscHandler(S))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowService.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowService.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){var p;if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&((p=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y))===null||p===void 0?void 0:p.isWrapped)){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;const S=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);S.hasWidth(this._activeBuffer.x)&&!S.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;const p=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-p),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(p=this._bufferService.cols-1){this._activeBuffer.x=Math.min(p,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowService.markDirty(this._activeBuffer.y)}_setCursor(p,S){this._dirtyRowService.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=p,this._activeBuffer.y=this._activeBuffer.scrollTop+S):(this._activeBuffer.x=p,this._activeBuffer.y=S),this._restrictCursor(),this._dirtyRowService.markDirty(this._activeBuffer.y)}_moveCursor(p,S){this._restrictCursor(),this._setCursor(this._activeBuffer.x+p,this._activeBuffer.y+S)}cursorUp(p){const S=this._activeBuffer.y-this._activeBuffer.scrollTop;return S>=0?this._moveCursor(0,-Math.min(S,p.params[0]||1)):this._moveCursor(0,-(p.params[0]||1)),!0}cursorDown(p){const S=this._activeBuffer.scrollBottom-this._activeBuffer.y;return S>=0?this._moveCursor(0,Math.min(S,p.params[0]||1)):this._moveCursor(0,p.params[0]||1),!0}cursorForward(p){return this._moveCursor(p.params[0]||1,0),!0}cursorBackward(p){return this._moveCursor(-(p.params[0]||1),0),!0}cursorNextLine(p){return this.cursorDown(p),this._activeBuffer.x=0,!0}cursorPrecedingLine(p){return this.cursorUp(p),this._activeBuffer.x=0,!0}cursorCharAbsolute(p){return this._setCursor((p.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(p){return this._setCursor(p.length>=2?(p.params[1]||1)-1:0,(p.params[0]||1)-1),!0}charPosAbsolute(p){return this._setCursor((p.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(p){return this._moveCursor(p.params[0]||1,0),!0}linePosAbsolute(p){return this._setCursor(this._activeBuffer.x,(p.params[0]||1)-1),!0}vPositionRelative(p){return this._moveCursor(0,p.params[0]||1),!0}hVPosition(p){return this.cursorPosition(p),!0}tabClear(p){const S=p.params[0];return S===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:S===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(p){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let S=p.params[0]||1;for(;S--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(p){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let S=p.params[0]||1;for(;S--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(p){const S=p.params[0];return S===1&&(this._curAttrData.bg|=536870912),S!==2&&S!==0||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(p,S,L,E=!1,A=!1){const k=this._activeBuffer.lines.get(this._activeBuffer.ybase+p);k.replaceCells(S,L,this._activeBuffer.getNullCell(this._eraseAttrData()),this._eraseAttrData(),A),E&&(k.isWrapped=!1)}_resetBufferLine(p,S=!1){const L=this._activeBuffer.lines.get(this._activeBuffer.ybase+p);L.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),S),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+p),L.isWrapped=!1}eraseInDisplay(p,S=!1){let L;switch(this._restrictCursor(this._bufferService.cols),p.params[0]){case 0:for(L=this._activeBuffer.y,this._dirtyRowService.markDirty(L),this._eraseInBufferLine(L++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,S);L=this._bufferService.cols&&(this._activeBuffer.lines.get(L+1).isWrapped=!1);L--;)this._resetBufferLine(L,S);this._dirtyRowService.markDirty(0);break;case 2:for(L=this._bufferService.rows,this._dirtyRowService.markDirty(L-1);L--;)this._resetBufferLine(L,S);this._dirtyRowService.markDirty(0);break;case 3:const E=this._activeBuffer.lines.length-this._bufferService.rows;E>0&&(this._activeBuffer.lines.trimStart(E),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-E,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-E,0),this._onScroll.fire(0))}return!0}eraseInLine(p,S=!1){switch(this._restrictCursor(this._bufferService.cols),p.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,S);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,S);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,S)}return this._dirtyRowService.markDirty(this._activeBuffer.y),!0}insertLines(p){this._restrictCursor();let S=p.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.ythis._activeBuffer.scrollBottom||this._activeBuffer.y0||(this._is("xterm")||this._is("rxvt-unicode")||this._is("screen")?this._coreService.triggerDataEvent(o.C0.ESC+"[?1;2c"):this._is("linux")&&this._coreService.triggerDataEvent(o.C0.ESC+"[?6c")),!0}sendDeviceAttributesSecondary(p){return p.params[0]>0||(this._is("xterm")?this._coreService.triggerDataEvent(o.C0.ESC+"[>0;276;0c"):this._is("rxvt-unicode")?this._coreService.triggerDataEvent(o.C0.ESC+"[>85;95;0c"):this._is("linux")?this._coreService.triggerDataEvent(p.params[0]+"c"):this._is("screen")&&this._coreService.triggerDataEvent(o.C0.ESC+"[>83;40003;0c")),!0}_is(p){return(this._optionsService.rawOptions.termName+"").indexOf(p)===0}setMode(p){for(let S=0;SF?1:2,P=p.params[0];return R=P,M=S?P===2?3:P===4?B(k.modes.insertMode):P===12?4:P===20?B(x.convertEol):0:P===1?B(L.applicationCursorKeys):P===3?x.windowOptions.setWinLines?T===80?2:T===132?1:0:0:P===6?B(L.origin):P===7?B(L.wraparound):P===8?3:P===9?B(E==="X10"):P===12?B(x.cursorBlink):P===25?B(!k.isCursorHidden):P===45?B(L.reverseWraparound):P===66?B(L.applicationKeypad):P===1e3?B(E==="VT200"):P===1002?B(E==="DRAG"):P===1003?B(E==="ANY"):P===1004?B(L.sendFocus):P===1005?4:P===1006?B(A==="SGR"):P===1015?4:P===1016?B(A==="SGR_PIXELS"):P===1048?1:P===47||P===1047||P===1049?B(H===W):P===2004?B(L.bracketedPasteMode):0,k.triggerDataEvent(`${o.C0.ESC}[${S?"":"?"}${R};${M}$y`),!0;var R,M}_updateAttrColor(p,S,L,E,A){return S===2?(p|=50331648,p&=-16777216,p|=t.AttributeData.fromColorRGB([L,E,A])):S===5&&(p&=-50331904,p|=33554432|255&L),p}_extractColor(p,S,L){const E=[0,0,-1,0,0,0];let A=0,k=0;do{if(E[k+A]=p.params[S+k],p.hasSubParams(S+k)){const O=p.getSubParams(S+k);let T=0;do E[1]===5&&(A=1),E[k+T+1+A]=O[T];while(++T=2||E[1]===2&&k+A>=5)break;E[1]&&(A=1)}while(++k+S5)&&(p=1),S.extended.underlineStyle=p,S.fg|=268435456,p===0&&(S.fg&=-268435457),S.updateExtended()}charAttributes(p){if(p.length===1&&p.params[0]===0)return this._curAttrData.fg=a.DEFAULT_ATTR_DATA.fg,this._curAttrData.bg=a.DEFAULT_ATTR_DATA.bg,!0;const S=p.length;let L;const E=this._curAttrData;for(let A=0;A=30&&L<=37?(E.fg&=-50331904,E.fg|=16777216|L-30):L>=40&&L<=47?(E.bg&=-50331904,E.bg|=16777216|L-40):L>=90&&L<=97?(E.fg&=-50331904,E.fg|=16777224|L-90):L>=100&&L<=107?(E.bg&=-50331904,E.bg|=16777224|L-100):L===0?(E.fg=a.DEFAULT_ATTR_DATA.fg,E.bg=a.DEFAULT_ATTR_DATA.bg):L===1?E.fg|=134217728:L===3?E.bg|=67108864:L===4?(E.fg|=268435456,this._processUnderline(p.hasSubParams(A)?p.getSubParams(A)[0]:1,E)):L===5?E.fg|=536870912:L===7?E.fg|=67108864:L===8?E.fg|=1073741824:L===9?E.fg|=2147483648:L===2?E.bg|=134217728:L===21?this._processUnderline(2,E):L===22?(E.fg&=-134217729,E.bg&=-134217729):L===23?E.bg&=-67108865:L===24?(E.fg&=-268435457,this._processUnderline(0,E)):L===25?E.fg&=-536870913:L===27?E.fg&=-67108865:L===28?E.fg&=-1073741825:L===29?E.fg&=2147483647:L===39?(E.fg&=-67108864,E.fg|=16777215&a.DEFAULT_ATTR_DATA.fg):L===49?(E.bg&=-67108864,E.bg|=16777215&a.DEFAULT_ATTR_DATA.bg):L===38||L===48||L===58?A+=this._extractColor(p,A,E):L===59?(E.extended=E.extended.clone(),E.extended.underlineColor=-1,E.updateExtended()):L===100?(E.fg&=-67108864,E.fg|=16777215&a.DEFAULT_ATTR_DATA.fg,E.bg&=-67108864,E.bg|=16777215&a.DEFAULT_ATTR_DATA.bg):this._logService.debug("Unknown SGR attribute: %d.",L);return!0}deviceStatus(p){switch(p.params[0]){case 5:this._coreService.triggerDataEvent(`${o.C0.ESC}[0n`);break;case 6:const S=this._activeBuffer.y+1,L=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${o.C0.ESC}[${S};${L}R`)}return!0}deviceStatusPrivate(p){if(p.params[0]===6){const S=this._activeBuffer.y+1,L=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${o.C0.ESC}[?${S};${L}R`)}return!0}softReset(p){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=a.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(p){const S=p.params[0]||1;switch(S){case 1:case 2:this._optionsService.options.cursorStyle="block";break;case 3:case 4:this._optionsService.options.cursorStyle="underline";break;case 5:case 6:this._optionsService.options.cursorStyle="bar"}const L=S%2==1;return this._optionsService.options.cursorBlink=L,!0}setScrollRegion(p){const S=p.params[0]||1;let L;return(p.length<2||(L=p.params[1])>this._bufferService.rows||L===0)&&(L=this._bufferService.rows),L>S&&(this._activeBuffer.scrollTop=S-1,this._activeBuffer.scrollBottom=L-1,this._setCursor(0,0)),!0}windowOptions(p){if(!m(p.params[0],this._optionsService.rawOptions.windowOptions))return!0;const S=p.length>1?p.params[1]:0;switch(p.params[0]){case 14:S!==2&&this._onRequestWindowsOptionsReport.fire(b.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(b.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${o.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:S!==0&&S!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),S!==0&&S!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:S!==0&&S!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),S!==0&&S!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(p){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(p){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(p){return this._windowTitle=p,this._onTitleChange.fire(p),!0}setIconName(p){return this._iconName=p,!0}setOrReportIndexedColor(p){const S=[],L=p.split(";");for(;L.length>1;){const E=L.shift(),A=L.shift();if(/^\d+$/.exec(E)){const k=parseInt(E);if(0<=k&&k<256)if(A==="?")S.push({type:0,index:k});else{const O=(0,u.parseColor)(A);O&&S.push({type:1,index:k,color:O})}}}return S.length&&this._onColor.fire(S),!0}setHyperlink(p){const S=p.split(";");return!(S.length<2)&&(S[1]?this._createHyperlink(S[0],S[1]):!S[0]&&this._finishHyperlink())}_createHyperlink(p,S){this._currentLinkId!==void 0&&this._finishHyperlink();const L=p.split(":");let E;const A=L.findIndex(k=>k.startsWith("id="));return A!==-1&&(E=L[A].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._currentLinkId=this._oscLinkService.registerLink({id:E,uri:S}),this._curAttrData.extended.urlId=this._currentLinkId,this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),this._currentLinkId=void 0,!0}_setOrReportSpecialColor(p,S){const L=p.split(";");for(let E=0;E=this._specialColors.length);++E,++S)if(L[E]==="?")this._onColor.fire([{type:0,index:this._specialColors[S]}]);else{const A=(0,u.parseColor)(L[E]);A&&this._onColor.fire([{type:1,index:this._specialColors[S],color:A}])}return!0}setOrReportFgColor(p){return this._setOrReportSpecialColor(p,0)}setOrReportBgColor(p){return this._setOrReportSpecialColor(p,1)}setOrReportCursorColor(p){return this._setOrReportSpecialColor(p,2)}restoreIndexedColor(p){if(!p)return this._onColor.fire([{type:2}]),!0;const S=[],L=p.split(";");for(let E=0;E=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){const p=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,p,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowService.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=a.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=a.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(p){return this._charsetService.setgLevel(p),!0}screenAlignmentPattern(){const p=new n.CellData;p.content=4194304|"E".charCodeAt(0),p.fg=this._curAttrData.fg,p.bg=this._curAttrData.bg,this._setCursor(0,0);for(let S=0;S(this._coreService.triggerDataEvent(`${o.C0.ESC}${A}${o.C0.ESC}\\`),!0))(p==='"q'?`P1$r${this._curAttrData.isProtected()?1:0}"q`:p==='"p'?'P1$r61;1"p':p==="r"?`P1$r${L.scrollTop+1};${L.scrollBottom+1}r`:p==="m"?"P1$r0m":p===" q"?`P1$r${{block:2,underline:4,bar:6}[E.cursorStyle]-(E.cursorBlink?1:0)} q`:"P0$r")}}r.InputHandler=y},844:(D,r)=>{function h(o){for(const d of o)d.dispose();o.length=0}Object.defineProperty(r,"__esModule",{value:!0}),r.getDisposeArrayDisposable=r.disposeArray=r.toDisposable=r.Disposable=void 0,r.Disposable=class{constructor(){this._disposables=[],this._isDisposed=!1}dispose(){this._isDisposed=!0;for(const o of this._disposables)o.dispose();this._disposables.length=0}register(o){return this._disposables.push(o),o}unregister(o){const d=this._disposables.indexOf(o);d!==-1&&this._disposables.splice(d,1)}},r.toDisposable=function(o){return{dispose:o}},r.disposeArray=h,r.getDisposeArrayDisposable=function(o){return{dispose:()=>h(o)}}},1505:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.FourKeyMap=r.TwoKeyMap=void 0;class h{constructor(){this._data={}}set(d,c,_){this._data[d]||(this._data[d]={}),this._data[d][c]=_}get(d,c){return this._data[d]?this._data[d][c]:void 0}clear(){this._data={}}}r.TwoKeyMap=h,r.FourKeyMap=class{constructor(){this._data=new h}set(o,d,c,_,l){this._data.get(o,d)||this._data.set(o,d,new h),this._data.get(o,d).set(c,_,l)}get(o,d,c,_){var l;return(l=this._data.get(o,d))===null||l===void 0?void 0:l.get(c,_)}clear(){this._data.clear()}}},6114:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.isLinux=r.isWindows=r.isIphone=r.isIpad=r.isMac=r.isSafari=r.isLegacyEdge=r.isFirefox=void 0;const h=typeof navigator=="undefined",o=h?"node":navigator.userAgent,d=h?"node":navigator.platform;r.isFirefox=o.includes("Firefox"),r.isLegacyEdge=o.includes("Edge"),r.isSafari=/^((?!chrome|android).)*safari/i.test(o),r.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(d),r.isIpad=d==="iPad",r.isIphone=d==="iPhone",r.isWindows=["Windows","Win16","Win32","WinCE"].includes(d),r.isLinux=d.indexOf("Linux")>=0},6106:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.SortedList=void 0;let h=0;r.SortedList=class{constructor(o){this._getKey=o,this._array=[]}clear(){this._array.length=0}insert(o){this._array.length!==0?(h=this._search(this._getKey(o),0,this._array.length-1),this._array.splice(h,0,o)):this._array.push(o)}delete(o){if(this._array.length===0)return!1;const d=this._getKey(o);if(d===void 0||(h=this._search(d,0,this._array.length-1),h===-1)||this._getKey(this._array[h])!==d)return!1;do if(this._array[h]===o)return this._array.splice(h,1),!0;while(++h=this._array.length)&&this._getKey(this._array[h])===o))do yield this._array[h];while(++h=this._array.length)&&this._getKey(this._array[h])===o))do d(this._array[h]);while(++ho)return this._search(o,d,_-1);if(l0&&this._getKey(this._array[_-1])===o;)_--;return _}}},8273:(D,r)=>{function h(o,d,c=0,_=o.length){if(c>=o.length)return o;c=(o.length+c)%o.length,_=_>=o.length?o.length:(o.length+_)%o.length;for(let l=c;l<_;++l)o[l]=d;return o}Object.defineProperty(r,"__esModule",{value:!0}),r.concat=r.fillFallback=r.fill=void 0,r.fill=function(o,d,c,_){return o.fill?o.fill(d,c,_):h(o,d,c,_)},r.fillFallback=h,r.concat=function(o,d){const c=new o.constructor(o.length+d.length);return c.set(o),c.set(d,o.length),c}},9282:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.updateWindowsModeWrappedState=void 0;const o=h(643);r.updateWindowsModeWrappedState=function(d){const c=d.buffer.lines.get(d.buffer.ybase+d.buffer.y-1),_=c==null?void 0:c.get(d.cols-1),l=d.buffer.lines.get(d.buffer.ybase+d.buffer.y);l&&_&&(l.isWrapped=_[o.CHAR_DATA_CODE_INDEX]!==o.NULL_CELL_CODE&&_[o.CHAR_DATA_CODE_INDEX]!==o.WHITESPACE_CELL_CODE)}},3734:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ExtendedAttrs=r.AttributeData=void 0;class h{constructor(){this.fg=0,this.bg=0,this.extended=new o}static toColorRGB(c){return[c>>>16&255,c>>>8&255,255&c]}static fromColorRGB(c){return(255&c[0])<<16|(255&c[1])<<8|255&c[2]}clone(){const c=new h;return c.fg=this.fg,c.bg=this.bg,c.extended=this.extended.clone(),c}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return(50331648&this.fg)==50331648}isBgRGB(){return(50331648&this.bg)==50331648}isFgPalette(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432}isBgPalette(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432}isFgDefault(){return(50331648&this.fg)==0}isBgDefault(){return(50331648&this.bg)==0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==50331648:this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==0:this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}}r.AttributeData=h;class o{constructor(c=0,_=0){this._ext=0,this._urlId=0,this._ext=c,this._urlId=_}get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(c){this._ext=c}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(c){this._ext&=-469762049,this._ext|=c<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(c){this._ext&=-67108864,this._ext|=67108863&c}get urlId(){return this._urlId}set urlId(c){this._urlId=c}clone(){return new o(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}r.ExtendedAttrs=o},9092:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.BufferStringIterator=r.Buffer=r.MAX_BUFFER_SIZE=void 0;const o=h(6349),d=h(8437),c=h(511),_=h(643),l=h(4634),a=h(4863),i=h(7116),e=h(3734);r.MAX_BUFFER_SIZE=4294967295,r.Buffer=class{constructor(t,s,f){this._hasScrollback=t,this._optionsService=s,this._bufferService=f,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.savedY=0,this.savedX=0,this.savedCurAttrData=d.DEFAULT_ATTR_DATA.clone(),this.savedCharset=i.DEFAULT_CHARSET,this.markers=[],this._nullCell=c.CellData.fromCharData([0,_.NULL_CELL_CHAR,_.NULL_CELL_WIDTH,_.NULL_CELL_CODE]),this._whitespaceCell=c.CellData.fromCharData([0,_.WHITESPACE_CELL_CHAR,_.WHITESPACE_CELL_WIDTH,_.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new o.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(t){return t?(this._nullCell.fg=t.fg,this._nullCell.bg=t.bg,this._nullCell.extended=t.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new e.ExtendedAttrs),this._nullCell}getWhitespaceCell(t){return t?(this._whitespaceCell.fg=t.fg,this._whitespaceCell.bg=t.bg,this._whitespaceCell.extended=t.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new e.ExtendedAttrs),this._whitespaceCell}getBlankLine(t,s){return new d.BufferLine(this._bufferService.cols,this.getNullCell(t),s)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){const t=this.ybase+this.y-this.ydisp;return t>=0&&tr.MAX_BUFFER_SIZE?r.MAX_BUFFER_SIZE:s}fillViewportRows(t){if(this.lines.length===0){t===void 0&&(t=d.DEFAULT_ATTR_DATA);let s=this._rows;for(;s--;)this.lines.push(this.getBlankLine(t))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new o.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(t,s){const f=this.getNullCell(d.DEFAULT_ATTR_DATA),v=this._getCorrectBufferLength(s);if(v>this.lines.maxLength&&(this.lines.maxLength=v),this.lines.length>0){if(this._cols0&&this.lines.length<=this.ybase+this.y+u+1?(this.ybase--,u++,this.ydisp>0&&this.ydisp--):this.lines.push(new d.BufferLine(t,f)));else for(let C=this._rows;C>s;C--)this.lines.length>s+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(v0&&(this.lines.trimStart(C),this.ybase=Math.max(this.ybase-C,0),this.ydisp=Math.max(this.ydisp-C,0),this.savedY=Math.max(this.savedY-C,0)),this.lines.maxLength=v}this.x=Math.min(this.x,t-1),this.y=Math.min(this.y,s-1),u&&(this.y+=u),this.savedX=Math.min(this.savedX,t-1),this.scrollTop=0}if(this.scrollBottom=s-1,this._isReflowEnabled&&(this._reflow(t,s),this._cols>t))for(let u=0;uthis._cols?this._reflowLarger(t,s):this._reflowSmaller(t,s))}_reflowLarger(t,s){const f=(0,l.reflowLargerGetLinesToRemove)(this.lines,this._cols,t,this.ybase+this.y,this.getNullCell(d.DEFAULT_ATTR_DATA));if(f.length>0){const v=(0,l.reflowLargerCreateNewLayout)(this.lines,f);(0,l.reflowLargerApplyNewLayout)(this.lines,v.layout),this._reflowLargerAdjustViewport(t,s,v.countRemoved)}}_reflowLargerAdjustViewport(t,s,f){const v=this.getNullCell(d.DEFAULT_ATTR_DATA);let u=f;for(;u-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length=0;C--){let g=this.lines.get(C);if(!g||!g.isWrapped&&g.getTrimmedLength()<=t)continue;const m=[g];for(;g.isWrapped&&C>0;)g=this.lines.get(--C),m.unshift(g);const b=this.ybase+this.y;if(b>=C&&b0&&(v.push({start:C+m.length+u,newLines:L}),u+=L.length),m.push(...L);let E=w.length-1,A=w[E];A===0&&(E--,A=w[E]);let k=m.length-p-1,O=y;for(;k>=0;){const H=Math.min(O,A);if(m[E]===void 0)break;if(m[E].copyCellsFrom(m[k],O-H,A-H,H,!0),A-=H,A===0&&(E--,A=w[E]),O-=H,O===0){k--;const W=Math.max(k,0);O=(0,l.getWrappedLineTrimmedLength)(m,W,this._cols)}}for(let H=0;H0;)this.ybase===0?this.y0){const C=[],g=[];for(let E=0;E=0;E--)if(w&&w.start>b+p){for(let A=w.newLines.length-1;A>=0;A--)this.lines.set(E--,w.newLines[A]);E++,C.push({index:b+1,amount:w.newLines.length}),p+=w.newLines.length,w=v[++y]}else this.lines.set(E,g[b--]);let S=0;for(let E=C.length-1;E>=0;E--)C[E].index+=S,this.lines.onInsertEmitter.fire(C[E]),S+=C[E].amount;const L=Math.max(0,m+u-this.lines.maxLength);L>0&&this.lines.onTrimEmitter.fire(L)}}stringIndexToBufferIndex(t,s,f=!1){for(;s;){const v=this.lines.get(t);if(!v)return[-1,-1];const u=f?v.getTrimmedLength():v.length;for(let C=0;C0&&this.lines.get(s).isWrapped;)s--;for(;f+10;);return t>=this._cols?this._cols-1:t<0?0:t}nextStop(t){for(t==null&&(t=this.x);!this.tabs[++t]&&t=this._cols?this._cols-1:t<0?0:t}clearMarkers(t){this._isClearing=!0;for(let s=0;s{s.line-=f,s.line<0&&s.dispose()})),s.register(this.lines.onInsert(f=>{s.line>=f.index&&(s.line+=f.amount)})),s.register(this.lines.onDelete(f=>{s.line>=f.index&&s.linef.index&&(s.line-=f.amount)})),s.register(s.onDispose(()=>this._removeMarker(s))),s}_removeMarker(t){this._isClearing||this.markers.splice(this.markers.indexOf(t),1)}iterator(t,s,f,v,u){return new n(this,t,s,f,v,u)}};class n{constructor(s,f,v=0,u=s.lines.length,C=0,g=0){this._buffer=s,this._trimRight=f,this._startIndex=v,this._endIndex=u,this._startOverscan=C,this._endOverscan=g,this._startIndex<0&&(this._startIndex=0),this._endIndex>this._buffer.lines.length&&(this._endIndex=this._buffer.lines.length),this._current=this._startIndex}hasNext(){return this._currentthis._endIndex+this._endOverscan&&(s.last=this._endIndex+this._endOverscan),s.first=Math.max(s.first,0),s.last=Math.min(s.last,this._buffer.lines.length);let f="";for(let v=s.first;v<=s.last;++v)f+=this._buffer.translateBufferLineToString(v,this._trimRight);return this._current=s.last+1,{range:s,content:f}}}r.BufferStringIterator=n},8437:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.BufferLine=r.DEFAULT_ATTR_DATA=void 0;const o=h(482),d=h(643),c=h(511),_=h(3734);r.DEFAULT_ATTR_DATA=Object.freeze(new _.AttributeData);const l={startIndex:0};class a{constructor(e,n,t=!1){this.isWrapped=t,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*e);const s=n||c.CellData.fromCharData([0,d.NULL_CELL_CHAR,d.NULL_CELL_WIDTH,d.NULL_CELL_CODE]);for(let f=0;f>22,2097152&n?this._combined[e].charCodeAt(this._combined[e].length-1):t]}set(e,n){this._data[3*e+1]=n[d.CHAR_DATA_ATTR_INDEX],n[d.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[e]=n[1],this._data[3*e+0]=2097152|e|n[d.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*e+0]=n[d.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|n[d.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(e){return this._data[3*e+0]>>22}hasWidth(e){return 12582912&this._data[3*e+0]}getFg(e){return this._data[3*e+1]}getBg(e){return this._data[3*e+2]}hasContent(e){return 4194303&this._data[3*e+0]}getCodePoint(e){const n=this._data[3*e+0];return 2097152&n?this._combined[e].charCodeAt(this._combined[e].length-1):2097151&n}isCombined(e){return 2097152&this._data[3*e+0]}getString(e){const n=this._data[3*e+0];return 2097152&n?this._combined[e]:2097151&n?(0,o.stringFromCodePoint)(2097151&n):""}isProtected(e){return 536870912&this._data[3*e+2]}loadCell(e,n){return l.startIndex=3*e,n.content=this._data[l.startIndex+0],n.fg=this._data[l.startIndex+1],n.bg=this._data[l.startIndex+2],2097152&n.content&&(n.combinedData=this._combined[e]),268435456&n.bg&&(n.extended=this._extendedAttrs[e]),n}setCell(e,n){2097152&n.content&&(this._combined[e]=n.combinedData),268435456&n.bg&&(this._extendedAttrs[e]=n.extended),this._data[3*e+0]=n.content,this._data[3*e+1]=n.fg,this._data[3*e+2]=n.bg}setCellFromCodePoint(e,n,t,s,f,v){268435456&f&&(this._extendedAttrs[e]=v),this._data[3*e+0]=n|t<<22,this._data[3*e+1]=s,this._data[3*e+2]=f}addCodepointToCell(e,n){let t=this._data[3*e+0];2097152&t?this._combined[e]+=(0,o.stringFromCodePoint)(n):(2097151&t?(this._combined[e]=(0,o.stringFromCodePoint)(2097151&t)+(0,o.stringFromCodePoint)(n),t&=-2097152,t|=2097152):t=n|4194304,this._data[3*e+0]=t)}insertCells(e,n,t,s){if((e%=this.length)&&this.getWidth(e-1)===2&&this.setCellFromCodePoint(e-1,0,1,(s==null?void 0:s.fg)||0,(s==null?void 0:s.bg)||0,(s==null?void 0:s.extended)||new _.ExtendedAttrs),n=0;--v)this.setCell(e+n+v,this.loadCell(e+v,f));for(let v=0;vthis.length){const t=new Uint32Array(3*e);this.length&&(3*e=e&&delete this._combined[v]}}else this._data=new Uint32Array(0),this._combined={};this.length=e}}fill(e,n=!1){if(n)for(let t=0;t=0;--e)if(4194303&this._data[3*e+0])return e+(this._data[3*e+0]>>22);return 0}copyCellsFrom(e,n,t,s,f){const v=e._data;if(f)for(let C=s-1;C>=0;C--){for(let g=0;g<3;g++)this._data[3*(t+C)+g]=v[3*(n+C)+g];268435456&v[3*(n+C)+2]&&(this._extendedAttrs[t+C]=e._extendedAttrs[n+C])}else for(let C=0;C=n&&(this._combined[g-n+t]=e._combined[g])}}translateToString(e=!1,n=0,t=this.length){e&&(t=Math.min(t,this.getTrimmedLength()));let s="";for(;n>22||1}return s}}r.BufferLine=a},4841:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.getRangeLength=void 0,r.getRangeLength=function(h,o){if(h.start.y>h.end.y)throw new Error(`Buffer range end (${h.end.x}, ${h.end.y}) cannot be before start (${h.start.x}, ${h.start.y})`);return o*(h.end.y-h.start.y)+(h.end.x-h.start.x+1)}},4634:(D,r)=>{function h(o,d,c){if(d===o.length-1)return o[d].getTrimmedLength();const _=!o[d].hasContent(c-1)&&o[d].getWidth(c-1)===1,l=o[d+1].getWidth(0)===2;return _&&l?c-1:c}Object.defineProperty(r,"__esModule",{value:!0}),r.getWrappedLineTrimmedLength=r.reflowSmallerGetNewLineLengths=r.reflowLargerApplyNewLayout=r.reflowLargerCreateNewLayout=r.reflowLargerGetLinesToRemove=void 0,r.reflowLargerGetLinesToRemove=function(o,d,c,_,l){const a=[];for(let i=0;i=i&&_0&&(g>s||t[g].getTrimmedLength()===0);g--)C++;C>0&&(a.push(i+t.length-C),a.push(C)),i+=t.length-1}return a},r.reflowLargerCreateNewLayout=function(o,d){const c=[];let _=0,l=d[_],a=0;for(let i=0;ih(o,t,d)).reduce((n,t)=>n+t);let a=0,i=0,e=0;for(;en&&(a-=n,i++);const t=o[i].getWidth(a-1)===2;t&&a--;const s=t?c-1:c;_.push(s),e+=s}return _},r.getWrappedLineTrimmedLength=h},5295:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.BufferSet=void 0;const o=h(9092),d=h(8460),c=h(844);class _ extends c.Disposable{constructor(a,i){super(),this._optionsService=a,this._bufferService=i,this._onBufferActivate=this.register(new d.EventEmitter),this.reset()}get onBufferActivate(){return this._onBufferActivate.event}reset(){this._normal=new o.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new o.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(a){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(a),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))}resize(a,i){this._normal.resize(a,i),this._alt.resize(a,i)}setupTabStops(a){this._normal.setupTabStops(a),this._alt.setupTabStops(a)}}r.BufferSet=_},511:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.CellData=void 0;const o=h(482),d=h(643),c=h(3734);class _ extends c.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new c.ExtendedAttrs,this.combinedData=""}static fromCharData(a){const i=new _;return i.setFromCharData(a),i}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,o.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(a){this.fg=a[d.CHAR_DATA_ATTR_INDEX],this.bg=0;let i=!1;if(a[d.CHAR_DATA_CHAR_INDEX].length>2)i=!0;else if(a[d.CHAR_DATA_CHAR_INDEX].length===2){const e=a[d.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=e&&e<=56319){const n=a[d.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=n&&n<=57343?this.content=1024*(e-55296)+n-56320+65536|a[d.CHAR_DATA_WIDTH_INDEX]<<22:i=!0}else i=!0}else this.content=a[d.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|a[d.CHAR_DATA_WIDTH_INDEX]<<22;i&&(this.combinedData=a[d.CHAR_DATA_CHAR_INDEX],this.content=2097152|a[d.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}r.CellData=_},643:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.WHITESPACE_CELL_CODE=r.WHITESPACE_CELL_WIDTH=r.WHITESPACE_CELL_CHAR=r.NULL_CELL_CODE=r.NULL_CELL_WIDTH=r.NULL_CELL_CHAR=r.CHAR_DATA_CODE_INDEX=r.CHAR_DATA_WIDTH_INDEX=r.CHAR_DATA_CHAR_INDEX=r.CHAR_DATA_ATTR_INDEX=r.DEFAULT_EXT=r.DEFAULT_ATTR=r.DEFAULT_COLOR=void 0,r.DEFAULT_COLOR=256,r.DEFAULT_ATTR=256|r.DEFAULT_COLOR<<9,r.DEFAULT_EXT=0,r.CHAR_DATA_ATTR_INDEX=0,r.CHAR_DATA_CHAR_INDEX=1,r.CHAR_DATA_WIDTH_INDEX=2,r.CHAR_DATA_CODE_INDEX=3,r.NULL_CELL_CHAR="",r.NULL_CELL_WIDTH=1,r.NULL_CELL_CODE=0,r.WHITESPACE_CELL_CHAR=" ",r.WHITESPACE_CELL_WIDTH=1,r.WHITESPACE_CELL_CODE=32},4863:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.Marker=void 0;const o=h(8460),d=h(844);class c extends d.Disposable{constructor(l){super(),this.line=l,this._id=c._nextId++,this.isDisposed=!1,this._onDispose=new o.EventEmitter}get id(){return this._id}get onDispose(){return this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),super.dispose())}}r.Marker=c,c._nextId=1},7116:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.DEFAULT_CHARSET=r.CHARSETS=void 0,r.CHARSETS={},r.DEFAULT_CHARSET=r.CHARSETS.B,r.CHARSETS[0]={"`":"\u25C6",a:"\u2592",b:"\u2409",c:"\u240C",d:"\u240D",e:"\u240A",f:"\xB0",g:"\xB1",h:"\u2424",i:"\u240B",j:"\u2518",k:"\u2510",l:"\u250C",m:"\u2514",n:"\u253C",o:"\u23BA",p:"\u23BB",q:"\u2500",r:"\u23BC",s:"\u23BD",t:"\u251C",u:"\u2524",v:"\u2534",w:"\u252C",x:"\u2502",y:"\u2264",z:"\u2265","{":"\u03C0","|":"\u2260","}":"\xA3","~":"\xB7"},r.CHARSETS.A={"#":"\xA3"},r.CHARSETS.B=void 0,r.CHARSETS[4]={"#":"\xA3","@":"\xBE","[":"ij","\\":"\xBD","]":"|","{":"\xA8","|":"f","}":"\xBC","~":"\xB4"},r.CHARSETS.C=r.CHARSETS[5]={"[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},r.CHARSETS.R={"#":"\xA3","@":"\xE0","[":"\xB0","\\":"\xE7","]":"\xA7","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xA8"},r.CHARSETS.Q={"@":"\xE0","[":"\xE2","\\":"\xE7","]":"\xEA","^":"\xEE","`":"\xF4","{":"\xE9","|":"\xF9","}":"\xE8","~":"\xFB"},r.CHARSETS.K={"@":"\xA7","[":"\xC4","\\":"\xD6","]":"\xDC","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xDF"},r.CHARSETS.Y={"#":"\xA3","@":"\xA7","[":"\xB0","\\":"\xE7","]":"\xE9","`":"\xF9","{":"\xE0","|":"\xF2","}":"\xE8","~":"\xEC"},r.CHARSETS.E=r.CHARSETS[6]={"@":"\xC4","[":"\xC6","\\":"\xD8","]":"\xC5","^":"\xDC","`":"\xE4","{":"\xE6","|":"\xF8","}":"\xE5","~":"\xFC"},r.CHARSETS.Z={"#":"\xA3","@":"\xA7","[":"\xA1","\\":"\xD1","]":"\xBF","{":"\xB0","|":"\xF1","}":"\xE7"},r.CHARSETS.H=r.CHARSETS[7]={"@":"\xC9","[":"\xC4","\\":"\xD6","]":"\xC5","^":"\xDC","`":"\xE9","{":"\xE4","|":"\xF6","}":"\xE5","~":"\xFC"},r.CHARSETS["="]={"#":"\xF9","@":"\xE0","[":"\xE9","\\":"\xE7","]":"\xEA","^":"\xEE",_:"\xE8","`":"\xF4","{":"\xE4","|":"\xF6","}":"\xFC","~":"\xFB"}},2584:(D,r)=>{var h,o;Object.defineProperty(r,"__esModule",{value:!0}),r.C1_ESCAPED=r.C1=r.C0=void 0,function(d){d.NUL="\0",d.SOH="",d.STX="",d.ETX="",d.EOT="",d.ENQ="",d.ACK="",d.BEL="\x07",d.BS="\b",d.HT=" ",d.LF=` +`,d.VT="\v",d.FF="\f",d.CR="\r",d.SO="",d.SI="",d.DLE="",d.DC1="",d.DC2="",d.DC3="",d.DC4="",d.NAK="",d.SYN="",d.ETB="",d.CAN="",d.EM="",d.SUB="",d.ESC="\x1B",d.FS="",d.GS="",d.RS="",d.US="",d.SP=" ",d.DEL="\x7F"}(h=r.C0||(r.C0={})),(o=r.C1||(r.C1={})).PAD="\x80",o.HOP="\x81",o.BPH="\x82",o.NBH="\x83",o.IND="\x84",o.NEL="\x85",o.SSA="\x86",o.ESA="\x87",o.HTS="\x88",o.HTJ="\x89",o.VTS="\x8A",o.PLD="\x8B",o.PLU="\x8C",o.RI="\x8D",o.SS2="\x8E",o.SS3="\x8F",o.DCS="\x90",o.PU1="\x91",o.PU2="\x92",o.STS="\x93",o.CCH="\x94",o.MW="\x95",o.SPA="\x96",o.EPA="\x97",o.SOS="\x98",o.SGCI="\x99",o.SCI="\x9A",o.CSI="\x9B",o.ST="\x9C",o.OSC="\x9D",o.PM="\x9E",o.APC="\x9F",(r.C1_ESCAPED||(r.C1_ESCAPED={})).ST=`${h.ESC}\\`},7399:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.evaluateKeyboardEvent=void 0;const o=h(2584),d={48:["0",")"],49:["1","!"],50:["2","@"],51:["3","#"],52:["4","$"],53:["5","%"],54:["6","^"],55:["7","&"],56:["8","*"],57:["9","("],186:[";",":"],187:["=","+"],188:[",","<"],189:["-","_"],190:[".",">"],191:["/","?"],192:["`","~"],219:["[","{"],220:["\\","|"],221:["]","}"],222:["'",'"']};r.evaluateKeyboardEvent=function(c,_,l,a){const i={type:0,cancel:!1,key:void 0},e=(c.shiftKey?1:0)|(c.altKey?2:0)|(c.ctrlKey?4:0)|(c.metaKey?8:0);switch(c.keyCode){case 0:c.key==="UIKeyInputUpArrow"?i.key=_?o.C0.ESC+"OA":o.C0.ESC+"[A":c.key==="UIKeyInputLeftArrow"?i.key=_?o.C0.ESC+"OD":o.C0.ESC+"[D":c.key==="UIKeyInputRightArrow"?i.key=_?o.C0.ESC+"OC":o.C0.ESC+"[C":c.key==="UIKeyInputDownArrow"&&(i.key=_?o.C0.ESC+"OB":o.C0.ESC+"[B");break;case 8:if(c.altKey){i.key=o.C0.ESC+o.C0.DEL;break}i.key=o.C0.DEL;break;case 9:if(c.shiftKey){i.key=o.C0.ESC+"[Z";break}i.key=o.C0.HT,i.cancel=!0;break;case 13:i.key=c.altKey?o.C0.ESC+o.C0.CR:o.C0.CR,i.cancel=!0;break;case 27:i.key=o.C0.ESC,c.altKey&&(i.key=o.C0.ESC+o.C0.ESC),i.cancel=!0;break;case 37:if(c.metaKey)break;e?(i.key=o.C0.ESC+"[1;"+(e+1)+"D",i.key===o.C0.ESC+"[1;3D"&&(i.key=o.C0.ESC+(l?"b":"[1;5D"))):i.key=_?o.C0.ESC+"OD":o.C0.ESC+"[D";break;case 39:if(c.metaKey)break;e?(i.key=o.C0.ESC+"[1;"+(e+1)+"C",i.key===o.C0.ESC+"[1;3C"&&(i.key=o.C0.ESC+(l?"f":"[1;5C"))):i.key=_?o.C0.ESC+"OC":o.C0.ESC+"[C";break;case 38:if(c.metaKey)break;e?(i.key=o.C0.ESC+"[1;"+(e+1)+"A",l||i.key!==o.C0.ESC+"[1;3A"||(i.key=o.C0.ESC+"[1;5A")):i.key=_?o.C0.ESC+"OA":o.C0.ESC+"[A";break;case 40:if(c.metaKey)break;e?(i.key=o.C0.ESC+"[1;"+(e+1)+"B",l||i.key!==o.C0.ESC+"[1;3B"||(i.key=o.C0.ESC+"[1;5B")):i.key=_?o.C0.ESC+"OB":o.C0.ESC+"[B";break;case 45:c.shiftKey||c.ctrlKey||(i.key=o.C0.ESC+"[2~");break;case 46:i.key=e?o.C0.ESC+"[3;"+(e+1)+"~":o.C0.ESC+"[3~";break;case 36:i.key=e?o.C0.ESC+"[1;"+(e+1)+"H":_?o.C0.ESC+"OH":o.C0.ESC+"[H";break;case 35:i.key=e?o.C0.ESC+"[1;"+(e+1)+"F":_?o.C0.ESC+"OF":o.C0.ESC+"[F";break;case 33:c.shiftKey?i.type=2:c.ctrlKey?i.key=o.C0.ESC+"[5;"+(e+1)+"~":i.key=o.C0.ESC+"[5~";break;case 34:c.shiftKey?i.type=3:c.ctrlKey?i.key=o.C0.ESC+"[6;"+(e+1)+"~":i.key=o.C0.ESC+"[6~";break;case 112:i.key=e?o.C0.ESC+"[1;"+(e+1)+"P":o.C0.ESC+"OP";break;case 113:i.key=e?o.C0.ESC+"[1;"+(e+1)+"Q":o.C0.ESC+"OQ";break;case 114:i.key=e?o.C0.ESC+"[1;"+(e+1)+"R":o.C0.ESC+"OR";break;case 115:i.key=e?o.C0.ESC+"[1;"+(e+1)+"S":o.C0.ESC+"OS";break;case 116:i.key=e?o.C0.ESC+"[15;"+(e+1)+"~":o.C0.ESC+"[15~";break;case 117:i.key=e?o.C0.ESC+"[17;"+(e+1)+"~":o.C0.ESC+"[17~";break;case 118:i.key=e?o.C0.ESC+"[18;"+(e+1)+"~":o.C0.ESC+"[18~";break;case 119:i.key=e?o.C0.ESC+"[19;"+(e+1)+"~":o.C0.ESC+"[19~";break;case 120:i.key=e?o.C0.ESC+"[20;"+(e+1)+"~":o.C0.ESC+"[20~";break;case 121:i.key=e?o.C0.ESC+"[21;"+(e+1)+"~":o.C0.ESC+"[21~";break;case 122:i.key=e?o.C0.ESC+"[23;"+(e+1)+"~":o.C0.ESC+"[23~";break;case 123:i.key=e?o.C0.ESC+"[24;"+(e+1)+"~":o.C0.ESC+"[24~";break;default:if(!c.ctrlKey||c.shiftKey||c.altKey||c.metaKey)if(l&&!a||!c.altKey||c.metaKey)!l||c.altKey||c.ctrlKey||c.shiftKey||!c.metaKey?c.key&&!c.ctrlKey&&!c.altKey&&!c.metaKey&&c.keyCode>=48&&c.key.length===1?i.key=c.key:c.key&&c.ctrlKey&&(c.key==="_"&&(i.key=o.C0.US),c.key==="@"&&(i.key=o.C0.NUL)):c.keyCode===65&&(i.type=1);else{const n=d[c.keyCode],t=n==null?void 0:n[c.shiftKey?1:0];if(t)i.key=o.C0.ESC+t;else if(c.keyCode>=65&&c.keyCode<=90){const s=c.ctrlKey?c.keyCode-64:c.keyCode+32;let f=String.fromCharCode(s);c.shiftKey&&(f=f.toUpperCase()),i.key=o.C0.ESC+f}else if(c.key==="Dead"&&c.code.startsWith("Key")){let s=c.code.slice(3,4);c.shiftKey||(s=s.toLowerCase()),i.key=o.C0.ESC+s,i.cancel=!0}}else c.keyCode>=65&&c.keyCode<=90?i.key=String.fromCharCode(c.keyCode-64):c.keyCode===32?i.key=o.C0.NUL:c.keyCode>=51&&c.keyCode<=55?i.key=String.fromCharCode(c.keyCode-51+27):c.keyCode===56?i.key=o.C0.DEL:c.keyCode===219?i.key=o.C0.ESC:c.keyCode===220?i.key=o.C0.FS:c.keyCode===221&&(i.key=o.C0.GS)}return i}},482:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.Utf8ToUtf32=r.StringToUtf32=r.utf32ToString=r.stringFromCodePoint=void 0,r.stringFromCodePoint=function(h){return h>65535?(h-=65536,String.fromCharCode(55296+(h>>10))+String.fromCharCode(h%1024+56320)):String.fromCharCode(h)},r.utf32ToString=function(h,o=0,d=h.length){let c="";for(let _=o;_65535?(l-=65536,c+=String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):c+=String.fromCharCode(l)}return c},r.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(h,o){const d=h.length;if(!d)return 0;let c=0,_=0;if(this._interim){const l=h.charCodeAt(_++);56320<=l&&l<=57343?o[c++]=1024*(this._interim-55296)+l-56320+65536:(o[c++]=this._interim,o[c++]=l),this._interim=0}for(let l=_;l=d)return this._interim=a,c;const i=h.charCodeAt(l);56320<=i&&i<=57343?o[c++]=1024*(a-55296)+i-56320+65536:(o[c++]=a,o[c++]=i)}else a!==65279&&(o[c++]=a)}return c}},r.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(h,o){const d=h.length;if(!d)return 0;let c,_,l,a,i=0,e=0,n=0;if(this.interim[0]){let f=!1,v=this.interim[0];v&=(224&v)==192?31:(240&v)==224?15:7;let u,C=0;for(;(u=63&this.interim[++C])&&C<4;)v<<=6,v|=u;const g=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,m=g-C;for(;n=d)return 0;if(u=h[n++],(192&u)!=128){n--,f=!0;break}this.interim[C++]=u,v<<=6,v|=63&u}f||(g===2?v<128?n--:o[i++]=v:g===3?v<2048||v>=55296&&v<=57343||v===65279||(o[i++]=v):v<65536||v>1114111||(o[i++]=v)),this.interim.fill(0)}const t=d-4;let s=n;for(;s=d)return this.interim[0]=c,i;if(_=h[s++],(192&_)!=128){s--;continue}if(e=(31&c)<<6|63&_,e<128){s--;continue}o[i++]=e}else if((240&c)==224){if(s>=d)return this.interim[0]=c,i;if(_=h[s++],(192&_)!=128){s--;continue}if(s>=d)return this.interim[0]=c,this.interim[1]=_,i;if(l=h[s++],(192&l)!=128){s--;continue}if(e=(15&c)<<12|(63&_)<<6|63&l,e<2048||e>=55296&&e<=57343||e===65279)continue;o[i++]=e}else if((248&c)==240){if(s>=d)return this.interim[0]=c,i;if(_=h[s++],(192&_)!=128){s--;continue}if(s>=d)return this.interim[0]=c,this.interim[1]=_,i;if(l=h[s++],(192&l)!=128){s--;continue}if(s>=d)return this.interim[0]=c,this.interim[1]=_,this.interim[2]=l,i;if(a=h[s++],(192&a)!=128){s--;continue}if(e=(7&c)<<18|(63&_)<<12|(63&l)<<6|63&a,e<65536||e>1114111)continue;o[i++]=e}}return i}}},225:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.UnicodeV6=void 0;const o=h(8273),d=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],c=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]];let _;r.UnicodeV6=class{constructor(){if(this.version="6",!_){_=new Uint8Array(65536),(0,o.fill)(_,1),_[0]=0,(0,o.fill)(_,0,1,32),(0,o.fill)(_,0,127,160),(0,o.fill)(_,2,4352,4448),_[9001]=2,_[9002]=2,(0,o.fill)(_,2,11904,42192),_[12351]=1,(0,o.fill)(_,2,44032,55204),(0,o.fill)(_,2,63744,64256),(0,o.fill)(_,2,65040,65050),(0,o.fill)(_,2,65072,65136),(0,o.fill)(_,2,65280,65377),(0,o.fill)(_,2,65504,65511);for(let l=0;li[t][1])return!1;for(;t>=n;)if(e=n+t>>1,a>i[e][1])n=e+1;else{if(!(a=131072&&l<=196605||l>=196608&&l<=262141?2:1}}},5981:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.WriteBuffer=void 0;const o=h(8460),d=typeof queueMicrotask=="undefined"?c=>{Promise.resolve().then(c)}:queueMicrotask;r.WriteBuffer=class{constructor(c){this._action=c,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._onWriteParsed=new o.EventEmitter}get onWriteParsed(){return this._onWriteParsed.event}writeSync(c,_){if(_!==void 0&&this._syncCalls>_)return void(this._syncCalls=0);if(this._pendingData+=c.length,this._writeBuffer.push(c),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;let l;for(this._isSyncWriting=!0;l=this._writeBuffer.shift();){this._action(l);const a=this._callbacks.shift();a&&a()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(c,_){if(this._pendingData>5e7)throw new Error("write data discarded, use flow control to avoid losing data");this._writeBuffer.length||(this._bufferOffset=0,setTimeout(()=>this._innerWrite())),this._pendingData+=c.length,this._writeBuffer.push(c),this._callbacks.push(_)}_innerWrite(c=0,_=!0){const l=c||Date.now();for(;this._writeBuffer.length>this._bufferOffset;){const a=this._writeBuffer[this._bufferOffset],i=this._action(a,_);if(i){const n=t=>Date.now()-l>=12?setTimeout(()=>this._innerWrite(0,t)):this._innerWrite(l,t);return void i.catch(t=>(d(()=>{throw t}),Promise.resolve(!1))).then(n)}const e=this._callbacks[this._bufferOffset];if(e&&e(),this._bufferOffset++,this._pendingData-=a.length,Date.now()-l>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout(()=>this._innerWrite())):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}}},5941:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.toRgbString=r.parseColor=void 0;const h=/^([\da-f])\/([\da-f])\/([\da-f])$|^([\da-f]{2})\/([\da-f]{2})\/([\da-f]{2})$|^([\da-f]{3})\/([\da-f]{3})\/([\da-f]{3})$|^([\da-f]{4})\/([\da-f]{4})\/([\da-f]{4})$/,o=/^[\da-f]+$/;function d(c,_){const l=c.toString(16),a=l.length<2?"0"+l:l;switch(_){case 4:return l[0];case 8:return a;case 12:return(a+a).slice(0,3);default:return a+a}}r.parseColor=function(c){if(!c)return;let _=c.toLowerCase();if(_.indexOf("rgb:")===0){_=_.slice(4);const l=h.exec(_);if(l){const a=l[1]?15:l[4]?255:l[7]?4095:65535;return[Math.round(parseInt(l[1]||l[4]||l[7]||l[10],16)/a*255),Math.round(parseInt(l[2]||l[5]||l[8]||l[11],16)/a*255),Math.round(parseInt(l[3]||l[6]||l[9]||l[12],16)/a*255)]}}else if(_.indexOf("#")===0&&(_=_.slice(1),o.exec(_)&&[3,6,9,12].includes(_.length))){const l=_.length/3,a=[0,0,0];for(let i=0;i<3;++i){const e=parseInt(_.slice(l*i,l*i+l),16);a[i]=l===1?e<<4:l===2?e:l===3?e>>4:e>>8}return a}},r.toRgbString=function(c,_=16){const[l,a,i]=c;return`rgb:${d(l,_)}/${d(a,_)}/${d(i,_)}`}},5770:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.PAYLOAD_LIMIT=void 0,r.PAYLOAD_LIMIT=1e7},6351:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.DcsHandler=r.DcsParser=void 0;const o=h(482),d=h(8742),c=h(5770),_=[];r.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=_,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=_}registerHandler(a,i){this._handlers[a]===void 0&&(this._handlers[a]=[]);const e=this._handlers[a];return e.push(i),{dispose:()=>{const n=e.indexOf(i);n!==-1&&e.splice(n,1)}}}clearHandler(a){this._handlers[a]&&delete this._handlers[a]}setHandlerFallback(a){this._handlerFb=a}reset(){if(this._active.length)for(let a=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;a>=0;--a)this._active[a].unhook(!1);this._stack.paused=!1,this._active=_,this._ident=0}hook(a,i){if(this.reset(),this._ident=a,this._active=this._handlers[a]||_,this._active.length)for(let e=this._active.length-1;e>=0;e--)this._active[e].hook(i);else this._handlerFb(this._ident,"HOOK",i)}put(a,i,e){if(this._active.length)for(let n=this._active.length-1;n>=0;n--)this._active[n].put(a,i,e);else this._handlerFb(this._ident,"PUT",(0,o.utf32ToString)(a,i,e))}unhook(a,i=!0){if(this._active.length){let e=!1,n=this._active.length-1,t=!1;if(this._stack.paused&&(n=this._stack.loopPosition-1,e=i,t=this._stack.fallThrough,this._stack.paused=!1),!t&&e===!1){for(;n>=0&&(e=this._active[n].unhook(a),e!==!0);n--)if(e instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=n,this._stack.fallThrough=!1,e;n--}for(;n>=0;n--)if(e=this._active[n].unhook(!1),e instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=n,this._stack.fallThrough=!0,e}else this._handlerFb(this._ident,"UNHOOK",a);this._active=_,this._ident=0}};const l=new d.Params;l.addParam(0),r.DcsHandler=class{constructor(a){this._handler=a,this._data="",this._params=l,this._hitLimit=!1}hook(a){this._params=a.length>1||a.params[0]?a.clone():l,this._data="",this._hitLimit=!1}put(a,i,e){this._hitLimit||(this._data+=(0,o.utf32ToString)(a,i,e),this._data.length>c.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}unhook(a){let i=!1;if(this._hitLimit)i=!1;else if(a&&(i=this._handler(this._data,this._params),i instanceof Promise))return i.then(e=>(this._params=l,this._data="",this._hitLimit=!1,e));return this._params=l,this._data="",this._hitLimit=!1,i}}},2015:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.EscapeSequenceParser=r.VT500_TRANSITION_TABLE=r.TransitionTable=void 0;const o=h(844),d=h(8273),c=h(8742),_=h(6242),l=h(6351);class a{constructor(t){this.table=new Uint8Array(t)}setDefault(t,s){(0,d.fill)(this.table,t<<4|s)}add(t,s,f,v){this.table[s<<8|t]=f<<4|v}addMany(t,s,f,v){for(let u=0;um),s=(g,m)=>t.slice(g,m),f=s(32,127),v=s(0,24);v.push(25),v.push.apply(v,s(28,32));const u=s(0,14);let C;for(C in n.setDefault(1,0),n.addMany(f,0,2,0),u)n.addMany([24,26,153,154],C,3,0),n.addMany(s(128,144),C,3,0),n.addMany(s(144,152),C,3,0),n.add(156,C,0,0),n.add(27,C,11,1),n.add(157,C,4,8),n.addMany([152,158,159],C,0,7),n.add(155,C,11,3),n.add(144,C,11,9);return n.addMany(v,0,3,0),n.addMany(v,1,3,1),n.add(127,1,0,1),n.addMany(v,8,0,8),n.addMany(v,3,3,3),n.add(127,3,0,3),n.addMany(v,4,3,4),n.add(127,4,0,4),n.addMany(v,6,3,6),n.addMany(v,5,3,5),n.add(127,5,0,5),n.addMany(v,2,3,2),n.add(127,2,0,2),n.add(93,1,4,8),n.addMany(f,8,5,8),n.add(127,8,5,8),n.addMany([156,27,24,26,7],8,6,0),n.addMany(s(28,32),8,0,8),n.addMany([88,94,95],1,0,7),n.addMany(f,7,0,7),n.addMany(v,7,0,7),n.add(156,7,0,0),n.add(127,7,0,7),n.add(91,1,11,3),n.addMany(s(64,127),3,7,0),n.addMany(s(48,60),3,8,4),n.addMany([60,61,62,63],3,9,4),n.addMany(s(48,60),4,8,4),n.addMany(s(64,127),4,7,0),n.addMany([60,61,62,63],4,0,6),n.addMany(s(32,64),6,0,6),n.add(127,6,0,6),n.addMany(s(64,127),6,0,0),n.addMany(s(32,48),3,9,5),n.addMany(s(32,48),5,9,5),n.addMany(s(48,64),5,0,6),n.addMany(s(64,127),5,7,0),n.addMany(s(32,48),4,9,5),n.addMany(s(32,48),1,9,2),n.addMany(s(32,48),2,9,2),n.addMany(s(48,127),2,10,0),n.addMany(s(48,80),1,10,0),n.addMany(s(81,88),1,10,0),n.addMany([89,90,92],1,10,0),n.addMany(s(96,127),1,10,0),n.add(80,1,11,9),n.addMany(v,9,0,9),n.add(127,9,0,9),n.addMany(s(28,32),9,0,9),n.addMany(s(32,48),9,9,12),n.addMany(s(48,60),9,8,10),n.addMany([60,61,62,63],9,9,10),n.addMany(v,11,0,11),n.addMany(s(32,128),11,0,11),n.addMany(s(28,32),11,0,11),n.addMany(v,10,0,10),n.add(127,10,0,10),n.addMany(s(28,32),10,0,10),n.addMany(s(48,60),10,8,10),n.addMany([60,61,62,63],10,0,11),n.addMany(s(32,48),10,9,12),n.addMany(v,12,0,12),n.add(127,12,0,12),n.addMany(s(28,32),12,0,12),n.addMany(s(32,48),12,9,12),n.addMany(s(48,64),12,0,11),n.addMany(s(64,127),12,12,13),n.addMany(s(64,127),10,12,13),n.addMany(s(64,127),9,12,13),n.addMany(v,13,13,13),n.addMany(f,13,13,13),n.add(127,13,0,13),n.addMany([27,156,24,26],13,14,0),n.add(i,0,2,0),n.add(i,8,5,8),n.add(i,6,0,6),n.add(i,11,0,11),n.add(i,13,13,13),n}();class e extends o.Disposable{constructor(t=r.VT500_TRANSITION_TABLE){super(),this._transitions=t,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new c.Params,this._params.addParam(0),this._collect=0,this.precedingCodepoint=0,this._printHandlerFb=(s,f,v)=>{},this._executeHandlerFb=s=>{},this._csiHandlerFb=(s,f)=>{},this._escHandlerFb=s=>{},this._errorHandlerFb=s=>s,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this._oscParser=new _.OscParser,this._dcsParser=new l.DcsParser,this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:"\\"},()=>!0)}_identifier(t,s=[64,126]){let f=0;if(t.prefix){if(t.prefix.length>1)throw new Error("only one byte as prefix supported");if(f=t.prefix.charCodeAt(0),f&&60>f||f>63)throw new Error("prefix must be in range 0x3c .. 0x3f")}if(t.intermediates){if(t.intermediates.length>2)throw new Error("only two bytes as intermediates are supported");for(let u=0;uC||C>47)throw new Error("intermediate must be in range 0x20 .. 0x2f");f<<=8,f|=C}}if(t.final.length!==1)throw new Error("final must be a single byte");const v=t.final.charCodeAt(0);if(s[0]>v||v>s[1])throw new Error(`final must be in range ${s[0]} .. ${s[1]}`);return f<<=8,f|=v,f}identToString(t){const s=[];for(;t;)s.push(String.fromCharCode(255&t)),t>>=8;return s.reverse().join("")}dispose(){this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null),this._oscParser.dispose(),this._dcsParser.dispose()}setPrintHandler(t){this._printHandler=t}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(t,s){const f=this._identifier(t,[48,126]);this._escHandlers[f]===void 0&&(this._escHandlers[f]=[]);const v=this._escHandlers[f];return v.push(s),{dispose:()=>{const u=v.indexOf(s);u!==-1&&v.splice(u,1)}}}clearEscHandler(t){this._escHandlers[this._identifier(t,[48,126])]&&delete this._escHandlers[this._identifier(t,[48,126])]}setEscHandlerFallback(t){this._escHandlerFb=t}setExecuteHandler(t,s){this._executeHandlers[t.charCodeAt(0)]=s}clearExecuteHandler(t){this._executeHandlers[t.charCodeAt(0)]&&delete this._executeHandlers[t.charCodeAt(0)]}setExecuteHandlerFallback(t){this._executeHandlerFb=t}registerCsiHandler(t,s){const f=this._identifier(t);this._csiHandlers[f]===void 0&&(this._csiHandlers[f]=[]);const v=this._csiHandlers[f];return v.push(s),{dispose:()=>{const u=v.indexOf(s);u!==-1&&v.splice(u,1)}}}clearCsiHandler(t){this._csiHandlers[this._identifier(t)]&&delete this._csiHandlers[this._identifier(t)]}setCsiHandlerFallback(t){this._csiHandlerFb=t}registerDcsHandler(t,s){return this._dcsParser.registerHandler(this._identifier(t),s)}clearDcsHandler(t){this._dcsParser.clearHandler(this._identifier(t))}setDcsHandlerFallback(t){this._dcsParser.setHandlerFallback(t)}registerOscHandler(t,s){return this._oscParser.registerHandler(t,s)}clearOscHandler(t){this._oscParser.clearHandler(t)}setOscHandlerFallback(t){this._oscParser.setHandlerFallback(t)}setErrorHandler(t){this._errorHandler=t}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingCodepoint=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(t,s,f,v,u){this._parseStack.state=t,this._parseStack.handlers=s,this._parseStack.handlerPos=f,this._parseStack.transition=v,this._parseStack.chunkPos=u}parse(t,s,f){let v,u=0,C=0,g=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,g=this._parseStack.chunkPos+1;else{if(f===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error("improper continuation due to previous async handler, giving up parsing");const m=this._parseStack.handlers;let b=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(f===!1&&b>-1){for(;b>=0&&(v=m[b](this._params),v!==!0);b--)if(v instanceof Promise)return this._parseStack.handlerPos=b,v}this._parseStack.handlers=[];break;case 4:if(f===!1&&b>-1){for(;b>=0&&(v=m[b](),v!==!0);b--)if(v instanceof Promise)return this._parseStack.handlerPos=b,v}this._parseStack.handlers=[];break;case 6:if(u=t[this._parseStack.chunkPos],v=this._dcsParser.unhook(u!==24&&u!==26,f),v)return v;u===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(u=t[this._parseStack.chunkPos],v=this._oscParser.end(u!==24&&u!==26,f),v)return v;u===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,g=this._parseStack.chunkPos+1,this.precedingCodepoint=0,this.currentState=15&this._parseStack.transition}for(let m=g;m>4){case 2:for(let S=m+1;;++S){if(S>=s||(u=t[S])<32||u>126&&u=s||(u=t[S])<32||u>126&&u=s||(u=t[S])<32||u>126&&u=s||(u=t[S])<32||u>126&&u=0&&(v=b[y](this._params),v!==!0);y--)if(v instanceof Promise)return this._preserveStack(3,b,y,C,m),v;y<0&&this._csiHandlerFb(this._collect<<8|u,this._params),this.precedingCodepoint=0;break;case 8:do switch(u){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(u-48)}while(++m47&&u<60);m--;break;case 9:this._collect<<=8,this._collect|=u;break;case 10:const w=this._escHandlers[this._collect<<8|u];let p=w?w.length-1:-1;for(;p>=0&&(v=w[p](),v!==!0);p--)if(v instanceof Promise)return this._preserveStack(4,w,p,C,m),v;p<0&&this._escHandlerFb(this._collect<<8|u),this.precedingCodepoint=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|u,this._params);break;case 13:for(let S=m+1;;++S)if(S>=s||(u=t[S])===24||u===26||u===27||u>127&&u=s||(u=t[S])<32||u>127&&u{Object.defineProperty(r,"__esModule",{value:!0}),r.OscHandler=r.OscParser=void 0;const o=h(5770),d=h(482),c=[];r.OscParser=class{constructor(){this._state=0,this._active=c,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(_,l){this._handlers[_]===void 0&&(this._handlers[_]=[]);const a=this._handlers[_];return a.push(l),{dispose:()=>{const i=a.indexOf(l);i!==-1&&a.splice(i,1)}}}clearHandler(_){this._handlers[_]&&delete this._handlers[_]}setHandlerFallback(_){this._handlerFb=_}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=c}reset(){if(this._state===2)for(let _=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;_>=0;--_)this._active[_].end(!1);this._stack.paused=!1,this._active=c,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||c,this._active.length)for(let _=this._active.length-1;_>=0;_--)this._active[_].start();else this._handlerFb(this._id,"START")}_put(_,l,a){if(this._active.length)for(let i=this._active.length-1;i>=0;i--)this._active[i].put(_,l,a);else this._handlerFb(this._id,"PUT",(0,d.utf32ToString)(_,l,a))}start(){this.reset(),this._state=1}put(_,l,a){if(this._state!==3){if(this._state===1)for(;l0&&this._put(_,l,a)}}end(_,l=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){let a=!1,i=this._active.length-1,e=!1;if(this._stack.paused&&(i=this._stack.loopPosition-1,a=l,e=this._stack.fallThrough,this._stack.paused=!1),!e&&a===!1){for(;i>=0&&(a=this._active[i].end(_),a!==!0);i--)if(a instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=i,this._stack.fallThrough=!1,a;i--}for(;i>=0;i--)if(a=this._active[i].end(!1),a instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=i,this._stack.fallThrough=!0,a}else this._handlerFb(this._id,"END",_);this._active=c,this._id=-1,this._state=0}}},r.OscHandler=class{constructor(_){this._handler=_,this._data="",this._hitLimit=!1}start(){this._data="",this._hitLimit=!1}put(_,l,a){this._hitLimit||(this._data+=(0,d.utf32ToString)(_,l,a),this._data.length>o.PAYLOAD_LIMIT&&(this._data="",this._hitLimit=!0))}end(_){let l=!1;if(this._hitLimit)l=!1;else if(_&&(l=this._handler(this._data),l instanceof Promise))return l.then(a=>(this._data="",this._hitLimit=!1,a));return this._data="",this._hitLimit=!1,l}}},8742:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.Params=void 0;const h=2147483647;class o{constructor(c=32,_=32){if(this.maxLength=c,this.maxSubParamsLength=_,_>256)throw new Error("maxSubParamsLength must not be greater than 256");this.params=new Int32Array(c),this.length=0,this._subParams=new Int32Array(_),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(c),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}static fromArray(c){const _=new o;if(!c.length)return _;for(let l=Array.isArray(c[0])?1:0;l>8,a=255&this._subParamsIdx[_];a-l>0&&c.push(Array.prototype.slice.call(this._subParams,l,a))}return c}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(c){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(c<-1)throw new Error("values lesser than -1 are not allowed");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=c>h?h:c}}addSubParam(c){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(c<-1)throw new Error("values lesser than -1 are not allowed");this._subParams[this._subParamsLength++]=c>h?h:c,this._subParamsIdx[this.length-1]++}}hasSubParams(c){return(255&this._subParamsIdx[c])-(this._subParamsIdx[c]>>8)>0}getSubParams(c){const _=this._subParamsIdx[c]>>8,l=255&this._subParamsIdx[c];return l-_>0?this._subParams.subarray(_,l):null}getSubParamsAll(){const c={};for(let _=0;_>8,a=255&this._subParamsIdx[_];a-l>0&&(c[_]=this._subParams.slice(l,a))}return c}addDigit(c){let _;if(this._rejectDigits||!(_=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;const l=this._digitIsSub?this._subParams:this.params,a=l[_-1];l[_-1]=~a?Math.min(10*a+c,h):c}}r.Params=o},5741:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.AddonManager=void 0,r.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let h=this._addons.length-1;h>=0;h--)this._addons[h].instance.dispose()}loadAddon(h,o){const d={instance:o,dispose:o.dispose,isDisposed:!1};this._addons.push(d),o.dispose=()=>this._wrappedAddonDispose(d),o.activate(h)}_wrappedAddonDispose(h){if(h.isDisposed)return;let o=-1;for(let d=0;d{Object.defineProperty(r,"__esModule",{value:!0}),r.BufferApiView=void 0;const o=h(3785),d=h(511);r.BufferApiView=class{constructor(c,_){this._buffer=c,this.type=_}init(c){return this._buffer=c,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(c){const _=this._buffer.lines.get(c);if(_)return new o.BufferLineApiView(_)}getNullCell(){return new d.CellData}}},3785:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.BufferLineApiView=void 0;const o=h(511);r.BufferLineApiView=class{constructor(d){this._line=d}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(d,c){if(!(d<0||d>=this._line.length))return c?(this._line.loadCell(d,c),c):this._line.loadCell(d,new o.CellData)}translateToString(d,c,_){return this._line.translateToString(d,c,_)}}},8285:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.BufferNamespaceApi=void 0;const o=h(8771),d=h(8460);r.BufferNamespaceApi=class{constructor(c){this._core=c,this._onBufferChange=new d.EventEmitter,this._normal=new o.BufferApiView(this._core.buffers.normal,"normal"),this._alternate=new o.BufferApiView(this._core.buffers.alt,"alternate"),this._core.buffers.onBufferActivate(()=>this._onBufferChange.fire(this.active))}get onBufferChange(){return this._onBufferChange.event}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error("Active buffer is neither normal nor alternate")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}}},7975:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ParserApi=void 0,r.ParserApi=class{constructor(h){this._core=h}registerCsiHandler(h,o){return this._core.registerCsiHandler(h,d=>o(d.toArray()))}addCsiHandler(h,o){return this.registerCsiHandler(h,o)}registerDcsHandler(h,o){return this._core.registerDcsHandler(h,(d,c)=>o(d,c.toArray()))}addDcsHandler(h,o){return this.registerDcsHandler(h,o)}registerEscHandler(h,o){return this._core.registerEscHandler(h,o)}addEscHandler(h,o){return this.registerEscHandler(h,o)}registerOscHandler(h,o){return this._core.registerOscHandler(h,o)}addOscHandler(h,o){return this.registerOscHandler(h,o)}}},7090:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.UnicodeApi=void 0,r.UnicodeApi=class{constructor(h){this._core=h}register(h){this._core.unicodeService.register(h)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(h){this._core.unicodeService.activeVersion=h}}},744:function(D,r,h){var o=this&&this.__decorate||function(e,n,t,s){var f,v=arguments.length,u=v<3?n:s===null?s=Object.getOwnPropertyDescriptor(n,t):s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(e,n,t,s);else for(var C=e.length-1;C>=0;C--)(f=e[C])&&(u=(v<3?f(u):v>3?f(n,t,u):f(n,t))||u);return v>3&&u&&Object.defineProperty(n,t,u),u},d=this&&this.__param||function(e,n){return function(t,s){n(t,s,e)}};Object.defineProperty(r,"__esModule",{value:!0}),r.BufferService=r.MINIMUM_ROWS=r.MINIMUM_COLS=void 0;const c=h(2585),_=h(5295),l=h(8460),a=h(844);r.MINIMUM_COLS=2,r.MINIMUM_ROWS=1;let i=class extends a.Disposable{constructor(e){super(),this.isUserScrolling=!1,this._onResize=new l.EventEmitter,this._onScroll=new l.EventEmitter,this.cols=Math.max(e.rawOptions.cols||0,r.MINIMUM_COLS),this.rows=Math.max(e.rawOptions.rows||0,r.MINIMUM_ROWS),this.buffers=new _.BufferSet(e,this)}get onResize(){return this._onResize.event}get onScroll(){return this._onScroll.event}get buffer(){return this.buffers.active}dispose(){super.dispose(),this.buffers.dispose()}resize(e,n){this.cols=e,this.rows=n,this.buffers.resize(e,n),this.buffers.setupTabStops(this.cols),this._onResize.fire({cols:e,rows:n})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(e,n=!1){const t=this.buffer;let s;s=this._cachedBlankLine,s&&s.length===this.cols&&s.getFg(0)===e.fg&&s.getBg(0)===e.bg||(s=t.getBlankLine(e,n),this._cachedBlankLine=s),s.isWrapped=n;const f=t.ybase+t.scrollTop,v=t.ybase+t.scrollBottom;if(t.scrollTop===0){const u=t.lines.isFull;v===t.lines.length-1?u?t.lines.recycle().copyFrom(s):t.lines.push(s.clone()):t.lines.splice(v+1,0,s.clone()),u?this.isUserScrolling&&(t.ydisp=Math.max(t.ydisp-1,0)):(t.ybase++,this.isUserScrolling||t.ydisp++)}else{const u=v-f+1;t.lines.shiftElements(f+1,u-1,-1),t.lines.set(v,s.clone())}this.isUserScrolling||(t.ydisp=t.ybase),this._onScroll.fire(t.ydisp)}scrollLines(e,n,t){const s=this.buffer;if(e<0){if(s.ydisp===0)return;this.isUserScrolling=!0}else e+s.ydisp>=s.ybase&&(this.isUserScrolling=!1);const f=s.ydisp;s.ydisp=Math.max(Math.min(s.ydisp+e,s.ybase),0),f!==s.ydisp&&(n||this._onScroll.fire(s.ydisp))}scrollPages(e){this.scrollLines(e*(this.rows-1))}scrollToTop(){this.scrollLines(-this.buffer.ydisp)}scrollToBottom(){this.scrollLines(this.buffer.ybase-this.buffer.ydisp)}scrollToLine(e){const n=e-this.buffer.ydisp;n!==0&&this.scrollLines(n)}};i=o([d(0,c.IOptionsService)],i),r.BufferService=i},7994:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.CharsetService=void 0,r.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(h){this.glevel=h,this.charset=this._charsets[h]}setgCharset(h,o){this._charsets[h]=o,this.glevel===h&&(this.charset=o)}}},1753:function(D,r,h){var o=this&&this.__decorate||function(t,s,f,v){var u,C=arguments.length,g=C<3?s:v===null?v=Object.getOwnPropertyDescriptor(s,f):v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(t,s,f,v);else for(var m=t.length-1;m>=0;m--)(u=t[m])&&(g=(C<3?u(g):C>3?u(s,f,g):u(s,f))||g);return C>3&&g&&Object.defineProperty(s,f,g),g},d=this&&this.__param||function(t,s){return function(f,v){s(f,v,t)}};Object.defineProperty(r,"__esModule",{value:!0}),r.CoreMouseService=void 0;const c=h(2585),_=h(8460),l={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:t=>t.button!==4&&t.action===1&&(t.ctrl=!1,t.alt=!1,t.shift=!1,!0)},VT200:{events:19,restrict:t=>t.action!==32},DRAG:{events:23,restrict:t=>t.action!==32||t.button!==3},ANY:{events:31,restrict:t=>!0}};function a(t,s){let f=(t.ctrl?16:0)|(t.shift?4:0)|(t.alt?8:0);return t.button===4?(f|=64,f|=t.action):(f|=3&t.button,4&t.button&&(f|=64),8&t.button&&(f|=128),t.action===32?f|=32:t.action!==0||s||(f|=3)),f}const i=String.fromCharCode,e={DEFAULT:t=>{const s=[a(t,!1)+32,t.col+32,t.row+32];return s[0]>255||s[1]>255||s[2]>255?"":`\x1B[M${i(s[0])}${i(s[1])}${i(s[2])}`},SGR:t=>{const s=t.action===0&&t.button!==4?"m":"M";return`\x1B[<${a(t,!0)};${t.col};${t.row}${s}`},SGR_PIXELS:t=>{const s=t.action===0&&t.button!==4?"m":"M";return`\x1B[<${a(t,!0)};${t.x};${t.y}${s}`}};let n=class{constructor(t,s){this._bufferService=t,this._coreService=s,this._protocols={},this._encodings={},this._activeProtocol="",this._activeEncoding="",this._onProtocolChange=new _.EventEmitter,this._lastEvent=null;for(const f of Object.keys(l))this.addProtocol(f,l[f]);for(const f of Object.keys(e))this.addEncoding(f,e[f]);this.reset()}addProtocol(t,s){this._protocols[t]=s}addEncoding(t,s){this._encodings[t]=s}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(t){if(!this._protocols[t])throw new Error(`unknown protocol "${t}"`);this._activeProtocol=t,this._onProtocolChange.fire(this._protocols[t].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(t){if(!this._encodings[t])throw new Error(`unknown encoding "${t}"`);this._activeEncoding=t}reset(){this.activeProtocol="NONE",this.activeEncoding="DEFAULT",this._lastEvent=null}get onProtocolChange(){return this._onProtocolChange.event}triggerMouseEvent(t){if(t.col<0||t.col>=this._bufferService.cols||t.row<0||t.row>=this._bufferService.rows||t.button===4&&t.action===32||t.button===3&&t.action!==32||t.button!==4&&(t.action===2||t.action===3)||(t.col++,t.row++,t.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,t,this._activeEncoding==="SGR_PIXELS"))||!this._protocols[this._activeProtocol].restrict(t))return!1;const s=this._encodings[this._activeEncoding](t);return s&&(this._activeEncoding==="DEFAULT"?this._coreService.triggerBinaryEvent(s):this._coreService.triggerDataEvent(s,!0)),this._lastEvent=t,!0}explainEvents(t){return{down:!!(1&t),up:!!(2&t),drag:!!(4&t),move:!!(8&t),wheel:!!(16&t)}}_equalEvents(t,s,f){if(f){if(t.x!==s.x||t.y!==s.y)return!1}else if(t.col!==s.col||t.row!==s.row)return!1;return t.button===s.button&&t.action===s.action&&t.ctrl===s.ctrl&&t.alt===s.alt&&t.shift===s.shift}};n=o([d(0,c.IBufferService),d(1,c.ICoreService)],n),r.CoreMouseService=n},6975:function(D,r,h){var o=this&&this.__decorate||function(t,s,f,v){var u,C=arguments.length,g=C<3?s:v===null?v=Object.getOwnPropertyDescriptor(s,f):v;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")g=Reflect.decorate(t,s,f,v);else for(var m=t.length-1;m>=0;m--)(u=t[m])&&(g=(C<3?u(g):C>3?u(s,f,g):u(s,f))||g);return C>3&&g&&Object.defineProperty(s,f,g),g},d=this&&this.__param||function(t,s){return function(f,v){s(f,v,t)}};Object.defineProperty(r,"__esModule",{value:!0}),r.CoreService=void 0;const c=h(2585),_=h(8460),l=h(1439),a=h(844),i=Object.freeze({insertMode:!1}),e=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,origin:!1,reverseWraparound:!1,sendFocus:!1,wraparound:!0});let n=class extends a.Disposable{constructor(t,s,f,v){super(),this._bufferService=s,this._logService=f,this._optionsService=v,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this.register(new _.EventEmitter),this._onUserInput=this.register(new _.EventEmitter),this._onBinary=this.register(new _.EventEmitter),this._scrollToBottom=t,this.register({dispose:()=>this._scrollToBottom=void 0}),this.modes=(0,l.clone)(i),this.decPrivateModes=(0,l.clone)(e)}get onData(){return this._onData.event}get onUserInput(){return this._onUserInput.event}get onBinary(){return this._onBinary.event}reset(){this.modes=(0,l.clone)(i),this.decPrivateModes=(0,l.clone)(e)}triggerDataEvent(t,s=!1){if(this._optionsService.rawOptions.disableStdin)return;const f=this._bufferService.buffer;f.ybase!==f.ydisp&&this._scrollToBottom(),s&&this._onUserInput.fire(),this._logService.debug(`sending data "${t}"`,()=>t.split("").map(v=>v.charCodeAt(0))),this._onData.fire(t)}triggerBinaryEvent(t){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary "${t}"`,()=>t.split("").map(s=>s.charCodeAt(0))),this._onBinary.fire(t))}};n=o([d(1,c.IBufferService),d(2,c.ILogService),d(3,c.IOptionsService)],n),r.CoreService=n},9074:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.DecorationService=void 0;const o=h(8055),d=h(8460),c=h(844),_=h(6106),l={xmin:0,xmax:0};class a extends c.Disposable{constructor(){super(...arguments),this._decorations=new _.SortedList(n=>n==null?void 0:n.marker.line),this._onDecorationRegistered=this.register(new d.EventEmitter),this._onDecorationRemoved=this.register(new d.EventEmitter)}get onDecorationRegistered(){return this._onDecorationRegistered.event}get onDecorationRemoved(){return this._onDecorationRemoved.event}get decorations(){return this._decorations.values()}registerDecoration(n){if(n.marker.isDisposed)return;const t=new i(n);if(t){const s=t.marker.onDispose(()=>t.dispose());t.onDispose(()=>{t&&(this._decorations.delete(t)&&this._onDecorationRemoved.fire(t),s.dispose())}),this._decorations.insert(t),this._onDecorationRegistered.fire(t)}return t}reset(){for(const n of this._decorations.values())n.dispose();this._decorations.clear()}*getDecorationsAtCell(n,t,s){var f,v,u;let C=0,g=0;for(const m of this._decorations.getKeyIterator(t))C=(f=m.options.x)!==null&&f!==void 0?f:0,g=C+((v=m.options.width)!==null&&v!==void 0?v:1),n>=C&&n{var u,C,g;l.xmin=(u=v.options.x)!==null&&u!==void 0?u:0,l.xmax=l.xmin+((C=v.options.width)!==null&&C!==void 0?C:1),n>=l.xmin&&n=0;f--)(n=l[f])&&(s=(t<3?n(s):t>3?n(a,i,s):n(a,i))||s);return t>3&&s&&Object.defineProperty(a,i,s),s},d=this&&this.__param||function(l,a){return function(i,e){a(i,e,l)}};Object.defineProperty(r,"__esModule",{value:!0}),r.DirtyRowService=void 0;const c=h(2585);let _=class{constructor(l){this._bufferService=l,this.clearRange()}get start(){return this._start}get end(){return this._end}clearRange(){this._start=this._bufferService.buffer.y,this._end=this._bufferService.buffer.y}markDirty(l){lthis._end&&(this._end=l)}markRangeDirty(l,a){if(l>a){const i=l;l=a,a=i}lthis._end&&(this._end=a)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};_=o([d(0,c.IBufferService)],_),r.DirtyRowService=_},4348:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.InstantiationService=r.ServiceCollection=void 0;const o=h(2585),d=h(8343);class c{constructor(...l){this._entries=new Map;for(const[a,i]of l)this.set(a,i)}set(l,a){const i=this._entries.get(l);return this._entries.set(l,a),i}forEach(l){this._entries.forEach((a,i)=>l(i,a))}has(l){return this._entries.has(l)}get(l){return this._entries.get(l)}}r.ServiceCollection=c,r.InstantiationService=class{constructor(){this._services=new c,this._services.set(o.IInstantiationService,this)}setService(_,l){this._services.set(_,l)}getService(_){return this._services.get(_)}createInstance(_,...l){const a=(0,d.getServiceDependencies)(_).sort((n,t)=>n.index-t.index),i=[];for(const n of a){const t=this._services.get(n.id);if(!t)throw new Error(`[createInstance] ${_.name} depends on UNKNOWN service ${n.id}.`);i.push(t)}const e=a.length>0?a[0].index:l.length;if(l.length!==e)throw new Error(`[createInstance] First service dependency of ${_.name} at position ${e+1} conflicts with ${l.length} static arguments`);return new _(...l,...i)}}},7866:function(D,r,h){var o=this&&this.__decorate||function(a,i,e,n){var t,s=arguments.length,f=s<3?i:n===null?n=Object.getOwnPropertyDescriptor(i,e):n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")f=Reflect.decorate(a,i,e,n);else for(var v=a.length-1;v>=0;v--)(t=a[v])&&(f=(s<3?t(f):s>3?t(i,e,f):t(i,e))||f);return s>3&&f&&Object.defineProperty(i,e,f),f},d=this&&this.__param||function(a,i){return function(e,n){i(e,n,a)}};Object.defineProperty(r,"__esModule",{value:!0}),r.LogService=void 0;const c=h(2585),_={debug:c.LogLevelEnum.DEBUG,info:c.LogLevelEnum.INFO,warn:c.LogLevelEnum.WARN,error:c.LogLevelEnum.ERROR,off:c.LogLevelEnum.OFF};let l=class{constructor(a){this._optionsService=a,this.logLevel=c.LogLevelEnum.OFF,this._updateLogLevel(),this._optionsService.onOptionChange(i=>{i==="logLevel"&&this._updateLogLevel()})}_updateLogLevel(){this.logLevel=_[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(a){for(let i=0;i{Object.defineProperty(r,"__esModule",{value:!0}),r.OptionsService=r.DEFAULT_OPTIONS=void 0;const o=h(8460),d=h(6114);r.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:"block",cursorWidth:1,customGlyphs:!0,drawBoldTextInBrightColors:!0,fastScrollModifier:"alt",fastScrollSensitivity:5,fontFamily:"courier-new, courier, monospace",fontSize:15,fontWeight:"normal",fontWeightBold:"bold",lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:"info",scrollback:1e3,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},rightClickSelectsWord:d.isMac,windowOptions:{},windowsMode:!1,wordSeparator:" ()[]{}',\"`",altClickMovesCursor:!0,convertEol:!1,termName:"xterm",cancelEvents:!1,overviewRulerWidth:0};const c=["normal","bold","100","200","300","400","500","600","700","800","900"];r.OptionsService=class{constructor(_){this._onOptionChange=new o.EventEmitter;const l=Object.assign({},r.DEFAULT_OPTIONS);for(const a in _)if(a in l)try{const i=_[a];l[a]=this._sanitizeAndValidateOption(a,i)}catch{}this.rawOptions=l,this.options=Object.assign({},l),this._setupOptions()}get onOptionChange(){return this._onOptionChange.event}_setupOptions(){const _=a=>{if(!(a in r.DEFAULT_OPTIONS))throw new Error(`No option with key "${a}"`);return this.rawOptions[a]},l=(a,i)=>{if(!(a in r.DEFAULT_OPTIONS))throw new Error(`No option with key "${a}"`);i=this._sanitizeAndValidateOption(a,i),this.rawOptions[a]!==i&&(this.rawOptions[a]=i,this._onOptionChange.fire(a))};for(const a in this.rawOptions){const i={get:_.bind(this,a),set:l.bind(this,a)};Object.defineProperty(this.options,a,i)}}_sanitizeAndValidateOption(_,l){switch(_){case"cursorStyle":if(l||(l=r.DEFAULT_OPTIONS[_]),!function(a){return a==="block"||a==="underline"||a==="bar"}(l))throw new Error(`"${l}" is not a valid value for ${_}`);break;case"wordSeparator":l||(l=r.DEFAULT_OPTIONS[_]);break;case"fontWeight":case"fontWeightBold":if(typeof l=="number"&&1<=l&&l<=1e3)break;l=c.includes(l)?l:r.DEFAULT_OPTIONS[_];break;case"cursorWidth":l=Math.floor(l);case"lineHeight":case"tabStopWidth":if(l<1)throw new Error(`${_} cannot be less than 1, value: ${l}`);break;case"minimumContrastRatio":l=Math.max(1,Math.min(21,Math.round(10*l)/10));break;case"scrollback":if((l=Math.min(l,4294967295))<0)throw new Error(`${_} cannot be less than 0, value: ${l}`);break;case"fastScrollSensitivity":case"scrollSensitivity":if(l<=0)throw new Error(`${_} cannot be less than or equal to 0, value: ${l}`);case"rows":case"cols":if(!l&&l!==0)throw new Error(`${_} must be numeric, value: ${l}`)}return l}}},2660:function(D,r,h){var o=this&&this.__decorate||function(l,a,i,e){var n,t=arguments.length,s=t<3?a:e===null?e=Object.getOwnPropertyDescriptor(a,i):e;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(l,a,i,e);else for(var f=l.length-1;f>=0;f--)(n=l[f])&&(s=(t<3?n(s):t>3?n(a,i,s):n(a,i))||s);return t>3&&s&&Object.defineProperty(a,i,s),s},d=this&&this.__param||function(l,a){return function(i,e){a(i,e,l)}};Object.defineProperty(r,"__esModule",{value:!0}),r.OscLinkService=void 0;const c=h(2585);let _=class{constructor(l){this._bufferService=l,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(l){const a=this._bufferService.buffer;if(l.id===void 0){const f=a.addMarker(a.ybase+a.y),v={data:l,id:this._nextId++,lines:[f]};return f.onDispose(()=>this._removeMarkerFromLink(v,f)),this._dataByLinkId.set(v.id,v),v.id}const i=l,e=this._getEntryIdKey(i),n=this._entriesWithId.get(e);if(n)return this.addLineToLink(n.id,a.ybase+a.y),n.id;const t=a.addMarker(a.ybase+a.y),s={id:this._nextId++,key:this._getEntryIdKey(i),data:i,lines:[t]};return t.onDispose(()=>this._removeMarkerFromLink(s,t)),this._entriesWithId.set(s.key,s),this._dataByLinkId.set(s.id,s),s.id}addLineToLink(l,a){const i=this._dataByLinkId.get(l);if(i&&i.lines.every(e=>e.line!==a)){const e=this._bufferService.buffer.addMarker(a);i.lines.push(e),e.onDispose(()=>this._removeMarkerFromLink(i,e))}}getLinkData(l){var a;return(a=this._dataByLinkId.get(l))===null||a===void 0?void 0:a.data}_getEntryIdKey(l){return`${l.id};;${l.uri}`}_removeMarkerFromLink(l,a){const i=l.lines.indexOf(a);i!==-1&&(l.lines.splice(i,1),l.lines.length===0&&(l.data.id!==void 0&&this._entriesWithId.delete(l.key),this._dataByLinkId.delete(l.id)))}};_=o([d(0,c.IBufferService)],_),r.OscLinkService=_},8343:(D,r)=>{function h(o,d,c){d.di$target===d?d.di$dependencies.push({id:o,index:c}):(d.di$dependencies=[{id:o,index:c}],d.di$target=d)}Object.defineProperty(r,"__esModule",{value:!0}),r.createDecorator=r.getServiceDependencies=r.serviceRegistry=void 0,r.serviceRegistry=new Map,r.getServiceDependencies=function(o){return o.di$dependencies||[]},r.createDecorator=function(o){if(r.serviceRegistry.has(o))return r.serviceRegistry.get(o);const d=function(c,_,l){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");h(d,c,l)};return d.toString=()=>o,r.serviceRegistry.set(o,d),d}},2585:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.IDecorationService=r.IUnicodeService=r.IOscLinkService=r.IOptionsService=r.ILogService=r.LogLevelEnum=r.IInstantiationService=r.IDirtyRowService=r.ICharsetService=r.ICoreService=r.ICoreMouseService=r.IBufferService=void 0;const o=h(8343);var d;r.IBufferService=(0,o.createDecorator)("BufferService"),r.ICoreMouseService=(0,o.createDecorator)("CoreMouseService"),r.ICoreService=(0,o.createDecorator)("CoreService"),r.ICharsetService=(0,o.createDecorator)("CharsetService"),r.IDirtyRowService=(0,o.createDecorator)("DirtyRowService"),r.IInstantiationService=(0,o.createDecorator)("InstantiationService"),(d=r.LogLevelEnum||(r.LogLevelEnum={}))[d.DEBUG=0]="DEBUG",d[d.INFO=1]="INFO",d[d.WARN=2]="WARN",d[d.ERROR=3]="ERROR",d[d.OFF=4]="OFF",r.ILogService=(0,o.createDecorator)("LogService"),r.IOptionsService=(0,o.createDecorator)("OptionsService"),r.IOscLinkService=(0,o.createDecorator)("OscLinkService"),r.IUnicodeService=(0,o.createDecorator)("UnicodeService"),r.IDecorationService=(0,o.createDecorator)("DecorationService")},1480:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.UnicodeService=void 0;const o=h(8460),d=h(225);r.UnicodeService=class{constructor(){this._providers=Object.create(null),this._active="",this._onChange=new o.EventEmitter;const c=new d.UnicodeV6;this.register(c),this._active=c.version,this._activeProvider=c}get onChange(){return this._onChange.event}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(c){if(!this._providers[c])throw new Error(`unknown Unicode version "${c}"`);this._active=c,this._activeProvider=this._providers[c],this._onChange.fire(c)}register(c){this._providers[c.version]=c}wcwidth(c){return this._activeProvider.wcwidth(c)}getStringCellWidth(c){let _=0;const l=c.length;for(let a=0;a=l)return _+this.wcwidth(i);const e=c.charCodeAt(a);56320<=e&&e<=57343?i=1024*(i-55296)+e-56320+65536:_+=this.wcwidth(e)}_+=this.wcwidth(i)}return _}}}},J={};function j(D){var r=J[D];if(r!==void 0)return r.exports;var h=J[D]={exports:{}};return ee[D].call(h.exports,h,h.exports,j),h.exports}var se={};return(()=>{var D=se;Object.defineProperty(D,"__esModule",{value:!0}),D.Terminal=void 0;const r=j(3236),h=j(9042),o=j(7975),d=j(7090),c=j(5741),_=j(8285),l=["cols","rows"];D.Terminal=class{constructor(a){this._core=new r.Terminal(a),this._addonManager=new c.AddonManager,this._publicOptions=Object.assign({},this._core.options);const i=n=>this._core.options[n],e=(n,t)=>{this._checkReadonlyOptions(n),this._core.options[n]=t};for(const n in this._core.options){const t={get:i.bind(this,n),set:e.bind(this,n)};Object.defineProperty(this._publicOptions,n,t)}}_checkReadonlyOptions(a){if(l.includes(a))throw new Error(`Option "${a}" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.rawOptions.allowProposedApi)throw new Error("You must set the allowProposedApi option to true to use proposed API")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onKey(){return this._core.onKey}get onLineFeed(){return this._core.onLineFeed}get onRender(){return this._core.onRender}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onSelectionChange(){return this._core.onSelectionChange}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get element(){return this._core.element}get parser(){return this._checkProposedApi(),this._parser||(this._parser=new o.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new d.UnicodeApi(this._core)}get textarea(){return this._core.textarea}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._checkProposedApi(),this._buffer||(this._buffer=new _.BufferNamespaceApi(this._core)),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){const a=this._core.coreService.decPrivateModes;let i="none";switch(this._core.coreMouseService.activeProtocol){case"X10":i="x10";break;case"VT200":i="vt200";break;case"DRAG":i="drag";break;case"ANY":i="any"}return{applicationCursorKeysMode:a.applicationCursorKeys,applicationKeypadMode:a.applicationKeypad,bracketedPasteMode:a.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:i,originMode:a.origin,reverseWraparoundMode:a.reverseWraparound,sendFocusMode:a.sendFocus,wraparoundMode:a.wraparound}}get options(){return this._publicOptions}set options(a){for(const i in a)this._publicOptions[i]=a[i]}blur(){this._core.blur()}focus(){this._core.focus()}resize(a,i){this._verifyIntegers(a,i),this._core.resize(a,i)}open(a){this._core.open(a)}attachCustomKeyEventHandler(a){this._core.attachCustomKeyEventHandler(a)}registerLinkProvider(a){return this._checkProposedApi(),this._core.registerLinkProvider(a)}registerCharacterJoiner(a){return this._checkProposedApi(),this._core.registerCharacterJoiner(a)}deregisterCharacterJoiner(a){this._checkProposedApi(),this._core.deregisterCharacterJoiner(a)}registerMarker(a=0){return this._verifyIntegers(a),this._core.addMarker(a)}registerDecoration(a){var i,e,n;return this._checkProposedApi(),this._verifyPositiveIntegers((i=a.x)!==null&&i!==void 0?i:0,(e=a.width)!==null&&e!==void 0?e:0,(n=a.height)!==null&&n!==void 0?n:0),this._core.registerDecoration(a)}hasSelection(){return this._core.hasSelection()}select(a,i,e){this._verifyIntegers(a,i,e),this._core.select(a,i,e)}getSelection(){return this._core.getSelection()}getSelectionPosition(){return this._core.getSelectionPosition()}clearSelection(){this._core.clearSelection()}selectAll(){this._core.selectAll()}selectLines(a,i){this._verifyIntegers(a,i),this._core.selectLines(a,i)}dispose(){this._addonManager.dispose(),this._core.dispose()}scrollLines(a){this._verifyIntegers(a),this._core.scrollLines(a)}scrollPages(a){this._verifyIntegers(a),this._core.scrollPages(a)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(a){this._verifyIntegers(a),this._core.scrollToLine(a)}clear(){this._core.clear()}write(a,i){this._core.write(a,i)}writeln(a,i){this._core.write(a),this._core.write(`\r +`,i)}paste(a){this._core.paste(a)}refresh(a,i){this._verifyIntegers(a,i),this._core.refresh(a,i)}reset(){this._core.reset()}clearTextureAtlas(){this._core.clearTextureAtlas()}loadAddon(a){return this._addonManager.loadAddon(this,a)}static get strings(){return h}_verifyIntegers(...a){for(const i of a)if(i===1/0||isNaN(i)||i%1!=0)throw new Error("This API only accepts integers")}_verifyPositiveIntegers(...a){for(const i of a)if(i&&(i===1/0||isNaN(i)||i%1!=0||i<0))throw new Error("This API only accepts positive integers")}}})(),se})()})})(Se);var Ae={exports:{}};(function(X,z){(function(ee,J){X.exports=J()})(self,function(){return(()=>{var ee={};return(()=>{var J=ee;Object.defineProperty(J,"__esModule",{value:!0}),J.FitAddon=void 0,J.FitAddon=class{constructor(){}activate(j){this._terminal=j}dispose(){}fit(){const j=this.proposeDimensions();if(!j||!this._terminal||isNaN(j.cols)||isNaN(j.rows))return;const se=this._terminal._core;this._terminal.rows===j.rows&&this._terminal.cols===j.cols||(se._renderService.clear(),this._terminal.resize(j.cols,j.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;const j=this._terminal._core;if(j._renderService.dimensions.actualCellWidth===0||j._renderService.dimensions.actualCellHeight===0)return;const se=this._terminal.options.scrollback===0?0:j.viewport.scrollBarWidth,D=window.getComputedStyle(this._terminal.element.parentElement),r=parseInt(D.getPropertyValue("height")),h=Math.max(0,parseInt(D.getPropertyValue("width"))),o=window.getComputedStyle(this._terminal.element),d=r-(parseInt(o.getPropertyValue("padding-top"))+parseInt(o.getPropertyValue("padding-bottom"))),c=h-(parseInt(o.getPropertyValue("padding-right"))+parseInt(o.getPropertyValue("padding-left")))-se;return{cols:Math.max(2,Math.floor(c/j._renderService.dimensions.actualCellWidth)),rows:Math.max(1,Math.floor(d/j._renderService.dimensions.actualCellHeight))}}}})(),ee})()})})(Ae);var De={exports:{}};(function(X,z){(function(ee,J){X.exports=J()})(self,function(){return(()=>{var ee={965:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.GlyphRenderer=void 0;const o=h(381),d=h(455),c=h(855),_=h(859),l=10,a=l*Float32Array.BYTES_PER_ELEMENT,i={i:0,glyph:void 0,leftCellPadding:0,clippedPixels:0};class e extends _.Disposable{constructor(t,s,f,v){super(),this._terminal=t,this._colors=s,this._gl=f,this._dimensions=v,this._activeBuffer=0,this._vertices={count:0,attributes:new Float32Array(0),attributesBuffers:[new Float32Array(0),new Float32Array(0)]};const u=this._gl;this._program=(0,o.throwIfFalsy)((0,o.createProgram)(u,`#version 300 es +layout (location = 0) in vec2 a_unitquad; +layout (location = 1) in vec2 a_cellpos; +layout (location = 2) in vec2 a_offset; +layout (location = 3) in vec2 a_size; +layout (location = 4) in vec2 a_texcoord; +layout (location = 5) in vec2 a_texsize; + +uniform mat4 u_projection; +uniform vec2 u_resolution; + +out vec2 v_texcoord; + +void main() { + vec2 zeroToOne = (a_offset / u_resolution) + a_cellpos + (a_unitquad * a_size); + gl_Position = u_projection * vec4(zeroToOne, 0.0, 1.0); + v_texcoord = a_texcoord + a_unitquad * a_texsize; +}`,`#version 300 es +precision lowp float; + +in vec2 v_texcoord; + +uniform sampler2D u_texture; + +out vec4 outColor; + +void main() { + outColor = texture(u_texture, v_texcoord); +}`)),this.register((0,_.toDisposable)(()=>u.deleteProgram(this._program))),this._projectionLocation=(0,o.throwIfFalsy)(u.getUniformLocation(this._program,"u_projection")),this._resolutionLocation=(0,o.throwIfFalsy)(u.getUniformLocation(this._program,"u_resolution")),this._textureLocation=(0,o.throwIfFalsy)(u.getUniformLocation(this._program,"u_texture")),this._vertexArrayObject=u.createVertexArray(),u.bindVertexArray(this._vertexArrayObject);const C=new Float32Array([0,0,1,0,0,1,1,1]),g=u.createBuffer();this.register((0,_.toDisposable)(()=>u.deleteBuffer(g))),u.bindBuffer(u.ARRAY_BUFFER,g),u.bufferData(u.ARRAY_BUFFER,C,u.STATIC_DRAW),u.enableVertexAttribArray(0),u.vertexAttribPointer(0,2,this._gl.FLOAT,!1,0,0);const m=new Uint8Array([0,1,3,0,2,3]),b=u.createBuffer();this.register((0,_.toDisposable)(()=>u.deleteBuffer(b))),u.bindBuffer(u.ELEMENT_ARRAY_BUFFER,b),u.bufferData(u.ELEMENT_ARRAY_BUFFER,m,u.STATIC_DRAW),this._attributesBuffer=(0,o.throwIfFalsy)(u.createBuffer()),this.register((0,_.toDisposable)(()=>u.deleteBuffer(this._attributesBuffer))),u.bindBuffer(u.ARRAY_BUFFER,this._attributesBuffer),u.enableVertexAttribArray(2),u.vertexAttribPointer(2,2,u.FLOAT,!1,a,0),u.vertexAttribDivisor(2,1),u.enableVertexAttribArray(3),u.vertexAttribPointer(3,2,u.FLOAT,!1,a,2*Float32Array.BYTES_PER_ELEMENT),u.vertexAttribDivisor(3,1),u.enableVertexAttribArray(4),u.vertexAttribPointer(4,2,u.FLOAT,!1,a,4*Float32Array.BYTES_PER_ELEMENT),u.vertexAttribDivisor(4,1),u.enableVertexAttribArray(5),u.vertexAttribPointer(5,2,u.FLOAT,!1,a,6*Float32Array.BYTES_PER_ELEMENT),u.vertexAttribDivisor(5,1),u.enableVertexAttribArray(1),u.vertexAttribPointer(1,2,u.FLOAT,!1,a,8*Float32Array.BYTES_PER_ELEMENT),u.vertexAttribDivisor(1,1),this._atlasTexture=(0,o.throwIfFalsy)(u.createTexture()),this.register((0,_.toDisposable)(()=>u.deleteTexture(this._atlasTexture))),u.bindTexture(u.TEXTURE_2D,this._atlasTexture),u.texImage2D(u.TEXTURE_2D,0,u.RGBA,1,1,0,u.RGBA,u.UNSIGNED_BYTE,new Uint8Array([0,0,255,255])),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_WRAP_S,u.CLAMP_TO_EDGE),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_WRAP_T,u.CLAMP_TO_EDGE),u.enable(u.BLEND),u.blendFunc(u.SRC_ALPHA,u.ONE_MINUS_SRC_ALPHA),this.onResize()}beginFrame(){return!this._atlas||this._atlas.beginFrame()}updateCell(t,s,f,v,u,C,g,m){this._updateCell(this._vertices.attributes,t,s,f,v,u,C,g,m)}_updateCell(t,s,f,v,u,C,g,m,b){i.i=(f*this._terminal.cols+s)*l,v!==c.NULL_CELL_CODE&&v!==void 0?this._atlas&&(m&&m.length>1?i.glyph=this._atlas.getRasterizedGlyphCombinedChar(m,u,C,g):i.glyph=this._atlas.getRasterizedGlyph(v,u,C,g),i.leftCellPadding=Math.floor((this._dimensions.scaledCellWidth-this._dimensions.scaledCharWidth)/2),u!==b&&i.glyph.offset.x>i.leftCellPadding?(i.clippedPixels=i.glyph.offset.x-i.leftCellPadding,t[i.i]=-(i.glyph.offset.x-i.clippedPixels)+this._dimensions.scaledCharLeft,t[i.i+1]=-i.glyph.offset.y+this._dimensions.scaledCharTop,t[i.i+2]=(i.glyph.size.x-i.clippedPixels)/this._dimensions.scaledCanvasWidth,t[i.i+3]=i.glyph.size.y/this._dimensions.scaledCanvasHeight,t[i.i+4]=i.glyph.texturePositionClipSpace.x+i.clippedPixels/this._atlas.cacheCanvas.width,t[i.i+5]=i.glyph.texturePositionClipSpace.y,t[i.i+6]=i.glyph.sizeClipSpace.x-i.clippedPixels/this._atlas.cacheCanvas.width,t[i.i+7]=i.glyph.sizeClipSpace.y):(t[i.i]=-i.glyph.offset.x+this._dimensions.scaledCharLeft,t[i.i+1]=-i.glyph.offset.y+this._dimensions.scaledCharTop,t[i.i+2]=i.glyph.size.x/this._dimensions.scaledCanvasWidth,t[i.i+3]=i.glyph.size.y/this._dimensions.scaledCanvasHeight,t[i.i+4]=i.glyph.texturePositionClipSpace.x,t[i.i+5]=i.glyph.texturePositionClipSpace.y,t[i.i+6]=i.glyph.sizeClipSpace.x,t[i.i+7]=i.glyph.sizeClipSpace.y)):(0,d.fill)(t,0,i.i,i.i+l-1-2)}clear(){const t=this._terminal,s=t.cols*t.rows*l;this._vertices.count!==s?this._vertices.attributes=new Float32Array(s):this._vertices.attributes.fill(0);for(let v=0;v{Object.defineProperty(r,"__esModule",{value:!0}),r.RectangleRenderer=void 0;const o=h(381),d=h(310),c=h(859),_=h(302),l=8*Float32Array.BYTES_PER_ELEMENT,a={rgba:0,isDefault:!1,x1:0,y1:0,r:0,g:0,b:0,a:0};class i extends c.Disposable{constructor(n,t,s,f){super(),this._terminal=n,this._colors=t,this._gl=s,this._dimensions=f,this._vertices={count:0,attributes:new Float32Array(160)};const v=this._gl;this._program=(0,o.throwIfFalsy)((0,o.createProgram)(v,`#version 300 es +layout (location = 0) in vec2 a_position; +layout (location = 1) in vec2 a_size; +layout (location = 2) in vec4 a_color; +layout (location = 3) in vec2 a_unitquad; + +uniform mat4 u_projection; + +out vec4 v_color; + +void main() { + vec2 zeroToOne = a_position + (a_unitquad * a_size); + gl_Position = u_projection * vec4(zeroToOne, 0.0, 1.0); + v_color = a_color; +}`,`#version 300 es +precision lowp float; + +in vec4 v_color; + +out vec4 outColor; + +void main() { + outColor = v_color; +}`)),this.register((0,c.toDisposable)(()=>v.deleteProgram(this._program))),this._projectionLocation=(0,o.throwIfFalsy)(v.getUniformLocation(this._program,"u_projection")),this._vertexArrayObject=v.createVertexArray(),v.bindVertexArray(this._vertexArrayObject);const u=new Float32Array([0,0,1,0,0,1,1,1]),C=v.createBuffer();this.register((0,c.toDisposable)(()=>v.deleteBuffer(C))),v.bindBuffer(v.ARRAY_BUFFER,C),v.bufferData(v.ARRAY_BUFFER,u,v.STATIC_DRAW),v.enableVertexAttribArray(3),v.vertexAttribPointer(3,2,this._gl.FLOAT,!1,0,0);const g=new Uint8Array([0,1,3,0,2,3]),m=v.createBuffer();this.register((0,c.toDisposable)(()=>v.deleteBuffer(m))),v.bindBuffer(v.ELEMENT_ARRAY_BUFFER,m),v.bufferData(v.ELEMENT_ARRAY_BUFFER,g,v.STATIC_DRAW),this._attributesBuffer=(0,o.throwIfFalsy)(v.createBuffer()),this.register((0,c.toDisposable)(()=>v.deleteBuffer(this._attributesBuffer))),v.bindBuffer(v.ARRAY_BUFFER,this._attributesBuffer),v.enableVertexAttribArray(0),v.vertexAttribPointer(0,2,v.FLOAT,!1,l,0),v.vertexAttribDivisor(0,1),v.enableVertexAttribArray(1),v.vertexAttribPointer(1,2,v.FLOAT,!1,l,2*Float32Array.BYTES_PER_ELEMENT),v.vertexAttribDivisor(1,1),v.enableVertexAttribArray(2),v.vertexAttribPointer(2,4,v.FLOAT,!1,l,4*Float32Array.BYTES_PER_ELEMENT),v.vertexAttribDivisor(2,1),this._updateCachedColors()}render(){const n=this._gl;n.useProgram(this._program),n.bindVertexArray(this._vertexArrayObject),n.uniformMatrix4fv(this._projectionLocation,!1,o.PROJECTION_MATRIX),n.bindBuffer(n.ARRAY_BUFFER,this._attributesBuffer),n.bufferData(n.ARRAY_BUFFER,this._vertices.attributes,n.DYNAMIC_DRAW),n.drawElementsInstanced(this._gl.TRIANGLES,6,n.UNSIGNED_BYTE,0,this._vertices.count)}onResize(){this._updateViewportRectangle()}setColors(){this._updateCachedColors(),this._updateViewportRectangle()}setDimensions(n){this._dimensions=n}_updateCachedColors(){this._bgFloat=this._colorToFloat32Array(this._colors.background)}_updateViewportRectangle(){this._addRectangleFloat(this._vertices.attributes,0,0,0,this._terminal.cols*this._dimensions.scaledCellWidth,this._terminal.rows*this._dimensions.scaledCellHeight,this._bgFloat)}updateBackgrounds(n){const t=this._terminal,s=this._vertices;let f,v,u,C,g,m,b,y,w,p,S,L=1;for(f=0;f>24&255)/255,a.g=(a.rgba>>16&255)/255,a.b=(a.rgba>>8&255)/255,a.a=!a.isDefault&&134217728&f?_.DIM_OPACITY:1,this._addRectangle(n.attributes,t,a.x1,a.y1,(u-v)*this._dimensions.scaledCellWidth,this._dimensions.scaledCellHeight,a.r,a.g,a.b,a.a)}_addRectangle(n,t,s,f,v,u,C,g,m,b){n[t]=s/this._dimensions.scaledCanvasWidth,n[t+1]=f/this._dimensions.scaledCanvasHeight,n[t+2]=v/this._dimensions.scaledCanvasWidth,n[t+3]=u/this._dimensions.scaledCanvasHeight,n[t+4]=C,n[t+5]=g,n[t+6]=m,n[t+7]=b}_addRectangleFloat(n,t,s,f,v,u,C){n[t]=s/this._dimensions.scaledCanvasWidth,n[t+1]=f/this._dimensions.scaledCanvasHeight,n[t+2]=v/this._dimensions.scaledCanvasWidth,n[t+3]=u/this._dimensions.scaledCanvasHeight,n[t+4]=C[0],n[t+5]=C[1],n[t+6]=C[2],n[t+7]=C[3]}_colorToFloat32Array(n){return new Float32Array([(n.rgba>>24&255)/255,(n.rgba>>16&255)/255,(n.rgba>>8&255)/255,(255&n.rgba)/255])}}r.RectangleRenderer=i},310:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.RenderModel=r.COMBINED_CHAR_BIT_MASK=r.RENDER_MODEL_EXT_OFFSET=r.RENDER_MODEL_FG_OFFSET=r.RENDER_MODEL_BG_OFFSET=r.RENDER_MODEL_INDICIES_PER_CELL=void 0;const o=h(455);r.RENDER_MODEL_INDICIES_PER_CELL=4,r.RENDER_MODEL_BG_OFFSET=1,r.RENDER_MODEL_FG_OFFSET=2,r.RENDER_MODEL_EXT_OFFSET=3,r.COMBINED_CHAR_BIT_MASK=2147483648,r.RenderModel=class{constructor(){this.cells=new Uint32Array(0),this.lineLengths=new Uint32Array(0),this.selection={hasSelection:!1,columnSelectMode:!1,viewportStartRow:0,viewportEndRow:0,viewportCappedStartRow:0,viewportCappedEndRow:0,startCol:0,endCol:0}}resize(d,c){const _=d*c*r.RENDER_MODEL_INDICIES_PER_CELL;_!==this.cells.length&&(this.cells=new Uint32Array(_),this.lineLengths=new Uint32Array(c))}clear(){(0,o.fill)(this.cells,0,0),(0,o.fill)(this.lineLengths,0,0)}clearSelection(){this.selection.hasSelection=!1,this.selection.viewportStartRow=0,this.selection.viewportEndRow=0,this.selection.viewportCappedStartRow=0,this.selection.viewportCappedEndRow=0,this.selection.startCol=0,this.selection.endCol=0}}},666:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.JoinedCellData=r.WebglRenderer=void 0;const o=h(965),d=h(733),c=h(461),_=h(713),l=h(742),a=h(310),i=h(859),e=h(855),n=h(476),t=h(345),s=h(782),f=h(820),v=h(147),u={fg:0,bg:0,hasFg:!1,hasBg:!1,isSelected:!1};class C extends i.Disposable{constructor(b,y,w,p,S,L,E){super(),this._terminal=b,this._colors=y,this._characterJoinerService=w,this._coreBrowserService=p,this._decorationService=L,this._model=new a.RenderModel,this._workCell=new s.CellData,this._workColors={fg:0,bg:0,ext:0},this._onChangeTextureAtlas=new t.EventEmitter,this._onRequestRedraw=new t.EventEmitter,this._onContextLoss=new t.EventEmitter,this._core=this._terminal._core,this._renderLayers=[new d.LinkRenderLayer(this._core.screenElement,2,this._colors,this._core,this._coreBrowserService),new c.CursorRenderLayer(b,this._core.screenElement,3,this._colors,this._onRequestRedraw,this._coreBrowserService,S)],this.dimensions={scaledCharWidth:0,scaledCharHeight:0,scaledCellWidth:0,scaledCellHeight:0,scaledCharLeft:0,scaledCharTop:0,scaledCanvasWidth:0,scaledCanvasHeight:0,canvasWidth:0,canvasHeight:0,actualCellWidth:0,actualCellHeight:0},this._devicePixelRatio=this._coreBrowserService.dpr,this._updateDimensions(),this._canvas=document.createElement("canvas");const A={antialias:!1,depth:!1,preserveDrawingBuffer:E};if(this._gl=this._canvas.getContext("webgl2",A),!this._gl)throw new Error("WebGL2 not supported "+this._gl);this.register((0,f.addDisposableDomListener)(this._canvas,"webglcontextlost",k=>{k.preventDefault(),this._contextRestorationTimeout=setTimeout(()=>{this._contextRestorationTimeout=void 0,this._onContextLoss.fire(k)},3e3)})),this.register((0,f.addDisposableDomListener)(this._canvas,"webglcontextrestored",k=>{clearTimeout(this._contextRestorationTimeout),this._contextRestorationTimeout=void 0,(0,_.removeTerminalFromCache)(this._terminal),this._initializeWebGLState(),this._requestRedrawViewport()})),this.register((0,n.observeDevicePixelDimensions)(this._canvas,this._coreBrowserService.window,(k,O)=>this._setCanvasDevicePixelDimensions(k,O))),this._core.screenElement.appendChild(this._canvas),this._initializeWebGLState(),this._isAttached=this._coreBrowserService.window.document.body.contains(this._core.screenElement)}get onChangeTextureAtlas(){return this._onChangeTextureAtlas.event}get onRequestRedraw(){return this._onRequestRedraw.event}get onContextLoss(){return this._onContextLoss.event}dispose(){var b;for(const y of this._renderLayers)y.dispose();(b=this._canvas.parentElement)===null||b===void 0||b.removeChild(this._canvas),(0,_.removeTerminalFromCache)(this._terminal),super.dispose()}get textureAtlas(){var b;return(b=this._charAtlas)===null||b===void 0?void 0:b.cacheCanvas}setColors(b){this._colors=b;for(const y of this._renderLayers)y.setColors(this._terminal,this._colors),y.reset(this._terminal);this._rectangleRenderer.setColors(),this._refreshCharAtlas(),this._clearModel(!0)}onDevicePixelRatioChange(){this._devicePixelRatio!==this._coreBrowserService.dpr&&(this._devicePixelRatio=this._coreBrowserService.dpr,this.onResize(this._terminal.cols,this._terminal.rows))}onResize(b,y){this._updateDimensions(),this._model.resize(this._terminal.cols,this._terminal.rows);for(const w of this._renderLayers)w.resize(this._terminal,this.dimensions);this._canvas.width=this.dimensions.scaledCanvasWidth,this._canvas.height=this.dimensions.scaledCanvasHeight,this._canvas.style.width=`${this.dimensions.canvasWidth}px`,this._canvas.style.height=`${this.dimensions.canvasHeight}px`,this._core.screenElement.style.width=`${this.dimensions.canvasWidth}px`,this._core.screenElement.style.height=`${this.dimensions.canvasHeight}px`,this._rectangleRenderer.setDimensions(this.dimensions),this._rectangleRenderer.onResize(),this._glyphRenderer.setDimensions(this.dimensions),this._glyphRenderer.onResize(),this._refreshCharAtlas(),this._clearModel(!1)}onCharSizeChanged(){this.onResize(this._terminal.cols,this._terminal.rows)}onBlur(){for(const b of this._renderLayers)b.onBlur(this._terminal);this._requestRedrawViewport()}onFocus(){for(const b of this._renderLayers)b.onFocus(this._terminal);this._requestRedrawViewport()}onSelectionChanged(b,y,w){for(const p of this._renderLayers)p.onSelectionChanged(this._terminal,b,y,w);this._updateSelectionModel(b,y,w),this._requestRedrawViewport()}onCursorMove(){for(const b of this._renderLayers)b.onCursorMove(this._terminal)}onOptionsChanged(){for(const b of this._renderLayers)b.onOptionsChanged(this._terminal);this._updateDimensions(),this._refreshCharAtlas()}_initializeWebGLState(){var b,y;(b=this._rectangleRenderer)===null||b===void 0||b.dispose(),(y=this._glyphRenderer)===null||y===void 0||y.dispose(),this._rectangleRenderer=new l.RectangleRenderer(this._terminal,this._colors,this._gl,this.dimensions),this._glyphRenderer=new o.GlyphRenderer(this._terminal,this._colors,this._gl,this.dimensions),this.onCharSizeChanged()}_refreshCharAtlas(){if(this.dimensions.scaledCharWidth<=0&&this.dimensions.scaledCharHeight<=0)return void(this._isAttached=!1);const b=(0,_.acquireCharAtlas)(this._terminal,this._colors,this.dimensions.scaledCellWidth,this.dimensions.scaledCellHeight,this.dimensions.scaledCharWidth,this.dimensions.scaledCharHeight,this._coreBrowserService.dpr);if(!("getRasterizedGlyph"in b))throw new Error("The webgl renderer only works with the webgl char atlas");this._charAtlas!==b&&this._onChangeTextureAtlas.fire(b.cacheCanvas),this._charAtlas=b,this._charAtlas.warmUp(),this._glyphRenderer.setAtlas(this._charAtlas)}_clearModel(b){this._model.clear(),b&&this._glyphRenderer.clear()}clearCharAtlas(){var b;(b=this._charAtlas)===null||b===void 0||b.clearTexture(),this._clearModel(!0),this._updateModel(0,this._terminal.rows-1),this._requestRedrawViewport()}clear(){this._clearModel(!0);for(const b of this._renderLayers)b.reset(this._terminal)}registerCharacterJoiner(b){return-1}deregisterCharacterJoiner(b){return!1}renderRows(b,y){if(!this._isAttached){if(!(this._coreBrowserService.window.document.body.contains(this._core.screenElement)&&this._core._charSizeService.width&&this._core._charSizeService.height))return;this._updateDimensions(),this._refreshCharAtlas(),this._isAttached=!0}for(const w of this._renderLayers)w.onGridChanged(this._terminal,b,y);this._glyphRenderer.beginFrame()&&(this._clearModel(!0),this._updateSelectionModel(void 0,void 0)),this._updateModel(b,y),this._rectangleRenderer.render(),this._glyphRenderer.render(this._model)}_updateModel(b,y){const w=this._core;let p,S,L,E,A,k,O,T,H,W,x,B,P,R=this._workCell;for(S=b;S<=y;S++)for(L=S+w.buffer.ydisp,E=w.buffer.lines.get(L),this._model.lineLengths[S]=0,A=this._characterJoinerService.getJoinedCharacters(L),B=0;B0&&B===A[0][0]&&(k=!0,T=A.shift(),R=new g(R,E.translateToString(!0,T[0],T[1]),T[1]-T[0]),O=T[1]-1),H=R.getChars(),W=R.getCode(),x=(S*w.cols+B)*a.RENDER_MODEL_INDICIES_PER_CELL,this._loadColorsForCell(B,L),W!==e.NULL_CELL_CODE&&(this._model.lineLengths[S]=B+1),(this._model.cells[x]!==W||this._model.cells[x+a.RENDER_MODEL_BG_OFFSET]!==this._workColors.bg||this._model.cells[x+a.RENDER_MODEL_FG_OFFSET]!==this._workColors.fg||this._model.cells[x+a.RENDER_MODEL_EXT_OFFSET]!==this._workColors.ext)&&(H.length>1&&(W|=a.COMBINED_CHAR_BIT_MASK),this._model.cells[x]=W,this._model.cells[x+a.RENDER_MODEL_BG_OFFSET]=this._workColors.bg,this._model.cells[x+a.RENDER_MODEL_FG_OFFSET]=this._workColors.fg,this._model.cells[x+a.RENDER_MODEL_EXT_OFFSET]=this._workColors.ext,this._glyphRenderer.updateCell(B,S,W,this._workColors.bg,this._workColors.fg,this._workColors.ext,H,p),k))for(R=this._workCell,B++;B{w.backgroundColorRGB&&(u.bg=w.backgroundColorRGB.rgba>>8&16777215,u.hasBg=!0),w.foregroundColorRGB&&(u.fg=w.foregroundColorRGB.rgba>>8&16777215,u.hasFg=!0)}),u.isSelected=this._isCellSelected(b,y),u.isSelected&&(u.bg=(this._coreBrowserService.isFocused?this._colors.selectionBackgroundOpaque:this._colors.selectionInactiveBackgroundOpaque).rgba>>8&16777215,u.hasBg=!0,this._colors.selectionForeground&&(u.fg=this._colors.selectionForeground.rgba>>8&16777215,u.hasFg=!0)),this._decorationService.forEachDecorationAtCell(b,y,"top",w=>{w.backgroundColorRGB&&(u.bg=w.backgroundColorRGB.rgba>>8&16777215,u.hasBg=!0),w.foregroundColorRGB&&(u.fg=w.foregroundColorRGB.rgba>>8&16777215,u.hasFg=!0)}),u.hasBg&&(u.isSelected?u.bg=-16777216&this._workCell.bg&-134217729|u.bg|50331648:u.bg=-16777216&this._workCell.bg|u.bg|50331648),u.hasFg&&(u.fg=-16777216&this._workCell.fg&-67108865|u.fg|50331648),67108864&this._workColors.fg&&(u.hasBg&&!u.hasFg&&((50331648&this._workColors.bg)==0?u.fg=-134217728&this._workColors.fg|16777215&this._colors.background.rgba>>8|50331648:u.fg=-134217728&this._workColors.fg|67108863&this._workColors.bg,u.hasFg=!0),!u.hasBg&&u.hasFg&&((50331648&this._workColors.fg)==0?u.bg=-67108864&this._workColors.bg|16777215&this._colors.foreground.rgba>>8|50331648:u.bg=-67108864&this._workColors.bg|67108863&this._workColors.fg,u.hasBg=!0)),this._workColors.bg=u.hasBg?u.bg:this._workColors.bg,this._workColors.fg=u.hasFg?u.fg:this._workColors.fg}_isCellSelected(b,y){return!!this._model.selection.hasSelection&&(y-=this._terminal.buffer.active.viewportY,this._model.selection.columnSelectMode?this._model.selection.startCol<=this._model.selection.endCol?b>=this._model.selection.startCol&&y>=this._model.selection.viewportCappedStartRow&&b=this._model.selection.viewportCappedStartRow&&b>=this._model.selection.endCol&&y<=this._model.selection.viewportCappedEndRow:y>this._model.selection.viewportStartRow&&y=this._model.selection.startCol&&b=this._model.selection.startCol)}_updateSelectionModel(b,y,w=!1){const p=this._terminal;if(!b||!y||b[0]===y[0]&&b[1]===y[1])return void this._model.clearSelection();const S=b[1]-p.buffer.active.viewportY,L=y[1]-p.buffer.active.viewportY,E=Math.max(S,0),A=Math.min(L,p.rows-1);E>=p.rows||A<0?this._model.clearSelection():(this._model.selection.hasSelection=!0,this._model.selection.columnSelectMode=w,this._model.selection.viewportStartRow=S,this._model.selection.viewportEndRow=L,this._model.selection.viewportCappedStartRow=E,this._model.selection.viewportCappedEndRow=A,this._model.selection.startCol=b[0],this._model.selection.endCol=y[0])}_updateDimensions(){this._core._charSizeService.width&&this._core._charSizeService.height&&(this.dimensions.scaledCharWidth=Math.floor(this._core._charSizeService.width*this._devicePixelRatio),this.dimensions.scaledCharHeight=Math.ceil(this._core._charSizeService.height*this._devicePixelRatio),this.dimensions.scaledCellHeight=Math.floor(this.dimensions.scaledCharHeight*this._terminal.options.lineHeight),this.dimensions.scaledCharTop=this._terminal.options.lineHeight===1?0:Math.round((this.dimensions.scaledCellHeight-this.dimensions.scaledCharHeight)/2),this.dimensions.scaledCellWidth=this.dimensions.scaledCharWidth+Math.round(this._terminal.options.letterSpacing),this.dimensions.scaledCharLeft=Math.floor(this._terminal.options.letterSpacing/2),this.dimensions.scaledCanvasHeight=this._terminal.rows*this.dimensions.scaledCellHeight,this.dimensions.scaledCanvasWidth=this._terminal.cols*this.dimensions.scaledCellWidth,this.dimensions.canvasHeight=Math.round(this.dimensions.scaledCanvasHeight/this._devicePixelRatio),this.dimensions.canvasWidth=Math.round(this.dimensions.scaledCanvasWidth/this._devicePixelRatio),this.dimensions.actualCellHeight=this.dimensions.scaledCellHeight/this._devicePixelRatio,this.dimensions.actualCellWidth=this.dimensions.scaledCellWidth/this._devicePixelRatio)}_setCanvasDevicePixelDimensions(b,y){this._canvas.width===b&&this._canvas.height===y||(this._canvas.width=b,this._canvas.height=y,this._requestRedrawViewport())}_requestRedrawViewport(){this._onRequestRedraw.fire({start:0,end:this._terminal.rows-1})}}r.WebglRenderer=C;class g extends v.AttributeData{constructor(b,y,w){super(),this.content=0,this.combinedData="",this.fg=b.fg,this.bg=b.bg,this.combinedData=y,this._width=w}isCombined(){return 2097152}getWidth(){return this._width}getChars(){return this.combinedData}getCode(){return 2097151}setFromCharData(b){throw new Error("not implemented")}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}r.JoinedCellData=g},381:(D,r)=>{function h(d,c,_){const l=o(d.createShader(c));if(d.shaderSource(l,_),d.compileShader(l),d.getShaderParameter(l,d.COMPILE_STATUS))return l;d.deleteShader(l)}function o(d){if(!d)throw new Error("value must not be falsy");return d}Object.defineProperty(r,"__esModule",{value:!0}),r.throwIfFalsy=r.expandFloat32Array=r.createShader=r.createProgram=r.PROJECTION_MATRIX=void 0,r.PROJECTION_MATRIX=new Float32Array([2,0,0,0,0,-2,0,0,0,0,1,0,-1,1,0,1]),r.createProgram=function(d,c,_){const l=o(d.createProgram());if(d.attachShader(l,o(h(d,d.VERTEX_SHADER,c))),d.attachShader(l,o(h(d,d.FRAGMENT_SHADER,_))),d.linkProgram(l),d.getProgramParameter(l,d.LINK_STATUS))return l;d.deleteProgram(l)},r.createShader=h,r.expandFloat32Array=function(d,c){const _=Math.min(2*d.length,c),l=new Float32Array(_);for(let a=0;a{Object.defineProperty(r,"__esModule",{value:!0}),r.removeTerminalFromCache=r.acquireCharAtlas=void 0;const o=h(433),d=h(167),c=[];r.acquireCharAtlas=function(_,l,a,i,e,n,t){const s=(0,o.generateConfig)(a,i,e,n,_,l,t);for(let u=0;u=0){if((0,o.configEquals)(C.config,s))return C.atlas;C.ownedBy.length===1?(C.atlas.dispose(),c.splice(u,1)):C.ownedBy.splice(g,1);break}}for(let u=0;u{Object.defineProperty(r,"__esModule",{value:!0}),r.is256Color=r.configEquals=r.generateConfig=void 0;const h={css:"",rgba:0};r.generateConfig=function(o,d,c,_,l,a,i){const e={foreground:a.foreground,background:a.background,cursor:h,cursorAccent:h,selectionForeground:h,selectionBackgroundTransparent:h,selectionBackgroundOpaque:h,selectionInactiveBackgroundTransparent:h,selectionInactiveBackgroundOpaque:h,ansi:a.ansi.slice(),contrastCache:a.contrastCache};return{customGlyphs:l.options.customGlyphs,devicePixelRatio:i,letterSpacing:l.options.letterSpacing,lineHeight:l.options.lineHeight,scaledCellWidth:o,scaledCellHeight:d,scaledCharWidth:c,scaledCharHeight:_,fontFamily:l.options.fontFamily,fontSize:l.options.fontSize,fontWeight:l.options.fontWeight,fontWeightBold:l.options.fontWeightBold,allowTransparency:l.options.allowTransparency,drawBoldTextInBrightColors:l.options.drawBoldTextInBrightColors,minimumContrastRatio:l.options.minimumContrastRatio,colors:e}},r.configEquals=function(o,d){for(let c=0;c{Object.defineProperty(r,"__esModule",{value:!0}),r.WebglCharAtlas=void 0;const o=h(302),d=h(855),c=h(381),_=h(147),l=h(160),a=h(14),i=h(634),e=h(485),n=1024,t=1024,s=Math.floor(819.2),f={css:"rgba(0, 0, 0, 0)",rgba:0},v={offset:{x:0,y:0},texturePosition:{x:0,y:0},texturePositionClipSpace:{x:0,y:0},size:{x:0,y:0},sizeClipSpace:{x:0,y:0}},u={glyph:void 0};function C(g,m,b,y){const w=m.rgba>>>24,p=m.rgba>>>16&255,S=m.rgba>>>8&255,L=b.rgba>>>24,E=b.rgba>>>16&255,A=b.rgba>>>8&255,k=Math.floor((Math.abs(w-L)+Math.abs(p-E)+Math.abs(S-A))/12);let O=!0;for(let T=0;Ts&&(this.clearTexture(),this.warmUp(),!0)}clearTexture(){this._currentRow.x===0&&this._currentRow.y===0||(this._cacheCtx.clearRect(0,0,n,t),this._cacheMap.clear(),this._cacheMapCombined.clear(),this._currentRow.x=0,this._currentRow.y=0,this._currentRow.height=0,this._fixedRows.length=0,this._didWarmUp=!1)}getRasterizedGlyphCombinedChar(g,m,b,y){return this._getFromCacheMap(this._cacheMapCombined,g,m,b,y)}getRasterizedGlyph(g,m,b,y){return this._getFromCacheMap(this._cacheMap,g,m,b,y)}_getFromCacheMap(g,m,b,y,w){return u.glyph=g.get(m,b,y,w),u.glyph||(u.glyph=this._drawToCache(m,b,y,w),g.set(m,b,y,w,u.glyph)),u.glyph}_getColorFromAnsiIndex(g){if(g>=this._config.colors.ansi.length)throw new Error("No color found for idx "+g);return this._config.colors.ansi[g]}_getBackgroundColor(g,m,b,y){if(this._config.allowTransparency)return f;let w;switch(g){case 16777216:case 33554432:w=this._getColorFromAnsiIndex(m);break;case 50331648:const p=_.AttributeData.toColorRGB(m);w=l.rgba.toColor(p[0],p[1],p[2]);break;default:w=b?this._config.colors.foreground:this._config.colors.background}return y&&(w=l.color.blend(this._config.colors.background,l.color.multiplyOpacity(w,o.DIM_OPACITY))),w}_getForegroundColor(g,m,b,y,w,p,S,L,E,A){const k=this._getMinimumContrastColor(g,m,b,y,w,p,!1,E,A);if(k)return k;let O;switch(w){case 16777216:case 33554432:this._config.drawBoldTextInBrightColors&&E&&p<8&&(p+=8),O=this._getColorFromAnsiIndex(p);break;case 50331648:const T=_.AttributeData.toColorRGB(p);O=l.rgba.toColor(T[0],T[1],T[2]);break;default:O=S?this._config.colors.background:this._config.colors.foreground}return this._config.allowTransparency&&(O=l.color.opaque(O)),L&&(O=l.color.multiplyOpacity(O,o.DIM_OPACITY)),O}_resolveBackgroundRgba(g,m,b){switch(g){case 16777216:case 33554432:return this._getColorFromAnsiIndex(m).rgba;case 50331648:return m<<8;default:return b?this._config.colors.foreground.rgba:this._config.colors.background.rgba}}_resolveForegroundRgba(g,m,b,y){switch(g){case 16777216:case 33554432:return this._config.drawBoldTextInBrightColors&&y&&m<8&&(m+=8),this._getColorFromAnsiIndex(m).rgba;case 50331648:return m<<8;default:return b?this._config.colors.background.rgba:this._config.colors.foreground.rgba}}_getMinimumContrastColor(g,m,b,y,w,p,S,L,E){if(this._config.minimumContrastRatio===1||E)return;const A=this._config.colors.contrastCache.getColor(g,y);if(A!==void 0)return A||void 0;const k=this._resolveBackgroundRgba(m,b,S),O=this._resolveForegroundRgba(w,p,S,L),T=l.rgba.ensureContrastRatio(k,O,this._config.minimumContrastRatio);if(!T)return void this._config.colors.contrastCache.setColor(g,y,null);const H=l.rgba.toColor(T>>24&255,T>>16&255,T>>8&255);return this._config.colors.contrastCache.setColor(g,y,H),H}_drawToCache(g,m,b,y){const w=typeof g=="number"?String.fromCharCode(g):g;this.hasCanvasChanged=!0;const p=this._config.scaledCellWidth*Math.max(w.length,2)+4;this._tmpCanvas.width=12&&!this._config.allowTransparency&&w!==" "){this._tmpCtx.save(),this._tmpCtx.textBaseline="alphabetic";const re=this._tmpCtx.measureText(w);if(this._tmpCtx.restore(),"actualBoundingBoxDescent"in re&&re.actualBoundingBoxDescent>0){this._tmpCtx.save();const Q=new Path2D;Q.rect(ge,ie-Math.ceil(q/2),this._config.scaledCellWidth,le-ie+Math.ceil(q/2)),this._tmpCtx.clip(Q),this._tmpCtx.lineWidth=3*this._config.devicePixelRatio,this._tmpCtx.strokeStyle=P.css,this._tmpCtx.strokeText(w,I,I+this._config.scaledCharHeight),this._tmpCtx.restore()}}}if(K||this._tmpCtx.fillText(w,I,I+this._config.scaledCharHeight),w==="_"&&!this._config.allowTransparency){let q=C(this._tmpCtx.getImageData(I,I,this._config.scaledCellWidth,this._config.scaledCellHeight),P,$,Z);if(q)for(let Y=1;Y<=5&&(this._tmpCtx.save(),this._tmpCtx.fillStyle=P.css,this._tmpCtx.fillRect(0,0,this._tmpCanvas.width,this._tmpCanvas.height),this._tmpCtx.restore(),this._tmpCtx.fillText(w,I,I+this._config.scaledCharHeight-Y),q=C(this._tmpCtx.getImageData(I,I,this._config.scaledCellWidth,this._config.scaledCellHeight),P,$,Z),q);Y++);}if(T){const q=Math.max(1,Math.floor(this._config.fontSize*this._config.devicePixelRatio/10)),Y=this._tmpCtx.lineWidth%2==1?.5:0;this._tmpCtx.lineWidth=q,this._tmpCtx.strokeStyle=this._tmpCtx.fillStyle,this._tmpCtx.beginPath(),this._tmpCtx.moveTo(I,I+Math.floor(this._config.scaledCharHeight/2)-Y),this._tmpCtx.lineTo(I+this._config.scaledCharWidth*N,I+Math.floor(this._config.scaledCharHeight/2)-Y),this._tmpCtx.stroke()}this._tmpCtx.restore();const oe=this._tmpCtx.getImageData(0,0,this._tmpCanvas.width,this._tmpCanvas.height);let be;if(be=this._config.allowTransparency?function(q){for(let Y=0;Y0)return!1;return!0}(oe):C(oe,P,$,Z),be)return v;const te=this._findGlyphBoundingBox(oe,this._workBoundingBox,p,U,K,I),Me=this._clipImageData(oe,this._workBoundingBox);let V;for(;;){V=this._currentRow;for(const q of this._fixedRows)(V===this._currentRow||q.height2*te.size.y&&(this._currentRow.height>0&&this._fixedRows.push(this._currentRow),V={x:0,y:this._currentRow.y+this._currentRow.height,height:te.size.y},this._fixedRows.push(V),this._currentRow={x:0,y:V.y+V.height,height:0}),V.x+te.size.x<=n)break;V===this._currentRow?(V.x=0,V.y+=V.height,V.height=0):this._fixedRows.splice(this._fixedRows.indexOf(V),1)}return te.texturePosition.x=V.x,te.texturePosition.y=V.y,te.texturePositionClipSpace.x=V.x/n,te.texturePositionClipSpace.y=V.y/t,V.height=Math.max(V.height,te.size.y),V.x+=te.size.x,this._cacheCtx.putImageData(Me,te.texturePosition.x,te.texturePosition.y),te}_findGlyphBoundingBox(g,m,b,y,w,p){m.top=0;const S=y?this._config.scaledCellHeight:this._tmpCanvas.height,L=y?this._config.scaledCellWidth:b;let E=!1;for(let A=0;A=0;A--){for(let k=0;k=0;A--){for(let k=0;k{Object.defineProperty(r,"__esModule",{value:!0}),r.BaseRenderLayer=void 0;const o=h(713),d=h(302),c=h(381);r.BaseRenderLayer=class{constructor(_,l,a,i,e,n){this._container=_,this._alpha=i,this._colors=e,this._coreBrowserService=n,this._scaledCharWidth=0,this._scaledCharHeight=0,this._scaledCellWidth=0,this._scaledCellHeight=0,this._scaledCharLeft=0,this._scaledCharTop=0,this._canvas=document.createElement("canvas"),this._canvas.classList.add(`xterm-${l}-layer`),this._canvas.style.zIndex=a.toString(),this._initCanvas(),this._container.appendChild(this._canvas)}dispose(){this._canvas.remove(),this._charAtlas&&this._charAtlas.dispose()}_initCanvas(){this._ctx=(0,c.throwIfFalsy)(this._canvas.getContext("2d",{alpha:this._alpha})),this._alpha||this._clearAll()}onOptionsChanged(_){}onBlur(_){}onFocus(_){}onCursorMove(_){}onGridChanged(_,l,a){}onSelectionChanged(_,l,a,i=!1){}setColors(_,l){this._refreshCharAtlas(_,l)}_setTransparency(_,l){if(l===this._alpha)return;const a=this._canvas;this._alpha=l,this._canvas=this._canvas.cloneNode(),this._initCanvas(),this._container.replaceChild(this._canvas,a),this._refreshCharAtlas(_,this._colors),this.onGridChanged(_,0,_.rows-1)}_refreshCharAtlas(_,l){this._scaledCharWidth<=0&&this._scaledCharHeight<=0||(this._charAtlas=(0,o.acquireCharAtlas)(_,l,this._scaledCellWidth,this._scaledCellHeight,this._scaledCharWidth,this._scaledCharHeight,this._coreBrowserService.dpr),this._charAtlas.warmUp())}resize(_,l){this._scaledCellWidth=l.scaledCellWidth,this._scaledCellHeight=l.scaledCellHeight,this._scaledCharWidth=l.scaledCharWidth,this._scaledCharHeight=l.scaledCharHeight,this._scaledCharLeft=l.scaledCharLeft,this._scaledCharTop=l.scaledCharTop,this._canvas.width=l.scaledCanvasWidth,this._canvas.height=l.scaledCanvasHeight,this._canvas.style.width=`${l.canvasWidth}px`,this._canvas.style.height=`${l.canvasHeight}px`,this._alpha||this._clearAll(),this._refreshCharAtlas(_,this._colors)}_fillCells(_,l,a,i){this._ctx.fillRect(_*this._scaledCellWidth,l*this._scaledCellHeight,a*this._scaledCellWidth,i*this._scaledCellHeight)}_fillBottomLineAtCells(_,l,a=1){this._ctx.fillRect(_*this._scaledCellWidth,(l+1)*this._scaledCellHeight-this._coreBrowserService.dpr-1,a*this._scaledCellWidth,this._coreBrowserService.dpr)}_fillLeftLineAtCell(_,l,a){this._ctx.fillRect(_*this._scaledCellWidth,l*this._scaledCellHeight,this._coreBrowserService.dpr*a,this._scaledCellHeight)}_strokeRectAtCell(_,l,a,i){this._ctx.lineWidth=this._coreBrowserService.dpr,this._ctx.strokeRect(_*this._scaledCellWidth+this._coreBrowserService.dpr/2,l*this._scaledCellHeight+this._coreBrowserService.dpr/2,a*this._scaledCellWidth-this._coreBrowserService.dpr,i*this._scaledCellHeight-this._coreBrowserService.dpr)}_clearAll(){this._alpha?this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(0,0,this._canvas.width,this._canvas.height))}_clearCells(_,l,a,i){this._alpha?this._ctx.clearRect(_*this._scaledCellWidth,l*this._scaledCellHeight,a*this._scaledCellWidth,i*this._scaledCellHeight):(this._ctx.fillStyle=this._colors.background.css,this._ctx.fillRect(_*this._scaledCellWidth,l*this._scaledCellHeight,a*this._scaledCellWidth,i*this._scaledCellHeight))}_fillCharTrueColor(_,l,a,i){this._ctx.font=this._getFont(_,!1,!1),this._ctx.textBaseline=d.TEXT_BASELINE,this._clipCell(a,i,l.getWidth()),this._ctx.fillText(l.getChars(),a*this._scaledCellWidth+this._scaledCharLeft,i*this._scaledCellHeight+this._scaledCharTop+this._scaledCharHeight)}_clipCell(_,l,a){this._ctx.beginPath(),this._ctx.rect(_*this._scaledCellWidth,l*this._scaledCellHeight,a*this._scaledCellWidth,this._scaledCellHeight),this._ctx.clip()}_getFont(_,l,a){return`${a?"italic":""} ${l?_.options.fontWeightBold:_.options.fontWeight} ${_.options.fontSize*this._coreBrowserService.dpr}px ${_.options.fontFamily}`}}},461:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.CursorRenderLayer=void 0;const o=h(592),d=h(782);class c extends o.BaseRenderLayer{constructor(a,i,e,n,t,s,f){super(i,"cursor",e,!0,n,s),this._onRequestRefreshRowsEvent=t,this._coreService=f,this._cell=new d.CellData,this._state={x:0,y:0,isFocused:!1,style:"",width:0},this._cursorRenderers={bar:this._renderBarCursor.bind(this),block:this._renderBlockCursor.bind(this),underline:this._renderUnderlineCursor.bind(this)},this.onOptionsChanged(a)}dispose(){var a;(a=this._cursorBlinkStateManager)===null||a===void 0||a.dispose(),this._cursorBlinkStateManager=void 0,super.dispose()}resize(a,i){super.resize(a,i),this._state={x:0,y:0,isFocused:!1,style:"",width:0}}reset(a){var i;this._clearCursor(),(i=this._cursorBlinkStateManager)===null||i===void 0||i.restartBlinkAnimation(a),this.onOptionsChanged(a)}onBlur(a){var i;(i=this._cursorBlinkStateManager)===null||i===void 0||i.pause(),this._onRequestRefreshRowsEvent.fire({start:a.buffer.active.cursorY,end:a.buffer.active.cursorY})}onFocus(a){var i;(i=this._cursorBlinkStateManager)===null||i===void 0||i.resume(a),this._onRequestRefreshRowsEvent.fire({start:a.buffer.active.cursorY,end:a.buffer.active.cursorY})}onOptionsChanged(a){var i;a.options.cursorBlink?this._cursorBlinkStateManager||(this._cursorBlinkStateManager=new _(()=>{this._render(a,!0)},this._coreBrowserService)):((i=this._cursorBlinkStateManager)===null||i===void 0||i.dispose(),this._cursorBlinkStateManager=void 0),this._onRequestRefreshRowsEvent.fire({start:a.buffer.active.cursorY,end:a.buffer.active.cursorY})}onCursorMove(a){var i;(i=this._cursorBlinkStateManager)===null||i===void 0||i.restartBlinkAnimation(a)}onGridChanged(a,i,e){!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isPaused?this._render(a,!1):this._cursorBlinkStateManager.restartBlinkAnimation(a)}_render(a,i){if(!this._coreService.isCursorInitialized||this._coreService.isCursorHidden)return void this._clearCursor();const e=a.buffer.active.baseY+a.buffer.active.cursorY,n=e-a.buffer.active.viewportY,t=Math.min(a.buffer.active.cursorX,a.cols-1);if(n<0||n>=a.rows)this._clearCursor();else if(a._core.buffer.lines.get(e).loadCell(t,this._cell),this._cell.content!==void 0){if(!this._coreBrowserService.isFocused){this._clearCursor(),this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css;const s=a.options.cursorStyle;return s&&s!=="block"?this._cursorRenderers[s](a,t,n,this._cell):this._renderBlurCursor(a,t,n,this._cell),this._ctx.restore(),this._state.x=t,this._state.y=n,this._state.isFocused=!1,this._state.style=s,void(this._state.width=this._cell.getWidth())}if(!this._cursorBlinkStateManager||this._cursorBlinkStateManager.isCursorVisible){if(this._state){if(this._state.x===t&&this._state.y===n&&this._state.isFocused===this._coreBrowserService.isFocused&&this._state.style===a.options.cursorStyle&&this._state.width===this._cell.getWidth())return;this._clearCursor()}this._ctx.save(),this._cursorRenderers[a.options.cursorStyle||"block"](a,t,n,this._cell),this._ctx.restore(),this._state.x=t,this._state.y=n,this._state.isFocused=!1,this._state.style=a.options.cursorStyle,this._state.width=this._cell.getWidth()}else this._clearCursor()}}_clearCursor(){this._state&&(this._coreBrowserService.dpr<1?this._clearAll():this._clearCells(this._state.x,this._state.y,this._state.width,1),this._state={x:0,y:0,isFocused:!1,style:"",width:0})}_renderBarCursor(a,i,e,n){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillLeftLineAtCell(i,e,a.options.cursorWidth),this._ctx.restore()}_renderBlockCursor(a,i,e,n){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillCells(i,e,n.getWidth(),1),this._ctx.fillStyle=this._colors.cursorAccent.css,this._fillCharTrueColor(a,n,i,e),this._ctx.restore()}_renderUnderlineCursor(a,i,e,n){this._ctx.save(),this._ctx.fillStyle=this._colors.cursor.css,this._fillBottomLineAtCells(i,e),this._ctx.restore()}_renderBlurCursor(a,i,e,n){this._ctx.save(),this._ctx.strokeStyle=this._colors.cursor.css,this._strokeRectAtCell(i,e,n.getWidth(),1),this._ctx.restore()}}r.CursorRenderLayer=c;class _{constructor(a,i){this._renderCallback=a,this._coreBrowserService=i,this.isCursorVisible=!0,this._coreBrowserService.isFocused&&this._restartInterval()}get isPaused(){return!(this._blinkStartTimeout||this._blinkInterval)}dispose(){this._blinkInterval&&(this._coreBrowserService.window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)}restartBlinkAnimation(a){this.isPaused||(this._animationTimeRestarted=Date.now(),this.isCursorVisible=!0,this._animationFrame||(this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>{this._renderCallback(),this._animationFrame=void 0})))}_restartInterval(a=600){this._blinkInterval&&(this._coreBrowserService.window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout=this._coreBrowserService.window.setTimeout(()=>{if(this._animationTimeRestarted){const i=600-(Date.now()-this._animationTimeRestarted);if(this._animationTimeRestarted=void 0,i>0)return void this._restartInterval(i)}this.isCursorVisible=!1,this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>{this._renderCallback(),this._animationFrame=void 0}),this._blinkInterval=this._coreBrowserService.window.setInterval(()=>{if(this._animationTimeRestarted){const i=600-(Date.now()-this._animationTimeRestarted);return this._animationTimeRestarted=void 0,void this._restartInterval(i)}this.isCursorVisible=!this.isCursorVisible,this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>{this._renderCallback(),this._animationFrame=void 0})},600)},a)}pause(){this.isCursorVisible=!0,this._blinkInterval&&(this._coreBrowserService.window.clearInterval(this._blinkInterval),this._blinkInterval=void 0),this._blinkStartTimeout&&(this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout),this._blinkStartTimeout=void 0),this._animationFrame&&(this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)}resume(a){this.pause(),this._animationTimeRestarted=void 0,this._restartInterval(),this.restartBlinkAnimation(a)}}},733:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.LinkRenderLayer=void 0;const o=h(592),d=h(302),c=h(433);class _ extends o.BaseRenderLayer{constructor(a,i,e,n,t){super(a,"link",i,!0,e,t),n.linkifier2.onShowLinkUnderline(s=>this._onShowLinkUnderline(s)),n.linkifier2.onHideLinkUnderline(s=>this._onHideLinkUnderline(s))}resize(a,i){super.resize(a,i),this._state=void 0}reset(a){this._clearCurrentLink()}_clearCurrentLink(){if(this._state){this._clearCells(this._state.x1,this._state.y1,this._state.cols-this._state.x1,1);const a=this._state.y2-this._state.y1-1;a>0&&this._clearCells(0,this._state.y1+1,this._state.cols,a),this._clearCells(0,this._state.y2,this._state.x2,1),this._state=void 0}}_onShowLinkUnderline(a){if(a.fg===d.INVERTED_DEFAULT_COLOR?this._ctx.fillStyle=this._colors.background.css:a.fg!==void 0&&(0,c.is256Color)(a.fg)?this._ctx.fillStyle=this._colors.ansi[a.fg].css:this._ctx.fillStyle=this._colors.foreground.css,a.y1===a.y2)this._fillBottomLineAtCells(a.x1,a.y1,a.x2-a.x1);else{this._fillBottomLineAtCells(a.x1,a.y1,a.cols-a.x1);for(let i=a.y1+1;i{Object.defineProperty(r,"__esModule",{value:!0}),r.addDisposableDomListener=void 0,r.addDisposableDomListener=function(h,o,d,c){h.addEventListener(o,d,c);let _=!1;return{dispose:()=>{_||(_=!0,h.removeEventListener(o,d,c))}}}},302:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.TEXT_BASELINE=r.DIM_OPACITY=r.INVERTED_DEFAULT_COLOR=void 0;const o=h(399);r.INVERTED_DEFAULT_COLOR=257,r.DIM_OPACITY=.5,r.TEXT_BASELINE=o.isFirefox||o.isLegacyEdge?"bottom":"ideographic"},14:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.tryDrawCustomChar=r.powerlineDefinitions=r.boxDrawingDefinitions=r.blockElementDefinitions=void 0;const o=h(634);r.blockElementDefinitions={"\u2580":[{x:0,y:0,w:8,h:4}],"\u2581":[{x:0,y:7,w:8,h:1}],"\u2582":[{x:0,y:6,w:8,h:2}],"\u2583":[{x:0,y:5,w:8,h:3}],"\u2584":[{x:0,y:4,w:8,h:4}],"\u2585":[{x:0,y:3,w:8,h:5}],"\u2586":[{x:0,y:2,w:8,h:6}],"\u2587":[{x:0,y:1,w:8,h:7}],"\u2588":[{x:0,y:0,w:8,h:8}],"\u2589":[{x:0,y:0,w:7,h:8}],"\u258A":[{x:0,y:0,w:6,h:8}],"\u258B":[{x:0,y:0,w:5,h:8}],"\u258C":[{x:0,y:0,w:4,h:8}],"\u258D":[{x:0,y:0,w:3,h:8}],"\u258E":[{x:0,y:0,w:2,h:8}],"\u258F":[{x:0,y:0,w:1,h:8}],"\u2590":[{x:4,y:0,w:4,h:8}],"\u2594":[{x:0,y:0,w:9,h:1}],"\u2595":[{x:7,y:0,w:1,h:8}],"\u2596":[{x:0,y:4,w:4,h:4}],"\u2597":[{x:4,y:4,w:4,h:4}],"\u2598":[{x:0,y:0,w:4,h:4}],"\u2599":[{x:0,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"\u259A":[{x:0,y:0,w:4,h:4},{x:4,y:4,w:4,h:4}],"\u259B":[{x:0,y:0,w:4,h:8},{x:4,y:0,w:4,h:4}],"\u259C":[{x:0,y:0,w:8,h:4},{x:4,y:0,w:4,h:8}],"\u259D":[{x:4,y:0,w:4,h:4}],"\u259E":[{x:4,y:0,w:4,h:4},{x:0,y:4,w:4,h:4}],"\u259F":[{x:4,y:0,w:4,h:8},{x:0,y:4,w:8,h:4}],"\u{1FB70}":[{x:1,y:0,w:1,h:8}],"\u{1FB71}":[{x:2,y:0,w:1,h:8}],"\u{1FB72}":[{x:3,y:0,w:1,h:8}],"\u{1FB73}":[{x:4,y:0,w:1,h:8}],"\u{1FB74}":[{x:5,y:0,w:1,h:8}],"\u{1FB75}":[{x:6,y:0,w:1,h:8}],"\u{1FB76}":[{x:0,y:1,w:8,h:1}],"\u{1FB77}":[{x:0,y:2,w:8,h:1}],"\u{1FB78}":[{x:0,y:3,w:8,h:1}],"\u{1FB79}":[{x:0,y:4,w:8,h:1}],"\u{1FB7A}":[{x:0,y:5,w:8,h:1}],"\u{1FB7B}":[{x:0,y:6,w:8,h:1}],"\u{1FB7C}":[{x:0,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"\u{1FB7D}":[{x:0,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"\u{1FB7E}":[{x:7,y:0,w:1,h:8},{x:0,y:0,w:8,h:1}],"\u{1FB7F}":[{x:7,y:0,w:1,h:8},{x:0,y:7,w:8,h:1}],"\u{1FB80}":[{x:0,y:0,w:8,h:1},{x:0,y:7,w:8,h:1}],"\u{1FB81}":[{x:0,y:0,w:8,h:1},{x:0,y:2,w:8,h:1},{x:0,y:4,w:8,h:1},{x:0,y:7,w:8,h:1}],"\u{1FB82}":[{x:0,y:0,w:8,h:2}],"\u{1FB83}":[{x:0,y:0,w:8,h:3}],"\u{1FB84}":[{x:0,y:0,w:8,h:5}],"\u{1FB85}":[{x:0,y:0,w:8,h:6}],"\u{1FB86}":[{x:0,y:0,w:8,h:7}],"\u{1FB87}":[{x:6,y:0,w:2,h:8}],"\u{1FB88}":[{x:5,y:0,w:3,h:8}],"\u{1FB89}":[{x:3,y:0,w:5,h:8}],"\u{1FB8A}":[{x:2,y:0,w:6,h:8}],"\u{1FB8B}":[{x:1,y:0,w:7,h:8}],"\u{1FB95}":[{x:0,y:0,w:2,h:2},{x:4,y:0,w:2,h:2},{x:2,y:2,w:2,h:2},{x:6,y:2,w:2,h:2},{x:0,y:4,w:2,h:2},{x:4,y:4,w:2,h:2},{x:2,y:6,w:2,h:2},{x:6,y:6,w:2,h:2}],"\u{1FB96}":[{x:2,y:0,w:2,h:2},{x:6,y:0,w:2,h:2},{x:0,y:2,w:2,h:2},{x:4,y:2,w:2,h:2},{x:2,y:4,w:2,h:2},{x:6,y:4,w:2,h:2},{x:0,y:6,w:2,h:2},{x:4,y:6,w:2,h:2}],"\u{1FB97}":[{x:0,y:2,w:8,h:2},{x:0,y:6,w:8,h:2}]};const d={"\u2591":[[1,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]],"\u2592":[[1,0],[0,0],[0,1],[0,0]],"\u2593":[[0,1],[1,1],[1,0],[1,1]]};r.boxDrawingDefinitions={"\u2500":{1:"M0,.5 L1,.5"},"\u2501":{3:"M0,.5 L1,.5"},"\u2502":{1:"M.5,0 L.5,1"},"\u2503":{3:"M.5,0 L.5,1"},"\u250C":{1:"M0.5,1 L.5,.5 L1,.5"},"\u250F":{3:"M0.5,1 L.5,.5 L1,.5"},"\u2510":{1:"M0,.5 L.5,.5 L.5,1"},"\u2513":{3:"M0,.5 L.5,.5 L.5,1"},"\u2514":{1:"M.5,0 L.5,.5 L1,.5"},"\u2517":{3:"M.5,0 L.5,.5 L1,.5"},"\u2518":{1:"M.5,0 L.5,.5 L0,.5"},"\u251B":{3:"M.5,0 L.5,.5 L0,.5"},"\u251C":{1:"M.5,0 L.5,1 M.5,.5 L1,.5"},"\u2523":{3:"M.5,0 L.5,1 M.5,.5 L1,.5"},"\u2524":{1:"M.5,0 L.5,1 M.5,.5 L0,.5"},"\u252B":{3:"M.5,0 L.5,1 M.5,.5 L0,.5"},"\u252C":{1:"M0,.5 L1,.5 M.5,.5 L.5,1"},"\u2533":{3:"M0,.5 L1,.5 M.5,.5 L.5,1"},"\u2534":{1:"M0,.5 L1,.5 M.5,.5 L.5,0"},"\u253B":{3:"M0,.5 L1,.5 M.5,.5 L.5,0"},"\u253C":{1:"M0,.5 L1,.5 M.5,0 L.5,1"},"\u254B":{3:"M0,.5 L1,.5 M.5,0 L.5,1"},"\u2574":{1:"M.5,.5 L0,.5"},"\u2578":{3:"M.5,.5 L0,.5"},"\u2575":{1:"M.5,.5 L.5,0"},"\u2579":{3:"M.5,.5 L.5,0"},"\u2576":{1:"M.5,.5 L1,.5"},"\u257A":{3:"M.5,.5 L1,.5"},"\u2577":{1:"M.5,.5 L.5,1"},"\u257B":{3:"M.5,.5 L.5,1"},"\u2550":{1:(i,e)=>`M0,${.5-e} L1,${.5-e} M0,${.5+e} L1,${.5+e}`},"\u2551":{1:(i,e)=>`M${.5-i},0 L${.5-i},1 M${.5+i},0 L${.5+i},1`},"\u2552":{1:(i,e)=>`M.5,1 L.5,${.5-e} L1,${.5-e} M.5,${.5+e} L1,${.5+e}`},"\u2553":{1:(i,e)=>`M${.5-i},1 L${.5-i},.5 L1,.5 M${.5+i},.5 L${.5+i},1`},"\u2554":{1:(i,e)=>`M1,${.5-e} L${.5-i},${.5-e} L${.5-i},1 M1,${.5+e} L${.5+i},${.5+e} L${.5+i},1`},"\u2555":{1:(i,e)=>`M0,${.5-e} L.5,${.5-e} L.5,1 M0,${.5+e} L.5,${.5+e}`},"\u2556":{1:(i,e)=>`M${.5+i},1 L${.5+i},.5 L0,.5 M${.5-i},.5 L${.5-i},1`},"\u2557":{1:(i,e)=>`M0,${.5+e} L${.5-i},${.5+e} L${.5-i},1 M0,${.5-e} L${.5+i},${.5-e} L${.5+i},1`},"\u2558":{1:(i,e)=>`M.5,0 L.5,${.5+e} L1,${.5+e} M.5,${.5-e} L1,${.5-e}`},"\u2559":{1:(i,e)=>`M1,.5 L${.5-i},.5 L${.5-i},0 M${.5+i},.5 L${.5+i},0`},"\u255A":{1:(i,e)=>`M1,${.5-e} L${.5+i},${.5-e} L${.5+i},0 M1,${.5+e} L${.5-i},${.5+e} L${.5-i},0`},"\u255B":{1:(i,e)=>`M0,${.5+e} L.5,${.5+e} L.5,0 M0,${.5-e} L.5,${.5-e}`},"\u255C":{1:(i,e)=>`M0,.5 L${.5+i},.5 L${.5+i},0 M${.5-i},.5 L${.5-i},0`},"\u255D":{1:(i,e)=>`M0,${.5-e} L${.5-i},${.5-e} L${.5-i},0 M0,${.5+e} L${.5+i},${.5+e} L${.5+i},0`},"\u255E":{1:(i,e)=>`M.5,0 L.5,1 M.5,${.5-e} L1,${.5-e} M.5,${.5+e} L1,${.5+e}`},"\u255F":{1:(i,e)=>`M${.5-i},0 L${.5-i},1 M${.5+i},0 L${.5+i},1 M${.5+i},.5 L1,.5`},"\u2560":{1:(i,e)=>`M${.5-i},0 L${.5-i},1 M1,${.5+e} L${.5+i},${.5+e} L${.5+i},1 M1,${.5-e} L${.5+i},${.5-e} L${.5+i},0`},"\u2561":{1:(i,e)=>`M.5,0 L.5,1 M0,${.5-e} L.5,${.5-e} M0,${.5+e} L.5,${.5+e}`},"\u2562":{1:(i,e)=>`M0,.5 L${.5-i},.5 M${.5-i},0 L${.5-i},1 M${.5+i},0 L${.5+i},1`},"\u2563":{1:(i,e)=>`M${.5+i},0 L${.5+i},1 M0,${.5+e} L${.5-i},${.5+e} L${.5-i},1 M0,${.5-e} L${.5-i},${.5-e} L${.5-i},0`},"\u2564":{1:(i,e)=>`M0,${.5-e} L1,${.5-e} M0,${.5+e} L1,${.5+e} M.5,${.5+e} L.5,1`},"\u2565":{1:(i,e)=>`M0,.5 L1,.5 M${.5-i},.5 L${.5-i},1 M${.5+i},.5 L${.5+i},1`},"\u2566":{1:(i,e)=>`M0,${.5-e} L1,${.5-e} M0,${.5+e} L${.5-i},${.5+e} L${.5-i},1 M1,${.5+e} L${.5+i},${.5+e} L${.5+i},1`},"\u2567":{1:(i,e)=>`M.5,0 L.5,${.5-e} M0,${.5-e} L1,${.5-e} M0,${.5+e} L1,${.5+e}`},"\u2568":{1:(i,e)=>`M0,.5 L1,.5 M${.5-i},.5 L${.5-i},0 M${.5+i},.5 L${.5+i},0`},"\u2569":{1:(i,e)=>`M0,${.5+e} L1,${.5+e} M0,${.5-e} L${.5-i},${.5-e} L${.5-i},0 M1,${.5-e} L${.5+i},${.5-e} L${.5+i},0`},"\u256A":{1:(i,e)=>`M.5,0 L.5,1 M0,${.5-e} L1,${.5-e} M0,${.5+e} L1,${.5+e}`},"\u256B":{1:(i,e)=>`M0,.5 L1,.5 M${.5-i},0 L${.5-i},1 M${.5+i},0 L${.5+i},1`},"\u256C":{1:(i,e)=>`M0,${.5+e} L${.5-i},${.5+e} L${.5-i},1 M1,${.5+e} L${.5+i},${.5+e} L${.5+i},1 M0,${.5-e} L${.5-i},${.5-e} L${.5-i},0 M1,${.5-e} L${.5+i},${.5-e} L${.5+i},0`},"\u2571":{1:"M1,0 L0,1"},"\u2572":{1:"M0,0 L1,1"},"\u2573":{1:"M1,0 L0,1 M0,0 L1,1"},"\u257C":{1:"M.5,.5 L0,.5",3:"M.5,.5 L1,.5"},"\u257D":{1:"M.5,.5 L.5,0",3:"M.5,.5 L.5,1"},"\u257E":{1:"M.5,.5 L1,.5",3:"M.5,.5 L0,.5"},"\u257F":{1:"M.5,.5 L.5,1",3:"M.5,.5 L.5,0"},"\u250D":{1:"M.5,.5 L.5,1",3:"M.5,.5 L1,.5"},"\u250E":{1:"M.5,.5 L1,.5",3:"M.5,.5 L.5,1"},"\u2511":{1:"M.5,.5 L.5,1",3:"M.5,.5 L0,.5"},"\u2512":{1:"M.5,.5 L0,.5",3:"M.5,.5 L.5,1"},"\u2515":{1:"M.5,.5 L.5,0",3:"M.5,.5 L1,.5"},"\u2516":{1:"M.5,.5 L1,.5",3:"M.5,.5 L.5,0"},"\u2519":{1:"M.5,.5 L.5,0",3:"M.5,.5 L0,.5"},"\u251A":{1:"M.5,.5 L0,.5",3:"M.5,.5 L.5,0"},"\u251D":{1:"M.5,0 L.5,1",3:"M.5,.5 L1,.5"},"\u251E":{1:"M0.5,1 L.5,.5 L1,.5",3:"M.5,.5 L.5,0"},"\u251F":{1:"M.5,0 L.5,.5 L1,.5",3:"M.5,.5 L.5,1"},"\u2520":{1:"M.5,.5 L1,.5",3:"M.5,0 L.5,1"},"\u2521":{1:"M.5,.5 L.5,1",3:"M.5,0 L.5,.5 L1,.5"},"\u2522":{1:"M.5,.5 L.5,0",3:"M0.5,1 L.5,.5 L1,.5"},"\u2525":{1:"M.5,0 L.5,1",3:"M.5,.5 L0,.5"},"\u2526":{1:"M0,.5 L.5,.5 L.5,1",3:"M.5,.5 L.5,0"},"\u2527":{1:"M.5,0 L.5,.5 L0,.5",3:"M.5,.5 L.5,1"},"\u2528":{1:"M.5,.5 L0,.5",3:"M.5,0 L.5,1"},"\u2529":{1:"M.5,.5 L.5,1",3:"M.5,0 L.5,.5 L0,.5"},"\u252A":{1:"M.5,.5 L.5,0",3:"M0,.5 L.5,.5 L.5,1"},"\u252D":{1:"M0.5,1 L.5,.5 L1,.5",3:"M.5,.5 L0,.5"},"\u252E":{1:"M0,.5 L.5,.5 L.5,1",3:"M.5,.5 L1,.5"},"\u252F":{1:"M.5,.5 L.5,1",3:"M0,.5 L1,.5"},"\u2530":{1:"M0,.5 L1,.5",3:"M.5,.5 L.5,1"},"\u2531":{1:"M.5,.5 L1,.5",3:"M0,.5 L.5,.5 L.5,1"},"\u2532":{1:"M.5,.5 L0,.5",3:"M0.5,1 L.5,.5 L1,.5"},"\u2535":{1:"M.5,0 L.5,.5 L1,.5",3:"M.5,.5 L0,.5"},"\u2536":{1:"M.5,0 L.5,.5 L0,.5",3:"M.5,.5 L1,.5"},"\u2537":{1:"M.5,.5 L.5,0",3:"M0,.5 L1,.5"},"\u2538":{1:"M0,.5 L1,.5",3:"M.5,.5 L.5,0"},"\u2539":{1:"M.5,.5 L1,.5",3:"M.5,0 L.5,.5 L0,.5"},"\u253A":{1:"M.5,.5 L0,.5",3:"M.5,0 L.5,.5 L1,.5"},"\u253D":{1:"M.5,0 L.5,1 M.5,.5 L1,.5",3:"M.5,.5 L0,.5"},"\u253E":{1:"M.5,0 L.5,1 M.5,.5 L0,.5",3:"M.5,.5 L1,.5"},"\u253F":{1:"M.5,0 L.5,1",3:"M0,.5 L1,.5"},"\u2540":{1:"M0,.5 L1,.5 M.5,.5 L.5,1",3:"M.5,.5 L.5,0"},"\u2541":{1:"M.5,.5 L.5,0 M0,.5 L1,.5",3:"M.5,.5 L.5,1"},"\u2542":{1:"M0,.5 L1,.5",3:"M.5,0 L.5,1"},"\u2543":{1:"M0.5,1 L.5,.5 L1,.5",3:"M.5,0 L.5,.5 L0,.5"},"\u2544":{1:"M0,.5 L.5,.5 L.5,1",3:"M.5,0 L.5,.5 L1,.5"},"\u2545":{1:"M.5,0 L.5,.5 L1,.5",3:"M0,.5 L.5,.5 L.5,1"},"\u2546":{1:"M.5,0 L.5,.5 L0,.5",3:"M0.5,1 L.5,.5 L1,.5"},"\u2547":{1:"M.5,.5 L.5,1",3:"M.5,.5 L.5,0 M0,.5 L1,.5"},"\u2548":{1:"M.5,.5 L.5,0",3:"M0,.5 L1,.5 M.5,.5 L.5,1"},"\u2549":{1:"M.5,.5 L1,.5",3:"M.5,0 L.5,1 M.5,.5 L0,.5"},"\u254A":{1:"M.5,.5 L0,.5",3:"M.5,0 L.5,1 M.5,.5 L1,.5"},"\u254C":{1:"M.1,.5 L.4,.5 M.6,.5 L.9,.5"},"\u254D":{3:"M.1,.5 L.4,.5 M.6,.5 L.9,.5"},"\u2504":{1:"M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5"},"\u2505":{3:"M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5"},"\u2508":{1:"M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5"},"\u2509":{3:"M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5"},"\u254E":{1:"M.5,.1 L.5,.4 M.5,.6 L.5,.9"},"\u254F":{3:"M.5,.1 L.5,.4 M.5,.6 L.5,.9"},"\u2506":{1:"M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333"},"\u2507":{3:"M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333"},"\u250A":{1:"M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95"},"\u250B":{3:"M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95"},"\u256D":{1:(i,e)=>`M.5,1 L.5,${.5+e/.15*.5} C.5,${.5+e/.15*.5},.5,.5,1,.5`},"\u256E":{1:(i,e)=>`M.5,1 L.5,${.5+e/.15*.5} C.5,${.5+e/.15*.5},.5,.5,0,.5`},"\u256F":{1:(i,e)=>`M.5,0 L.5,${.5-e/.15*.5} C.5,${.5-e/.15*.5},.5,.5,0,.5`},"\u2570":{1:(i,e)=>`M.5,0 L.5,${.5-e/.15*.5} C.5,${.5-e/.15*.5},.5,.5,1,.5`}},r.powerlineDefinitions={"\uE0B0":{d:"M0,0 L1,.5 L0,1",type:0,rightPadding:2},"\uE0B1":{d:"M-1,-.5 L1,.5 L-1,1.5",type:1,leftPadding:1,rightPadding:1},"\uE0B2":{d:"M1,0 L0,.5 L1,1",type:0,leftPadding:2},"\uE0B3":{d:"M2,-.5 L0,.5 L2,1.5",type:1,leftPadding:1,rightPadding:1},"\uE0B4":{d:"M0,0 L0,1 C0.552,1,1,0.776,1,.5 C1,0.224,0.552,0,0,0",type:0,rightPadding:1},"\uE0B5":{d:"M0,1 C0.552,1,1,0.776,1,.5 C1,0.224,0.552,0,0,0",type:1,rightPadding:1},"\uE0B6":{d:"M1,0 L1,1 C0.448,1,0,0.776,0,.5 C0,0.224,0.448,0,1,0",type:0,leftPadding:1},"\uE0B7":{d:"M1,1 C0.448,1,0,0.776,0,.5 C0,0.224,0.448,0,1,0",type:1,leftPadding:1}},r.tryDrawCustomChar=function(i,e,n,t,s,f,v,u){const C=r.blockElementDefinitions[e];if(C)return function(y,w,p,S,L,E){for(let A=0;A7&&parseInt(k.slice(7,9),16)||1;else{if(!k.startsWith("rgba"))throw new Error(`Unexpected fillStyle color format "${k}" when drawing pattern glyph`);[P,R,M,F]=k.substring(5,k.length-1).split(",").map(U=>parseFloat(U))}for(let U=0;Ui.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]),L:(i,e)=>i.lineTo(e[0],e[1]),M:(i,e)=>i.moveTo(e[0],e[1])};function a(i,e,n,t,s,f,v,u=0,C=0){const g=i.map(m=>parseFloat(m)||parseInt(m));if(g.length<2)throw new Error("Too few arguments for instruction");for(let m=0;m{Object.defineProperty(r,"__esModule",{value:!0}),r.observeDevicePixelDimensions=void 0;const o=h(859);r.observeDevicePixelDimensions=function(d,c,_){let l=new c.ResizeObserver(a=>{const i=a.find(t=>t.target===d);if(!i)return;if(!("devicePixelContentBoxSize"in i))return l==null||l.disconnect(),void(l=void 0);const e=i.devicePixelContentBoxSize[0].inlineSize,n=i.devicePixelContentBoxSize[0].blockSize;e>0&&n>0&&_(e,n)});try{l.observe(d,{box:["device-pixel-content-box"]})}catch{l.disconnect(),l=void 0}return(0,o.toDisposable)(()=>l==null?void 0:l.disconnect())}},634:(D,r)=>{function h(o){return 57508<=o&&o<=57558}Object.defineProperty(r,"__esModule",{value:!0}),r.excludeFromContrastRatioDemands=r.isRestrictedPowerlineGlyph=r.isPowerlineGlyph=r.throwIfFalsy=void 0,r.throwIfFalsy=function(o){if(!o)throw new Error("value must not be falsy");return o},r.isPowerlineGlyph=h,r.isRestrictedPowerlineGlyph=function(o){return 57520<=o&&o<=57527},r.excludeFromContrastRatioDemands=function(o){return h(o)||function(d){return 9472<=d&&d<=9631}(o)}},160:(D,r)=>{var h,o,d;function c(l){const a=l.toString(16);return a.length<2?"0"+a:a}function _(l,a){return l>>0}}(h=r.channels||(r.channels={})),function(l){function a(i,e){const n=Math.round(255*e),[t,s,f]=d.toChannels(i.rgba);return{css:h.toCss(t,s,f,n),rgba:h.toRgba(t,s,f,n)}}l.blend=function(i,e){const n=(255&e.rgba)/255;if(n===1)return{css:e.css,rgba:e.rgba};const t=e.rgba>>24&255,s=e.rgba>>16&255,f=e.rgba>>8&255,v=i.rgba>>24&255,u=i.rgba>>16&255,C=i.rgba>>8&255,g=v+Math.round((t-v)*n),m=u+Math.round((s-u)*n),b=C+Math.round((f-C)*n);return{css:h.toCss(g,m,b),rgba:h.toRgba(g,m,b)}},l.isOpaque=function(i){return(255&i.rgba)==255},l.ensureContrastRatio=function(i,e,n){const t=d.ensureContrastRatio(i.rgba,e.rgba,n);if(t)return d.toColor(t>>24&255,t>>16&255,t>>8&255)},l.opaque=function(i){const e=(255|i.rgba)>>>0,[n,t,s]=d.toChannels(e);return{css:h.toCss(n,t,s),rgba:e}},l.opacity=a,l.multiplyOpacity=function(i,e){return a(i,(255&i.rgba)*e/255)},l.toColorRGB=function(i){return[i.rgba>>24&255,i.rgba>>16&255,i.rgba>>8&255]}}(r.color||(r.color={})),(r.css||(r.css={})).toColor=function(l){if(l.match(/#[0-9a-f]{3,8}/i))switch(l.length){case 4:{const i=parseInt(l.slice(1,2).repeat(2),16),e=parseInt(l.slice(2,3).repeat(2),16),n=parseInt(l.slice(3,4).repeat(2),16);return d.toColor(i,e,n)}case 5:{const i=parseInt(l.slice(1,2).repeat(2),16),e=parseInt(l.slice(2,3).repeat(2),16),n=parseInt(l.slice(3,4).repeat(2),16),t=parseInt(l.slice(4,5).repeat(2),16);return d.toColor(i,e,n,t)}case 7:return{css:l,rgba:(parseInt(l.slice(1),16)<<8|255)>>>0};case 9:return{css:l,rgba:parseInt(l.slice(1),16)>>>0}}const a=l.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(a){const i=parseInt(a[1]),e=parseInt(a[2]),n=parseInt(a[3]),t=Math.round(255*(a[5]===void 0?1:parseFloat(a[5])));return d.toColor(i,e,n,t)}throw new Error("css.toColor: Unsupported css format")},function(l){function a(i,e,n){const t=i/255,s=e/255,f=n/255;return .2126*(t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.7152*(s<=.03928?s/12.92:Math.pow((s+.055)/1.055,2.4))+.0722*(f<=.03928?f/12.92:Math.pow((f+.055)/1.055,2.4))}l.relativeLuminance=function(i){return a(i>>16&255,i>>8&255,255&i)},l.relativeLuminance2=a}(o=r.rgb||(r.rgb={})),function(l){function a(e,n,t){const s=e>>24&255,f=e>>16&255,v=e>>8&255;let u=n>>24&255,C=n>>16&255,g=n>>8&255,m=_(o.relativeLuminance2(u,C,g),o.relativeLuminance2(s,f,v));for(;m0||C>0||g>0);)u-=Math.max(0,Math.ceil(.1*u)),C-=Math.max(0,Math.ceil(.1*C)),g-=Math.max(0,Math.ceil(.1*g)),m=_(o.relativeLuminance2(u,C,g),o.relativeLuminance2(s,f,v));return(u<<24|C<<16|g<<8|255)>>>0}function i(e,n,t){const s=e>>24&255,f=e>>16&255,v=e>>8&255;let u=n>>24&255,C=n>>16&255,g=n>>8&255,m=_(o.relativeLuminance2(u,C,g),o.relativeLuminance2(s,f,v));for(;m>>0}l.ensureContrastRatio=function(e,n,t){const s=o.relativeLuminance(e>>8),f=o.relativeLuminance(n>>8);if(_(s,f)>8));if(g_(s,o.relativeLuminance(m>>8))?C:m}return C}const v=i(e,n,t),u=_(s,o.relativeLuminance(v>>8));if(u_(s,o.relativeLuminance(C>>8))?v:C}return v}},l.reduceLuminance=a,l.increaseLuminance=i,l.toChannels=function(e){return[e>>24&255,e>>16&255,e>>8&255,255&e]},l.toColor=function(e,n,t,s){return{css:h.toCss(e,n,t,s),rgba:h.toRgba(e,n,t,s)}}}(d=r.rgba||(r.rgba={})),r.toPaddedHex=c,r.contrastRatio=_},345:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.forwardEvent=r.EventEmitter=void 0,r.EventEmitter=class{constructor(){this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=h=>(this._listeners.push(h),{dispose:()=>{if(!this._disposed){for(let o=0;oo.fire(d))}},859:(D,r)=>{function h(o){for(const d of o)d.dispose();o.length=0}Object.defineProperty(r,"__esModule",{value:!0}),r.getDisposeArrayDisposable=r.disposeArray=r.toDisposable=r.Disposable=void 0,r.Disposable=class{constructor(){this._disposables=[],this._isDisposed=!1}dispose(){this._isDisposed=!0;for(const o of this._disposables)o.dispose();this._disposables.length=0}register(o){return this._disposables.push(o),o}unregister(o){const d=this._disposables.indexOf(o);d!==-1&&this._disposables.splice(d,1)}},r.toDisposable=function(o){return{dispose:o}},r.disposeArray=h,r.getDisposeArrayDisposable=function(o){return{dispose:()=>h(o)}}},485:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.FourKeyMap=r.TwoKeyMap=void 0;class h{constructor(){this._data={}}set(d,c,_){this._data[d]||(this._data[d]={}),this._data[d][c]=_}get(d,c){return this._data[d]?this._data[d][c]:void 0}clear(){this._data={}}}r.TwoKeyMap=h,r.FourKeyMap=class{constructor(){this._data=new h}set(o,d,c,_,l){this._data.get(o,d)||this._data.set(o,d,new h),this._data.get(o,d).set(c,_,l)}get(o,d,c,_){var l;return(l=this._data.get(o,d))===null||l===void 0?void 0:l.get(c,_)}clear(){this._data.clear()}}},399:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.isLinux=r.isWindows=r.isIphone=r.isIpad=r.isMac=r.isSafari=r.isLegacyEdge=r.isFirefox=void 0;const h=typeof navigator=="undefined",o=h?"node":navigator.userAgent,d=h?"node":navigator.platform;r.isFirefox=o.includes("Firefox"),r.isLegacyEdge=o.includes("Edge"),r.isSafari=/^((?!chrome|android).)*safari/i.test(o),r.isMac=["Macintosh","MacIntel","MacPPC","Mac68K"].includes(d),r.isIpad=d==="iPad",r.isIphone=d==="iPhone",r.isWindows=["Windows","Win16","Win32","WinCE"].includes(d),r.isLinux=d.indexOf("Linux")>=0},455:(D,r)=>{function h(o,d,c=0,_=o.length){if(c>=o.length)return o;c=(o.length+c)%o.length,_=_>=o.length?o.length:(o.length+_)%o.length;for(let l=c;l<_;++l)o[l]=d;return o}Object.defineProperty(r,"__esModule",{value:!0}),r.concat=r.fillFallback=r.fill=void 0,r.fill=function(o,d,c,_){return o.fill?o.fill(d,c,_):h(o,d,c,_)},r.fillFallback=h,r.concat=function(o,d){const c=new o.constructor(o.length+d.length);return c.set(o),c.set(d,o.length),c}},147:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ExtendedAttrs=r.AttributeData=void 0;class h{constructor(){this.fg=0,this.bg=0,this.extended=new o}static toColorRGB(c){return[c>>>16&255,c>>>8&255,255&c]}static fromColorRGB(c){return(255&c[0])<<16|(255&c[1])<<8|255&c[2]}clone(){const c=new h;return c.fg=this.fg,c.bg=this.bg,c.extended=this.extended.clone(),c}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return(50331648&this.fg)==50331648}isBgRGB(){return(50331648&this.bg)==50331648}isFgPalette(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432}isBgPalette(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432}isFgDefault(){return(50331648&this.fg)==0}isBgDefault(){return(50331648&this.bg)==0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==50331648:this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==0:this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}}r.AttributeData=h;class o{constructor(c=0,_=0){this._ext=0,this._urlId=0,this._ext=c,this._urlId=_}get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(c){this._ext=c}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(c){this._ext&=-469762049,this._ext|=c<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(c){this._ext&=-67108864,this._ext|=67108863&c}get urlId(){return this._urlId}set urlId(c){this._urlId=c}clone(){return new o(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}r.ExtendedAttrs=o},782:(D,r,h)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.CellData=void 0;const o=h(133),d=h(855),c=h(147);class _ extends c.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new c.ExtendedAttrs,this.combinedData=""}static fromCharData(a){const i=new _;return i.setFromCharData(a),i}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,o.stringFromCodePoint)(2097151&this.content):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(a){this.fg=a[d.CHAR_DATA_ATTR_INDEX],this.bg=0;let i=!1;if(a[d.CHAR_DATA_CHAR_INDEX].length>2)i=!0;else if(a[d.CHAR_DATA_CHAR_INDEX].length===2){const e=a[d.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=e&&e<=56319){const n=a[d.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=n&&n<=57343?this.content=1024*(e-55296)+n-56320+65536|a[d.CHAR_DATA_WIDTH_INDEX]<<22:i=!0}else i=!0}else this.content=a[d.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|a[d.CHAR_DATA_WIDTH_INDEX]<<22;i&&(this.combinedData=a[d.CHAR_DATA_CHAR_INDEX],this.content=2097152|a[d.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}r.CellData=_},855:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.WHITESPACE_CELL_CODE=r.WHITESPACE_CELL_WIDTH=r.WHITESPACE_CELL_CHAR=r.NULL_CELL_CODE=r.NULL_CELL_WIDTH=r.NULL_CELL_CHAR=r.CHAR_DATA_CODE_INDEX=r.CHAR_DATA_WIDTH_INDEX=r.CHAR_DATA_CHAR_INDEX=r.CHAR_DATA_ATTR_INDEX=r.DEFAULT_EXT=r.DEFAULT_ATTR=r.DEFAULT_COLOR=void 0,r.DEFAULT_COLOR=256,r.DEFAULT_ATTR=256|r.DEFAULT_COLOR<<9,r.DEFAULT_EXT=0,r.CHAR_DATA_ATTR_INDEX=0,r.CHAR_DATA_CHAR_INDEX=1,r.CHAR_DATA_WIDTH_INDEX=2,r.CHAR_DATA_CODE_INDEX=3,r.NULL_CELL_CHAR="",r.NULL_CELL_WIDTH=1,r.NULL_CELL_CODE=0,r.WHITESPACE_CELL_CHAR=" ",r.WHITESPACE_CELL_WIDTH=1,r.WHITESPACE_CELL_CODE=32},133:(D,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.Utf8ToUtf32=r.StringToUtf32=r.utf32ToString=r.stringFromCodePoint=void 0,r.stringFromCodePoint=function(h){return h>65535?(h-=65536,String.fromCharCode(55296+(h>>10))+String.fromCharCode(h%1024+56320)):String.fromCharCode(h)},r.utf32ToString=function(h,o=0,d=h.length){let c="";for(let _=o;_65535?(l-=65536,c+=String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):c+=String.fromCharCode(l)}return c},r.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(h,o){const d=h.length;if(!d)return 0;let c=0,_=0;if(this._interim){const l=h.charCodeAt(_++);56320<=l&&l<=57343?o[c++]=1024*(this._interim-55296)+l-56320+65536:(o[c++]=this._interim,o[c++]=l),this._interim=0}for(let l=_;l=d)return this._interim=a,c;const i=h.charCodeAt(l);56320<=i&&i<=57343?o[c++]=1024*(a-55296)+i-56320+65536:(o[c++]=a,o[c++]=i)}else a!==65279&&(o[c++]=a)}return c}},r.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(h,o){const d=h.length;if(!d)return 0;let c,_,l,a,i=0,e=0,n=0;if(this.interim[0]){let f=!1,v=this.interim[0];v&=(224&v)==192?31:(240&v)==224?15:7;let u,C=0;for(;(u=63&this.interim[++C])&&C<4;)v<<=6,v|=u;const g=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,m=g-C;for(;n=d)return 0;if(u=h[n++],(192&u)!=128){n--,f=!0;break}this.interim[C++]=u,v<<=6,v|=63&u}f||(g===2?v<128?n--:o[i++]=v:g===3?v<2048||v>=55296&&v<=57343||v===65279||(o[i++]=v):v<65536||v>1114111||(o[i++]=v)),this.interim.fill(0)}const t=d-4;let s=n;for(;s=d)return this.interim[0]=c,i;if(_=h[s++],(192&_)!=128){s--;continue}if(e=(31&c)<<6|63&_,e<128){s--;continue}o[i++]=e}else if((240&c)==224){if(s>=d)return this.interim[0]=c,i;if(_=h[s++],(192&_)!=128){s--;continue}if(s>=d)return this.interim[0]=c,this.interim[1]=_,i;if(l=h[s++],(192&l)!=128){s--;continue}if(e=(15&c)<<12|(63&_)<<6|63&l,e<2048||e>=55296&&e<=57343||e===65279)continue;o[i++]=e}else if((248&c)==240){if(s>=d)return this.interim[0]=c,i;if(_=h[s++],(192&_)!=128){s--;continue}if(s>=d)return this.interim[0]=c,this.interim[1]=_,i;if(l=h[s++],(192&l)!=128){s--;continue}if(s>=d)return this.interim[0]=c,this.interim[1]=_,this.interim[2]=l,i;if(a=h[s++],(192&a)!=128){s--;continue}if(e=(7&c)<<18|(63&_)<<12|(63&l)<<6|63&a,e<65536||e>1114111)continue;o[i++]=e}}return i}}}},J={};function j(D){var r=J[D];if(r!==void 0)return r.exports;var h=J[D]={exports:{}};return ee[D](h,h.exports,j),h.exports}var se={};return(()=>{var D=se;Object.defineProperty(D,"__esModule",{value:!0}),D.WebglAddon=void 0;const r=j(666),h=j(345),o=j(399);D.WebglAddon=class{constructor(d){this._preserveDrawingBuffer=d,this._onChangeTextureAtlas=new h.EventEmitter,this._onContextLoss=new h.EventEmitter}get onChangeTextureAtlas(){return this._onChangeTextureAtlas.event}get onContextLoss(){return this._onContextLoss.event}activate(d){if(!d.element)throw new Error("Cannot activate WebglAddon before Terminal.open");if(o.isSafari)throw new Error("Webgl is not currently supported on Safari");this._terminal=d;const c=d._core._renderService,_=d._core._characterJoinerService,l=d._core._coreBrowserService,a=d._core.coreService,i=d._core._decorationService,e=d._core._colorManager.colors;this._renderer=new r.WebglRenderer(d,e,_,l,a,i,this._preserveDrawingBuffer),(0,h.forwardEvent)(this._renderer.onContextLoss,this._onContextLoss),(0,h.forwardEvent)(this._renderer.onChangeTextureAtlas,this._onChangeTextureAtlas),c.setRenderer(this._renderer)}dispose(){var d;if(!this._terminal)throw new Error("Cannot dispose WebglAddon because it is activated");const c=this._terminal._core._renderService;c.setRenderer(this._terminal._core._createRenderer()),c.onResize(this._terminal.cols,this._terminal.rows),(d=this._renderer)===null||d===void 0||d.dispose(),this._renderer=void 0}get textureAtlas(){var d;return(d=this._renderer)===null||d===void 0?void 0:d.textureAtlas}clearTextureAtlas(){var d;(d=this._renderer)===null||d===void 0||d.clearCharAtlas()}}})(),se})()})})(De);function Fe(X,z){return ce(),ke("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"2",stroke:"currentColor","aria-hidden":"true"},[Ee("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4 6h16M4 12h16M4 18h7"})])}var We="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAB5UlEQVRYR+2XQU8TURSFz2lLCHa6QJopbExcmHSmaogbd8oPENeucW1YWxcCCbAnbA2/AfEHwM7EBYmGRxP2hj6MLphaDWWu6ZQhdBjo9IURSPq28+49X857b+69xDUvhvp/fzxwjo5z0wLeSZOJkN9D2dbGcHFvt60TAHi6MgnIdprC0dwEnuRttR0ANLRbFWBRIFsQbqYKQpki+JzAu7ytlgKAw7o7R+K9COYLJTWXJkBU6+YCeHXnM8inXW6I/GGWr/JFtR7n0qF2Ntv2XhaT2AFPu3JOxASgk2TZslU17rgvPIIQwLLV6VPt926El3sAYOZA3d1vW26V1Hi/1of7G9qdEeCDALMFW630eQcqgbBl7wQgJksEbPwqP8yP1nZI+H0BmAgmiUn8DJMkM9kzABg4cHsc8LTzqfMf2H1hctuDRuegPO37XMtk+TqsoIkdGBSjG+NA0KieLIJNAtV2NxvbEdWdBRDPTvcL7oG8b14NiVJUSOC/Kdi11TgATzvfAU6cjzGshsLj8tlkWWaaI2PqS1jZokKeroz3ikn8CkyfXq+4WABPu28BLP3PwQRA1bLVcmc0+1l+hFbmay/6K/2e8x9bd2vfuodTP/dShCNXKhRJRkpzKNP62DWcpinYK/c/z0ExP3rClK8AAAAASUVORK5CYII=",Ue="./static/png/arthas-bcfffb2d.png";const $e={class:"flex flex-col h-[100vh] w-[100vw] resize-none"},Ne={key:0,class:"navbar bg-base-100 md:flex-row flex-col w-[100vw]"},ze={class:"navbar-start"},je={class:"dropdown dropdown-start 2xl:hidden"},Ke={tabindex:"0",class:"btn btn-ghost btn-sm"},qe=xe('
',1),Ge={href:"https://github.com/alibaba/arthas",target:"_blank",title:"",class:"mr-2 w-20"},Ve=["src"],Xe=xe('',1),Ye={class:"navbar-center"},Je={class:"input-group input-group-sm mr-2"},Ze=G("span",null,"IP",-1),Qe={class:"input-group input-group-sm mr-2"},et=G("span",null,"Port",-1),tt={key:0,class:"input-group input-group-sm mr-2"},it=G("span",null,"AgentId",-1),st={class:"navbar-end"},rt=["onClick"],nt=["href"],ot=G("div",{class:"w-full h-0 flex-auto bg-black overscroll-auto",id:"terminal-card"},[G("div",{id:"terminal",class:"w-full h-full"})],-1),at={key:1,title:"fullscreen",id:"fullSc",class:"fullSc"},ht=["src"],lt=Te({__name:"Console",props:{isTunnel:{type:Boolean,required:!1,default:!1},isNativeAgent:{type:Boolean,required:!1,default:!1}},setup(X){let z,ee=-1;const J=1e3,j=9999999,se=1,D=X.isTunnel?"7777":"8563",r=ae(""),h=ae(""),o=ae(!0),d=ae(!0),c=ae(""),_=ae(""),l=Ie(()=>X.isTunnel?`proxy/${c.value}/arthas-output/`:"/arthas-output/"),a=new Ae.exports.FitAddon,i=new De.exports.WebglAddon;let e=new Se.exports.Terminal({allowProposedApi:!0});Pe(()=>{var w,p,S,L;r.value=(w=n("ip"))!=null?w:window.location.hostname,h.value=(p=n("port"))!=null?p:D,X.isTunnel&&(c.value=(S=n("agentId"))!=null?S:""),X.isNativeAgent&&(_.value=(L=n("nativeAgentAddress"))!=null?L:"");let y=n("iframe");y&&y.trim()!=="false"&&(o.value=!1),C(!0),window.addEventListener("resize",function(){if(z!=null){const{cols:E,rows:A}=a.proposeDimensions();z.send(JSON.stringify({action:"resize",cols:E,rows:A})),a.fit()}})});function n(y){return new URLSearchParams(window.location.search).get(y)}function t(){var E;const y=`${r.value}:${h.value}`;if(X.isNativeAgent)return`ws://${y}/ws?nativeAgentAddress=${_.value}`;if(!X.isTunnel)return`ws://${y}/ws`;const w=(E=n("path"))!=null?E:"ws",p=n("targetServer"),L=`${location.protocol==="https:"?"wss://":"ws://"}${y}/${encodeURIComponent(w)}?method=connectArthas&id=${c.value}`;return p!=null?L+"&targetServer="+encodeURIComponent(p):L}function s(y){let w=t();z=new WebSocket(w),z.onerror=function(){z!=null||z.close(),z=void 0,!y&&alert("Connect error")},z.onopen=function(){var E;d.value=!0;let p=(E=n("scrollback"))!=null?E:"0";const{cols:S,rows:L}=f(p);e.onData(function(A){z==null||z.send(JSON.stringify({action:"read",data:A}))}),z.onmessage=function(A){if(A.type==="message"){var k=A.data;e.write(k)}},z==null||z.send(JSON.stringify({action:"resize",cols:S,rows:L})),ee=window.setInterval(function(){z!=null&&z.readyState===1&&z.send(JSON.stringify({action:"read",data:""}))},3e4)},z.onclose=function(p){ee!=-1&&(window.clearInterval(ee),ee=-1),p.code===2e3&&alert(p.reason)}}function f(y){let w=parseInt(y,10);return e=new Se.exports.Terminal({screenReaderMode:!1,convertEol:!0,allowProposedApi:!0,scrollback:v(w)?w:J}),e.loadAddon(a),e.open(document.getElementById("terminal")),e.loadAddon(i),a.fit(),{cols:e.cols,rows:e.rows}}function v(y){return y>=se&&y<=j}const u=y=>r.value.trim()===""||h.value.trim()===""?(alert("Ip or port can not be empty"),!1):X.isTunnel&&c.value==""?(y||alert("AgentId can not be empty"),!1):z?(alert("Already connected"),!1):!0;function C(y=!1){u(y)&&s(y)}function g(){try{z.close(),z.onmessage=null,z.onclose=null,z=void 0,e.dispose(),a.dispose(),i.dispose(),d.value=!1,alert("Connection was closed successfully!")}catch{alert("No connection, please start connect first.")}}function m(){var y=document.getElementById("terminal-card");b(y),y.onfullscreenchange=w=>{a.fit()}}function b(y){let w=y.requestFullscreen;if(w)w.call(y);else if(window.ActiveXObject){var p=new ActiveXObject("WScript.Shell");p!==null&&p.SendKeys("{F11}")}}return(y,w)=>(ce(),ue("div",$e,[o.value?(ce(),ue("nav",Ne,[G("div",ze,[G("div",je,[G("label",Ke,[Ee(fe(Fe),{class:"w-6 h-6"})]),qe]),G("a",Ge,[G("img",{src:fe(Ue),alt:"Arthas",title:"Welcome to Arthas web console"},null,8,Ve)]),Xe]),G("div",Ye,[G("div",{class:ye(["xl:flex-row form-control",{"xl:flex-row":X.isTunnel,"lg:flex-row":!X.isTunnel}])},[G("label",Je,[Ze,pe(G("input",{type:"text",placeholder:"please enter ip address",class:"input input-bordered input-sm","onUpdate:modelValue":w[0]||(w[0]=p=>r.value=p)},null,512),[[me,r.value]])]),G("label",Qe,[et,pe(G("input",{type:"text",placeholder:"please enter port",class:"input input-sm input-bordered","onUpdate:modelValue":w[1]||(w[1]=p=>h.value=p)},null,512),[[me,h.value]])]),X.isTunnel?(ce(),ue("label",tt,[it,pe(G("input",{type:"text",placeholder:"please enter AgentId",class:"input input-sm input-bordered","onUpdate:modelValue":w[2]||(w[2]=p=>c.value=p)},null,512),[[me,c.value]])])):Ce("v-if",!0)],2)]),G("div",st,[G("div",{class:ye(["btn-group 2xl:btn-group-horizontal btn-group-horizontal",{"md:btn-group-vertical":X.isTunnel}])},[G("button",{class:"btn btn-sm bg-secondary hover:bg-secondary-focus border-none text-secondary-content focus:bg-secondary-focus normal-case",onClick:w[3]||(w[3]=Le(p=>C(!0),["prevent"]))},"Connect"),G("button",{class:"btn btn-sm bg-secondary hover:bg-secondary-focus border-none text-secondary-content focus:bg-secondary-focus normal-case",onClick:Le(g,["prevent"])},"Disconnect",8,rt),G("a",{class:"btn btn-sm bg-secondary hover:bg-secondary-focus border-none text-secondary-content focus:bg-secondary-focus normal-case",href:fe(l),target:"_blank"},"Arthas Output",8,nt)],2)])])):Ce("v-if",!0),ot,d.value?(ce(),ue("div",at,[G("button",{id:"fullScBtn",onClick:m},[G("img",{src:fe(We)},null,8,ht)])])):Ce("v-if",!0)]))}});var ct=Be(lt,[["__file","D:/code/java/read/arthas/web-ui/arthasWebConsole/all/share/component/Console.vue"]]);const dt=Oe(He(ct,{isNativeAgent:!0}));dt.mount("#app"); diff --git a/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/main-38ee3337.js b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/main-38ee3337.js new file mode 100644 index 00000000000..01119b49848 --- /dev/null +++ b/cluster-management/native-agent-management-web/src/main/resources/native-agent/static/js/main-38ee3337.js @@ -0,0 +1,5 @@ +const Yr=function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))o(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&o(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerpolicy&&(s.referrerPolicy=r.referrerpolicy),r.crossorigin==="use-credentials"?s.credentials="include":r.crossorigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function o(r){if(r.ep)return;r.ep=!0;const s=n(r);fetch(r.href,s)}};Yr();function Me(e,t){const n=Object.create(null),o=e.split(",");for(let r=0;r!!n[r.toLowerCase()]:r=>!!n[r]}function Rn(e){if(M(e)){const t={};for(let n=0;n{if(n){const o=n.split(Zr);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function Sn(e){let t="";if(U(e))t=e;else if(M(e))for(let n=0;nU(e)?e:e==null?"":M(e)||H(e)&&(e.toString===Bo||!N(e.toString))?JSON.stringify(e,Do,2):String(e),Do=(e,t)=>t&&t.__v_isRef?Do(e,t.value):Ne(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[o,r])=>(n[`${o} =>`]=r,n),{})}:ko(t)?{[`Set(${t.size})`]:[...t.values()]}:H(t)&&!M(t)&&!Ko(t)?String(t):t,L=Object.freeze({}),Ze=Object.freeze([]),Ue=()=>{},Ho=()=>!1,is=/^on[^a-z]/,xt=e=>is.test(e),Dt=e=>e.startsWith("onUpdate:"),B=Object.assign,ls=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},cs=Object.prototype.hasOwnProperty,P=(e,t)=>cs.call(e,t),M=Array.isArray,Ne=e=>qt(e)==="[object Map]",ko=e=>qt(e)==="[object Set]",N=e=>typeof e=="function",U=e=>typeof e=="string",Nn=e=>typeof e=="symbol",H=e=>e!==null&&typeof e=="object",Uo=e=>H(e)&&N(e.then)&&N(e.catch),Bo=Object.prototype.toString,qt=e=>Bo.call(e),jn=e=>qt(e).slice(8,-1),Ko=e=>qt(e)==="[object Object]",Ln=e=>U(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,At=Me(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),fs=Me("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),zt=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},us=/-(\w)/g,Ge=zt(e=>e.replace(us,(t,n)=>n?n.toUpperCase():"")),as=/\B([A-Z])/g,Ce=zt(e=>e.replace(as,"-$1").toLowerCase()),Dn=zt(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ae=zt(e=>e?`on${Dn(e)}`:""),Hn=(e,t)=>!Object.is(e,t),ze=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},kt=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let so;const Vo=()=>so||(so=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});function bn(e,...t){}let ce;class ds{constructor(t=!1){this.detached=t,this.active=!0,this.effects=[],this.cleanups=[],this.parent=ce,!t&&ce&&(this.index=(ce.scopes||(ce.scopes=[])).push(this)-1)}run(t){if(this.active){const n=ce;try{return ce=this,t()}finally{ce=n}}else bn("cannot run an inactive effect scope.")}on(){ce=this}off(){ce=this.parent}stop(t){if(this.active){let n,o;for(n=0,o=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Wo=e=>(e.w&Ee)>0,qo=e=>(e.n&Ee)>0,hs=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let o=0;o{(d==="length"||d>=p)&&c.push(b)})}else switch(n!==void 0&&c.push(i.get(n)),t){case"add":M(e)?Ln(n)&&c.push(i.get("length")):(c.push(i.get(je)),Ne(e)&&c.push(i.get(wn)));break;case"delete":M(e)||(c.push(i.get(je)),Ne(e)&&c.push(i.get(wn)));break;case"set":Ne(e)&&c.push(i.get(je));break}const u={target:e,type:t,key:n,newValue:o,oldValue:r,oldTarget:s};if(c.length===1)c[0]&&xn(c[0],u);else{const p=[];for(const b of c)b&&p.push(...b);xn(kn(p),u)}}function xn(e,t){const n=M(e)?e:[...e];for(const o of n)o.computed&&lo(o,t);for(const o of n)o.computed||lo(o,t)}function lo(e,t){(e!==z||e.allowRecurse)&&(e.onTrigger&&e.onTrigger(B({effect:e},t)),e.scheduler?e.scheduler():e.run())}const gs=Me("__proto__,__v_isRef,__isVue"),Xo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Nn)),bs=Jt(),_s=Jt(!1,!0),ys=Jt(!0),ws=Jt(!0,!0),co=xs();function xs(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const o=F(this);for(let s=0,i=this.length;s{e[t]=function(...n){et();const o=F(this)[t].apply(this,n);return tt(),o}}),e}function Jt(e=!1,t=!1){return function(o,r,s){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&s===(e?t?rr:or:t?nr:tr).get(o))return o;const i=M(o);if(!e&&i&&P(co,r))return Reflect.get(co,r,s);const c=Reflect.get(o,r,s);return(Nn(r)?Xo.has(r):gs(r))||(e||Q(o,"get",r),t)?c:J(c)?i&&Ln(r)?c:c.value:H(c)?e?ir(c):sr(c):c}}const vs=Zo(),Os=Zo(!0);function Zo(e=!1){return function(n,o,r,s){let i=n[o];if($e(i)&&J(i)&&!J(r))return!1;if(!e&&(!lr(r)&&!$e(r)&&(i=F(i),r=F(r)),!M(n)&&J(i)&&!J(r)))return i.value=r,!0;const c=M(n)&&Ln(o)?Number(o)e,Yt=e=>Reflect.getPrototypeOf(e);function $t(e,t,n=!1,o=!1){e=e.__v_raw;const r=F(e),s=F(t);n||(t!==s&&Q(r,"get",t),Q(r,"get",s));const{has:i}=Yt(r),c=o?Un:n?Bn:gt;if(i.call(r,t))return c(e.get(t));if(i.call(r,s))return c(e.get(s));e!==r&&e.get(t)}function It(e,t=!1){const n=this.__v_raw,o=F(n),r=F(e);return t||(e!==r&&Q(o,"has",e),Q(o,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Mt(e,t=!1){return e=e.__v_raw,!t&&Q(F(e),"iterate",je),Reflect.get(e,"size",e)}function fo(e){e=F(e);const t=F(this);return Yt(t).has.call(t,e)||(t.add(e),be(t,"add",e,e)),this}function uo(e,t){t=F(t);const n=F(this),{has:o,get:r}=Yt(n);let s=o.call(n,e);s?er(n,o,e):(e=F(e),s=o.call(n,e));const i=r.call(n,e);return n.set(e,t),s?Hn(t,i)&&be(n,"set",e,t,i):be(n,"add",e,t),this}function ao(e){const t=F(this),{has:n,get:o}=Yt(t);let r=n.call(t,e);r?er(t,n,e):(e=F(e),r=n.call(t,e));const s=o?o.call(t,e):void 0,i=t.delete(e);return r&&be(t,"delete",e,void 0,s),i}function po(){const e=F(this),t=e.size!==0,n=Ne(e)?new Map(e):new Set(e),o=e.clear();return t&&be(e,"clear",void 0,void 0,n),o}function Ft(e,t){return function(o,r){const s=this,i=s.__v_raw,c=F(i),u=t?Un:e?Bn:gt;return!e&&Q(c,"iterate",je),i.forEach((p,b)=>o.call(r,u(p),u(b),s))}}function Pt(e,t,n){return function(...o){const r=this.__v_raw,s=F(r),i=Ne(s),c=e==="entries"||e===Symbol.iterator&&i,u=e==="keys"&&i,p=r[e](...o),b=n?Un:t?Bn:gt;return!t&&Q(s,"iterate",u?wn:je),{next(){const{value:d,done:x}=p.next();return x?{value:d,done:x}:{value:c?[b(d[0]),b(d[1])]:b(d),done:x}},[Symbol.iterator](){return this}}}}function we(e){return function(...t){{const n=t[0]?`on key "${t[0]}" `:""}return e==="delete"?!1:this}}function Ms(){const e={get(s){return $t(this,s)},get size(){return Mt(this)},has:It,add:fo,set:uo,delete:ao,clear:po,forEach:Ft(!1,!1)},t={get(s){return $t(this,s,!1,!0)},get size(){return Mt(this)},has:It,add:fo,set:uo,delete:ao,clear:po,forEach:Ft(!1,!0)},n={get(s){return $t(this,s,!0)},get size(){return Mt(this,!0)},has(s){return It.call(this,s,!0)},add:we("add"),set:we("set"),delete:we("delete"),clear:we("clear"),forEach:Ft(!0,!1)},o={get(s){return $t(this,s,!0,!0)},get size(){return Mt(this,!0)},has(s){return It.call(this,s,!0)},add:we("add"),set:we("set"),delete:we("delete"),clear:we("clear"),forEach:Ft(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(s=>{e[s]=Pt(s,!1,!1),n[s]=Pt(s,!0,!1),t[s]=Pt(s,!1,!0),o[s]=Pt(s,!0,!0)}),[e,n,t,o]}const[Fs,Ps,As,Rs]=Ms();function Xt(e,t){const n=t?e?Rs:As:e?Ps:Fs;return(o,r,s)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?o:Reflect.get(P(n,r)&&r in o?n:o,r,s)}const Ss={get:Xt(!1,!1)},Ns={get:Xt(!1,!0)},js={get:Xt(!0,!1)},Ls={get:Xt(!0,!0)};function er(e,t,n){const o=F(n);if(o!==n&&t.call(e,o)){const r=jn(e)}}const tr=new WeakMap,nr=new WeakMap,or=new WeakMap,rr=new WeakMap;function Ds(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Hs(e){return e.__v_skip||!Object.isExtensible(e)?0:Ds(jn(e))}function sr(e){return $e(e)?e:Zt(e,!1,Qo,Ss,tr)}function ks(e){return Zt(e,!1,$s,Ns,nr)}function ir(e){return Zt(e,!0,Go,js,or)}function Xe(e){return Zt(e,!0,Is,Ls,rr)}function Zt(e,t,n,o,r){if(!H(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=r.get(e);if(s)return s;const i=Hs(e);if(i===0)return e;const c=new Proxy(e,i===2?o:n);return r.set(e,c),c}function Qt(e){return $e(e)?Qt(e.__v_raw):!!(e&&e.__v_isReactive)}function $e(e){return!!(e&&e.__v_isReadonly)}function lr(e){return!!(e&&e.__v_isShallow)}function vn(e){return Qt(e)||$e(e)}function F(e){const t=e&&e.__v_raw;return t?F(t):e}function cr(e){return Ht(e,"__v_skip",!0),e}const gt=e=>H(e)?sr(e):e,Bn=e=>H(e)?ir(e):e;function fr(e){Te&&z&&(e=F(e),Yo(e.dep||(e.dep=kn()),{target:e,type:"get",key:"value"}))}function ur(e,t){e=F(e),e.dep&&xn(e.dep,{target:e,type:"set",key:"value",newValue:t})}function J(e){return!!(e&&e.__v_isRef===!0)}function zl(e){return Us(e,!1)}function Us(e,t){return J(e)?e:new Bs(e,t)}class Bs{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:F(t),this._value=n?t:gt(t)}get value(){return fr(this),this._value}set value(t){const n=this.__v_isShallow||lr(t)||$e(t);t=n?t:F(t),Hn(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:gt(t),ur(this,t))}}function Ks(e){return J(e)?e.value:e}const Vs={get:(e,t,n)=>Ks(Reflect.get(e,t,n)),set:(e,t,n,o)=>{const r=e[t];return J(r)&&!J(n)?(r.value=n,!0):Reflect.set(e,t,n,o)}};function ar(e){return Qt(e)?e:new Proxy(e,Vs)}var dr;class Ws{constructor(t,n,o,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[dr]=!1,this._dirty=!0,this.effect=new zo(t,()=>{this._dirty||(this._dirty=!0,ur(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=o}get value(){const t=F(this);return fr(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}dr="__v_isReadonly";function qs(e,t,n=!1){let o,r;const s=N(e);s?(o=e,r=()=>{}):(o=e.get,r=e.set);const i=new Ws(o,r,s||!r,n);return t&&!n&&(i.effect.onTrack=t.onTrack,i.effect.onTrigger=t.onTrigger),i}const Le=[];function Rt(e){Le.push(e)}function St(){Le.pop()}function O(e,...t){et();const n=Le.length?Le[Le.length-1].component:null,o=n&&n.appContext.config.warnHandler,r=zs();if(o)nt(o,n,11,[e+t.join(""),n&&n.proxy,r.map(({vnode:s})=>`at <${on(n,s.type)}>`).join(` +`),r]);else{const s=[`[Vue warn]: ${e}`,...t];r.length&&s.push(` +`,...Js(r))}tt()}function zs(){let e=Le[Le.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const o=e.component&&e.component.parent;e=o&&o.vnode}return t}function Js(e){const t=[];return e.forEach((n,o)=>{t.push(...o===0?[]:[` +`],...Ys(n))}),t}function Ys({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",o=e.component?e.component.parent==null:!1,r=` at <${on(e.component,e.type,o)}`,s=">"+n;return e.props?[r,...Xs(e.props),s]:[r+s]}function Xs(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(o=>{t.push(...pr(o,e[o]))}),n.length>3&&t.push(" ..."),t}function pr(e,t,n){return U(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:J(t)?(t=pr(e,F(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):N(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=F(t),n?t:[`${e}=`,t])}const Kn={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",[0]:"setup function",[1]:"render function",[2]:"watcher getter",[3]:"watcher callback",[4]:"watcher cleanup function",[5]:"native event handler",[6]:"component event handler",[7]:"vnode hook",[8]:"directive hook",[9]:"transition hook",[10]:"app errorHandler",[11]:"app warnHandler",[12]:"ref function",[13]:"async component loader",[14]:"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core"};function nt(e,t,n,o){let r;try{r=o?e(...o):e()}catch(s){Gt(s,t,n)}return r}function Be(e,t,n,o){if(N(e)){const s=nt(e,t,n,o);return s&&Uo(s)&&s.catch(i=>{Gt(i,t,n)}),s}const r=[];for(let s=0;s>>1;_t(V[o])ae&&V.splice(t,1)}function gr(e){M(e)?Qe.push(...e):(!fe||!fe.includes(e,e.allowRecurse?xe+1:xe))&&Qe.push(e),mr()}function ho(e,t=bt?ae+1:0){for(e=e||new Map;t_t(n)-_t(o)),xe=0;xee.id==null?1/0:e.id,ni=(e,t)=>{const n=_t(e)-_t(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function _r(e){On=!1,bt=!0,e=e||new Map,V.sort(ni);const t=n=>qn(e,n);try{for(ae=0;aeQs){const o=t.ownerInstance,r=o&&Ur(o.type);return O(`Maximum recursive updates exceeded${r?` in component <${r}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`),!0}else e.set(t,n+1)}}let De=!1;const Je=new Set;Vo().__VUE_HMR_RUNTIME__={createRecord:an(yr),rerender:an(si),reload:an(ii)};const Ke=new Map;function oi(e){const t=e.type.__hmrId;let n=Ke.get(t);n||(yr(t,e.type),n=Ke.get(t)),n.instances.add(e)}function ri(e){Ke.get(e.type.__hmrId).instances.delete(e)}function yr(e,t){return Ke.has(e)?!1:(Ke.set(e,{initialDef:dt(t),instances:new Set}),!0)}function dt(e){return Br(e)?e.__vccOpts:e}function si(e,t){const n=Ke.get(e);!n||(n.initialDef.render=t,[...n.instances].forEach(o=>{t&&(o.render=t,dt(o.type).render=t),o.renderCache=[],De=!0,o.update(),De=!1}))}function ii(e,t){const n=Ke.get(e);if(!n)return;t=dt(t),mo(n.initialDef,t);const o=[...n.instances];for(const r of o){const s=dt(r.type);Je.has(s)||(s!==n.initialDef&&mo(s,t),Je.add(s)),r.appContext.optionsCache.delete(r.type),r.ceReload?(Je.add(s),r.ceReload(t.styles),Je.delete(s)):r.parent?Wn(r.parent.update):r.appContext.reload?r.appContext.reload():typeof window!="undefined"&&window.location.reload()}gr(()=>{for(const r of o)Je.delete(dt(r.type))})}function mo(e,t){B(e,t);for(const n in e)n!=="__file"&&!(n in t)&&delete e[n]}function an(e){return(t,n)=>{try{return e(t,n)}catch{}}}let de,ut=[],Tn=!1;function vt(e,...t){de?de.emit(e,...t):Tn||ut.push({event:e,args:t})}function wr(e,t){var n,o;de=e,de?(de.enabled=!0,ut.forEach(({event:r,args:s})=>de.emit(r,...s)),ut=[]):typeof window!="undefined"&&window.HTMLElement&&!(!((o=(n=window.navigator)===null||n===void 0?void 0:n.userAgent)===null||o===void 0)&&o.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(s=>{wr(s,t)}),setTimeout(()=>{de||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,Tn=!0,ut=[])},3e3)):(Tn=!0,ut=[])}function li(e,t){vt("app:init",e,t,{Fragment:ue,Text:Ot,Comment:Z,Static:pt})}function ci(e){vt("app:unmount",e)}const fi=zn("component:added"),xr=zn("component:updated"),ui=zn("component:removed"),ai=e=>{de&&typeof de.cleanupBuffer=="function"&&!de.cleanupBuffer(e)&&ui(e)};function zn(e){return t=>{vt(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const di=vr("perf:start"),pi=vr("perf:end");function vr(e){return(t,n,o)=>{vt(e,t.appContext.app,t.uid,t,n,o)}}function hi(e,t,n){vt("component:emit",e.appContext.app,e,t,n)}function mi(e,t,...n){if(e.isUnmounted)return;const o=e.vnode.props||L;{const{emitsOptions:b,propsOptions:[d]}=e;if(b)if(!(t in b))(!d||!(Ae(t)in d))&&O(`Component emitted event "${t}" but it is neither declared in the emits option nor as an "${Ae(t)}" prop.`);else{const x=b[t];N(x)&&(x(...n)||O(`Invalid event arguments: event validation failed for event "${t}".`))}}let r=n;const s=t.startsWith("update:"),i=s&&t.slice(7);if(i&&i in o){const b=`${i==="modelValue"?"model":i}Modifiers`,{number:d,trim:x}=o[b]||L;x&&(r=n.map(I=>U(I)?I.trim():I)),d&&(r=n.map(kt))}hi(e,t,r);{const b=t.toLowerCase();b!==t&&o[Ae(b)]&&O(`Event "${b}" is emitted in component ${on(e,e.type)} but the handler is registered for "${t}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${Ce(t)}" instead of "${t}".`)}let c,u=o[c=Ae(t)]||o[c=Ae(Ge(t))];!u&&s&&(u=o[c=Ae(Ce(t))]),u&&Be(u,e,6,r);const p=o[c+"Once"];if(p){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,Be(p,e,6,r)}}function gi(e,t,n=!1){const o=t.emitsCache,r=o.get(e);if(r!==void 0)return r;const s=e.emits;let i={};return!s&&!!1?(H(e)&&o.set(e,null),null):(M(s)?s.forEach(u=>i[u]=null):B(i,s),H(e)&&o.set(e,i),i)}function en(e,t){return!e||!xt(t)?!1:(t=t.slice(2).replace(/Once$/,""),P(e,t[0].toLowerCase()+t.slice(1))||P(e,Ce(t))||P(e,t))}let ee=null,Or=null;function Ut(e){const t=ee;return ee=e,Or=e&&e.type.__scopeId||null,t}function bi(e,t=ee,n){if(!t||e._n)return e;const o=(...r)=>{o._d&&Co(-1);const s=Ut(t);let i;try{i=e(...r)}finally{Ut(s),o._d&&Co(1)}return xr(t),i};return o._n=!0,o._c=!0,o._d=!0,o}let Cn=!1;function Bt(){Cn=!0}function dn(e){const{type:t,vnode:n,proxy:o,withProxy:r,props:s,propsOptions:[i],slots:c,attrs:u,emit:p,render:b,renderCache:d,data:x,setupState:I,ctx:D,inheritAttrs:R}=e;let te,se;const rn=Ut(e);Cn=!1;try{if(n.shapeFlag&4){const Y=r||o;te=oe(b.call(Y,Y,d,s,I,x,D)),se=u}else{const Y=t;u===s&&Bt(),te=oe(Y.length>1?Y(s,{get attrs(){return Bt(),u},slots:c,emit:p}):Y(s,null)),se=t.props?u:yi(u)}}catch(Y){ht.length=0,Gt(Y,e,1),te=X(Z)}let K=te,ot;if(te.patchFlag>0&&te.patchFlag&2048&&([K,ot]=_i(te)),se&&R!==!1){const Y=Object.keys(se),{shapeFlag:sn}=K;if(Y.length){if(sn&7)i&&Y.some(Dt)&&(se=wi(se,i)),K=Ie(K,se);else if(!Cn&&K.type!==Z){const Tt=Object.keys(u),Ve=[],pe=[];for(let rt=0,st=Tt.length;rt renders non-element root node that cannot be animated."),K.transition=n.transition),ot?ot(K):te=K,Ut(rn),te}const _i=e=>{const t=e.children,n=e.dynamicChildren,o=Tr(t);if(!o)return[e,void 0];const r=t.indexOf(o),s=n?n.indexOf(o):-1,i=c=>{t[r]=c,n&&(s>-1?n[s]=c:c.patchFlag>0&&(e.dynamicChildren=[...n,c]))};return[oe(o),i]};function Tr(e){let t;for(let n=0;n{let t;for(const n in e)(n==="class"||n==="style"||xt(n))&&((t||(t={}))[n]=e[n]);return t},wi=(e,t)=>{const n={};for(const o in e)(!Dt(o)||!(o.slice(9)in t))&&(n[o]=e[o]);return n},go=e=>e.shapeFlag&7||e.type===Z;function xi(e,t,n){const{props:o,children:r,component:s}=e,{props:i,children:c,patchFlag:u}=t,p=s.emitsOptions;if((r||c)&&De||t.dirs||t.transition)return!0;if(n&&u>=0){if(u&1024)return!0;if(u&16)return o?bo(o,i,p):!!i;if(u&8){const b=t.dynamicProps;for(let d=0;de.__isSuspense;function Ti(e,t){t&&t.pendingBranch?M(e)?t.effects.push(...e):t.effects.push(e):gr(e)}function at(e,t){if(!H(e)||e.__v_skip||(t=t||new Set,t.has(e)))return e;if(t.add(e),J(e))at(e.value,t);else if(M(e))for(let n=0;n{at(n,t)});else if(Ko(e))for(const n in e)at(e[n],t);return e}function Jl(e){return N(e)?{setup:e,name:e.name}:e}const Nt=e=>!!e.type.__asyncLoader,Cr=e=>e.type.__isKeepAlive;function Ci(e,t,n=ke,o=!1){if(n){const r=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;et(),Xn(n);const c=Be(t,n,e,i);return mt(),tt(),c});return o?r.unshift(s):r.push(s),s}else{const r=Ae(Kn[e].replace(/ hook$/,""));O(`${r} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.`)}}const Ei=e=>(t,n=ke)=>(!Wt||e==="sp")&&Ci(e,(...o)=>t(...o),n),Yl=Ei("m");function Er(e){fs(e)&&O("Do not use built-in directive ids as custom directive id: "+e)}function Xl(e,t){const n=ee;if(n===null)return O("withDirectives can only be used inside render functions."),e;const o=nn(n)||n.proxy,r=e.dirs||(e.dirs=[]);for(let s=0;st(i,c,void 0,s&&s[c]));else{const i=Object.keys(e);r=new Array(i.length);for(let c=0,u=i.length;ce?Hr(e)?nn(e)||e.proxy:En(e.parent):null,He=B(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>Xe(e.props),$attrs:e=>Xe(e.attrs),$slots:e=>Xe(e.slots),$refs:e=>Xe(e.refs),$parent:e=>En(e.parent),$root:e=>En(e.root),$emit:e=>e.emit,$options:e=>e.type,$forceUpdate:e=>e.f||(e.f=()=>Wn(e.update)),$nextTick:e=>e.n||(e.n=Gs.bind(e.proxy)),$watch:e=>Ue}),$r=e=>e==="_"||e==="$",pn=(e,t)=>e!==L&&!e.__isScriptSetup&&P(e,t),Ir={get({_:e},t){const{ctx:n,setupState:o,data:r,props:s,accessCache:i,type:c,appContext:u}=e;if(t==="__isVue")return!0;let p;if(t[0]!=="$"){const I=i[t];if(I!==void 0)switch(I){case 1:return o[t];case 2:return r[t];case 4:return n[t];case 3:return s[t]}else{if(pn(o,t))return i[t]=1,o[t];if(r!==L&&P(r,t))return i[t]=2,r[t];if((p=e.propsOptions[0])&&P(p,t))return i[t]=3,s[t];if(n!==L&&P(n,t))return i[t]=4,n[t];i[t]=0}}const b=He[t];let d,x;if(b)return t==="$attrs"&&(Q(e,"get",t),Bt()),b(e);if((d=c.__cssModules)&&(d=d[t]))return d;if(n!==L&&P(n,t))return i[t]=4,n[t];if(x=u.config.globalProperties,P(x,t))return x[t];ee&&(!U(t)||t.indexOf("__v")!==0)&&(r!==L&&$r(t[0])&&P(r,t)?O(`Property ${JSON.stringify(t)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`):e===ee&&O(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,n){const{data:o,setupState:r,ctx:s}=e;return pn(r,t)?(r[t]=n,!0):r.__isScriptSetup&&P(r,t)?(O(`Cannot mutate + + + +
+
+ + + + \ No newline at end of file diff --git a/web-ui/arthasWebConsole/all/native-agent/console.html b/web-ui/arthasWebConsole/all/native-agent/console.html new file mode 100644 index 00000000000..fd88087f014 --- /dev/null +++ b/web-ui/arthasWebConsole/all/native-agent/console.html @@ -0,0 +1,16 @@ + + + + + + + + Arthas Native Agent + + + +
+ + + + \ No newline at end of file diff --git a/web-ui/arthasWebConsole/all/native-agent/index.html b/web-ui/arthasWebConsole/all/native-agent/index.html new file mode 100644 index 00000000000..d5a2c23bcaf --- /dev/null +++ b/web-ui/arthasWebConsole/all/native-agent/index.html @@ -0,0 +1,16 @@ + + + + + + + + Arthas Native Agent + + + +
+ + + + \ No newline at end of file diff --git a/web-ui/arthasWebConsole/all/native-agent/processes.html b/web-ui/arthasWebConsole/all/native-agent/processes.html new file mode 100644 index 00000000000..1e67a6cacdb --- /dev/null +++ b/web-ui/arthasWebConsole/all/native-agent/processes.html @@ -0,0 +1,17 @@ + + + + + + + Arthas Native Agent + + + + +
+
+ + + + \ No newline at end of file diff --git a/web-ui/arthasWebConsole/all/native-agent/src/Agent.vue b/web-ui/arthasWebConsole/all/native-agent/src/Agent.vue new file mode 100644 index 00000000000..743a294fb64 --- /dev/null +++ b/web-ui/arthasWebConsole/all/native-agent/src/Agent.vue @@ -0,0 +1,54 @@ + + + \ No newline at end of file diff --git a/web-ui/arthasWebConsole/all/native-agent/src/Process.vue b/web-ui/arthasWebConsole/all/native-agent/src/Process.vue new file mode 100644 index 00000000000..b9bf6a79b17 --- /dev/null +++ b/web-ui/arthasWebConsole/all/native-agent/src/Process.vue @@ -0,0 +1,142 @@ + + + \ No newline at end of file diff --git a/web-ui/arthasWebConsole/all/native-agent/src/agents.ts b/web-ui/arthasWebConsole/all/native-agent/src/agents.ts new file mode 100644 index 00000000000..a94303218a8 --- /dev/null +++ b/web-ui/arthasWebConsole/all/native-agent/src/agents.ts @@ -0,0 +1,6 @@ +import { createApp } from "vue"; +import App from "./Agent.vue"; +const app = createApp(App); +import "~/main.css"; +app + .mount("#app"); diff --git a/web-ui/arthasWebConsole/all/native-agent/src/console.ts b/web-ui/arthasWebConsole/all/native-agent/src/console.ts new file mode 100644 index 00000000000..501d3ff8838 --- /dev/null +++ b/web-ui/arthasWebConsole/all/native-agent/src/console.ts @@ -0,0 +1,7 @@ +import { createApp, h } from "vue"; +import App from "~/component/Console.vue"; +const app = createApp(h(App, {isNativeAgent: true})) +import "xterm/css/xterm.css"; +import "~/main.css"; +app + .mount("#app"); diff --git a/web-ui/arthasWebConsole/all/native-agent/src/main.css b/web-ui/arthasWebConsole/all/native-agent/src/main.css new file mode 100644 index 00000000000..bd6213e1dfe --- /dev/null +++ b/web-ui/arthasWebConsole/all/native-agent/src/main.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/web-ui/arthasWebConsole/all/native-agent/src/main.ts b/web-ui/arthasWebConsole/all/native-agent/src/main.ts new file mode 100644 index 00000000000..ff31d477ef6 --- /dev/null +++ b/web-ui/arthasWebConsole/all/native-agent/src/main.ts @@ -0,0 +1,9 @@ +import { createApp, h } from "vue"; +// import App from "~/component/Console.vue"; +import NativeAgnet from "./Agent.vue"; +// const app = createApp(h(App, { isTunnel: true })); +const app = createApp(h(NativeAgnet)) +import "xterm/css/xterm.css"; +import "~/main.css"; +app + .mount("#app"); diff --git a/web-ui/arthasWebConsole/all/native-agent/src/processes.ts b/web-ui/arthasWebConsole/all/native-agent/src/processes.ts new file mode 100644 index 00000000000..f8958217d5e --- /dev/null +++ b/web-ui/arthasWebConsole/all/native-agent/src/processes.ts @@ -0,0 +1,6 @@ +import { createApp } from "vue"; +import App from "./Process.vue"; +const app = createApp(App); +import "~/main.css"; +app + .mount("#app"); diff --git a/web-ui/arthasWebConsole/all/share/component/Console.vue b/web-ui/arthasWebConsole/all/share/component/Console.vue index a04ddcdb046..198398682e9 100644 --- a/web-ui/arthasWebConsole/all/share/component/Console.vue +++ b/web-ui/arthasWebConsole/all/share/component/Console.vue @@ -6,8 +6,9 @@ import { WebglAddon } from "xterm-addon-webgl" import { MenuAlt2Icon } from "@heroicons/vue/outline" import fullPic from "~/assert/fullsc.png" import arthasLogo from "~/assert/arthas.png" -const { isTunnel = false } = defineProps<{ +const { isTunnel = false, isNativeAgent = false} = defineProps<{ isTunnel?: boolean + isNativeAgent?: boolean }>() let ws: WebSocket | undefined; @@ -21,6 +22,7 @@ const port = ref('') const iframe = ref(true) const fullSc = ref(true) const agentID = ref('') +const nativeAgentAddress = ref('') const outputHerf = computed(() => { console.log(agentID.value) return isTunnel?`proxy/${agentID.value}/arthas-output/`:`/arthas-output/` @@ -33,6 +35,7 @@ let xterm = new Terminal({ allowProposedApi: true }) onMounted(() => { ip.value = getUrlParam('ip') ?? window.location.hostname; port.value = getUrlParam('port') ?? ARTHAS_PORT; + if (isNativeAgent) nativeAgentAddress.value = getUrlParam("nativeAgentAddress") ?? "" if (isTunnel) agentID.value = getUrlParam("agentId") ?? "" let _iframe = getUrlParam('iframe') if (_iframe && _iframe.trim() !== 'false') iframe.value = false @@ -55,6 +58,7 @@ function getUrlParam(name: string) { function getWsUri() { const host = `${ip.value}:${port.value}` + if (isNativeAgent) return `ws://${host}/ws?nativeAgentAddress=${nativeAgentAddress.value}`; if (!isTunnel) return `ws://${host}/ws`; const path = getUrlParam("path") ?? 'ws' const _targetServer = getUrlParam("targetServer") diff --git a/web-ui/arthasWebConsole/package.json b/web-ui/arthasWebConsole/package.json index 09fe3923f45..c83073e6999 100644 --- a/web-ui/arthasWebConsole/package.json +++ b/web-ui/arthasWebConsole/package.json @@ -3,9 +3,11 @@ "private": false, "version": "0.1.4", "scripts": { + "dev:native-agent": "vite --port 3939 --mode native-agent", "dev:tunnel": "vite --port 8000 --mode tunnel", "dev:ui": "vite --port 8000 --mode ui", "build": "vue-tsc --noEmit && vite build --mode tunnel && vite build --mode ui", + "build:native-agent": "vue-tsc --noEmit && vite build --mode native-agent", "build:tunnel": "vue-tsc --noEmit && vite build --mode tunnel", "build:ui": "vue-tsc --noEmit && vite build --mode ui", "preview:ui": "vite preview --mode ui", @@ -16,6 +18,7 @@ "@heroicons/vue": "^1.0.6", "@highlightjs/vue-plugin": "^2.1.0", "@xstate/vue": "^2.0.0", + "axios": "^1.7.7", "daisyui": "^2.31.0", "dayjs": "^1.11.6", "echarts": "^5.3.3", diff --git a/web-ui/arthasWebConsole/vite.config.ts b/web-ui/arthasWebConsole/vite.config.ts index 605d74daa28..7fd3a3d41c2 100644 --- a/web-ui/arthasWebConsole/vite.config.ts +++ b/web-ui/arthasWebConsole/vite.config.ts @@ -40,6 +40,22 @@ export default defineConfig(({ mode }) => { changeOrigin: true, }, }; + } else if (mode === "native-agent") { + outDir = path.resolve(__dirname, `dist/native-agent`); + root = "./all/native-agent"; + base = "./" + input = { + nativeAgent: path.resolve(__dirname, "all/native-agent/index.html"), + agents: path.resolve(__dirname, "all/native-agent/agents.html"), + processes: path.resolve(__dirname, "all/native-agent/processes.html"), + console: path.resolve(__dirname, "all/native-agent/console.html") + }; + proxy = { + "/api": { + target: `http://${proxyTarget}`, + changeOrigin: true, + }, + }; } return {

!lasQ%VnA_au!8K?L498ti}42SWJq|yJl6k1 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 Qz5sqCL}Z1_1ohwjUy}nq*Z=?k literal 0 HcmV?d00001 diff --git a/cluster-management/images/native_agent_architecture.png b/cluster-management/images/native_agent_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..a1e2be155d81e96ab804f4c81990da7c476f148c GIT binary patch literal 41601 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�Q1me|IF1;8 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