livedesk 0.1.201 → 0.1.202

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -558,9 +558,26 @@ function safeText(value, maxLength = 1000) {
558
558
 
559
559
  function normalizeApprovalLevel(value) {
560
560
  const level = safeString(value, 80).toLowerCase();
561
+ if (level === 'read-only') {
562
+ return 'read-only';
563
+ }
561
564
  return level === 'ai-assist' ? 'ai-assist' : 'task-only';
562
565
  }
563
566
 
567
+ const SUPPORTED_AGENT_OPERATIONS = new Set([
568
+ 'system.health',
569
+ 'gpu.status',
570
+ 'disk.status',
571
+ 'process.list',
572
+ 'service.status',
573
+ 'diagnostics.collect'
574
+ ]);
575
+
576
+ function normalizeAgentOperation(value) {
577
+ const operation = safeString(value, 80).toLowerCase();
578
+ return SUPPORTED_AGENT_OPERATIONS.has(operation) ? operation : '';
579
+ }
580
+
564
581
  function normalizeRemoteInputEvent(value = {}) {
565
582
  const input = value && typeof value === 'object' ? value : {};
566
583
  const type = safeString(input.type || input.Type, 48);
@@ -933,6 +950,8 @@ function serializeTaskBatch(batch) {
933
950
  batchId: batch.batchId,
934
951
  title: batch.title,
935
952
  instructionPreview: batch.instructionPreview,
953
+ operation: batch.operation,
954
+ targetQuery: batch.targetQuery,
936
955
  approvalLevel: batch.approvalLevel,
937
956
  status: batch.status,
938
957
  requestedAt: batch.requestedAt,
@@ -942,6 +961,7 @@ function serializeTaskBatch(batch) {
942
961
  pending: batch.pending,
943
962
  completed: batch.completed,
944
963
  failed: batch.failed,
964
+ cancelled: batch.cancelled,
945
965
  timedOut: batch.timedOut,
946
966
  results: Array.isArray(batch.results)
947
967
  ? batch.results.map(item => ({ ...item }))
@@ -1803,6 +1823,66 @@ export function createRemoteHub(options = {}) {
1803
1823
  return listTaskBatches()[0] || null;
1804
1824
  }
1805
1825
 
1826
+ function getTaskBatch(batchId) {
1827
+ return serializeTaskBatch(taskBatches.get(safeString(batchId, 128)) || null);
1828
+ }
1829
+
1830
+ function cancelTaskBatch(batchId) {
1831
+ const batch = taskBatches.get(safeString(batchId, 128));
1832
+ if (!batch) {
1833
+ return { ok: false, error: 'task-not-found' };
1834
+ }
1835
+
1836
+ for (const item of batch.results) {
1837
+ if (!['targeted', 'queued', 'running'].includes(item.status)) {
1838
+ continue;
1839
+ }
1840
+ const device = devices.get(item.deviceId);
1841
+ const task = device?.pendingTaskCommands?.get(item.commandId);
1842
+ if (task) {
1843
+ clearTaskTimeout(device, task.commandId);
1844
+ device.pendingTaskCommands.delete(task.commandId);
1845
+ task.status = 'cancelled';
1846
+ task.stage = 'Cancelled';
1847
+ task.updatedAt = new Date().toISOString();
1848
+ task.completedAt = task.updatedAt;
1849
+ task.error = 'cancelled-by-user';
1850
+ task.resultSummary = 'Cancelled by user.';
1851
+ syncTaskBatchFromTask(device, task);
1852
+ continue;
1853
+ }
1854
+ item.status = 'cancelled';
1855
+ item.stage = 'Cancelled';
1856
+ item.error = 'cancelled-by-user';
1857
+ item.sequence = Number(item.sequence || 0) + 1;
1858
+ }
1859
+
1860
+ recalculateTaskBatch(batch);
1861
+ return { ok: true, ...serializeTaskBatch(batch) };
1862
+ }
1863
+
1864
+ function retryTaskBatch(batchId, options = {}) {
1865
+ const batch = taskBatches.get(safeString(batchId, 128));
1866
+ if (!batch) {
1867
+ return { ok: false, error: 'task-not-found' };
1868
+ }
1869
+ const failedOnly = options.failedOnly !== false;
1870
+ const targetIds = batch.results
1871
+ .filter(item => !failedOnly || item.status === 'failed')
1872
+ .map(item => item.deviceId)
1873
+ .filter(deviceId => devices.get(deviceId)?.connected === true);
1874
+ if (targetIds.length === 0) {
1875
+ return { ok: false, error: 'no-retry-targets' };
1876
+ }
1877
+ return requestAgentTaskBatch(targetIds, {
1878
+ instruction: batch.instructionPreview,
1879
+ title: batch.title,
1880
+ operation: batch.operation,
1881
+ targetQuery: batch.targetQuery,
1882
+ approvalLevel: batch.approvalLevel
1883
+ });
1884
+ }
1885
+
1806
1886
  function emitRemoteEvent(type, device = null, extra = {}) {
1807
1887
  emitEvent(type, {
1808
1888
  ...extra,
@@ -2719,6 +2799,8 @@ export function createRemoteHub(options = {}) {
2719
2799
  .slice(0, 500);
2720
2800
  const now = new Date().toISOString();
2721
2801
  const instruction = safeText(options.instruction, MAX_AGENT_TASK_CHARS);
2802
+ const operation = normalizeAgentOperation(options.operation);
2803
+ const targetQuery = safeText(options.targetQuery, 160);
2722
2804
  const batchId = safeString(options.batchId, 128) || crypto.randomUUID();
2723
2805
  const title = safeString(options.title, 120)
2724
2806
  || safeString(instruction.split(/\r?\n/)[0], 120)
@@ -2727,6 +2809,8 @@ export function createRemoteHub(options = {}) {
2727
2809
  batchId,
2728
2810
  title,
2729
2811
  instructionPreview: safeText(instruction, 320),
2812
+ operation,
2813
+ targetQuery,
2730
2814
  approvalLevel: normalizeApprovalLevel(options.approvalLevel),
2731
2815
  status: targets.length > 0 ? 'running' : 'failed',
2732
2816
  requestedAt: now,
@@ -2739,12 +2823,16 @@ export function createRemoteHub(options = {}) {
2739
2823
  timedOut: 0,
2740
2824
  results: targets.map(deviceId => ({
2741
2825
  deviceId,
2826
+ deviceName: safeString(devices.get(deviceId)?.deviceName || devices.get(deviceId)?.hostname || deviceId, 160),
2742
2827
  ok: false,
2743
2828
  status: 'targeted',
2829
+ stage: 'Queued',
2830
+ result: '',
2744
2831
  error: '',
2745
2832
  commandId: '',
2746
2833
  taskId: '',
2747
2834
  approvalLevel: normalizeApprovalLevel(options.approvalLevel),
2835
+ sequence: 0,
2748
2836
  updatedAt: now
2749
2837
  }))
2750
2838
  };
@@ -2768,12 +2856,16 @@ export function createRemoteHub(options = {}) {
2768
2856
  if (!item) {
2769
2857
  item = {
2770
2858
  deviceId: id,
2859
+ deviceName: safeString(batch.results.find(result => result.deviceId === id)?.deviceName || id, 160),
2771
2860
  ok: false,
2772
2861
  status: 'targeted',
2862
+ stage: 'Queued',
2863
+ result: '',
2773
2864
  error: '',
2774
2865
  commandId: '',
2775
2866
  taskId: '',
2776
2867
  approvalLevel: batch.approvalLevel,
2868
+ sequence: 0,
2777
2869
  updatedAt: new Date().toISOString()
2778
2870
  };
2779
2871
  batch.results.push(item);
@@ -2793,16 +2885,14 @@ export function createRemoteHub(options = {}) {
2793
2885
  batch.queued = results.filter(item => item.ok === true).length;
2794
2886
  batch.completed = results.filter(item => item.status === 'completed').length;
2795
2887
  batch.failed = results.filter(item => item.status === 'failed' || (item.ok === false && !!item.error)).length;
2888
+ batch.cancelled = results.filter(item => item.status === 'cancelled').length;
2796
2889
  batch.timedOut = results.filter(item => item.error === 'task-timeout').length;
2797
- batch.pending = results.filter(item =>
2798
- item.ok === true
2799
- && item.status !== 'completed'
2800
- && item.status !== 'failed').length;
2890
+ batch.pending = results.filter(item => ['targeted', 'queued', 'running'].includes(item.status)).length;
2801
2891
  batch.updatedAt = new Date().toISOString();
2802
2892
 
2803
2893
  if (batch.total === 0) {
2804
2894
  batch.status = 'failed';
2805
- } else if (batch.completed + batch.failed >= batch.total) {
2895
+ } else if (batch.completed + batch.failed + batch.cancelled >= batch.total) {
2806
2896
  batch.status = batch.failed > 0 ? 'completed-with-failures' : 'completed';
2807
2897
  } else if (batch.queued > 0) {
2808
2898
  batch.status = 'running';
@@ -2831,10 +2921,13 @@ export function createRemoteHub(options = {}) {
2831
2921
 
2832
2922
  item.ok = true;
2833
2923
  item.status = safeString(task.status, 40) || 'queued';
2924
+ item.stage = safeString(task.stage, 160) || (item.status === 'running' ? 'Working' : '');
2925
+ item.result = safeText(task.resultSummary, MAX_AGENT_TASK_RESULT_CHARS);
2834
2926
  item.error = safeString(task.error, 500);
2835
2927
  item.commandId = safeString(task.commandId, 128);
2836
2928
  item.taskId = safeString(task.taskId, 128);
2837
2929
  item.approvalLevel = normalizeApprovalLevel(task.approvalLevel || batch.approvalLevel);
2930
+ item.sequence = Number(item.sequence || 0) + 1;
2838
2931
  item.updatedAt = task.updatedAt || task.completedAt || task.sentAt || new Date().toISOString();
2839
2932
  return recalculateTaskBatch(batch);
2840
2933
  }
@@ -2852,10 +2945,13 @@ export function createRemoteHub(options = {}) {
2852
2945
 
2853
2946
  item.ok = false;
2854
2947
  item.status = 'failed';
2948
+ item.stage = 'Dispatch failed';
2949
+ item.result = '';
2855
2950
  item.error = safeString(error, 500) || 'task-dispatch-failed';
2856
2951
  item.commandId = safeString(extra.commandId, 128);
2857
2952
  item.taskId = safeString(extra.taskId, 128);
2858
2953
  item.approvalLevel = normalizeApprovalLevel(extra.approvalLevel || batch.approvalLevel);
2954
+ item.sequence = Number(item.sequence || 0) + 1;
2859
2955
  item.updatedAt = new Date().toISOString();
2860
2956
  return recalculateTaskBatch(batch);
2861
2957
  }
@@ -4312,6 +4408,11 @@ export function createRemoteHub(options = {}) {
4312
4408
 
4313
4409
  function requestAgentTask(deviceId, options = {}) {
4314
4410
  const device = devices.get(String(deviceId || ''));
4411
+ const requestedOperation = safeString(options.operation, 80);
4412
+ const operation = normalizeAgentOperation(requestedOperation);
4413
+ if (requestedOperation && !operation) {
4414
+ return { ok: false, error: 'unsupported-agent-operation' };
4415
+ }
4315
4416
  if (!device) {
4316
4417
  return { ok: false, error: 'device-not-found' };
4317
4418
  }
@@ -4338,8 +4439,11 @@ export function createRemoteHub(options = {}) {
4338
4439
  taskId,
4339
4440
  commandId,
4340
4441
  title,
4442
+ operation,
4443
+ targetQuery: safeText(options.targetQuery, 160),
4341
4444
  instructionPreview: safeText(instruction, 320),
4342
4445
  status: 'completed',
4446
+ stage: 'Completed',
4343
4447
  approvalLevel,
4344
4448
  requestedAt: now,
4345
4449
  sentAt: now,
@@ -4353,9 +4457,15 @@ export function createRemoteHub(options = {}) {
4353
4457
  resultResponseId: approvalLevel === 'ai-assist'
4354
4458
  ? `synthetic-response-${taskId}`
4355
4459
  : '',
4356
- resultSummary: approvalLevel === 'ai-assist'
4357
- ? `Synthetic AI assist completed for ${device.deviceName}.`
4358
- : `Synthetic task accepted by ${device.deviceName}.`
4460
+ resultSummary: operation === 'process.list'
4461
+ ? (safeString(options.targetQuery, 160).toLowerCase() === 'comfyui'
4462
+ ? (device.status?.tools?.comfyui?.status === 'online'
4463
+ ? 'ComfyUI is running.'
4464
+ : 'ComfyUI is not running.')
4465
+ : 'Process list collected.')
4466
+ : approvalLevel === 'ai-assist'
4467
+ ? `Synthetic AI assist completed for ${device.deviceName}.`
4468
+ : `Synthetic task accepted by ${device.deviceName}.`
4359
4469
  };
4360
4470
 
4361
4471
  device.counters.commandsSent += 1;
@@ -4408,8 +4518,11 @@ export function createRemoteHub(options = {}) {
4408
4518
  taskId,
4409
4519
  commandId,
4410
4520
  title,
4521
+ operation,
4522
+ targetQuery: safeText(options.targetQuery, 160),
4411
4523
  instructionPreview: safeText(instruction, 320),
4412
4524
  status: 'queued',
4525
+ stage: operation === 'process.list' ? 'Checking processes' : 'Queued',
4413
4526
  approvalLevel,
4414
4527
  requestedAt: now,
4415
4528
  sentAt: now,
@@ -4422,14 +4535,17 @@ export function createRemoteHub(options = {}) {
4422
4535
  resultSummary: ''
4423
4536
  };
4424
4537
 
4538
+ const commandName = operation || 'agent.task';
4425
4539
  const sent = writeJsonLine(device.socket, {
4426
4540
  type: 'command',
4427
4541
  commandId,
4428
- command: 'agent.task',
4542
+ command: commandName,
4429
4543
  payload: {
4430
4544
  taskId,
4431
4545
  title,
4432
4546
  instruction,
4547
+ operation,
4548
+ targetQuery: safeText(options.targetQuery, 160),
4433
4549
  approvalLevel,
4434
4550
  model: safeString(options.model, 120),
4435
4551
  requestedAt: now
@@ -4450,6 +4566,7 @@ export function createRemoteHub(options = {}) {
4450
4566
  commandId,
4451
4567
  taskId,
4452
4568
  title,
4569
+ operation,
4453
4570
  approvalLevel
4454
4571
  });
4455
4572
  return { ok: true, commandId, taskId, approvalLevel };
@@ -5048,6 +5165,9 @@ export function createRemoteHub(options = {}) {
5048
5165
  listDevices,
5049
5166
  listTaskBatches,
5050
5167
  getLatestTaskBatch,
5168
+ getTaskBatch,
5169
+ cancelTaskBatch,
5170
+ retryTaskBatch,
5051
5171
  listDeviceFrames,
5052
5172
  disconnectDevice,
5053
5173
  sendCommand,
package/hub/src/server.js CHANGED
@@ -1486,6 +1486,8 @@ app.post('/api/remote/devices/:deviceId/tasks', requireHubFeatureAccess, (req, r
1486
1486
  taskId: req.body?.taskId,
1487
1487
  commandId: req.body?.commandId,
1488
1488
  approvalLevel: req.body?.approvalLevel,
1489
+ operation: req.body?.operation,
1490
+ targetQuery: req.body?.targetQuery,
1489
1491
  model: req.body?.model
1490
1492
  }));
1491
1493
  });
@@ -1493,7 +1495,11 @@ app.post('/api/remote/devices/:deviceId/tasks', requireHubFeatureAccess, (req, r
1493
1495
  app.post('/api/remote/tasks', requireHubFeatureAccess, (req, res) => {
1494
1496
  noStore(res);
1495
1497
  const requestedIds = normalizeDeviceIds(req.body?.deviceIds);
1496
- const approvalLevel = req.body?.approvalLevel === 'ai-assist' ? 'ai-assist' : 'task-only';
1498
+ const approvalLevel = req.body?.approvalLevel === 'ai-assist'
1499
+ ? 'ai-assist'
1500
+ : req.body?.approvalLevel === 'read-only'
1501
+ ? 'read-only'
1502
+ : 'task-only';
1497
1503
  const devices = remoteHub.listDevices({ includeDataUrl: false });
1498
1504
  const targetIds = requestedIds.length > 0
1499
1505
  ? requestedIds
@@ -1505,6 +1511,8 @@ app.post('/api/remote/tasks', requireHubFeatureAccess, (req, res) => {
1505
1511
  instruction: req.body?.instruction,
1506
1512
  title: req.body?.title,
1507
1513
  approvalLevel,
1514
+ operation: req.body?.operation,
1515
+ targetQuery: req.body?.targetQuery,
1508
1516
  model: req.body?.model,
1509
1517
  batchId: req.body?.batchId
1510
1518
  });
@@ -1518,6 +1526,42 @@ app.post('/api/remote/tasks', requireHubFeatureAccess, (req, res) => {
1518
1526
  });
1519
1527
  });
1520
1528
 
1529
+ app.get('/api/remote/tasks/:taskId', requireHubFeatureAccess, (req, res) => {
1530
+ noStore(res);
1531
+ const batch = remoteHub.getTaskBatch(req.params.taskId);
1532
+ if (!batch) {
1533
+ res.status(404).json({ ok: false, error: 'task-not-found' });
1534
+ return;
1535
+ }
1536
+ res.json({ ok: true, ...batch });
1537
+ });
1538
+
1539
+ app.get('/api/remote/tasks', requireHubFeatureAccess, (req, res) => {
1540
+ noStore(res);
1541
+ const limit = Math.max(1, Math.min(30, Number(req.query?.limit) || 30));
1542
+ res.json({ ok: true, tasks: remoteHub.listTaskBatches().slice(0, limit) });
1543
+ });
1544
+
1545
+ app.post('/api/remote/tasks/:taskId/cancel', requireHubFeatureAccess, (req, res) => {
1546
+ noStore(res);
1547
+ const result = remoteHub.cancelTaskBatch(req.params.taskId);
1548
+ if (!result.ok) {
1549
+ res.status(404).json(result);
1550
+ return;
1551
+ }
1552
+ res.json(result);
1553
+ });
1554
+
1555
+ app.post('/api/remote/tasks/:taskId/retry', requireHubFeatureAccess, (req, res) => {
1556
+ noStore(res);
1557
+ const result = remoteHub.retryTaskBatch(req.params.taskId, { failedOnly: req.body?.failedOnly !== false });
1558
+ if (!result.ok) {
1559
+ res.status(409).json(result);
1560
+ return;
1561
+ }
1562
+ res.json(result);
1563
+ });
1564
+
1521
1565
  app.get('/api/remote/devices/:deviceId/thumbnail', (req, res) => {
1522
1566
  noStore(res);
1523
1567
  if (wantsBinaryFrame(req)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "livedesk",
3
- "version": "0.1.201",
3
+ "version": "0.1.202",
4
4
  "description": "LiveDesk Hub and client launcher",
5
5
  "type": "module",
6
6
  "bin": {
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@ffmpeg-installer/ffmpeg": "^1.1.0",
34
- "@livedesk/client": "0.1.120",
34
+ "@livedesk/client": "0.1.121",
35
35
  "cors": "^2.8.5",
36
36
  "express": "^4.21.2",
37
37
  "ffmpeg-static": "^5.3.0",
@@ -0,0 +1 @@
1
+ function te(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var j={exports:{}},n={};var Y;function oe(){if(Y)return n;Y=1;var i=Symbol.for("react.transitional.element"),p=Symbol.for("react.portal"),d=Symbol.for("react.fragment"),h=Symbol.for("react.strict_mode"),x=Symbol.for("react.profiler"),_=Symbol.for("react.consumer"),M=Symbol.for("react.context"),g=Symbol.for("react.forward_ref"),C=Symbol.for("react.suspense"),$=Symbol.for("react.memo"),E=Symbol.for("react.lazy"),Z=Symbol.for("react.activity"),S=Symbol.iterator;function G(e){return e===null||typeof e!="object"?null:(e=S&&e[S]||e["@@iterator"],typeof e=="function"?e:null)}var z={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},L=Object.assign,q={};function k(e,t,s){this.props=e,this.context=t,this.refs=q,this.updater=s||z}k.prototype.isReactComponent={},k.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},k.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function O(){}O.prototype=k.prototype;function N(e,t,s){this.props=e,this.context=t,this.refs=q,this.updater=s||z}var R=N.prototype=new O;R.constructor=N,L(R,k.prototype),R.isPureReactComponent=!0;var P=Array.isArray;function A(){}var u={H:null,A:null,T:null,S:null},I=Object.prototype.hasOwnProperty;function T(e,t,s){var r=s.ref;return{$$typeof:i,type:e,key:t,ref:r!==void 0?r:null,props:s}}function W(e,t){return T(e.type,t,e.props)}function b(e){return typeof e=="object"&&e!==null&&e.$$typeof===i}function J(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(s){return t[s]})}var V=/\/+/g;function H(e,t){return typeof e=="object"&&e!==null&&e.key!=null?J(""+e.key):t.toString(36)}function Q(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(A,A):(e.status="pending",e.then(function(t){e.status==="pending"&&(e.status="fulfilled",e.value=t)},function(t){e.status==="pending"&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function v(e,t,s,r,a){var c=typeof e;(c==="undefined"||c==="boolean")&&(e=null);var y=!1;if(e===null)y=!0;else switch(c){case"bigint":case"string":case"number":y=!0;break;case"object":switch(e.$$typeof){case i:case p:y=!0;break;case E:return y=e._init,v(y(e._payload),t,s,r,a)}}if(y)return a=a(e),y=r===""?"."+H(e,0):r,P(a)?(s="",y!=null&&(s=y.replace(V,"$&/")+"/"),v(a,t,s,"",function(ee){return ee})):a!=null&&(b(a)&&(a=W(a,s+(a.key==null||e&&e.key===a.key?"":(""+a.key).replace(V,"$&/")+"/")+y)),t.push(a)),1;y=0;var f=r===""?".":r+":";if(P(e))for(var l=0;l<e.length;l++)r=e[l],c=f+H(r,l),y+=v(r,t,s,c,a);else if(l=G(e),typeof l=="function")for(e=l.call(e),l=0;!(r=e.next()).done;)r=r.value,c=f+H(r,l++),y+=v(r,t,s,c,a);else if(c==="object"){if(typeof e.then=="function")return v(Q(e),t,s,r,a);throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return y}function w(e,t,s){if(e==null)return e;var r=[],a=0;return v(e,r,"","",function(c){return t.call(s,c,a++)}),r}function X(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(s){(e._status===0||e._status===-1)&&(e._status=1,e._result=s)},function(s){(e._status===0||e._status===-1)&&(e._status=2,e._result=s)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var U=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},F={map:w,forEach:function(e,t,s){w(e,function(){t.apply(this,arguments)},s)},count:function(e){var t=0;return w(e,function(){t++}),t},toArray:function(e){return w(e,function(t){return t})||[]},only:function(e){if(!b(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};return n.Activity=Z,n.Children=F,n.Component=k,n.Fragment=d,n.Profiler=x,n.PureComponent=N,n.StrictMode=h,n.Suspense=C,n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=u,n.__COMPILER_RUNTIME={__proto__:null,c:function(e){return u.H.useMemoCache(e)}},n.cache=function(e){return function(){return e.apply(null,arguments)}},n.cacheSignal=function(){return null},n.cloneElement=function(e,t,s){if(e==null)throw Error("The argument must be a React element, but you passed "+e+".");var r=L({},e.props),a=e.key;if(t!=null)for(c in t.key!==void 0&&(a=""+t.key),t)!I.call(t,c)||c==="key"||c==="__self"||c==="__source"||c==="ref"&&t.ref===void 0||(r[c]=t[c]);var c=arguments.length-2;if(c===1)r.children=s;else if(1<c){for(var y=Array(c),f=0;f<c;f++)y[f]=arguments[f+2];r.children=y}return T(e.type,a,r)},n.createContext=function(e){return e={$$typeof:M,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:_,_context:e},e},n.createElement=function(e,t,s){var r,a={},c=null;if(t!=null)for(r in t.key!==void 0&&(c=""+t.key),t)I.call(t,r)&&r!=="key"&&r!=="__self"&&r!=="__source"&&(a[r]=t[r]);var y=arguments.length-2;if(y===1)a.children=s;else if(1<y){for(var f=Array(y),l=0;l<y;l++)f[l]=arguments[l+2];a.children=f}if(e&&e.defaultProps)for(r in y=e.defaultProps,y)a[r]===void 0&&(a[r]=y[r]);return T(e,c,a)},n.createRef=function(){return{current:null}},n.forwardRef=function(e){return{$$typeof:g,render:e}},n.isValidElement=b,n.lazy=function(e){return{$$typeof:E,_payload:{_status:-1,_result:e},_init:X}},n.memo=function(e,t){return{$$typeof:$,type:e,compare:t===void 0?null:t}},n.startTransition=function(e){var t=u.T,s={};u.T=s;try{var r=e(),a=u.S;a!==null&&a(s,r),typeof r=="object"&&r!==null&&typeof r.then=="function"&&r.then(A,U)}catch(c){U(c)}finally{t!==null&&s.types!==null&&(t.types=s.types),u.T=t}},n.unstable_useCacheRefresh=function(){return u.H.useCacheRefresh()},n.use=function(e){return u.H.use(e)},n.useActionState=function(e,t,s){return u.H.useActionState(e,t,s)},n.useCallback=function(e,t){return u.H.useCallback(e,t)},n.useContext=function(e){return u.H.useContext(e)},n.useDebugValue=function(){},n.useDeferredValue=function(e,t){return u.H.useDeferredValue(e,t)},n.useEffect=function(e,t){return u.H.useEffect(e,t)},n.useEffectEvent=function(e){return u.H.useEffectEvent(e)},n.useId=function(){return u.H.useId()},n.useImperativeHandle=function(e,t,s){return u.H.useImperativeHandle(e,t,s)},n.useInsertionEffect=function(e,t){return u.H.useInsertionEffect(e,t)},n.useLayoutEffect=function(e,t){return u.H.useLayoutEffect(e,t)},n.useMemo=function(e,t){return u.H.useMemo(e,t)},n.useOptimistic=function(e,t){return u.H.useOptimistic(e,t)},n.useReducer=function(e,t,s){return u.H.useReducer(e,t,s)},n.useRef=function(e){return u.H.useRef(e)},n.useState=function(e){return u.H.useState(e)},n.useSyncExternalStore=function(e,t,s){return u.H.useSyncExternalStore(e,t,s)},n.useTransition=function(){return u.H.useTransition()},n.version="19.2.7",n}var D;function ne(){return D||(D=1,j.exports=oe()),j.exports}var m=ne();const nt=te(m);const re=i=>i.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),se=i=>i.replace(/^([A-Z])|[\s-_]+(\w)/g,(p,d,h)=>h?h.toUpperCase():d.toLowerCase()),B=i=>{const p=se(i);return p.charAt(0).toUpperCase()+p.slice(1)},K=(...i)=>i.filter((p,d,h)=>!!p&&p.trim()!==""&&h.indexOf(p)===d).join(" ").trim(),ae=i=>{for(const p in i)if(p.startsWith("aria-")||p==="role"||p==="title")return!0};var ce={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const ie=m.forwardRef(({color:i="currentColor",size:p=24,strokeWidth:d=2,absoluteStrokeWidth:h,className:x="",children:_,iconNode:M,...g},C)=>m.createElement("svg",{ref:C,...ce,width:p,height:p,stroke:i,strokeWidth:h?Number(d)*24/Number(p):d,className:K("lucide",x),...!_&&!ae(g)&&{"aria-hidden":"true"},...g},[...M.map(([$,E])=>m.createElement($,E)),...Array.isArray(_)?_:[_]]));const o=(i,p)=>{const d=m.forwardRef(({className:h,...x},_)=>m.createElement(ie,{ref:_,iconNode:p,className:K(`lucide-${re(B(i))}`,`lucide-${i}`,h),...x}));return d.displayName=B(i),d};const ue=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],rt=o("activity",ue);const ye=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],st=o("arrow-right",ye);const pe=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],at=o("arrow-up",pe);const le=[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],ct=o("badge-check",le);const de=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]],it=o("ban",de);const he=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],ut=o("book-open",he);const fe=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],yt=o("check",fe);const _e=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],pt=o("chevron-left",_e);const ke=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],lt=o("chevron-right",ke);const ve=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],dt=o("circle-alert",ve);const me=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],ht=o("circle-check",me);const xe=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],ft=o("circle",xe);const ge=[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]],_t=o("clipboard",ge);const Ee=[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]],kt=o("credit-card",Ee);const we=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],vt=o("database",we);const Me=[["path",{d:"M21.54 15H17a2 2 0 0 0-2 2v4.54",key:"1djwo0"}],["path",{d:"M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17",key:"1tzkfa"}],["path",{d:"M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05",key:"14pb5j"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],mt=o("earth",Me);const Ce=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M12 12v6",key:"3ahymv"}],["path",{d:"m15 15-3-3-3 3",key:"15xj92"}]],xt=o("file-up",Ce);const $e=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],gt=o("folder-open",$e);const Ne=[["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v.5",key:"1dkoa9"}],["path",{d:"M12 10v4h4",key:"1czhmt"}],["path",{d:"m12 14 1.535-1.605a5 5 0 0 1 8 1.5",key:"lvuxfi"}],["path",{d:"M22 22v-4h-4",key:"1ewp4q"}],["path",{d:"m22 18-1.535 1.605a5 5 0 0 1-8-1.5",key:"14ync0"}]],Et=o("folder-sync",Ne);const Re=[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}],["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"m9 13 3-3 3 3",key:"1pxg3c"}]],wt=o("folder-up",Re);const Ae=[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]],Mt=o("hard-drive",Ae);const Te=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],Ct=o("key-round",Te);const be=[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]],$t=o("layout-grid",be);const He=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],Nt=o("loader-circle",He);const je=[["circle",{cx:"12",cy:"16",r:"1",key:"1au0dj"}],["rect",{x:"3",y:"10",width:"18",height:"12",rx:"2",key:"6s8ecr"}],["path",{d:"M7 10V7a5 5 0 0 1 10 0v3",key:"1pqi11"}]],Rt=o("lock-keyhole",je);const Se=[["path",{d:"m10 17 5-5-5-5",key:"1bsop3"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}]],At=o("log-in",Se);const ze=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],Tt=o("log-out",ze);const Le=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],bt=o("monitor",Le);const qe=[["path",{d:"M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z",key:"edeuup"}]],Ht=o("mouse-pointer-2",qe);const Oe=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],jt=o("network",Oe);const Pe=[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]],St=o("play",Pe);const Ie=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],zt=o("power",Ie);const Ve=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],Lt=o("refresh-cw",Ve);const Ue=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],qt=o("rotate-ccw",Ue);const Ye=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],Ot=o("send",Ye);const De=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],Pt=o("server",De);const Be=[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],It=o("settings",Be);const Ke=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]],Vt=o("shield-alert",Ke);const Ze=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],Ut=o("shield-check",Ze);const Ge=[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]],Yt=o("sliders-horizontal",Ge);const We=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],Dt=o("star",We);const Je=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],Bt=o("terminal",Je);const Qe=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]],Kt=o("trash-2",Qe);const Xe=[["circle",{cx:"10",cy:"7",r:"1",key:"dypaad"}],["circle",{cx:"4",cy:"20",r:"1",key:"22iqad"}],["path",{d:"M4.7 19.3 19 5",key:"1enqfc"}],["path",{d:"m21 3-3 1 2 2Z",key:"d3ov82"}],["path",{d:"M9.26 7.68 5 12l2 5",key:"1esawj"}],["path",{d:"m10 14 5 2 3.5-3.5",key:"v8oal5"}],["path",{d:"m18 12 1-1 1 1-1 1Z",key:"1bh22v"}]],Zt=o("usb",Xe);const Fe=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],Gt=o("users",Fe);const et=[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["path",{d:"M16 9a5 5 0 0 1 0 6",key:"1q6k2b"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728",key:"ijwkga"}]],Wt=o("volume-2",et);const tt=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],Jt=o("wifi",tt);const ot=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Qt=o("x",ot);export{at as A,it as B,dt as C,vt as D,mt as E,xt as F,Ut as G,Mt as H,_t as I,Dt as J,Ct as K,Rt as L,bt as M,jt as N,ct as O,pt as P,St as Q,Lt as R,Yt as S,Kt as T,Zt as U,Wt as V,Jt as W,Qt as X,zt as Y,m as a,wt as b,Nt as c,lt as d,Vt as e,Gt as f,ht as g,Et as h,Ot as i,gt as j,yt as k,ft as l,nt as m,qt as n,$t as o,Ht as p,Bt as q,ne as r,ut as s,kt as t,It as u,At as v,Tt as w,rt as x,st as y,Pt as z};