@moxa/graph 2.8.1 → 2.8.2

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.
Files changed (199) hide show
  1. package/README.md +321 -0
  2. package/assets/icon-sprite.svg +1 -0
  3. package/assets/worker-Df6v-Qfe.js +13 -0
  4. package/graph-tokens.json +160 -0
  5. package/index.cjs +472 -0
  6. package/index.d.ts +10 -0
  7. package/index.d.ts.map +1 -0
  8. package/index.js +74434 -0
  9. package/lib/behavior/brush-select.d.ts +10 -0
  10. package/lib/behavior/brush-select.d.ts.map +1 -0
  11. package/lib/behavior/click-select.d.ts +129 -0
  12. package/lib/behavior/click-select.d.ts.map +1 -0
  13. package/lib/behavior/collapse-expand.d.ts +4 -0
  14. package/lib/behavior/collapse-expand.d.ts.map +1 -0
  15. package/lib/behavior/create-edge.d.ts +52 -0
  16. package/lib/behavior/create-edge.d.ts.map +1 -0
  17. package/lib/behavior/drag-canvas.d.ts +7 -0
  18. package/lib/behavior/drag-canvas.d.ts.map +1 -0
  19. package/lib/behavior/drag-element.d.ts +6 -0
  20. package/lib/behavior/drag-element.d.ts.map +1 -0
  21. package/lib/behavior/fix-element-size.d.ts +9 -0
  22. package/lib/behavior/fix-element-size.d.ts.map +1 -0
  23. package/lib/behavior/focus-element.d.ts +4 -0
  24. package/lib/behavior/focus-element.d.ts.map +1 -0
  25. package/lib/behavior/helper/behavior.mapper.d.ts +9 -0
  26. package/lib/behavior/helper/behavior.mapper.d.ts.map +1 -0
  27. package/lib/behavior/helper/index.d.ts +2 -0
  28. package/lib/behavior/helper/index.d.ts.map +1 -0
  29. package/lib/behavior/hover-activate.d.ts +4 -0
  30. package/lib/behavior/hover-activate.d.ts.map +1 -0
  31. package/lib/behavior/index.d.ts +13 -0
  32. package/lib/behavior/index.d.ts.map +1 -0
  33. package/lib/behavior/scroll-canvas.d.ts +4 -0
  34. package/lib/behavior/scroll-canvas.d.ts.map +1 -0
  35. package/lib/behavior/select-all.d.ts +14 -0
  36. package/lib/behavior/select-all.d.ts.map +1 -0
  37. package/lib/behavior/zoom-canvas.d.ts +4 -0
  38. package/lib/behavior/zoom-canvas.d.ts.map +1 -0
  39. package/lib/edge/custom/index.d.ts +4 -0
  40. package/lib/edge/custom/index.d.ts.map +1 -0
  41. package/lib/edge/custom/line-edge.d.ts +15 -0
  42. package/lib/edge/custom/line-edge.d.ts.map +1 -0
  43. package/lib/edge/custom/polyline-edge.d.ts +21 -0
  44. package/lib/edge/custom/polyline-edge.d.ts.map +1 -0
  45. package/lib/edge/custom/quadratic-edge.d.ts +15 -0
  46. package/lib/edge/custom/quadratic-edge.d.ts.map +1 -0
  47. package/lib/edge/helper/custom-edge.helper.d.ts +12 -0
  48. package/lib/edge/helper/custom-edge.helper.d.ts.map +1 -0
  49. package/lib/edge/helper/edge-g6.mapper.d.ts +19 -0
  50. package/lib/edge/helper/edge-g6.mapper.d.ts.map +1 -0
  51. package/lib/edge/helper/edge.mapper.d.ts +20 -0
  52. package/lib/edge/helper/edge.mapper.d.ts.map +1 -0
  53. package/lib/edge/helper/edge.theme.d.ts +10 -0
  54. package/lib/edge/helper/edge.theme.d.ts.map +1 -0
  55. package/lib/edge/helper/index.d.ts +5 -0
  56. package/lib/edge/helper/index.d.ts.map +1 -0
  57. package/lib/edge/index.d.ts +3 -0
  58. package/lib/edge/index.d.ts.map +1 -0
  59. package/lib/graph/graph.d.ts +506 -0
  60. package/lib/graph/graph.d.ts.map +1 -0
  61. package/lib/graph/graph.mapper.d.ts +15 -0
  62. package/lib/graph/graph.mapper.d.ts.map +1 -0
  63. package/lib/graph/index.d.ts +3 -0
  64. package/lib/graph/index.d.ts.map +1 -0
  65. package/lib/group/custom/device-group.d.ts +33 -0
  66. package/lib/group/custom/device-group.d.ts.map +1 -0
  67. package/lib/group/custom/index.d.ts +2 -0
  68. package/lib/group/custom/index.d.ts.map +1 -0
  69. package/lib/group/helper/group-g6.mapper.d.ts +16 -0
  70. package/lib/group/helper/group-g6.mapper.d.ts.map +1 -0
  71. package/lib/group/helper/group.mapper.d.ts +21 -0
  72. package/lib/group/helper/group.mapper.d.ts.map +1 -0
  73. package/lib/group/helper/index.d.ts +3 -0
  74. package/lib/group/helper/index.d.ts.map +1 -0
  75. package/lib/group/index.d.ts +3 -0
  76. package/lib/group/index.d.ts.map +1 -0
  77. package/lib/layout/align.d.ts +18 -0
  78. package/lib/layout/align.d.ts.map +1 -0
  79. package/lib/layout/force.d.ts +10 -0
  80. package/lib/layout/force.d.ts.map +1 -0
  81. package/lib/layout/grid.d.ts +17 -0
  82. package/lib/layout/grid.d.ts.map +1 -0
  83. package/lib/layout/helper/index.d.ts +2 -0
  84. package/lib/layout/helper/index.d.ts.map +1 -0
  85. package/lib/layout/helper/layout.helper.d.ts +4 -0
  86. package/lib/layout/helper/layout.helper.d.ts.map +1 -0
  87. package/lib/layout/helper/layout.mapper.d.ts +6 -0
  88. package/lib/layout/helper/layout.mapper.d.ts.map +1 -0
  89. package/lib/layout/index.d.ts +7 -0
  90. package/lib/layout/index.d.ts.map +1 -0
  91. package/lib/layout/ring.d.ts +10 -0
  92. package/lib/layout/ring.d.ts.map +1 -0
  93. package/lib/layout/tree.d.ts +12 -0
  94. package/lib/layout/tree.d.ts.map +1 -0
  95. package/lib/model/background.model.d.ts +8 -0
  96. package/lib/model/background.model.d.ts.map +1 -0
  97. package/lib/model/behavior.model.d.ts +27 -0
  98. package/lib/model/behavior.model.d.ts.map +1 -0
  99. package/lib/model/edge.model.d.ts +80 -0
  100. package/lib/model/edge.model.d.ts.map +1 -0
  101. package/lib/model/element.model.d.ts +2 -0
  102. package/lib/model/element.model.d.ts.map +1 -0
  103. package/lib/model/event.model.d.ts +216 -0
  104. package/lib/model/event.model.d.ts.map +1 -0
  105. package/lib/model/extension.model.d.ts +15 -0
  106. package/lib/model/extension.model.d.ts.map +1 -0
  107. package/lib/model/graph.model.d.ts +34 -0
  108. package/lib/model/graph.model.d.ts.map +1 -0
  109. package/lib/model/group.model.d.ts +43 -0
  110. package/lib/model/group.model.d.ts.map +1 -0
  111. package/lib/model/icon.model.d.ts +11 -0
  112. package/lib/model/icon.model.d.ts.map +1 -0
  113. package/lib/model/image.model.d.ts +8 -0
  114. package/lib/model/image.model.d.ts.map +1 -0
  115. package/lib/model/index.d.ts +17 -0
  116. package/lib/model/index.d.ts.map +1 -0
  117. package/lib/model/label.model.d.ts +19 -0
  118. package/lib/model/label.model.d.ts.map +1 -0
  119. package/lib/model/layout.model.d.ts +22 -0
  120. package/lib/model/layout.model.d.ts.map +1 -0
  121. package/lib/model/node.model.d.ts +35 -0
  122. package/lib/model/node.model.d.ts.map +1 -0
  123. package/lib/model/plugin.model.d.ts +19 -0
  124. package/lib/model/plugin.model.d.ts.map +1 -0
  125. package/lib/model/shape.model.d.ts +8 -0
  126. package/lib/model/shape.model.d.ts.map +1 -0
  127. package/lib/model/state.model.d.ts +6 -0
  128. package/lib/model/state.model.d.ts.map +1 -0
  129. package/lib/model/theme.model.d.ts +62 -0
  130. package/lib/model/theme.model.d.ts.map +1 -0
  131. package/lib/model/viewport.model.d.ts +12 -0
  132. package/lib/model/viewport.model.d.ts.map +1 -0
  133. package/lib/node/custom/device-node.d.ts +36 -0
  134. package/lib/node/custom/device-node.d.ts.map +1 -0
  135. package/lib/node/custom/index.d.ts +2 -0
  136. package/lib/node/custom/index.d.ts.map +1 -0
  137. package/lib/node/helper/icon-style.d.ts +4 -0
  138. package/lib/node/helper/icon-style.d.ts.map +1 -0
  139. package/lib/node/helper/index.d.ts +5 -0
  140. package/lib/node/helper/index.d.ts.map +1 -0
  141. package/lib/node/helper/key-style.d.ts +5 -0
  142. package/lib/node/helper/key-style.d.ts.map +1 -0
  143. package/lib/node/helper/node-g6.mapper.d.ts +15 -0
  144. package/lib/node/helper/node-g6.mapper.d.ts.map +1 -0
  145. package/lib/node/helper/node.mapper.d.ts +26 -0
  146. package/lib/node/helper/node.mapper.d.ts.map +1 -0
  147. package/lib/node/index.d.ts +3 -0
  148. package/lib/node/index.d.ts.map +1 -0
  149. package/lib/plugin/context-menu.d.ts +6 -0
  150. package/lib/plugin/context-menu.d.ts.map +1 -0
  151. package/lib/plugin/element-toolbar.d.ts +51 -0
  152. package/lib/plugin/element-toolbar.d.ts.map +1 -0
  153. package/lib/plugin/fixed-toolbar.d.ts +28 -0
  154. package/lib/plugin/fixed-toolbar.d.ts.map +1 -0
  155. package/lib/plugin/graph-background.d.ts +33 -0
  156. package/lib/plugin/graph-background.d.ts.map +1 -0
  157. package/lib/plugin/helper/index.d.ts +2 -0
  158. package/lib/plugin/helper/index.d.ts.map +1 -0
  159. package/lib/plugin/helper/plugin.mapper.d.ts +8 -0
  160. package/lib/plugin/helper/plugin.mapper.d.ts.map +1 -0
  161. package/lib/plugin/history.d.ts +7 -0
  162. package/lib/plugin/history.d.ts.map +1 -0
  163. package/lib/plugin/index.d.ts +10 -0
  164. package/lib/plugin/index.d.ts.map +1 -0
  165. package/lib/plugin/minimap.d.ts +13 -0
  166. package/lib/plugin/minimap.d.ts.map +1 -0
  167. package/lib/plugin/snapline.d.ts +9 -0
  168. package/lib/plugin/snapline.d.ts.map +1 -0
  169. package/lib/plugin/tooltip.d.ts +11 -0
  170. package/lib/plugin/tooltip.d.ts.map +1 -0
  171. package/lib/themes/dark.d.ts +3 -0
  172. package/lib/themes/dark.d.ts.map +1 -0
  173. package/lib/themes/index.d.ts +4 -0
  174. package/lib/themes/index.d.ts.map +1 -0
  175. package/lib/themes/light.d.ts +3 -0
  176. package/lib/themes/light.d.ts.map +1 -0
  177. package/lib/themes/theme.mapper.d.ts +65 -0
  178. package/lib/themes/theme.mapper.d.ts.map +1 -0
  179. package/lib/utils/edge.helper.d.ts +19 -0
  180. package/lib/utils/edge.helper.d.ts.map +1 -0
  181. package/lib/utils/element.helper.d.ts +5 -0
  182. package/lib/utils/element.helper.d.ts.map +1 -0
  183. package/lib/utils/graph.helper.d.ts +5 -0
  184. package/lib/utils/graph.helper.d.ts.map +1 -0
  185. package/lib/utils/icon.helper.d.ts +3 -0
  186. package/lib/utils/icon.helper.d.ts.map +1 -0
  187. package/lib/utils/index.d.ts +10 -0
  188. package/lib/utils/index.d.ts.map +1 -0
  189. package/lib/utils/platform.helper.d.ts +3 -0
  190. package/lib/utils/platform.helper.d.ts.map +1 -0
  191. package/lib/utils/rect.helper.d.ts +16 -0
  192. package/lib/utils/rect.helper.d.ts.map +1 -0
  193. package/lib/utils/state.helper.d.ts +4 -0
  194. package/lib/utils/state.helper.d.ts.map +1 -0
  195. package/lib/utils/theme.helper.d.ts +3 -0
  196. package/lib/utils/theme.helper.d.ts.map +1 -0
  197. package/lib/utils/tree.helper.d.ts +4 -0
  198. package/lib/utils/tree.helper.d.ts.map +1 -0
  199. package/package.json +1 -1
@@ -0,0 +1,13 @@
1
+ var Jx=Object.defineProperty;var x0=Oe=>{throw TypeError(Oe)};var Qx=(Oe,fe,Fe)=>fe in Oe?Jx(Oe,fe,{enumerable:!0,configurable:!0,writable:!0,value:Fe}):Oe[fe]=Fe;var Ie=(Oe,fe,Fe)=>Qx(Oe,typeof fe!="symbol"?fe+"":fe,Fe),qc=(Oe,fe,Fe)=>fe.has(Oe)||x0("Cannot "+Fe);var gt=(Oe,fe,Fe)=>(qc(Oe,fe,"read from private field"),Fe?Fe.call(Oe):fe.get(Oe)),Rc=(Oe,fe,Fe)=>fe.has(Oe)?x0("Cannot add the same private member more than once"):fe instanceof WeakSet?fe.add(Oe):fe.set(Oe,Fe),fn=(Oe,fe,Fe,br)=>(qc(Oe,fe,"write to private field"),br?br.call(Oe,Fe):fe.set(Oe,Fe),Fe),Oc=(Oe,fe,Fe)=>(qc(Oe,fe,"access private method"),Fe);(function(){"use strict";function Oe(e,r){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&r.indexOf(n)<0&&(t[n]=e[n]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(e);i<n.length;i++)r.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(t[n[i]]=e[n[i]]);return t}function fe(e,r,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(l){try{f(n.next(l))}catch(p){a(p)}}function c(l){try{f(n.throw(l))}catch(p){a(p)}}function f(l){l.done?s(l.value):i(l.value).then(o,c)}f((n=n.apply(e,r||[])).next())})}typeof SuppressedError=="function"&&SuppressedError;var Fe="*",br=function(){function e(){this._events={}}return e.prototype.on=function(r,t,n){return this._events[r]||(this._events[r]=[]),this._events[r].push({callback:t,once:!!n}),this},e.prototype.once=function(r,t){return this.on(r,t,!0)},e.prototype.emit=function(r){for(var t=this,n=[],i=1;i<arguments.length;i++)n[i-1]=arguments[i];var s=this._events[r]||[],a=this._events[Fe]||[],o=function(c){for(var f=c.length,l=0;l<f;l++)if(c[l]){var p=c[l],m=p.callback,y=p.once;y&&(c.splice(l,1),c.length===0&&delete t._events[r],f--,l--),m.apply(t,n)}};o(s),o(a)},e.prototype.off=function(r,t){if(!r)this._events={};else if(!t)delete this._events[r];else{for(var n=this._events[r]||[],i=n.length,s=0;s<i;s++)n[s].callback===t&&(n.splice(s,1),i--,s--);n.length===0&&delete this._events[r]}return this},e.prototype.getEvents=function(){return this._events},e}();function ln(e,r,t,n){for(;e.length;){const i=e.shift();if(t(i))return!0;r.add(i.id),n(i.id).forEach(a=>{r.has(a.id)||(r.add(a.id),e.push(a))})}return!1}function _r(e,r,t,n){if(t(e))return!0;r.add(e.id);for(const s of n(e.id))if(!r.has(s.id)&&_r(s,r,t,n))return!0;return!1}const Ic=()=>!0;class N0{constructor(r){Ie(this,"graph");Ie(this,"nodeFilter");Ie(this,"edgeFilter");Ie(this,"cacheEnabled");Ie(this,"inEdgesMap",new Map);Ie(this,"outEdgesMap",new Map);Ie(this,"bothEdgesMap",new Map);Ie(this,"allNodesMap",new Map);Ie(this,"allEdgesMap",new Map);Ie(this,"clearCache",()=>{this.inEdgesMap.clear(),this.outEdgesMap.clear(),this.bothEdgesMap.clear(),this.allNodesMap.clear(),this.allEdgesMap.clear()});Ie(this,"refreshCache",()=>{this.clearCache(),this.updateCache(this.graph.getAllNodes().map(r=>r.id))});Ie(this,"updateCache",r=>{const t=new Set;r.forEach(n=>{const i=this.bothEdgesMap.get(n);if(i&&i.forEach(s=>t.add(s.id)),!this.hasNode(n))this.inEdgesMap.delete(n),this.outEdgesMap.delete(n),this.bothEdgesMap.delete(n),this.allNodesMap.delete(n);else{const s=this.graph.getRelatedEdges(n,"in").filter(this.edgeFilter),a=this.graph.getRelatedEdges(n,"out").filter(this.edgeFilter),o=Array.from(new Set([...s,...a]));o.forEach(c=>t.add(c.id)),this.inEdgesMap.set(n,s),this.outEdgesMap.set(n,a),this.bothEdgesMap.set(n,o),this.allNodesMap.set(n,this.graph.getNode(n))}}),t.forEach(n=>{this.hasEdge(n)?this.allEdgesMap.set(n,this.graph.getEdge(n)):this.allEdgesMap.delete(n)})});Ie(this,"handleGraphChanged",r=>{const t=new Set;r.changes.forEach(n=>{switch(n.type){case"NodeAdded":t.add(n.value.id);break;case"NodeDataUpdated":t.add(n.id);break;case"EdgeAdded":t.add(n.value.source),t.add(n.value.target);break;case"EdgeUpdated":(n.propertyName==="source"||n.propertyName==="target")&&(t.add(n.oldValue),t.add(n.newValue));break;case"EdgeDataUpdated":if(r.graph.hasEdge(n.id)){const i=r.graph.getEdge(n.id);t.add(i.source),t.add(i.target)}break;case"EdgeRemoved":t.add(n.value.source),t.add(n.value.target);break;case"NodeRemoved":t.add(n.value.id);break}}),this.updateCache(t)});this.graph=r.graph;const t=r.nodeFilter||Ic,n=r.edgeFilter||Ic;this.nodeFilter=t,this.edgeFilter=i=>{const{source:s,target:a}=this.graph.getEdgeDetail(i.id);return!t(s)||!t(a)?!1:n(i,s,a)},r.cache==="auto"?(this.cacheEnabled=!0,this.startAutoCache()):r.cache==="manual"?this.cacheEnabled=!0:this.cacheEnabled=!1}startAutoCache(){this.refreshCache(),this.graph.on("changed",this.handleGraphChanged)}stopAutoCache(){this.graph.off("changed",this.handleGraphChanged)}checkNodeExistence(r){this.getNode(r)}hasNode(r){if(!this.graph.hasNode(r))return!1;const t=this.graph.getNode(r);return this.nodeFilter(t)}areNeighbors(r,t){return this.checkNodeExistence(r),this.getNeighbors(t).some(n=>n.id===r)}getNode(r){const t=this.graph.getNode(r);if(!this.nodeFilter(t))throw new Error("Node not found for id: "+r);return t}getRelatedEdges(r,t){return this.checkNodeExistence(r),this.cacheEnabled?t==="in"?this.inEdgesMap.get(r):t==="out"?this.outEdgesMap.get(r):this.bothEdgesMap.get(r):this.graph.getRelatedEdges(r,t).filter(this.edgeFilter)}getDegree(r,t){return this.getRelatedEdges(r,t).length}getSuccessors(r){const n=this.getRelatedEdges(r,"out").map(i=>this.getNode(i.target));return Array.from(new Set(n))}getPredecessors(r){const n=this.getRelatedEdges(r,"in").map(i=>this.getNode(i.source));return Array.from(new Set(n))}getNeighbors(r){const t=this.getPredecessors(r),n=this.getSuccessors(r);return Array.from(new Set([...t,...n]))}hasEdge(r){if(!this.graph.hasEdge(r))return!1;const t=this.graph.getEdge(r);return this.edgeFilter(t)}getEdge(r){const t=this.graph.getEdge(r);if(!this.edgeFilter(t))throw new Error("Edge not found for id: "+r);return t}getEdgeDetail(r){const t=this.getEdge(r);return{edge:t,source:this.getNode(t.source),target:this.getNode(t.target)}}hasTreeStructure(r){return this.graph.hasTreeStructure(r)}getRoots(r){return this.graph.getRoots(r).filter(this.nodeFilter)}getChildren(r,t){return this.checkNodeExistence(r),this.graph.getChildren(r,t).filter(this.nodeFilter)}getParent(r,t){this.checkNodeExistence(r);const n=this.graph.getParent(r,t);return!n||!this.nodeFilter(n)?null:n}getAllNodes(){return this.cacheEnabled?Array.from(this.allNodesMap.values()):this.graph.getAllNodes().filter(this.nodeFilter)}getAllEdges(){return this.cacheEnabled?Array.from(this.allEdgesMap.values()):this.graph.getAllEdges().filter(this.edgeFilter)}bfs(r,t,n="out"){const i={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[n];ln([this.getNode(r)],new Set,t,i)}dfs(r,t,n="out"){const i={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[n];_r(this.getNode(r),new Set,t,i)}}class Be extends br{constructor(t){super();Ie(this,"nodeMap",new Map);Ie(this,"edgeMap",new Map);Ie(this,"inEdgesMap",new Map);Ie(this,"outEdgesMap",new Map);Ie(this,"bothEdgesMap",new Map);Ie(this,"treeIndices",new Map);Ie(this,"changes",[]);Ie(this,"batchCount",0);Ie(this,"onChanged",()=>{});Ie(this,"batch",t=>{this.batchCount+=1,t(),this.batchCount-=1,this.batchCount||this.commit()});t&&(t.nodes&&this.addNodes(t.nodes),t.edges&&this.addEdges(t.edges),t.tree&&this.addTree(t.tree),t.onChanged&&(this.onChanged=t.onChanged))}commit(){const t=this.changes;this.changes=[];const n={graph:this,changes:t};this.emit("changed",n),this.onChanged(n)}reduceChanges(t){let n=[];return t.forEach(i=>{switch(i.type){case"NodeRemoved":{let s=!1;n=n.filter(a=>{if(a.type==="NodeAdded"){const o=a.value.id===i.value.id;return o&&(s=!0),!o}else{if(a.type==="NodeDataUpdated")return a.id!==i.value.id;if(a.type==="TreeStructureChanged")return a.nodeId!==i.value.id}return!0}),s||n.push(i);break}case"EdgeRemoved":{let s=!1;n=n.filter(a=>{if(a.type==="EdgeAdded"){const o=a.value.id===i.value.id;return o&&(s=!0),!o}else if(a.type==="EdgeDataUpdated"||a.type==="EdgeUpdated")return a.id!==i.value.id;return!0}),s||n.push(i);break}case"NodeDataUpdated":case"EdgeDataUpdated":case"EdgeUpdated":{const s=n.findIndex(o=>o.type===i.type&&o.id===i.id&&(i.propertyName===void 0||o.propertyName===i.propertyName)),a=n[s];a?i.propertyName!==void 0?a.newValue=i.newValue:(n.splice(s,1),n.push(i)):n.push(i);break}case"TreeStructureDetached":{n=n.filter(s=>s.type==="TreeStructureAttached"||s.type==="TreeStructureChanged"?s.treeKey!==i.treeKey:!0),n.push(i);break}case"TreeStructureChanged":{const s=n.find(a=>a.type==="TreeStructureChanged"&&a.treeKey===i.treeKey&&a.nodeId===i.nodeId);s?s.newParentId=i.newParentId:n.push(i);break}default:n.push(i);break}}),n}checkNodeExistence(t){this.getNode(t)}hasNode(t){return this.nodeMap.has(t)}areNeighbors(t,n){return this.getNeighbors(n).some(i=>i.id===t)}getNode(t){const n=this.nodeMap.get(t);if(!n)throw new Error("Node not found for id: "+t);return n}getRelatedEdges(t,n){if(this.checkNodeExistence(t),n==="in"){const i=this.inEdgesMap.get(t);return Array.from(i)}else if(n==="out"){const i=this.outEdgesMap.get(t);return Array.from(i)}else{const i=this.bothEdgesMap.get(t);return Array.from(i)}}getDegree(t,n){return this.getRelatedEdges(t,n).length}getSuccessors(t){const i=this.getRelatedEdges(t,"out").map(s=>this.getNode(s.target));return Array.from(new Set(i))}getPredecessors(t){const i=this.getRelatedEdges(t,"in").map(s=>this.getNode(s.source));return Array.from(new Set(i))}getNeighbors(t){const n=this.getPredecessors(t),i=this.getSuccessors(t);return Array.from(new Set([...n,...i]))}doAddNode(t){if(this.hasNode(t.id))throw new Error("Node already exists: "+t.id);this.nodeMap.set(t.id,t),this.inEdgesMap.set(t.id,new Set),this.outEdgesMap.set(t.id,new Set),this.bothEdgesMap.set(t.id,new Set),this.treeIndices.forEach(n=>{n.childrenMap.set(t.id,new Set)}),this.changes.push({type:"NodeAdded",value:t})}addNodes(t){this.batch(()=>{for(const n of t)this.doAddNode(n)})}addNode(t){this.addNodes([t])}doRemoveNode(t){const n=this.getNode(t),i=this.bothEdgesMap.get(t);i==null||i.forEach(s=>this.doRemoveEdge(s.id)),this.nodeMap.delete(t),this.treeIndices.forEach(s=>{var o,c;(o=s.childrenMap.get(t))==null||o.forEach(f=>{s.parentMap.delete(f.id)});const a=s.parentMap.get(t);a&&((c=s.childrenMap.get(a.id))==null||c.delete(n)),s.parentMap.delete(t),s.childrenMap.delete(t)}),this.bothEdgesMap.delete(t),this.inEdgesMap.delete(t),this.outEdgesMap.delete(t),this.changes.push({type:"NodeRemoved",value:n})}removeNodes(t){this.batch(()=>{t.forEach(n=>this.doRemoveNode(n))})}removeNode(t){this.removeNodes([t])}updateNodeDataProperty(t,n,i){const s=this.getNode(t);this.batch(()=>{const a=s.data[n],o=i;s.data[n]=o,this.changes.push({type:"NodeDataUpdated",id:t,propertyName:n,oldValue:a,newValue:o})})}mergeNodeData(t,n){this.batch(()=>{Object.entries(n).forEach(([i,s])=>{this.updateNodeDataProperty(t,i,s)})})}updateNodeData(...t){const n=t[0],i=this.getNode(n);if(typeof t[1]=="string"){this.updateNodeDataProperty(n,t[1],t[2]);return}let s;if(typeof t[1]=="function"){const a=t[1];s=a(i.data)}else typeof t[1]=="object"&&(s=t[1]);this.batch(()=>{const a=i.data,o=s;i.data=s,this.changes.push({type:"NodeDataUpdated",id:n,oldValue:a,newValue:o})})}checkEdgeExistence(t){if(!this.hasEdge(t))throw new Error("Edge not found for id: "+t)}hasEdge(t){return this.edgeMap.has(t)}getEdge(t){return this.checkEdgeExistence(t),this.edgeMap.get(t)}getEdgeDetail(t){const n=this.getEdge(t);return{edge:n,source:this.getNode(n.source),target:this.getNode(n.target)}}doAddEdge(t){if(this.hasEdge(t.id))throw new Error("Edge already exists: "+t.id);this.checkNodeExistence(t.source),this.checkNodeExistence(t.target),this.edgeMap.set(t.id,t);const n=this.inEdgesMap.get(t.target),i=this.outEdgesMap.get(t.source),s=this.bothEdgesMap.get(t.source),a=this.bothEdgesMap.get(t.target);n.add(t),i.add(t),s.add(t),a.add(t),this.changes.push({type:"EdgeAdded",value:t})}addEdges(t){this.batch(()=>{for(const n of t)this.doAddEdge(n)})}addEdge(t){this.addEdges([t])}doRemoveEdge(t){const n=this.getEdge(t),i=this.outEdgesMap.get(n.source),s=this.inEdgesMap.get(n.target),a=this.bothEdgesMap.get(n.source),o=this.bothEdgesMap.get(n.target);i.delete(n),s.delete(n),a.delete(n),o.delete(n),this.edgeMap.delete(t),this.changes.push({type:"EdgeRemoved",value:n})}removeEdges(t){this.batch(()=>{t.forEach(n=>this.doRemoveEdge(n))})}removeEdge(t){this.removeEdges([t])}updateEdgeSource(t,n){const i=this.getEdge(t);this.checkNodeExistence(n);const s=i.source,a=n;this.outEdgesMap.get(s).delete(i),this.bothEdgesMap.get(s).delete(i),this.outEdgesMap.get(a).add(i),this.bothEdgesMap.get(a).add(i),i.source=n,this.batch(()=>{this.changes.push({type:"EdgeUpdated",id:t,propertyName:"source",oldValue:s,newValue:a})})}updateEdgeTarget(t,n){const i=this.getEdge(t);this.checkNodeExistence(n);const s=i.target,a=n;this.inEdgesMap.get(s).delete(i),this.bothEdgesMap.get(s).delete(i),this.inEdgesMap.get(a).add(i),this.bothEdgesMap.get(a).add(i),i.target=n,this.batch(()=>{this.changes.push({type:"EdgeUpdated",id:t,propertyName:"target",oldValue:s,newValue:a})})}updateEdgeDataProperty(t,n,i){const s=this.getEdge(t);this.batch(()=>{const a=s.data[n],o=i;s.data[n]=o,this.changes.push({type:"EdgeDataUpdated",id:t,propertyName:n,oldValue:a,newValue:o})})}updateEdgeData(...t){const n=t[0],i=this.getEdge(n);if(typeof t[1]=="string"){this.updateEdgeDataProperty(n,t[1],t[2]);return}let s;if(typeof t[1]=="function"){const a=t[1];s=a(i.data)}else typeof t[1]=="object"&&(s=t[1]);this.batch(()=>{const a=i.data,o=s;i.data=s,this.changes.push({type:"EdgeDataUpdated",id:n,oldValue:a,newValue:o})})}mergeEdgeData(t,n){this.batch(()=>{Object.entries(n).forEach(([i,s])=>{this.updateEdgeDataProperty(t,i,s)})})}checkTreeExistence(t){if(!this.hasTreeStructure(t))throw new Error("Tree structure not found for treeKey: "+t)}hasTreeStructure(t){return this.treeIndices.has(t)}attachTreeStructure(t){this.treeIndices.has(t)||(this.treeIndices.set(t,{parentMap:new Map,childrenMap:new Map}),this.batch(()=>{this.changes.push({type:"TreeStructureAttached",treeKey:t})}))}detachTreeStructure(t){this.checkTreeExistence(t),this.treeIndices.delete(t),this.batch(()=>{this.changes.push({type:"TreeStructureDetached",treeKey:t})})}addTree(t,n){this.batch(()=>{this.attachTreeStructure(n);const i=[],s=Array.isArray(t)?t:[t];for(;s.length;){const a=s.shift();i.push(a),a.children&&s.push(...a.children)}this.addNodes(i),i.forEach(a=>{var o;(o=a.children)==null||o.forEach(c=>{this.setParent(c.id,a.id,n)})})})}getRoots(t){return this.checkTreeExistence(t),this.getAllNodes().filter(n=>!this.getParent(n.id,t))}getChildren(t,n){this.checkNodeExistence(t),this.checkTreeExistence(n);const s=this.treeIndices.get(n).childrenMap.get(t);return Array.from(s||[])}getParent(t,n){return this.checkNodeExistence(t),this.checkTreeExistence(n),this.treeIndices.get(n).parentMap.get(t)||null}getAncestors(t,n){const i=[];let s=this.getNode(t),a;for(;a=this.getParent(s.id,n);)i.push(a),s=a;return i}setParent(t,n,i){var l,p;this.checkTreeExistence(i);const s=this.treeIndices.get(i);if(!s)return;const a=this.getNode(t),o=s.parentMap.get(t);if((o==null?void 0:o.id)===n)return;if(n==null){o&&((l=s.childrenMap.get(o.id))==null||l.delete(a)),s.parentMap.delete(t);return}const c=this.getNode(n);s.parentMap.set(t,c),o&&((p=s.childrenMap.get(o.id))==null||p.delete(a));let f=s.childrenMap.get(c.id);f||(f=new Set,s.childrenMap.set(c.id,f)),f.add(a),this.batch(()=>{this.changes.push({type:"TreeStructureChanged",treeKey:i,nodeId:t,oldParentId:o==null?void 0:o.id,newParentId:c.id})})}dfsTree(t,n,i){const s=a=>this.getChildren(a,i);return _r(this.getNode(t),new Set,n,s)}bfsTree(t,n,i){const s=a=>this.getChildren(a,i);return ln([this.getNode(t)],new Set,n,s)}getAllNodes(){return Array.from(this.nodeMap.values())}getAllEdges(){return Array.from(this.edgeMap.values())}bfs(t,n,i="out"){const s={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[i];return ln([this.getNode(t)],new Set,n,s)}dfs(t,n,i="out"){const s={in:this.getPredecessors.bind(this),out:this.getSuccessors.bind(this),both:this.getNeighbors.bind(this)}[i];return _r(this.getNode(t),new Set,n,s)}clone(){const t=this.getAllNodes().map(s=>({...s,data:{...s.data}})),n=this.getAllEdges().map(s=>({...s,data:{...s.data}})),i=new Be({nodes:t,edges:n});return this.treeIndices.forEach(({parentMap:s,childrenMap:a},o)=>{const c=new Map;s.forEach((l,p)=>{c.set(p,i.getNode(l.id))});const f=new Map;a.forEach((l,p)=>{f.set(p,new Set(Array.from(l).map(m=>i.getNode(m.id))))}),i.treeIndices.set(o,{parentMap:c,childrenMap:f})}),i}toJSON(){return JSON.stringify({nodes:this.getAllNodes(),edges:this.getAllEdges()})}createView(t){return new N0({graph:this,...t})}}/**
2
+ * @license
3
+ * Copyright 2019 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */const Tc=Symbol("Comlink.proxy"),M0=Symbol("Comlink.endpoint"),S0=Symbol("Comlink.releaseProxy"),hn=Symbol("Comlink.finalizer"),Er=Symbol("Comlink.thrown"),kc=e=>typeof e=="object"&&e!==null||typeof e=="function",q0={canHandle:e=>kc(e)&&e[Tc],serialize(e){const{port1:r,port2:t}=new MessageChannel;return dn(e,r),[t,[t]]},deserialize(e){return e.start(),I0(e)}},R0={canHandle:e=>kc(e)&&Er in e,serialize({value:e}){let r;return e instanceof Error?r={isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:r={isError:!1,value:e},[r,[]]},deserialize(e){throw e.isError?Object.assign(new Error(e.value.message),e.value):e.value}},jc=new Map([["proxy",q0],["throw",R0]]);function O0(e,r){for(const t of e)if(r===t||t==="*"||t instanceof RegExp&&t.test(r))return!0;return!1}function dn(e,r=globalThis,t=["*"]){r.addEventListener("message",function n(i){if(!i||!i.data)return;if(!O0(t,i.origin)){console.warn(`Invalid origin '${i.origin}' for comlink proxy`);return}const{id:s,type:a,path:o}=Object.assign({path:[]},i.data),c=(i.data.argumentList||[]).map(jt);let f;try{const l=o.slice(0,-1).reduce((m,y)=>m[y],e),p=o.reduce((m,y)=>m[y],e);switch(a){case"GET":f=p;break;case"SET":l[o.slice(-1)[0]]=jt(i.data.value),f=!0;break;case"APPLY":f=p.apply(l,c);break;case"CONSTRUCT":{const m=new p(...c);f=P0(m)}break;case"ENDPOINT":{const{port1:m,port2:y}=new MessageChannel;dn(e,y),f=C0(m,[m])}break;case"RELEASE":f=void 0;break;default:return}}catch(l){f={value:l,[Er]:0}}Promise.resolve(f).catch(l=>({value:l,[Er]:0})).then(l=>{const[p,m]=Sr(l);r.postMessage(Object.assign(Object.assign({},p),{id:s}),m),a==="RELEASE"&&(r.removeEventListener("message",n),Cc(r),hn in e&&typeof e[hn]=="function"&&e[hn]())}).catch(l=>{const[p,m]=Sr({value:new TypeError("Unserializable return value"),[Er]:0});r.postMessage(Object.assign(Object.assign({},p),{id:s}),m)})}),r.start&&r.start()}function A0(e){return e.constructor.name==="MessagePort"}function Cc(e){A0(e)&&e.close()}function I0(e,r){const t=new Map;return e.addEventListener("message",function(i){const{data:s}=i;if(!s||!s.id)return;const a=t.get(s.id);if(a)try{a(s)}finally{t.delete(s.id)}}),gn(e,t,[],r)}function xr(e){if(e)throw new Error("Proxy has been released and is not useable")}function Pc(e){return Gt(e,new Map,{type:"RELEASE"}).then(()=>{Cc(e)})}const Nr=new WeakMap,Mr="FinalizationRegistry"in globalThis&&new FinalizationRegistry(e=>{const r=(Nr.get(e)||0)-1;Nr.set(e,r),r===0&&Pc(e)});function T0(e,r){const t=(Nr.get(r)||0)+1;Nr.set(r,t),Mr&&Mr.register(e,r,e)}function k0(e){Mr&&Mr.unregister(e)}function gn(e,r,t=[],n=function(){}){let i=!1;const s=new Proxy(n,{get(a,o){if(xr(i),o===S0)return()=>{k0(s),Pc(e),r.clear(),i=!0};if(o==="then"){if(t.length===0)return{then:()=>s};const c=Gt(e,r,{type:"GET",path:t.map(f=>f.toString())}).then(jt);return c.then.bind(c)}return gn(e,r,[...t,o])},set(a,o,c){xr(i);const[f,l]=Sr(c);return Gt(e,r,{type:"SET",path:[...t,o].map(p=>p.toString()),value:f},l).then(jt)},apply(a,o,c){xr(i);const f=t[t.length-1];if(f===M0)return Gt(e,r,{type:"ENDPOINT"}).then(jt);if(f==="bind")return gn(e,r,t.slice(0,-1));const[l,p]=Lc(c);return Gt(e,r,{type:"APPLY",path:t.map(m=>m.toString()),argumentList:l},p).then(jt)},construct(a,o){xr(i);const[c,f]=Lc(o);return Gt(e,r,{type:"CONSTRUCT",path:t.map(l=>l.toString()),argumentList:c},f).then(jt)}});return T0(s,e),s}function j0(e){return Array.prototype.concat.apply([],e)}function Lc(e){const r=e.map(Sr);return[r.map(t=>t[0]),j0(r.map(t=>t[1]))]}const Dc=new WeakMap;function C0(e,r){return Dc.set(e,r),e}function P0(e){return Object.assign(e,{[Tc]:!0})}function Sr(e){for(const[r,t]of jc)if(t.canHandle(e)){const[n,i]=t.serialize(e);return[{type:"HANDLER",name:r,value:n},i]}return[{type:"RAW",value:e},Dc.get(e)||[]]}function jt(e){switch(e.type){case"HANDLER":return jc.get(e.name).deserialize(e.value);case"RAW":return e.value}}function Gt(e,r,t,n){return new Promise(i=>{const s=L0();r.set(s,i),e.start&&e.start(),e.postMessage(Object.assign({id:s},t),n)})}function L0(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}function wt(e){return typeof e=="function"}function D0(e){return e==null}function pn(e){return Array.isArray(e)}var Ut=function(e){var r=typeof e;return e!==null&&r==="object"||r==="function"};function z0(e,r){if(e){var t;if(pn(e))for(var n=0,i=e.length;n<i&&(t=r(e[n],n),t!==!1);n++);else if(Ut(e)){for(var s in e)if(e.hasOwnProperty(s)&&(t=r(e[s],s),t===!1))break}}}var F0=function(e){return typeof e=="object"&&e!==null},B0={}.toString,$0=function(e,r){return B0.call(e)==="[object "+r+"]"},vn=function(e){if(!F0(e)||!$0(e,"Object"))return!1;if(Object.getPrototypeOf(e)===null)return!0;for(var r=e;Object.getPrototypeOf(r)!==null;)r=Object.getPrototypeOf(r);return Object.getPrototypeOf(e)===r};function nr(e){return typeof e=="string"}function me(e){return typeof e=="number"}var qr=function(e){if(typeof e!="object"||e===null)return e;var r;if(pn(e)){r=[];for(var t=0,n=e.length;t<n;t++)typeof e[t]=="object"&&e[t]!=null?r[t]=qr(e[t]):r[t]=e[t]}else{r={};for(var i in e)typeof e[i]=="object"&&e[i]!=null?r[i]=qr(e[i]):r[i]=e[i]}return r},G0=5;function U0(e,r){if(Object.hasOwn)return Object.hasOwn(e,r);if(e==null)throw new TypeError("Cannot convert undefined or null to object");return Object.prototype.hasOwnProperty.call(Object(e),r)}function zc(e,r,t,n){t=t||0,n=n||G0;for(var i in r)if(U0(r,i)){var s=r[i];s!==null&&vn(s)?(vn(e[i])||(e[i]={}),t<n?zc(e[i],s,t+1,n):e[i]=r[i]):pn(s)?(e[i]=[],e[i]=e[i].concat(s)):s!==void 0&&(e[i]=s)}}var Fc=function(e){for(var r=[],t=1;t<arguments.length;t++)r[t-1]=arguments[t];for(var n=0;n<r.length;n+=1)zc(e,r[n]);return e},V0=Object.prototype.hasOwnProperty,Bc=function(e,r){if(e===null||!vn(e))return{};var t={};return z0(r,function(n){V0.call(e,n)&&(t[n]=e[n])}),t};const W0=(e,r)=>{if(e!=="next"&&e!=="prev")return r},$c=e=>{e.prev.next=e.next,e.next.prev=e.prev,delete e.next,delete e.prev};let Y0=class{constructor(){const r={};r.prev=r,r.next=r.prev,this.shortcut=r}dequeue(){const r=this.shortcut,t=r.prev;if(t&&t!==r)return $c(t),t}enqueue(r){const t=this.shortcut;r.prev&&r.next&&$c(r),r.next=t.next,t.next.prev=r,t.next=r,r.prev=t}toString(){const r=[],t=this.shortcut;let n=t.prev;for(;n!==t;)r.push(JSON.stringify(n,W0)),n=n==null?void 0:n.prev;return`[${r.join(", ")}]`}};class K0 extends Y0{}const X0=()=>1,Z0=(e,r)=>{var t;if(e.getAllNodes().length<=1)return[];const n=Q0(e,r||X0);return(t=J0(n.graph,n.buckets,n.zeroIdx).map(s=>e.getRelatedEdges(s.v,"out").filter(({target:a})=>a===s.w)))===null||t===void 0?void 0:t.flat()},J0=(e,r,t)=>{let n=[];const i=r[r.length-1],s=r[0];let a;for(;e.getAllNodes().length;){for(;a=s.dequeue();)mn(e,r,t,a);for(;a=i.dequeue();)mn(e,r,t,a);if(e.getAllNodes().length){for(let o=r.length-2;o>0;--o)if(a=r[o].dequeue(),a){n=n.concat(mn(e,r,t,a,!0));break}}}return n},mn=(e,r,t,n,i)=>{var s,a;const o=[];return e.hasNode(n.v)&&((s=e.getRelatedEdges(n.v,"in"))===null||s===void 0||s.forEach(c=>{const f=c.data.weight,l=e.getNode(c.source);i&&o.push({v:c.source,w:c.target,in:0,out:0}),l.data.out===void 0&&(l.data.out=0),l.data.out-=f,yn(r,t,Object.assign({v:l.id},l.data))}),(a=e.getRelatedEdges(n.v,"out"))===null||a===void 0||a.forEach(c=>{const f=c.data.weight,l=c.target,p=e.getNode(l);p.data.in===void 0&&(p.data.in=0),p.data.in-=f,yn(r,t,Object.assign({v:p.id},p.data))}),e.removeNode(n.v)),i?o:void 0},Q0=(e,r)=>{const t=new Be;let n=0,i=0;e.getAllNodes().forEach(c=>{t.addNode({id:c.id,data:{v:c.id,in:0,out:0}})}),e.getAllEdges().forEach(c=>{const f=t.getRelatedEdges(c.source,"out").find(p=>p.target===c.target),l=(r==null?void 0:r(c))||1;f?t.updateEdgeData(f==null?void 0:f.id,Object.assign(Object.assign({},f.data),{weight:f.data.weight+l})):t.addEdge({id:c.id,source:c.source,target:c.target,data:{weight:l}}),i=Math.max(i,t.getNode(c.source).data.out+=l),n=Math.max(n,t.getNode(c.target).data.in+=l)});const s=[],a=i+n+3;for(let c=0;c<a;c++)s.push(new K0);const o=n+1;return t.getAllNodes().forEach(c=>{yn(s,o,Object.assign({v:c.id},t.getNode(c.id).data))}),{buckets:s,zeroIdx:o,graph:t}},yn=(e,r,t)=>{t.out?t.in?e[t.out-t.in+r].enqueue(t):e[e.length-1].enqueue(t):e[0].enqueue(t)},H0=(e,r)=>{const n=Z0(e,(i=>s=>s.data.weight||1)());n==null||n.forEach(i=>{const s=i.data;e.removeEdge(i.id),s.forwardName=i.data.name,s.reversed=!0,e.addEdge({id:i.id,source:i.target,target:i.source,data:Object.assign({},s)})})},em=e=>{e.getAllEdges().forEach(r=>{const t=r.data;if(t.reversed){e.removeEdge(r.id);const n=t.forwardName;delete t.reversed,delete t.forwardName,e.addEdge({id:r.id,source:r.target,target:r.source,data:Object.assign(Object.assign({},t),{forwardName:n})})}})},tm=(e,r)=>Number(e)-Number(r),Vt=(e,r,t,n)=>{let i;do i=`${n}${Math.random()}`;while(e.hasNode(i));return t.dummy=r,e.addNode({id:i,data:t}),i},rm=e=>{const r=new Be;return e.getAllNodes().forEach(t=>{r.addNode(Object.assign({},t))}),e.getAllEdges().forEach(t=>{const n=r.getRelatedEdges(t.source,"out").find(i=>i.target===t.target);n?r.updateEdgeData(n==null?void 0:n.id,Object.assign(Object.assign({},n.data),{weight:n.data.weight+t.data.weight||0,minlen:Math.max(n.data.minlen,t.data.minlen||1)})):r.addEdge({id:t.id,source:t.source,target:t.target,data:{weight:t.data.weight||0,minlen:t.data.minlen||1}})}),r},Gc=e=>{const r=new Be;return e.getAllNodes().forEach(t=>{e.getChildren(t.id).length||r.addNode(Object.assign({},t))}),e.getAllEdges().forEach(t=>{r.addEdge(t)}),r},nm=(e,r)=>e==null?void 0:e.reduce((t,n,i)=>(t[n]=r[i],t),{}),Uc=(e,r)=>{const t=Number(e.x),n=Number(e.y),i=Number(r.x)-t,s=Number(r.y)-n;let a=Number(e.width)/2,o=Number(e.height)/2;if(!i&&!s)return{x:0,y:0};let c,f;return Math.abs(s)*a>Math.abs(i)*o?(s<0&&(o=-o),c=o*i/s,f=o):(i<0&&(a=-a),c=a,f=a*s/i),{x:t+c,y:n+f}},ir=e=>{const r=[],t=Wc(e)+1;for(let n=0;n<t;n++)r.push([]);e.getAllNodes().forEach(n=>{const i=n.data.rank;i!==void 0&&r[i]&&r[i].push(n.id)});for(let n=0;n<t;n++)r[n]=r[n].sort((i,s)=>tm(e.getNode(i).data.order,e.getNode(s).data.order));return r},im=e=>{const r=e.getAllNodes().filter(n=>n.data.rank!==void 0).map(n=>n.data.rank),t=Math.min(...r);e.getAllNodes().forEach(n=>{n.data.hasOwnProperty("rank")&&t!==1/0&&(n.data.rank-=t)})},sm=(e,r=0)=>{const t=e.getAllNodes(),n=t.filter(o=>o.data.rank!==void 0).map(o=>o.data.rank),i=Math.min(...n),s=[];t.forEach(o=>{const c=(o.data.rank||0)-i;s[c]||(s[c]=[]),s[c].push(o.id)});let a=0;for(let o=0;o<s.length;o++){const c=s[o];c===void 0?o%r!==0&&(a-=1):a&&(c==null||c.forEach(f=>{const l=e.getNode(f);l&&(l.data.rank=l.data.rank||0,l.data.rank+=a)}))}},Vc=(e,r,t,n)=>{const i={width:0,height:0};return me(t)&&me(n)&&(i.rank=t,i.order=n),Vt(e,"border",i,r)},Wc=e=>{let r;return e.getAllNodes().forEach(t=>{const n=t.data.rank;n!==void 0&&(r===void 0||n>r)&&(r=n)}),r||(r=0),r},om=(e,r)=>{const t={lhs:[],rhs:[]};return e==null||e.forEach(n=>{r(n)?t.lhs.push(n):t.rhs.push(n)}),t},wn=(e,r)=>e.reduce((t,n)=>{const i=r(t),s=r(n);return i>s?n:t}),Yc=(e,r,t,n,i,s)=>{n.includes(r.id)||(n.push(r.id),t||s.push(r.id),i(r.id).forEach(a=>Yc(e,a,t,n,i,s)),t&&s.push(r.id))},Kc=(e,r,t,n)=>{const i=Array.isArray(r)?r:[r],s=c=>e.getNeighbors(c),a=[],o=[];return i.forEach(c=>{if(e.hasNode(c.id))Yc(e,c,t==="post",o,s,a);else throw new Error(`Graph does not have node: ${c}`)}),a},am=e=>{const r=t=>{const n=e.getChildren(t),i=e.getNode(t);if(n!=null&&n.length&&n.forEach(s=>r(s.id)),i.data.hasOwnProperty("minRank")){i.data.borderLeft=[],i.data.borderRight=[];for(let s=i.data.minRank,a=i.data.maxRank+1;s<a;s+=1)Xc(e,"borderLeft","_bl",t,i,s),Xc(e,"borderRight","_br",t,i,s)}};e.getRoots().forEach(t=>r(t.id))},Xc=(e,r,t,n,i,s)=>{const a={rank:s,borderType:r,width:0,height:0},o=i.data[r][s-1],c=Vt(e,"border",a,t);i.data[r][s]=c,e.setParent(c,n),o&&e.addEdge({id:`e${Math.random()}`,source:o,target:c,data:{weight:1}})},um=(e,r)=>{const t=r.toLowerCase();(t==="lr"||t==="rl")&&Zc(e)},cm=(e,r)=>{const t=r.toLowerCase();(t==="bt"||t==="rl")&&fm(e),(t==="lr"||t==="rl")&&(lm(e),Zc(e))},Zc=e=>{e.getAllNodes().forEach(r=>{Jc(r)}),e.getAllEdges().forEach(r=>{Jc(r)})},Jc=e=>{const r=e.data.width;e.data.width=e.data.height,e.data.height=r},fm=e=>{e.getAllNodes().forEach(r=>{bn(r.data)}),e.getAllEdges().forEach(r=>{var t;(t=r.data.points)===null||t===void 0||t.forEach(n=>bn(n)),r.data.hasOwnProperty("y")&&bn(r.data)})},bn=e=>{e!=null&&e.y&&(e.y=-e.y)},lm=e=>{e.getAllNodes().forEach(r=>{_n(r.data)}),e.getAllEdges().forEach(r=>{var t;(t=r.data.points)===null||t===void 0||t.forEach(n=>_n(n)),r.data.hasOwnProperty("x")&&_n(r.data)})},_n=e=>{const r=e.x;e.x=e.y,e.y=r},hm=e=>{const r=Vt(e,"root",{},"_root"),t=dm(e);let n=Math.max(...Object.values(t));Math.abs(n)===1/0&&(n=1);const i=n-1,s=2*i+1;e.getAllEdges().forEach(o=>{o.data.minlen*=s});const a=gm(e)+1;return e.getRoots().forEach(o=>{Qc(e,r,s,a,i,t,o.id)}),{nestingRoot:r,nodeRankFactor:s}},Qc=(e,r,t,n,i,s,a)=>{const o=e.getChildren(a);if(!(o!=null&&o.length)){a!==r&&e.addEdge({id:`e${Math.random()}`,source:r,target:a,data:{weight:0,minlen:t}});return}const c=Vc(e,"_bt"),f=Vc(e,"_bb"),l=e.getNode(a);e.setParent(c,a),l.data.borderTop=c,e.setParent(f,a),l.data.borderBottom=f,o==null||o.forEach(p=>{Qc(e,r,t,n,i,s,p.id);const m=p.data.borderTop?p.data.borderTop:p.id,y=p.data.borderBottom?p.data.borderBottom:p.id,x=p.data.borderTop?n:2*n,_=m!==y?1:i-s[a]+1;e.addEdge({id:`e${Math.random()}`,source:c,target:m,data:{minlen:_,weight:x,nestingEdge:!0}}),e.addEdge({id:`e${Math.random()}`,source:y,target:f,data:{minlen:_,weight:x,nestingEdge:!0}})}),e.getParent(a)||e.addEdge({id:`e${Math.random()}`,source:r,target:c,data:{weight:0,minlen:i+s[a]}})},dm=e=>{const r={},t=(n,i)=>{const s=e.getChildren(n);s==null||s.forEach(a=>t(a.id,i+1)),r[n]=i};return e.getRoots().forEach(n=>t(n.id,1)),r},gm=e=>{let r=0;return e.getAllEdges().forEach(t=>{r+=t.data.weight}),r},pm=(e,r)=>{r&&e.removeNode(r),e.getAllEdges().forEach(t=>{t.data.nestingEdge&&e.removeEdge(t.id)})},vm="edge",Hc="edge-label",mm=(e,r)=>{e.getAllEdges().forEach(t=>ym(e,t,r))},ym=(e,r,t)=>{let n=r.source,i=e.getNode(n).data.rank;const s=r.target,a=e.getNode(s).data.rank,o=r.data.labelRank;if(a===i+1)return;e.removeEdge(r.id);let c,f,l;for(l=0,++i;i<a;++l,++i)r.data.points=[],f={originalEdge:r,width:0,height:0,rank:i},c=Vt(e,vm,f,"_d"),i===o&&(f.width=r.data.width,f.height=r.data.height,f.dummy=Hc,f.labelpos=r.data.labelpos),e.addEdge({id:`e${Math.random()}`,source:n,target:c,data:{weight:r.data.weight}}),l===0&&t.push(c),n=c;e.addEdge({id:`e${Math.random()}`,source:n,target:s,data:{weight:r.data.weight}})},wm=(e,r)=>{r.forEach(t=>{let n=e.getNode(t);const{data:i}=n,s=i.originalEdge;let a;s&&e.addEdge(s);let o=t;for(;n.data.dummy;)a=e.getSuccessors(o)[0],e.removeNode(o),s.data.points.push({x:n.data.x,y:n.data.y}),n.data.dummy===Hc&&(s.data.x=n.data.x,s.data.y=n.data.y,s.data.width=n.data.width,s.data.height=n.data.height),o=a.id,n=e.getNode(o)})},bm=(e,r,t)=>{const n={};let i;t==null||t.forEach(s=>{let a=e.getParent(s),o,c;for(;a;){if(o=e.getParent(a.id),o?(c=n[o.id],n[o.id]=a.id):(c=i,i=a.id),c&&c!==a.id){r.hasNode(c)||r.addNode({id:c,data:{}}),r.hasNode(a.id)||r.addNode({id:a.id,data:{}}),r.hasEdge(`e${c}-${a.id}`)||r.addEdge({id:`e${c}-${a.id}`,source:c,target:a.id,data:{}});return}a=o}})},_m=(e,r,t)=>{const n=Em(e),i=new Be({tree:[{id:n,children:[],data:{}}]});return e.getAllNodes().forEach(s=>{const a=e.getParent(s.id);(s.data.rank===r||s.data.minRank<=r&&r<=s.data.maxRank)&&(i.hasNode(s.id)||i.addNode(Object.assign({},s)),a!=null&&a.id&&!i.hasNode(a==null?void 0:a.id)&&i.addNode(Object.assign({},a)),i.setParent(s.id,(a==null?void 0:a.id)||n),e.getRelatedEdges(s.id,t).forEach(o=>{const c=o.source===s.id?o.target:o.source;i.hasNode(c)||i.addNode(Object.assign({},e.getNode(c)));const f=i.getRelatedEdges(c,"out").find(({target:p})=>p===s.id),l=f!==void 0?f.data.weight:0;f?i.updateEdgeData(f.id,Object.assign(Object.assign({},f.data),{weight:o.data.weight+l})):i.addEdge({id:o.id,source:c,target:s.id,data:{weight:o.data.weight+l}})}),s.data.hasOwnProperty("minRank")&&i.updateNodeData(s.id,Object.assign(Object.assign({},s.data),{borderLeft:s.data.borderLeft[r],borderRight:s.data.borderRight[r]})))}),i},Em=e=>{let r;for(;e.hasNode(r=`_root${Math.random()}`););return r},xm=(e,r,t)=>{const n=nm(t,t.map((l,p)=>p)),s=r.map(l=>{const p=e.getRelatedEdges(l,"out").map(m=>({pos:n[m.target]||0,weight:m.data.weight}));return p==null?void 0:p.sort((m,y)=>m.pos-y.pos)}).flat().filter(l=>l!==void 0);let a=1;for(;a<t.length;)a<<=1;const o=2*a-1;a-=1;const c=Array(o).fill(0,0,o);let f=0;return s==null||s.forEach(l=>{if(l){let p=l.pos+a;c[p]+=l.weight;let m=0;for(;p>0;)p%2&&(m+=c[p+1]),p=p-1>>1,c[p]+=l.weight;f+=l.weight*m}}),f},ef=(e,r)=>{let t=0;for(let n=1;n<(r==null?void 0:r.length);n+=1)t+=xm(e,r[n-1],r[n]);return t},tf=e=>{const r={},t=e.getAllNodes(),n=t.map(f=>{var l;return(l=f.data.rank)!==null&&l!==void 0?l:-1/0}),i=Math.max(...n),s=[];for(let f=0;f<i+1;f++)s.push([]);const a=t.sort((f,l)=>e.getNode(f.id).data.rank-e.getNode(l.id).data.rank),c=a.filter(f=>e.getNode(f.id).data.fixorder!==void 0).sort((f,l)=>e.getNode(f.id).data.fixorder-e.getNode(l.id).data.fixorder);return c==null||c.forEach(f=>{isNaN(e.getNode(f.id).data.rank)||s[e.getNode(f.id).data.rank].push(f.id),r[f.id]=!0}),a==null||a.forEach(f=>e.dfsTree(f.id,l=>{if(r.hasOwnProperty(l.id))return!0;r[l.id]=!0,isNaN(l.data.rank)||s[l.data.rank].push(l.id)})),s},Nm=(e,r)=>r.map(t=>{const n=e.getRelatedEdges(t,"in");if(!(n!=null&&n.length))return{v:t};const i={sum:0,weight:0};return n==null||n.forEach(s=>{const a=e.getNode(s.source);i.sum+=s.data.weight*a.data.order,i.weight+=s.data.weight}),{v:t,barycenter:i.sum/i.weight,weight:i.weight}}),Mm=(e,r)=>{var t,n,i;const s={};e==null||e.forEach((o,c)=>{s[o.v]={i:c,indegree:0,in:[],out:[],vs:[o.v]};const f=s[o.v];o.barycenter!==void 0&&(f.barycenter=o.barycenter,f.weight=o.weight)}),(t=r.getAllEdges())===null||t===void 0||t.forEach(o=>{const c=s[o.source],f=s[o.target];c!==void 0&&f!==void 0&&(f.indegree++,c.out.push(s[o.target]))});const a=(i=(n=Object.values(s)).filter)===null||i===void 0?void 0:i.call(n,o=>!o.indegree);return Sm(a)},Sm=e=>{var r,t;const n=[],i=c=>f=>{f.merged||(f.barycenter===void 0||c.barycenter===void 0||f.barycenter>=c.barycenter)&&qm(c,f)},s=c=>f=>{f.in.push(c),--f.indegree===0&&e.push(f)};for(;e!=null&&e.length;){const c=e.pop();n.push(c),(r=c.in.reverse())===null||r===void 0||r.forEach(f=>i(c)(f)),(t=c.out)===null||t===void 0||t.forEach(f=>s(c)(f))}const a=n.filter(c=>!c.merged),o=["vs","i","barycenter","weight"];return a.map(c=>{const f={};return o==null||o.forEach(l=>{c[l]!==void 0&&(f[l]=c[l])}),f})},qm=(e,r)=>{var t;let n=0,i=0;e.weight&&(n+=e.barycenter*e.weight,i+=e.weight),r.weight&&(n+=r.barycenter*r.weight,i+=r.weight),e.vs=(t=r.vs)===null||t===void 0?void 0:t.concat(e.vs),e.barycenter=n/i,e.weight=i,e.i=Math.min(r.i,e.i),r.merged=!0},Rm=(e,r,t,n)=>{const i=om(e,m=>{const y=m.hasOwnProperty("fixorder")&&!isNaN(m.fixorder);return n?!y&&m.hasOwnProperty("barycenter"):y||m.hasOwnProperty("barycenter")}),s=i.lhs,a=i.rhs.sort((m,y)=>-m.i- -y.i),o=[];let c=0,f=0,l=0;s==null||s.sort(Om(!!r,!!t)),l=rf(o,a,l),s==null||s.forEach(m=>{var y;l+=(y=m.vs)===null||y===void 0?void 0:y.length,o.push(m.vs),c+=m.barycenter*m.weight,f+=m.weight,l=rf(o,a,l)});const p={vs:o.flat()};return f&&(p.barycenter=c/f,p.weight=f),p},rf=(e,r,t)=>{let n=t,i;for(;r.length&&(i=r[r.length-1]).i<=n;)r.pop(),e==null||e.push(i.vs),n++;return n},Om=(e,r)=>(t,n)=>{if(t.fixorder!==void 0&&n.fixorder!==void 0)return t.fixorder-n.fixorder;if(t.barycenter<n.barycenter)return-1;if(t.barycenter>n.barycenter)return 1;if(r&&t.order!==void 0&&n.order!==void 0){if(t.order<n.order)return-1;if(t.order>n.order)return 1}return e?n.i-t.i:t.i-n.i},nf=(e,r,t,n,i,s)=>{var a,o,c,f;let l=e.getChildren(r).map(E=>E.id);const p=e.getNode(r),m=p?p.data.borderLeft:void 0,y=p?p.data.borderRight:void 0,x={};m&&(l=l==null?void 0:l.filter(E=>E!==m&&E!==y));const _=Nm(e,l||[]);_==null||_.forEach(E=>{var N;if(!((N=e.getChildren(E.v))===null||N===void 0)&&N.length){const S=nf(e,E.v,t,n,s);x[E.v]=S,S.hasOwnProperty("barycenter")&&Im(E,S)}});const b=Mm(_,t);Am(b,x),(a=b.filter(E=>E.vs.length>0))===null||a===void 0||a.forEach(E=>{const N=e.getNode(E.vs[0]);N&&(E.fixorder=N.data.fixorder,E.order=N.data.order)});const w=Rm(b,n,i,s);if(m&&(w.vs=[m,w.vs,y].flat(),!((o=e.getPredecessors(m))===null||o===void 0)&&o.length)){const E=e.getNode(((c=e.getPredecessors(m))===null||c===void 0?void 0:c[0].id)||""),N=e.getNode(((f=e.getPredecessors(y))===null||f===void 0?void 0:f[0].id)||"");w.hasOwnProperty("barycenter")||(w.barycenter=0,w.weight=0),w.barycenter=(w.barycenter*w.weight+E.data.order+N.data.order)/(w.weight+2),w.weight+=2}return w},Am=(e,r)=>{e==null||e.forEach(t=>{var n;const i=(n=t.vs)===null||n===void 0?void 0:n.map(s=>r[s]?r[s].vs:s);t.vs=i.flat()})},Im=(e,r)=>{e.barycenter!==void 0?(e.barycenter=(e.barycenter*e.weight+r.barycenter*r.weight)/(e.weight+r.weight),e.weight+=r.weight):(e.barycenter=r.barycenter,e.weight=r.weight)},Tm=(e,r)=>{const t=Wc(e),n=[],i=[];for(let l=1;l<t+1;l++)n.push(l);for(let l=t-1;l>-1;l--)i.push(l);const s=sf(e,n,"in"),a=sf(e,i,"out");let o=tf(e);En(e,o);let c=Number.POSITIVE_INFINITY,f;for(let l=0,p=0;p<4;++l,++p){of(l%2?s:a,l%4>=2,!1,r),o=ir(e);const m=ef(e,o);m<c&&(p=0,f=qr(o),c=m)}o=tf(e),En(e,o);for(let l=0,p=0;p<4;++l,++p){of(l%2?s:a,l%4>=2,!0,r),o=ir(e);const m=ef(e,o);m<c&&(p=0,f=qr(o),c=m)}En(e,f)},sf=(e,r,t)=>r.map(n=>_m(e,n,t)),of=(e,r,t,n)=>{const i=new Be;e==null||e.forEach(s=>{var a;const o=s.getRoots()[0].id,c=nf(s,o,i,r,t,n);for(let f=0;f<((a=c.vs)===null||a===void 0?void 0:a.length);f++){const l=s.getNode(c.vs[f]);l&&(l.data.order=f)}bm(s,i,c.vs)})},En=(e,r)=>{r==null||r.forEach(t=>{t==null||t.forEach((n,i)=>{e.getNode(n).data.order=i})})},km=(e,r)=>{const n=e.getAllNodes().filter(a=>{var o;return!(!((o=e.getChildren(a.id))===null||o===void 0)&&o.length)}).map(a=>a.data.rank),i=Math.max(...n),s=[];for(let a=0;a<i+1;a++)s[a]=[];r==null||r.forEach(a=>{const o=e.getNode(a);!o||o.data.dummy||isNaN(o.data.rank)||(o.data.fixorder=s[o.data.rank].length,s[o.data.rank].push(a))})},jm=e=>{const r={};let t=0;const n=i=>{const s=t;e.getChildren(i).forEach(a=>n(a.id)),r[i]={low:s,lim:t++}};return e.getRoots().forEach(i=>n(i.id)),r},Cm=(e,r,t,n)=>{var i,s;const a=[],o=[],c=Math.min(r[t].low,r[n].low),f=Math.max(r[t].lim,r[n].lim);let l,p;l=t;do l=(i=e.getParent(l))===null||i===void 0?void 0:i.id,a.push(l);while(l&&(r[l].low>c||f>r[l].lim));for(p=l,l=n;l&&l!==p;)o.push(l),l=(s=e.getParent(l))===null||s===void 0?void 0:s.id;return{lca:p,path:a.concat(o.reverse())}},Pm=(e,r)=>{const t=jm(e);r.forEach(n=>{var i,s;let a=n,o=e.getNode(a);const c=o.data.originalEdge;if(!c)return;const f=Cm(e,t,c.source,c.target),l=f.path,p=f.lca;let m=0,y=l[m],x=!0;for(;a!==c.target;){if(o=e.getNode(a),x){for(;y!==p&&((i=e.getNode(y))===null||i===void 0?void 0:i.data.maxRank)<o.data.rank;)m++,y=l[m];y===p&&(x=!1)}if(!x){for(;m<l.length-1&&((s=e.getNode(l[m+1]))===null||s===void 0?void 0:s.data.minRank)<=o.data.rank;)m++;y=l[m]}e.hasNode(y)&&e.setParent(a,y),a=e.getSuccessors(a)[0].id}})},Lm=(e,r)=>{const t={},n=(i,s)=>{let a=0,o=0;const c=i.length,f=s==null?void 0:s[(s==null?void 0:s.length)-1];return s==null||s.forEach((l,p)=>{var m;const y=zm(e,l),x=y?e.getNode(y.id).data.order:c;(y||l===f)&&((m=s.slice(o,p+1))===null||m===void 0||m.forEach(_=>{var b;(b=e.getPredecessors(_))===null||b===void 0||b.forEach(w=>{var E;const N=e.getNode(w.id),S=N.data.order;(S<a||x<S)&&!(N.data.dummy&&(!((E=e.getNode(_))===null||E===void 0)&&E.data.dummy))&&af(t,w.id,_)})}),o=p+1,a=x)}),s};return r!=null&&r.length&&r.reduce(n),t},Dm=(e,r)=>{const t={};function n(o,c,f,l,p){var m,y;let x;for(let _=c;_<f;_++)x=o[_],!((m=e.getNode(x))===null||m===void 0)&&m.data.dummy&&((y=e.getPredecessors(x))===null||y===void 0||y.forEach(b=>{const w=e.getNode(b.id);w.data.dummy&&(w.data.order<l||w.data.order>p)&&af(t,b.id,x)}))}function i(o){return JSON.stringify(o.slice(1))}function s(o,c){const f=i(o);c.get(f)||(n(...o),c.set(f,!0))}const a=(o,c)=>{let f=-1,l,p=0;const m=new Map;return c==null||c.forEach((y,x)=>{var _;if(((_=e.getNode(y))===null||_===void 0?void 0:_.data.dummy)==="border"){const b=e.getPredecessors(y)||[];b.length&&(l=e.getNode(b[0].id).data.order,s([c,p,x,f,l],m),p=x,f=l)}s([c,p,c.length,l,o.length],m)}),c};return r!=null&&r.length&&r.reduce(a),t},zm=(e,r)=>{var t,n;if(!((t=e.getNode(r))===null||t===void 0)&&t.data.dummy)return(n=e.getPredecessors(r))===null||n===void 0?void 0:n.find(i=>e.getNode(i.id).data.dummy)},af=(e,r,t)=>{let n=r,i=t;if(n>i){const a=n;n=i,i=a}let s=e[n];s||(e[n]=s={}),s[i]=!0},Fm=(e,r,t)=>{let n=r,i=t;if(n>i){const s=r;n=i,i=s}return!!e[n]},Bm=(e,r,t,n)=>{const i={},s={},a={};return r==null||r.forEach(o=>{o==null||o.forEach((c,f)=>{i[c]=c,s[c]=c,a[c]=f})}),r==null||r.forEach(o=>{let c=-1;o==null||o.forEach(f=>{let l=n(f).map(p=>p.id);if(l.length){l=l.sort((m,y)=>a[m]-a[y]);const p=(l.length-1)/2;for(let m=Math.floor(p),y=Math.ceil(p);m<=y;++m){const x=l[m];s[f]===f&&c<a[x]&&!Fm(t,f,x)&&(s[x]=f,s[f]=i[f]=i[x],c=a[x])}}})}),{root:i,align:s}},$m=(e,r,t,n,i,s,a)=>{var o;const c={},f=Gm(e,r,t,i,s,a),l=a?"borderLeft":"borderRight",p=(x,_)=>{let b=f.getAllNodes(),w=b.pop();const E={};for(;w;)E[w.id]?x(w.id):(E[w.id]=!0,b.push(w),b=b.concat(_(w.id))),w=b.pop()},m=x=>{c[x]=(f.getRelatedEdges(x,"in")||[]).reduce((_,b)=>Math.max(_,(c[b.source]||0)+b.data.weight),0)},y=x=>{const _=(f.getRelatedEdges(x,"out")||[]).reduce((w,E)=>Math.min(w,(c[E.target]||0)-E.data.weight),Number.POSITIVE_INFINITY),b=e.getNode(x);_!==Number.POSITIVE_INFINITY&&b.data.borderType!==l&&(c[x]=Math.max(c[x],_))};return p(m,f.getPredecessors.bind(f)),p(y,f.getSuccessors.bind(f)),(o=Object.values(n))===null||o===void 0||o.forEach(x=>{c[x]=c[t[x]]}),c},Gm=(e,r,t,n,i,s)=>{const a=new Be,o=Ym(n,i,s);return r==null||r.forEach(c=>{let f;c==null||c.forEach(l=>{const p=t[l];if(a.hasNode(p)||a.addNode({id:p,data:{}}),f){const m=t[f],y=a.getRelatedEdges(m,"out").find(x=>x.target===p);y?a.updateEdgeData(y.id,Object.assign(Object.assign({},y.data),{weight:Math.max(o(e,l,f),y.data.weight||0)})):a.addEdge({id:`e${Math.random()}`,source:m,target:p,data:{weight:Math.max(o(e,l,f),0)}})}f=l})}),a},Um=(e,r)=>wn(Object.values(r),t=>{var n;let i=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;return(n=Object.keys(t))===null||n===void 0||n.forEach(a=>{const o=t[a],c=Km(e,a)/2;i=Math.max(o+c,i),s=Math.min(o-c,s)}),i-s});function Vm(e,r){const t=Object.values(r),n=Math.min(...t),i=Math.max(...t);["u","d"].forEach(s=>{["l","r"].forEach(a=>{const o=s+a,c=e[o];let f;if(c===r)return;const l=Object.values(c);f=a==="l"?n-Math.min(...l):i-Math.max(...l),f&&(e[o]={},Object.keys(c).forEach(p=>{e[o][p]=c[p]+f}))})})}const Wm=(e,r)=>{const t={};return Object.keys(e.ul).forEach(n=>{if(r)t[n]=e[r.toLowerCase()][n];else{const i=Object.values(e).map(s=>s[n]);t[n]=(i[0]+i[1])/2}}),t},Ym=(e,r,t)=>(n,i,s)=>{const a=n.getNode(i),o=n.getNode(s);let c=0,f=0;if(c+=a.data.width/2,a.data.hasOwnProperty("labelpos"))switch((a.data.labelpos||"").toLowerCase()){case"l":f=-a.data.width/2;break;case"r":f=a.data.width/2;break}if(f&&(c+=t?f:-f),f=0,c+=(a.data.dummy?r:e)/2,c+=(o.data.dummy?r:e)/2,c+=o.data.width/2,o.data.labelpos)switch((o.data.labelpos||"").toLowerCase()){case"l":f=o.data.width/2;break;case"r":f=-o.data.width/2;break}return f&&(c+=t?f:-f),f=0,c},Km=(e,r)=>e.getNode(r).data.width||0,Xm=(e,r)=>{const{ranksep:t=0}=r||{},n=ir(e);let i=0;n==null||n.forEach(s=>{const a=s.map(c=>e.getNode(c).data.height),o=Math.max(...a,0);s==null||s.forEach(c=>{e.getNode(c).data.y=i+o/2}),i+=o+t})},Zm=(e,r)=>{const{align:t,nodesep:n=0,edgesep:i=0}=r||{},s=ir(e),a=Object.assign(Lm(e,s),Dm(e,s)),o={};let c=[];["u","d"].forEach(l=>{c=l==="u"?s:Object.values(s).reverse(),["l","r"].forEach(p=>{p==="r"&&(c=c.map(_=>Object.values(_).reverse()));const m=(l==="u"?e.getPredecessors:e.getSuccessors).bind(e),y=Bm(e,c,a,m),x=$m(e,c,y.root,y.align,n,i,p==="r");p==="r"&&Object.keys(x).forEach(_=>x[_]=-x[_]),o[l+p]=x})});const f=Um(e,o);return f&&Vm(o,f),Wm(o,t)},Jm=(e,r)=>{var t;const n=Gc(e);Xm(n,r);const i=Zm(n,r);(t=Object.keys(i))===null||t===void 0||t.forEach(s=>{n.getNode(s).data.x=i[s]})},uf=e=>{const r={},t=n=>{var i;const s=e.getNode(n);if(!s)return 0;if(r[n])return s.data.rank;r[n]=!0;let a;return(i=e.getRelatedEdges(n,"out"))===null||i===void 0||i.forEach(o=>{const c=t(o.target),f=o.data.minlen,l=c-f;l&&(a===void 0||l<a)&&(a=l)}),a||(a=0),s.data.rank=a,a};e.getAllNodes().filter(n=>e.getRelatedEdges(n.id,"in").length===0).forEach(n=>t(n.id))},Qm=e=>{const r={};let t;const n=a=>{var o;const c=e.getNode(a);if(!c)return 0;if(r[a])return c.data.rank;r[a]=!0;let f;return(o=e.getRelatedEdges(a,"out"))===null||o===void 0||o.forEach(l=>{const p=n(l.target),m=l.data.minlen,y=p-m;y&&(f===void 0||y<f)&&(f=y)}),f||(f=0),(t===void 0||f<t)&&(t=f),c.data.rank=f,f};e.getAllNodes().filter(a=>e.getRelatedEdges(a.id,"in").length===0).forEach(a=>{a&&n(a.id)}),t===void 0&&(t=0);const i={},s=(a,o)=>{var c;const f=e.getNode(a),l=isNaN(f.data.layer)?o:f.data.layer;(f.data.rank===void 0||f.data.rank<l)&&(f.data.rank=l),!i[a]&&(i[a]=!0,(c=e.getRelatedEdges(a,"out"))===null||c===void 0||c.forEach(p=>{s(p.target,l+p.data.minlen)}))};e.getAllNodes().forEach(a=>{const o=a.data;o&&(isNaN(o.layer)?o.rank-=t:s(a.id,o.layer))})},Ot=(e,r)=>e.getNode(r.target).data.rank-e.getNode(r.source).data.rank-r.data.minlen,Hm=e=>{const r=new Be({tree:[]}),t=e.getAllNodes()[0],n=e.getAllNodes().length;r.addNode(t);let i,s;for(;ey(r,e)<n;)i=cf(r,e),s=r.hasNode(i.source)?Ot(e,i):-Ot(e,i),ff(r,e,s);return r},ey=(e,r)=>{const t=n=>{r.getRelatedEdges(n,"both").forEach(i=>{const s=i.source,a=n===s?i.target:s;!e.hasNode(a)&&!Ot(r,i)&&(e.addNode({id:a,data:{}}),e.addEdge({id:i.id,source:n,target:a,data:{}}),t(a))})};return e.getAllNodes().forEach(n=>t(n.id)),e.getAllNodes().length},ty=e=>{const r=new Be({tree:[]}),t=e.getAllNodes()[0],n=e.getAllNodes().length;r.addNode(t);let i,s;for(;ry(r,e)<n;)i=cf(r,e),s=r.hasNode(i.source)?Ot(e,i):-Ot(e,i),ff(r,e,s);return r},ry=(e,r)=>{const t=n=>{var i;(i=r.getRelatedEdges(n,"both"))===null||i===void 0||i.forEach(s=>{const a=s.source,o=n===a?s.target:a;!e.hasNode(o)&&(r.getNode(o).data.layer!==void 0||!Ot(r,s))&&(e.addNode({id:o,data:{}}),e.addEdge({id:s.id,source:n,target:o,data:{}}),t(o))})};return e.getAllNodes().forEach(n=>t(n.id)),e.getAllNodes().length},cf=(e,r)=>wn(r.getAllEdges(),t=>e.hasNode(t.source)!==e.hasNode(t.target)?Ot(r,t):1/0),ff=(e,r,t)=>{e.getAllNodes().forEach(n=>{const i=r.getNode(n.id);i.data.rank||(i.data.rank=0),i.data.rank+=t})},ny=e=>{const r=rm(e);uf(r);const t=Hm(r);hf(t),lf(t,r);let n,i;for(;n=oy(t);)i=ay(t,r,n),uy(t,r,n,i)},lf=(e,r)=>{let t=Kc(e,e.getAllNodes(),"post");t=t.slice(0,(t==null?void 0:t.length)-1),t.forEach(n=>{iy(e,r,n)})},iy=(e,r,t)=>{const i=e.getNode(t).data.parent,s=e.getRelatedEdges(t,"both").find(a=>a.target===i||a.source===i);s.data.cutvalue=sy(e,r,t)},sy=(e,r,t)=>{const i=e.getNode(t).data.parent;let s=!0,a=r.getRelatedEdges(t,"out").find(c=>c.target===i),o=0;return a||(s=!1,a=r.getRelatedEdges(i,"out").find(c=>c.target===t)),o=a.data.weight,r.getRelatedEdges(t,"both").forEach(c=>{const f=c.source===t,l=f?c.target:c.source;if(l!==i){const p=f===s,m=c.data.weight;if(o+=p?m:-m,fy(e,t,l)){const y=e.getRelatedEdges(t,"both").find(x=>x.source===l||x.target===l).data.cutvalue;o+=p?-y:y}}}),o},hf=(e,r=e.getAllNodes()[0].id)=>{df(e,{},1,r)},df=(e,r,t,n,i)=>{var s;const a=t;let o=t;const c=e.getNode(n);return r[n]=!0,(s=e.getNeighbors(n))===null||s===void 0||s.forEach(f=>{r[f.id]||(o=df(e,r,o,f.id,n))}),c.data.low=a,c.data.lim=o++,i?c.data.parent=i:delete c.data.parent,o},oy=e=>e.getAllEdges().find(r=>r.data.cutvalue<0),ay=(e,r,t)=>{let n=t.source,i=t.target;r.getRelatedEdges(n,"out").find(l=>l.target===i)||(n=t.target,i=t.source);const s=e.getNode(n),a=e.getNode(i);let o=s,c=!1;s.data.lim>a.data.lim&&(o=a,c=!0);const f=r.getAllEdges().filter(l=>c===gf(e.getNode(l.source),o)&&c!==gf(e.getNode(l.target),o));return wn(f,l=>Ot(r,l))},uy=(e,r,t,n)=>{const i=e.getRelatedEdges(t.source,"both").find(s=>s.source===t.target||s.target===t.target);i&&e.removeEdge(i.id),e.addEdge({id:`e${Math.random()}`,source:n.source,target:n.target,data:{}}),hf(e),lf(e,r),cy(e,r)},cy=(e,r)=>{const t=e.getAllNodes().find(i=>!i.data.parent);let n=Kc(e,t,"pre");n=n.slice(1),n.forEach(i=>{const s=e.getNode(i).data.parent;let a=r.getRelatedEdges(i,"out").find(c=>c.target===s),o=!1;!a&&r.hasNode(s)&&(a=r.getRelatedEdges(s,"out").find(c=>c.target===i),o=!0),r.getNode(i).data.rank=(r.hasNode(s)&&r.getNode(s).data.rank||0)+(o?a==null?void 0:a.data.minlen:-(a==null?void 0:a.data.minlen))})},fy=(e,r,t)=>e.getRelatedEdges(r,"both").find(n=>n.source===t||n.target===t),gf=(e,r)=>r.data.low<=e.data.lim&&e.data.lim<=r.data.lim,ly=(e,r)=>{switch(r){case"network-simplex":dy(e);break;case"tight-tree":pf(e);break;case"longest-path":hy(e);break;default:pf(e)}},hy=uf,pf=e=>{Qm(e),ty(e)},dy=e=>{ny(e)},gy=(e,r)=>{const{edgeLabelSpace:t,keepNodeOrder:n,prevGraph:i,rankdir:s,ranksep:a}=r;!n&&i&&vy(e,i);const o=Ey(e);t&&(r.ranksep=xy(o,{rankdir:s,ranksep:a}));let c;try{c=py(o,r)}catch(f){if(f.message==="Not possible to find intersection inside of the rectangle"){console.error(`The following error may be caused by improper layer setting, please make sure your manual layer setting does not violate the graph's structure:
6
+ `,f);return}throw f}return my(e,o),c},py=(e,r)=>{const{ranker:t,rankdir:n="tb",nodeOrder:i,keepNodeOrder:s,align:a,nodesep:o=50,edgesep:c=20,ranksep:f=50}=r;Ty(e),H0(e);const{nestingRoot:l,nodeRankFactor:p}=hm(e);ly(Gc(e),t),Ny(e),sm(e,p),pm(e,l),im(e),My(e),Sy(e);const m=[];mm(e,m),Pm(e,m),am(e),s&&km(e,i),Tm(e,s),ky(e),um(e,n),Jm(e,{align:a,nodesep:o,edgesep:c,ranksep:f}),jy(e),Iy(e),wm(e,m),Oy(e),cm(e,n);const{width:y,height:x}=qy(e);return Ry(e),Ay(e),em(e),{width:y,height:x}},vy=(e,r)=>{e.getAllNodes().forEach(t=>{const n=e.getNode(t.id);if(r.hasNode(t.id)){const i=r.getNode(t.id);n.data.fixorder=i.data._order,delete i.data._order}else delete n.data.fixorder})},my=(e,r)=>{e.getAllNodes().forEach(t=>{var n;const i=e.getNode(t.id);if(i){const s=r.getNode(t.id);i.data.x=s.data.x,i.data.y=s.data.y,i.data._order=s.data.order,i.data._rank=s.data.rank,!((n=r.getChildren(t.id))===null||n===void 0)&&n.length&&(i.data.width=s.data.width,i.data.height=s.data.height)}}),e.getAllEdges().forEach(t=>{const n=e.getEdge(t.id),i=r.getEdge(t.id);n.data.points=i?i.data.points:[],i&&i.data.hasOwnProperty("x")&&(n.data.x=i.data.x,n.data.y=i.data.y)})},yy=["width","height","layer","fixorder"],wy={width:0,height:0},by=["minlen","weight","width","height","labeloffset"],_y={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},xn=["labelpos"],Ey=e=>{const r=new Be({tree:[]});return e.getAllNodes().forEach(t=>{const n=mf(e.getNode(t.id).data),i=Object.assign(Object.assign({},wy),n),s=vf(i,yy);r.hasNode(t.id)||r.addNode({id:t.id,data:Object.assign({},s)});const a=e.hasTreeStructure("combo")?e.getParent(t.id,"combo"):e.getParent(t.id);D0(a)||(r.hasNode(a.id)||r.addNode(Object.assign({},a)),r.setParent(t.id,a.id))}),e.getAllEdges().forEach(t=>{const n=mf(e.getEdge(t.id).data),i={};xn==null||xn.forEach(s=>{n[s]!==void 0&&(i[s]=n[s])}),r.addEdge({id:t.id,source:t.source,target:t.target,data:Object.assign({},_y,vf(n,by),i)})}),r},xy=(e,r)=>{const{ranksep:t=0,rankdir:n}=r;return e.getAllNodes().forEach(i=>{isNaN(i.data.layer)||i.data.layer||(i.data.layer=0)}),e.getAllEdges().forEach(i=>{var s;i.data.minlen*=2,((s=i.data.labelpos)===null||s===void 0?void 0:s.toLowerCase())!=="c"&&(n==="TB"||n==="BT"?i.data.width+=i.data.labeloffset:i.data.height+=i.data.labeloffset)}),t/2},Ny=e=>{e.getAllEdges().forEach(r=>{if(r.data.width&&r.data.height){const t=e.getNode(r.source),n=e.getNode(r.target),i={e:r,rank:(n.data.rank-t.data.rank)/2+t.data.rank};Vt(e,"edge-proxy",i,"_ep")}})},My=e=>{let r=0;return e.getAllNodes().forEach(t=>{var n,i;t.data.borderTop&&(t.data.minRank=(n=e.getNode(t.data.borderTop))===null||n===void 0?void 0:n.data.rank,t.data.maxRank=(i=e.getNode(t.data.borderBottom))===null||i===void 0?void 0:i.data.rank,r=Math.max(r,t.data.maxRank||-1/0))}),r},Sy=e=>{e.getAllNodes().forEach(r=>{r.data.dummy==="edge-proxy"&&(e.getEdge(r.data.e.id).data.labelRank=r.data.rank,e.removeNode(r.id))})},qy=(e,r)=>{let t,n=0,i,s=0;const{marginx:a=0,marginy:o=0}={},c=f=>{if(!f.data)return;const l=f.data.x,p=f.data.y,m=f.data.width,y=f.data.height;!isNaN(l)&&!isNaN(m)&&(t===void 0&&(t=l-m/2),t=Math.min(t,l-m/2),n=Math.max(n,l+m/2)),!isNaN(p)&&!isNaN(y)&&(i===void 0&&(i=p-y/2),i=Math.min(i,p-y/2),s=Math.max(s,p+y/2))};return e.getAllNodes().forEach(f=>{c(f)}),e.getAllEdges().forEach(f=>{f!=null&&f.data.hasOwnProperty("x")&&c(f)}),t-=a,i-=o,e.getAllNodes().forEach(f=>{f.data.x-=t,f.data.y-=i}),e.getAllEdges().forEach(f=>{var l;(l=f.data.points)===null||l===void 0||l.forEach(p=>{p.x-=t,p.y-=i}),f.data.hasOwnProperty("x")&&(f.data.x-=t),f.data.hasOwnProperty("y")&&(f.data.y-=i)}),{width:n-t+a,height:s-i+o}},Ry=e=>{e.getAllEdges().forEach(r=>{const t=e.getNode(r.source),n=e.getNode(r.target);let i,s;r.data.points?(i=r.data.points[0],s=r.data.points[r.data.points.length-1]):(r.data.points=[],i={x:n.data.x,y:n.data.y},s={x:t.data.x,y:t.data.y}),r.data.points.unshift(Uc(t.data,i)),r.data.points.push(Uc(n.data,s))})},Oy=e=>{e.getAllEdges().forEach(r=>{if(r.data.hasOwnProperty("x"))switch((r.data.labelpos==="l"||r.data.labelpos==="r")&&(r.data.width-=r.data.labeloffset),r.data.labelpos){case"l":r.data.x-=r.data.width/2+r.data.labeloffset;break;case"r":r.data.x+=r.data.width/2+r.data.labeloffset;break}})},Ay=e=>{e.getAllEdges().forEach(r=>{var t;r.data.reversed&&((t=r.data.points)===null||t===void 0||t.reverse())})},Iy=e=>{e.getAllNodes().forEach(r=>{var t,n,i;if(!((t=e.getChildren(r.id))===null||t===void 0)&&t.length){const s=e.getNode(r.id),a=e.getNode(s.data.borderTop),o=e.getNode(s.data.borderBottom),c=e.getNode(s.data.borderLeft[((n=s.data.borderLeft)===null||n===void 0?void 0:n.length)-1]),f=e.getNode(s.data.borderRight[((i=s.data.borderRight)===null||i===void 0?void 0:i.length)-1]);s.data.width=Math.abs((f==null?void 0:f.data.x)-(c==null?void 0:c.data.x))||10,s.data.height=Math.abs((o==null?void 0:o.data.y)-(a==null?void 0:a.data.y))||10,s.data.x=((c==null?void 0:c.data.x)||0)+s.data.width/2,s.data.y=((a==null?void 0:a.data.y)||0)+s.data.height/2}}),e.getAllNodes().forEach(r=>{r.data.dummy==="border"&&e.removeNode(r.id)})},Ty=e=>{e.getAllEdges().forEach(r=>{if(r.source===r.target){const t=e.getNode(r.source);t.data.selfEdges||(t.data.selfEdges=[]),t.data.selfEdges.push(r),e.removeEdge(r.id)}})},ky=e=>{const r=ir(e);r==null||r.forEach(t=>{let n=0;t==null||t.forEach((i,s)=>{var a;const o=e.getNode(i);o.data.order=s+n,(a=o.data.selfEdges)===null||a===void 0||a.forEach(c=>{Vt(e,"selfedge",{width:c.data.width,height:c.data.height,rank:o.data.rank,order:s+ ++n,e:c},"_se")}),delete o.data.selfEdges})})},jy=e=>{e.getAllNodes().forEach(r=>{const t=e.getNode(r.id);if(t.data.dummy==="selfedge"){const n=e.getNode(t.data.e.source),i=n.data.x+n.data.width/2,s=n.data.y,a=t.data.x-i,o=n.data.height/2;e.hasEdge(t.data.e.id)?e.updateEdgeData(t.data.e.id,t.data.e.data):e.addEdge({id:t.data.e.id,source:t.data.e.source,target:t.data.e.target,data:t.data.e.data}),e.removeNode(r.id),t.data.e.data.points=[{x:i+2*a/3,y:s-o},{x:i+5*a/6,y:s-o},{y:s,x:i+a},{x:i+5*a/6,y:s+o},{x:i+2*a/3,y:s+o}],t.data.e.data.x=t.data.x,t.data.e.data.y=t.data.y}})},vf=(e,r)=>{const t={};return r==null||r.forEach(n=>{e[n]!==void 0&&(t[n]=+e[n])}),t},mf=(e={})=>{const r={};return Object.keys(e).forEach(t=>{r[t.toLowerCase()]=e[t]}),r},bt=Array.isArray,yf=e=>{const r=[],t=e.length;for(let n=0;n<t;n+=1){r[n]=[];for(let i=0;i<t;i+=1)n===i?r[n][i]=0:e[n][i]===0||!e[n][i]?r[n][i]=1/0:r[n][i]=e[n][i]}for(let n=0;n<t;n+=1)for(let i=0;i<t;i+=1)for(let s=0;s<t;s+=1)r[i][s]>r[i][n]+r[n][s]&&(r[i][s]=r[i][n]+r[n][s]);return r},wf=(e,r)=>{const{nodes:t,edges:n}=e,i=[],s={};if(!t)throw new Error("invalid nodes data!");return t&&t.forEach((a,o)=>{s[a.id]=o;const c=[];i.push(c)}),n==null||n.forEach(a=>{const{source:o,target:c}=a,f=s[o],l=s[c];f===void 0||l===void 0||(i[f][l]=1,i[l][f]=1)}),i},Cy=(e,r)=>{const t=[];return e.forEach(n=>{const i=[];n.forEach(s=>{i.push(s*r)}),t.push(i)}),t},Py=e=>{let r=1/0,t=1/0,n=-1/0,i=-1/0;return e.forEach(s=>{let a=s.data.size;bt(a)?a.length===1&&(a=[a[0],a[0]]):me(a)?a=[a,a]:(a===void 0||isNaN(a))&&(a=[30,30]);const o=[a[0]/2,a[1]/2],c=s.data.x-o[0],f=s.data.x+o[0],l=s.data.y-o[1],p=s.data.y+o[1];r>c&&(r=c),t>l&&(t=l),n<f&&(n=f),i<p&&(i=p)}),{minX:r,minY:t,maxX:n,maxY:i}},bf=(e,r)=>Math.sqrt((e.x-r.x)*(e.x-r.x)+(e.y-r.y)*(e.y-r.y)),Nn=(e,r,t,n="TB",i,s={})=>{if(!(r!=null&&r.length))return;const{stopBranchFn:a,stopAllFn:o}=s;for(let c=0;c<r.length;c++){const f=r[c];if(e.hasNode(f.id)&&!(a!=null&&a(f))){if(o!=null&&o(f))return;n==="TB"&&t(f),Nn(e,e.getChildren(f.id,i),t,n,i,s),n!=="TB"&&t(f)}}},Mn=e=>{if(e===null)return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof Array){const r=[];return e.forEach(t=>{r.push(t)}),r.map(t=>Mn(t))}if(typeof e=="object"){const r={};return Object.keys(e).forEach(t=>{r[t]=Mn(e[t])}),r}return e},it=(e,r)=>{const t=Mn(e);return t.data=t.data||{},r&&(me(t.data.x)||(t.data.x=Math.random()*r[0]),me(t.data.y)||(t.data.y=Math.random()*r[1])),t};function sr(e){if(!e)return[0,0,0];if(me(e))return[e,e,e];if(e.length===0)return[0,0,0];const[r,t=r,n=r]=e;return[r,t,n]}function Ct(e,r){let t;return wt(r)?t=r:me(r)?t=()=>r:t=()=>e,t}function Sn(e,r,t=!0){return!r&&r!==0?n=>{const{size:i}=n.data||{};return i?Array.isArray(i)?t?Math.max(...i)||e:i:Ut(i)&&i.width&&i.height?t?Math.max(i.width,i.height)||e:[i.width,i.height]:i:e}:wt(r)?r:me(r)?()=>r:Array.isArray(r)?()=>t?Math.max(...r)||e:r:Ut(r)&&r.width&&r.height?()=>t?Math.max(r.width,r.height)||e:[r.width,r.height]:()=>e}const qn=(e,r,t=10)=>{let n;const i=typeof r=="function"?r:()=>r||0;return e?Array.isArray(e)?n=a=>e:wt(e)?n=e:n=a=>e:n=a=>{var o,c,f;if(!((o=a.data)===null||o===void 0)&&o.bboxSize)return(c=a.data)===null||c===void 0?void 0:c.bboxSize;if(!((f=a.data)===null||f===void 0)&&f.size){const l=a.data.size;return Array.isArray(l)?l:Ut(l)?[l.width,l.height]:l}return t},a=>{const o=n(a),c=i(a);return Math.max(...sr(o))+c}},Ly={rankdir:"TB",nodesep:50,ranksep:50,edgeLabelSpace:!0,ranker:"tight-tree",controlPoints:!1,radial:!1,focusNode:null};class Dy{constructor(r={}){this.options=r,this.id="antv-dagre",this.options=Object.assign(Object.assign({},Ly),r)}execute(r,t){return fe(this,void 0,void 0,function*(){return this.genericDagreLayout(!1,r,t)})}assign(r,t){return fe(this,void 0,void 0,function*(){yield this.genericDagreLayout(!0,r,t)})}genericDagreLayout(r,t,n){return fe(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{nodeSize:s,align:a,rankdir:o="TB",ranksep:c,nodesep:f,ranksepFunc:l,nodesepFunc:p,edgeLabelSpace:m,ranker:y,nodeOrder:x,begin:_,controlPoints:b,radial:w,sortByCombo:E,preset:N}=i,S=new Be({tree:[]}),R=Ct(c||50,l),A=Ct(f||50,p);let j=A,I=R;(o==="LR"||o==="RL")&&(j=R,I=A);const D=Sn(10,s,!1),z=t.getAllNodes(),$=t.getAllEdges();z.forEach(Z=>{const ue=sr(D(Z)),pe=I(Z),he=j(Z),ie=ue[0]+2*he,_e=ue[1]+2*pe,G=Z.data.layer;me(G)?S.addNode({id:Z.id,data:{width:ie,height:_e,layer:G}}):S.addNode({id:Z.id,data:{width:ie,height:_e}})}),E&&(S.attachTreeStructure("combo"),z.forEach(Z=>{const{parentId:ue}=Z.data;ue!==void 0&&S.hasNode(ue)&&S.setParent(Z.id,ue,"combo")})),$.forEach(Z=>{S.addEdge({id:Z.id,source:Z.source,target:Z.target,data:{weight:Z.data.weight||1}})});let V;N!=null&&N.length&&(V=new Be({nodes:N})),gy(S,{prevGraph:V,edgeLabelSpace:m,keepNodeOrder:!!x,nodeOrder:x||[],acyclicer:"greedy",ranker:y,rankdir:o,nodesep:f,align:a});const Y=[0,0];if(_){let Z=1/0,ue=1/0;S.getAllNodes().forEach(pe=>{Z>pe.data.x&&(Z=pe.data.x),ue>pe.data.y&&(ue=pe.data.y)}),S.getAllEdges().forEach(pe=>{var he;(he=pe.data.points)===null||he===void 0||he.forEach(ie=>{Z>ie.x&&(Z=ie.x),ue>ie.y&&(ue=ie.y)})}),Y[0]=_[0]-Z,Y[1]=_[1]-ue}const ee=o==="LR"||o==="RL";if(!w){const Z=new Set,pe=o==="BT"||o==="RL"?(G,P)=>P-G:(G,P)=>G-P;S.getAllNodes().forEach(G=>{G.data.x=G.data.x+Y[0],G.data.y=G.data.y+Y[1],Z.add(ee?G.data.x:G.data.y)});const he=Array.from(Z).sort(pe),ie=ee?(G,P)=>G.x!==P.x:(G,P)=>G.y!==P.y,_e=ee?(G,P,X)=>{const te=Math.max(P.y,X.y),le=Math.min(P.y,X.y);return G.filter(xe=>xe.y<=te&&xe.y>=le)}:(G,P,X)=>{const te=Math.max(P.x,X.x),le=Math.min(P.x,X.x);return G.filter(xe=>xe.x<=te&&xe.x>=le)};S.getAllEdges().forEach((G,P)=>{var X;m&&b&&G.data.type!=="loop"&&(G.data.controlPoints=zy((X=G.data.points)===null||X===void 0?void 0:X.map(({x:te,y:le})=>({x:te+Y[0],y:le+Y[1]})),S.getNode(G.source),S.getNode(G.target),he,ee,ie,_e))})}let J=[];J=S.getAllNodes().map(Z=>it(Z));const ae=S.getAllEdges();return r&&(J.forEach(Z=>{t.mergeNodeData(Z.id,{x:Z.data.x,y:Z.data.y})}),ae.forEach(Z=>{t.mergeEdgeData(Z.id,{controlPoints:Z.data.controlPoints})})),{nodes:J,edges:ae}})}}const zy=(e,r,t,n,i,s,a)=>{let o=(e==null?void 0:e.slice(1,e.length-1))||[];if(r&&t){let{x:c,y:f}=r.data,{x:l,y:p}=t.data;if(i&&(c=r.data.y,f=r.data.x,l=t.data.y,p=t.data.x),p!==f&&c!==l){const m=n.indexOf(f),y=n[m+1];if(y){const b=o[0],w=i?{x:(f+y)/2,y:(b==null?void 0:b.y)||l}:{x:(b==null?void 0:b.x)||l,y:(f+y)/2};(!b||s(b,w))&&o.unshift(w)}const x=n.indexOf(p),_=Math.abs(x-m);if(_===1)o=a(o,r.data,t.data),o.length||o.push(i?{x:(f+p)/2,y:c}:{x:c,y:(f+p)/2});else if(_>1){const b=n[x-1];if(b){const w=o[o.length-1],E=i?{x:(p+b)/2,y:(w==null?void 0:w.y)||l}:{x:(w==null?void 0:w.x)||c,y:(p+b)/2};(!w||s(w,E))&&o.push(E)}}}}return o},Pt=(e,r,t)=>{const n=e.getAllNodes(),i=e.getAllEdges();if(!(n!=null&&n.length))return{nodes:[],edges:i};if(n.length===1)return r&&e.mergeNodeData(n[0].id,{x:t[0],y:t[1]}),{nodes:[Object.assign(Object.assign({},n[0]),{data:Object.assign(Object.assign({},n[0].data),{x:t[0],y:t[1]})})],edges:i}},Fy={radius:null,startRadius:null,endRadius:null,startAngle:0,endAngle:2*Math.PI,clockwise:!0,divisions:1,ordering:null,angleRatio:1};class By{constructor(r={}){this.options=r,this.id="circular",this.options=Object.assign(Object.assign({},Fy),r)}execute(r,t){return fe(this,void 0,void 0,function*(){return this.genericCircularLayout(!1,r,t)})}assign(r,t){return fe(this,void 0,void 0,function*(){yield this.genericCircularLayout(!0,r,t)})}genericCircularLayout(r,t,n){return fe(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{width:s,height:a,center:o,divisions:c,startAngle:f=0,endAngle:l=2*Math.PI,angleRatio:p,ordering:m,clockwise:y,nodeSpacing:x,nodeSize:_}=i,b=t.getAllNodes(),w=t.getAllEdges(),[E,N,S]=Gy(s,a,o),R=b==null?void 0:b.length;if(!R||R===1)return Pt(t,r,S);const A=(l-f)/R;let{radius:j,startRadius:I,endRadius:D}=i;if(x){const ee=Ct(10,x),J=Sn(10,_);let ae=-1/0;b.forEach(Z=>{const ue=J(Z);ae<ue&&(ae=ue)});let be=0;b.forEach((Z,ue)=>{ue===0?be+=ae||10:be+=(ee(Z)||0)+(ae||10)}),j=be/(2*Math.PI)}else!j&&!I&&!D?j=Math.min(N,E)/2:!I&&D?I=D:I&&!D&&(D=I);const z=A*p;let $=[];m==="topology"?$=_f(t,b):m==="topology-directed"?$=_f(t,b,!0):m==="degree"?$=$y(t,b):$=b.map(ee=>it(ee));const V=Math.ceil(R/c);for(let ee=0;ee<R;++ee){let J=j;!J&&I!==null&&D!==null&&(J=I+ee*(D-I)/(R-1)),J||(J=10+ee*100/(R-1));let ae=f+ee%V*z+2*Math.PI/c*Math.floor(ee/V);y||(ae=l-ee%V*z-2*Math.PI/c*Math.floor(ee/V)),$[ee].data.x=S[0]+Math.cos(ae)*J,$[ee].data.y=S[1]+Math.sin(ae)*J}return r&&$.forEach(ee=>{t.mergeNodeData(ee.id,{x:ee.data.x,y:ee.data.y})}),{nodes:$,edges:w}})}}const _f=(e,r,t=!1)=>{const n=[it(r[0])],i={},s=r.length;i[r[0].id]=!0;let a=0;return r.forEach((o,c)=>{if(c!==0)if((c===s-1||e.getDegree(o.id,"both")!==e.getDegree(r[c+1].id,"both")||e.areNeighbors(n[a].id,o.id))&&!i[o.id])n.push(it(o)),i[o.id]=!0,a++;else{const f=t?e.getSuccessors(n[a].id):e.getNeighbors(n[a].id);let l=!1;for(let m=0;m<f.length;m++){const y=f[m];if(e.getDegree(y.id)===e.getDegree(o.id)&&!i[y.id]){n.push(it(y)),i[y.id]=!0,l=!0;break}}let p=0;for(;!l&&(i[r[p].id]||(n.push(it(r[p])),i[r[p].id]=!0,l=!0),p++,p!==s););}}),n};function $y(e,r){const t=[];return r.forEach((n,i)=>{t.push(it(n))}),t.sort((n,i)=>e.getDegree(n.id,"both")-e.getDegree(i.id,"both")),t}const Gy=(e,r,t)=>{let n=e,i=r,s=t;return!n&&typeof window<"u"&&(n=window.innerWidth),!i&&typeof window<"u"&&(i=window.innerHeight),s||(s=[n/2,i/2]),[n,i,s]},Uy={nodeSize:30,nodeSpacing:10,preventOverlap:!1,sweep:void 0,equidistant:!1,startAngle:3/2*Math.PI,clockwise:!0,maxLevelDiff:void 0,sortBy:"degree"};class Rn{constructor(r={}){this.options=r,this.id="concentric",this.options=Object.assign(Object.assign({},Uy),r)}execute(r,t){return fe(this,void 0,void 0,function*(){return this.genericConcentricLayout(!1,r,t)})}assign(r,t){return fe(this,void 0,void 0,function*(){yield this.genericConcentricLayout(!0,r,t)})}genericConcentricLayout(r,t,n){return fe(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{center:s,width:a,height:o,sortBy:c,maxLevelDiff:f,sweep:l,clockwise:p,equidistant:m,preventOverlap:y,startAngle:x=3/2*Math.PI,nodeSize:_,nodeSpacing:b}=i,w=t.getAllNodes(),E=t.getAllEdges(),N=!a&&typeof window<"u"?window.innerWidth:a,S=!o&&typeof window<"u"?window.innerHeight:o,R=s||[N/2,S/2];if(!(w!=null&&w.length)||w.length===1)return Pt(t,r,R);const A=[];let j,I=0;bt(_)?j=Math.max(_[0],_[1]):wt(_)?(j=-1/0,w.forEach(Z=>{const ue=Math.max(...sr(_(Z)));ue>j&&(j=ue)})):j=_,bt(b)?I=Math.max(b[0],b[1]):me(b)&&(I=b),w.forEach(Z=>{const ue=it(Z);A.push(ue);let pe=j;const{data:he}=ue;bt(he.size)?pe=Math.max(he.size[0],he.size[1]):me(he.size)?pe=he.size:Ut(he.size)&&(pe=Math.max(he.size.width,he.size.height)),j=Math.max(j,pe),wt(b)&&(I=Math.max(b(Z),I))});const D={};A.forEach((Z,ue)=>{D[Z.id]=ue});let z=c;(!nr(z)||A[0].data[z]===void 0)&&(z="degree"),z==="degree"?A.sort((Z,ue)=>t.getDegree(ue.id,"both")-t.getDegree(Z.id,"both")):A.sort((Z,ue)=>ue.data[z]-Z.data[z]);const $=A[0],V=(f||(z==="degree"?t.getDegree($.id,"both"):$.data[z]))/4,Y=[{nodes:[]}];let ee=Y[0];A.forEach(Z=>{if(ee.nodes.length>0){const ue=Math.abs(z==="degree"?t.getDegree(ee.nodes[0].id,"both")-t.getDegree(Z.id,"both"):ee.nodes[0].data[z]-Z.data[z]);V&&ue>=V&&(ee={nodes:[]},Y.push(ee))}ee.nodes.push(Z)});let J=j+I;if(!y){const Z=Y.length>0&&Y[0].nodes.length>1,pe=(Math.min(N,S)/2-J)/(Y.length+(Z?1:0));J=Math.min(J,pe)}let ae=0;if(Y.forEach(Z=>{const ue=l===void 0?2*Math.PI-2*Math.PI/Z.nodes.length:l;if(Z.dTheta=ue/Math.max(1,Z.nodes.length-1),Z.nodes.length>1&&y){const pe=Math.cos(Z.dTheta)-Math.cos(0),he=Math.sin(Z.dTheta)-Math.sin(0),ie=Math.sqrt(J*J/(pe*pe+he*he));ae=Math.max(ie,ae)}Z.r=ae,ae+=J}),m){let Z=0,ue=0;for(let pe=0;pe<Y.length;pe++){const ie=(Y[pe].r||0)-ue;Z=Math.max(Z,ie)}ue=0,Y.forEach((pe,he)=>{he===0&&(ue=pe.r||0),pe.r=ue,ue+=Z})}return Y.forEach(Z=>{const ue=Z.dTheta||0,pe=Z.r||0;Z.nodes.forEach((he,ie)=>{const _e=x+(p?1:-1)*ue*ie;he.data.x=R[0]+pe*Math.cos(_e),he.data.y=R[1]+pe*Math.sin(_e)})}),r&&A.forEach(Z=>t.mergeNodeData(Z.id,{x:Z.data.x,y:Z.data.y})),{nodes:A,edges:E}})}}function Vy(e){const r=+this._x.call(null,e),t=+this._y.call(null,e);return Ef(this.cover(r,t),r,t,e)}function Ef(e,r,t,n){if(isNaN(r)||isNaN(t))return e;var i,s=e._root,a={data:n},o=e._x0,c=e._y0,f=e._x1,l=e._y1,p,m,y,x,_,b,w,E;if(!s)return e._root=a,e;for(;s.length;)if((_=r>=(p=(o+f)/2))?o=p:f=p,(b=t>=(m=(c+l)/2))?c=m:l=m,i=s,!(s=s[w=b<<1|_]))return i[w]=a,e;if(y=+e._x.call(null,s.data),x=+e._y.call(null,s.data),r===y&&t===x)return a.next=s,i?i[w]=a:e._root=a,e;do i=i?i[w]=new Array(4):e._root=new Array(4),(_=r>=(p=(o+f)/2))?o=p:f=p,(b=t>=(m=(c+l)/2))?c=m:l=m;while((w=b<<1|_)===(E=(x>=m)<<1|y>=p));return i[E]=s,i[w]=a,e}function Wy(e){var r,t,n=e.length,i,s,a=new Array(n),o=new Array(n),c=1/0,f=1/0,l=-1/0,p=-1/0;for(t=0;t<n;++t)isNaN(i=+this._x.call(null,r=e[t]))||isNaN(s=+this._y.call(null,r))||(a[t]=i,o[t]=s,i<c&&(c=i),i>l&&(l=i),s<f&&(f=s),s>p&&(p=s));if(c>l||f>p)return this;for(this.cover(c,f).cover(l,p),t=0;t<n;++t)Ef(this,a[t],o[t],e[t]);return this}function Yy(e,r){if(isNaN(e=+e)||isNaN(r=+r))return this;var t=this._x0,n=this._y0,i=this._x1,s=this._y1;if(isNaN(t))i=(t=Math.floor(e))+1,s=(n=Math.floor(r))+1;else{for(var a=i-t||1,o=this._root,c,f;t>e||e>=i||n>r||r>=s;)switch(f=(r<n)<<1|e<t,c=new Array(4),c[f]=o,o=c,a*=2,f){case 0:i=t+a,s=n+a;break;case 1:t=i-a,s=n+a;break;case 2:i=t+a,n=s-a;break;case 3:t=i-a,n=s-a;break}this._root&&this._root.length&&(this._root=o)}return this._x0=t,this._y0=n,this._x1=i,this._y1=s,this}function Ky(){var e=[];return this.visit(function(r){if(!r.length)do e.push(r.data);while(r=r.next)}),e}function Xy(e){return arguments.length?this.cover(+e[0][0],+e[0][1]).cover(+e[1][0],+e[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function et(e,r,t,n,i){this.node=e,this.x0=r,this.y0=t,this.x1=n,this.y1=i}function Zy(e,r,t){var n,i=this._x0,s=this._y0,a,o,c,f,l=this._x1,p=this._y1,m=[],y=this._root,x,_;for(y&&m.push(new et(y,i,s,l,p)),t==null?t=1/0:(i=e-t,s=r-t,l=e+t,p=r+t,t*=t);x=m.pop();)if(!(!(y=x.node)||(a=x.x0)>l||(o=x.y0)>p||(c=x.x1)<i||(f=x.y1)<s))if(y.length){var b=(a+c)/2,w=(o+f)/2;m.push(new et(y[3],b,w,c,f),new et(y[2],a,w,b,f),new et(y[1],b,o,c,w),new et(y[0],a,o,b,w)),(_=(r>=w)<<1|e>=b)&&(x=m[m.length-1],m[m.length-1]=m[m.length-1-_],m[m.length-1-_]=x)}else{var E=e-+this._x.call(null,y.data),N=r-+this._y.call(null,y.data),S=E*E+N*N;if(S<t){var R=Math.sqrt(t=S);i=e-R,s=r-R,l=e+R,p=r+R,n=y.data}}return n}function Jy(e){if(isNaN(l=+this._x.call(null,e))||isNaN(p=+this._y.call(null,e)))return this;var r,t=this._root,n,i,s,a=this._x0,o=this._y0,c=this._x1,f=this._y1,l,p,m,y,x,_,b,w;if(!t)return this;if(t.length)for(;;){if((x=l>=(m=(a+c)/2))?a=m:c=m,(_=p>=(y=(o+f)/2))?o=y:f=y,r=t,!(t=t[b=_<<1|x]))return this;if(!t.length)break;(r[b+1&3]||r[b+2&3]||r[b+3&3])&&(n=r,w=b)}for(;t.data!==e;)if(i=t,!(t=t.next))return this;return(s=t.next)&&delete t.next,i?(s?i.next=s:delete i.next,this):r?(s?r[b]=s:delete r[b],(t=r[0]||r[1]||r[2]||r[3])&&t===(r[3]||r[2]||r[1]||r[0])&&!t.length&&(n?n[w]=t:this._root=t),this):(this._root=s,this)}function Qy(e){for(var r=0,t=e.length;r<t;++r)this.remove(e[r]);return this}function Hy(){return this._root}function ew(){var e=0;return this.visit(function(r){if(!r.length)do++e;while(r=r.next)}),e}function tw(e){var r=[],t,n=this._root,i,s,a,o,c;for(n&&r.push(new et(n,this._x0,this._y0,this._x1,this._y1));t=r.pop();)if(!e(n=t.node,s=t.x0,a=t.y0,o=t.x1,c=t.y1)&&n.length){var f=(s+o)/2,l=(a+c)/2;(i=n[3])&&r.push(new et(i,f,l,o,c)),(i=n[2])&&r.push(new et(i,s,l,f,c)),(i=n[1])&&r.push(new et(i,f,a,o,l)),(i=n[0])&&r.push(new et(i,s,a,f,l))}return this}function rw(e){var r=[],t=[],n;for(this._root&&r.push(new et(this._root,this._x0,this._y0,this._x1,this._y1));n=r.pop();){var i=n.node;if(i.length){var s,a=n.x0,o=n.y0,c=n.x1,f=n.y1,l=(a+c)/2,p=(o+f)/2;(s=i[0])&&r.push(new et(s,a,o,l,p)),(s=i[1])&&r.push(new et(s,l,o,c,p)),(s=i[2])&&r.push(new et(s,a,p,l,f)),(s=i[3])&&r.push(new et(s,l,p,c,f))}t.push(n)}for(;n=t.pop();)e(n.node,n.x0,n.y0,n.x1,n.y1);return this}function nw(e){return e[0]}function iw(e){return arguments.length?(this._x=e,this):this._x}function sw(e){return e[1]}function ow(e){return arguments.length?(this._y=e,this):this._y}function Wt(e,r,t){var n=new On(r??nw,t??sw,NaN,NaN,NaN,NaN);return e==null?n:n.addAll(e)}function On(e,r,t,n,i,s){this._x=e,this._y=r,this._x0=t,this._y0=n,this._x1=i,this._y1=s,this._root=void 0}function xf(e){for(var r={data:e.data},t=r;e=e.next;)t=t.next={data:e.data};return r}var tt=Wt.prototype=On.prototype;tt.copy=function(){var e=new On(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root,t,n;if(!r)return e;if(!r.length)return e._root=xf(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=xf(n));return e},tt.add=Vy,tt.addAll=Wy,tt.cover=Yy,tt.data=Ky,tt.extent=Xy,tt.find=Zy,tt.remove=Jy,tt.removeAll=Qy,tt.root=Hy,tt.size=ew,tt.visit=tw,tt.visitAfter=rw,tt.x=iw,tt.y=ow;function aw(e){const r=+this._x.call(null,e),t=+this._y.call(null,e),n=+this._z.call(null,e);return Nf(this.cover(r,t,n),r,t,n,e)}function Nf(e,r,t,n,i){if(isNaN(r)||isNaN(t)||isNaN(n))return e;var s,a=e._root,o={data:i},c=e._x0,f=e._y0,l=e._z0,p=e._x1,m=e._y1,y=e._z1,x,_,b,w,E,N,S,R,A,j,I;if(!a)return e._root=o,e;for(;a.length;)if((S=r>=(x=(c+p)/2))?c=x:p=x,(R=t>=(_=(f+m)/2))?f=_:m=_,(A=n>=(b=(l+y)/2))?l=b:y=b,s=a,!(a=a[j=A<<2|R<<1|S]))return s[j]=o,e;if(w=+e._x.call(null,a.data),E=+e._y.call(null,a.data),N=+e._z.call(null,a.data),r===w&&t===E&&n===N)return o.next=a,s?s[j]=o:e._root=o,e;do s=s?s[j]=new Array(8):e._root=new Array(8),(S=r>=(x=(c+p)/2))?c=x:p=x,(R=t>=(_=(f+m)/2))?f=_:m=_,(A=n>=(b=(l+y)/2))?l=b:y=b;while((j=A<<2|R<<1|S)===(I=(N>=b)<<2|(E>=_)<<1|w>=x));return s[I]=a,s[j]=o,e}function uw(e){Array.isArray(e)||(e=Array.from(e));const r=e.length,t=new Float64Array(r),n=new Float64Array(r),i=new Float64Array(r);let s=1/0,a=1/0,o=1/0,c=-1/0,f=-1/0,l=-1/0;for(let p=0,m,y,x,_;p<r;++p)isNaN(y=+this._x.call(null,m=e[p]))||isNaN(x=+this._y.call(null,m))||isNaN(_=+this._z.call(null,m))||(t[p]=y,n[p]=x,i[p]=_,y<s&&(s=y),y>c&&(c=y),x<a&&(a=x),x>f&&(f=x),_<o&&(o=_),_>l&&(l=_));if(s>c||a>f||o>l)return this;this.cover(s,a,o).cover(c,f,l);for(let p=0;p<r;++p)Nf(this,t[p],n[p],i[p],e[p]);return this}function cw(e,r,t){if(isNaN(e=+e)||isNaN(r=+r)||isNaN(t=+t))return this;var n=this._x0,i=this._y0,s=this._z0,a=this._x1,o=this._y1,c=this._z1;if(isNaN(n))a=(n=Math.floor(e))+1,o=(i=Math.floor(r))+1,c=(s=Math.floor(t))+1;else{for(var f=a-n||1,l=this._root,p,m;n>e||e>=a||i>r||r>=o||s>t||t>=c;)switch(m=(t<s)<<2|(r<i)<<1|e<n,p=new Array(8),p[m]=l,l=p,f*=2,m){case 0:a=n+f,o=i+f,c=s+f;break;case 1:n=a-f,o=i+f,c=s+f;break;case 2:a=n+f,i=o-f,c=s+f;break;case 3:n=a-f,i=o-f,c=s+f;break;case 4:a=n+f,o=i+f,s=c-f;break;case 5:n=a-f,o=i+f,s=c-f;break;case 6:a=n+f,i=o-f,s=c-f;break;case 7:n=a-f,i=o-f,s=c-f;break}this._root&&this._root.length&&(this._root=l)}return this._x0=n,this._y0=i,this._z0=s,this._x1=a,this._y1=o,this._z1=c,this}function fw(){var e=[];return this.visit(function(r){if(!r.length)do e.push(r.data);while(r=r.next)}),e}function lw(e){return arguments.length?this.cover(+e[0][0],+e[0][1],+e[0][2]).cover(+e[1][0],+e[1][1],+e[1][2]):isNaN(this._x0)?void 0:[[this._x0,this._y0,this._z0],[this._x1,this._y1,this._z1]]}function qe(e,r,t,n,i,s,a){this.node=e,this.x0=r,this.y0=t,this.z0=n,this.x1=i,this.y1=s,this.z1=a}function hw(e,r,t,n){var i,s=this._x0,a=this._y0,o=this._z0,c,f,l,p,m,y,x=this._x1,_=this._y1,b=this._z1,w=[],E=this._root,N,S;for(E&&w.push(new qe(E,s,a,o,x,_,b)),n==null?n=1/0:(s=e-n,a=r-n,o=t-n,x=e+n,_=r+n,b=t+n,n*=n);N=w.pop();)if(!(!(E=N.node)||(c=N.x0)>x||(f=N.y0)>_||(l=N.z0)>b||(p=N.x1)<s||(m=N.y1)<a||(y=N.z1)<o))if(E.length){var R=(c+p)/2,A=(f+m)/2,j=(l+y)/2;w.push(new qe(E[7],R,A,j,p,m,y),new qe(E[6],c,A,j,R,m,y),new qe(E[5],R,f,j,p,A,y),new qe(E[4],c,f,j,R,A,y),new qe(E[3],R,A,l,p,m,j),new qe(E[2],c,A,l,R,m,j),new qe(E[1],R,f,l,p,A,j),new qe(E[0],c,f,l,R,A,j)),(S=(t>=j)<<2|(r>=A)<<1|e>=R)&&(N=w[w.length-1],w[w.length-1]=w[w.length-1-S],w[w.length-1-S]=N)}else{var I=e-+this._x.call(null,E.data),D=r-+this._y.call(null,E.data),z=t-+this._z.call(null,E.data),$=I*I+D*D+z*z;if($<n){var V=Math.sqrt(n=$);s=e-V,a=r-V,o=t-V,x=e+V,_=r+V,b=t+V,i=E.data}}return i}function dw(e){if(isNaN(m=+this._x.call(null,e))||isNaN(y=+this._y.call(null,e))||isNaN(x=+this._z.call(null,e)))return this;var r,t=this._root,n,i,s,a=this._x0,o=this._y0,c=this._z0,f=this._x1,l=this._y1,p=this._z1,m,y,x,_,b,w,E,N,S,R,A;if(!t)return this;if(t.length)for(;;){if((E=m>=(_=(a+f)/2))?a=_:f=_,(N=y>=(b=(o+l)/2))?o=b:l=b,(S=x>=(w=(c+p)/2))?c=w:p=w,r=t,!(t=t[R=S<<2|N<<1|E]))return this;if(!t.length)break;(r[R+1&7]||r[R+2&7]||r[R+3&7]||r[R+4&7]||r[R+5&7]||r[R+6&7]||r[R+7&7])&&(n=r,A=R)}for(;t.data!==e;)if(i=t,!(t=t.next))return this;return(s=t.next)&&delete t.next,i?(s?i.next=s:delete i.next,this):r?(s?r[R]=s:delete r[R],(t=r[0]||r[1]||r[2]||r[3]||r[4]||r[5]||r[6]||r[7])&&t===(r[7]||r[6]||r[5]||r[4]||r[3]||r[2]||r[1]||r[0])&&!t.length&&(n?n[A]=t:this._root=t),this):(this._root=s,this)}function gw(e){for(var r=0,t=e.length;r<t;++r)this.remove(e[r]);return this}function pw(){return this._root}function vw(){var e=0;return this.visit(function(r){if(!r.length)do++e;while(r=r.next)}),e}function mw(e){var r=[],t,n=this._root,i,s,a,o,c,f,l;for(n&&r.push(new qe(n,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1));t=r.pop();)if(!e(n=t.node,s=t.x0,a=t.y0,o=t.z0,c=t.x1,f=t.y1,l=t.z1)&&n.length){var p=(s+c)/2,m=(a+f)/2,y=(o+l)/2;(i=n[7])&&r.push(new qe(i,p,m,y,c,f,l)),(i=n[6])&&r.push(new qe(i,s,m,y,p,f,l)),(i=n[5])&&r.push(new qe(i,p,a,y,c,m,l)),(i=n[4])&&r.push(new qe(i,s,a,y,p,m,l)),(i=n[3])&&r.push(new qe(i,p,m,o,c,f,y)),(i=n[2])&&r.push(new qe(i,s,m,o,p,f,y)),(i=n[1])&&r.push(new qe(i,p,a,o,c,m,y)),(i=n[0])&&r.push(new qe(i,s,a,o,p,m,y))}return this}function yw(e){var r=[],t=[],n;for(this._root&&r.push(new qe(this._root,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1));n=r.pop();){var i=n.node;if(i.length){var s,a=n.x0,o=n.y0,c=n.z0,f=n.x1,l=n.y1,p=n.z1,m=(a+f)/2,y=(o+l)/2,x=(c+p)/2;(s=i[0])&&r.push(new qe(s,a,o,c,m,y,x)),(s=i[1])&&r.push(new qe(s,m,o,c,f,y,x)),(s=i[2])&&r.push(new qe(s,a,y,c,m,l,x)),(s=i[3])&&r.push(new qe(s,m,y,c,f,l,x)),(s=i[4])&&r.push(new qe(s,a,o,x,m,y,p)),(s=i[5])&&r.push(new qe(s,m,o,x,f,y,p)),(s=i[6])&&r.push(new qe(s,a,y,x,m,l,p)),(s=i[7])&&r.push(new qe(s,m,y,x,f,l,p))}t.push(n)}for(;n=t.pop();)e(n.node,n.x0,n.y0,n.z0,n.x1,n.y1,n.z1);return this}function ww(e){return e[0]}function bw(e){return arguments.length?(this._x=e,this):this._x}function _w(e){return e[1]}function Ew(e){return arguments.length?(this._y=e,this):this._y}function xw(e){return e[2]}function Nw(e){return arguments.length?(this._z=e,this):this._z}function Rr(e,r,t,n){var i=new An(r??ww,t??_w,n??xw,NaN,NaN,NaN,NaN,NaN,NaN);return e==null?i:i.addAll(e)}function An(e,r,t,n,i,s,a,o,c){this._x=e,this._y=r,this._z=t,this._x0=n,this._y0=i,this._z0=s,this._x1=a,this._y1=o,this._z1=c,this._root=void 0}function Mf(e){for(var r={data:e.data},t=r;e=e.next;)t=t.next={data:e.data};return r}var Ze=Rr.prototype=An.prototype;Ze.copy=function(){var e=new An(this._x,this._y,this._z,this._x0,this._y0,this._z0,this._x1,this._y1,this._z1),r=this._root,t,n;if(!r)return e;if(!r.length)return e._root=Mf(r),e;for(t=[{source:r,target:e._root=new Array(8)}];r=t.pop();)for(var i=0;i<8;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(8)}):r.target[i]=Mf(n));return e},Ze.add=aw,Ze.addAll=uw,Ze.cover=cw,Ze.data=fw,Ze.extent=lw,Ze.find=hw,Ze.remove=dw,Ze.removeAll=gw,Ze.root=pw,Ze.size=vw,Ze.visit=mw,Ze.visitAfter=yw,Ze.x=bw,Ze.y=Ew,Ze.z=Nw;const Mw=.81,In=.1;function Sw(e,r,t,n,i=2){const s=r/t,a=e.getAllNodes(),o=a.map((l,p)=>{const{nodeStrength:m,x:y,y:x,z:_,size:b}=l.data;return{x:y,y:x,z:_,size:b,index:p,id:l.id,vx:0,vy:0,vz:0,weight:s*m}}),c=(i===2?Wt(o,l=>l.x,l=>l.y):Rr(o,l=>l.x,l=>l.y,l=>l.z)).visitAfter(qw),f=new Map;return o.forEach(l=>{f.set(l.id,l),Ow(l,c,i)}),o.map((l,p)=>{const{id:m,data:y}=a[p],{mass:x=1}=y;n[m]={x:l.vx/x,y:l.vy/x,z:l.vz/x}}),n}function qw(e){let r=0,t=0,n=0,i=0,s=0;const a=e.length;if(a){for(let o=0;o<a;o++){const c=e[o];c&&c.weight&&(r+=c.weight,t+=c.x*c.weight,n+=c.y*c.weight,i+=c.z*c.weight,s+=c.size*c.weight)}e.x=t/r,e.y=n/r,e.z=i/r,e.size=s/r,e.weight=r}else{const o=e;e.x=o.data.x,e.y=o.data.y,e.z=o.data.z,e.size=o.data.size,e.weight=o.data.weight}}const Rw=(e,r,t,n,i,s,a)=>{var o;if(((o=e.data)===null||o===void 0?void 0:o.id)===s.id)return;const c=[t,n,i][a-1],f=s.x-e.x||In,l=s.y-e.y||In,p=s.z-e.z||In,m=[f,l,p],y=c-r;let x=0;for(let w=0;w<a;w++)x+=m[w]*m[w];const b=Math.sqrt(x)*x;if(y*y*Mw<x){const w=e.weight/b;return s.vx+=f*w,s.vy+=l*w,s.vz+=p*w,!0}if(e.length)return!1;if(e.data!==s){const w=e.data.weight/b;s.vx+=f*w,s.vy+=l*w,s.vz+=p*w}};function Ow(e,r,t){r.visit((n,i,s,a,o)=>Rw(n,i,s,a,o,e,t))}const Aw={dimensions:2,maxIteration:500,gravity:10,factor:1,edgeStrength:50,nodeStrength:1e3,coulombDisScale:.005,damping:.9,maxSpeed:200,minMovement:.4,interval:.02,linkDistance:200,clusterNodeStrength:20,preventOverlap:!0,distanceThresholdMode:"mean"};class Sf{constructor(r={}){this.options=r,this.id="force",this.timeInterval=0,this.judgingDistance=0,this.running=!1,this.options=Object.assign(Object.assign({},Aw),r)}execute(r,t){return fe(this,void 0,void 0,function*(){return this.genericForceLayout(!1,r,t)})}assign(r,t){return fe(this,void 0,void 0,function*(){yield this.genericForceLayout(!0,r,t)})}stop(){this.timeInterval&&typeof window<"u"&&window.clearInterval(this.timeInterval),this.running=!1}tick(r=this.options.maxIteration||1){if(this.lastResult)return this.lastResult;for(let n=0;(this.judgingDistance>this.lastOptions.minMovement||n<1)&&n<r;n++)this.runOneStep(this.lastCalcGraph,this.lastGraph,n,this.lastVelMap,this.lastOptions),this.updatePosition(this.lastGraph,this.lastCalcGraph,this.lastVelMap,this.lastOptions);const t={nodes:this.lastLayoutNodes,edges:this.lastLayoutEdges};return this.lastAssign&&t.nodes.forEach(n=>this.lastGraph.mergeNodeData(n.id,{x:n.data.x,y:n.data.y,z:this.options.dimensions===3?n.data.z:void 0})),t}genericForceLayout(r,t,n){return fe(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),s=t.getAllNodes(),a=t.getAllEdges(),o=this.formatOptions(i,t),{dimensions:c,width:f,height:l,nodeSize:p,getMass:m,nodeStrength:y,edgeStrength:x,linkDistance:_}=o,b=s.map((I,D)=>Object.assign(Object.assign({},I),{data:Object.assign(Object.assign({},I.data),{x:me(I.data.x)?I.data.x:Math.random()*f,y:me(I.data.y)?I.data.y:Math.random()*l,z:me(I.data.z)?I.data.z:Math.random()*Math.sqrt(f*l),size:p(I)||30,mass:m(I),nodeStrength:y(I)})})),w=a.map(I=>Object.assign(Object.assign({},I),{data:Object.assign(Object.assign({},I.data),{edgeStrength:x(I),linkDistance:_(I,t.getNode(I.source),t.getNode(I.target))})}));if(!(s!=null&&s.length))return this.lastResult={nodes:[],edges:a},{nodes:[],edges:a};const E={};s.forEach((I,D)=>{E[I.id]={x:0,y:0,z:0}});const N=new Be({nodes:b,edges:w});this.formatCentripetal(o,N);const{maxIteration:S,minMovement:R,onTick:A}=o;if(this.lastLayoutNodes=b,this.lastLayoutEdges=w,this.lastAssign=r,this.lastGraph=t,this.lastCalcGraph=N,this.lastOptions=o,this.lastVelMap=E,typeof window>"u")return;let j=0;return new Promise(I=>{this.timeInterval=window.setInterval(()=>{(!s||!this.running)&&I({nodes:Tn(t,b),edges:a}),this.runOneStep(N,t,j,E,o),this.updatePosition(t,N,E,o),r&&b.forEach(D=>t.mergeNodeData(D.id,{x:D.data.x,y:D.data.y,z:c===3?D.data.z:void 0})),A==null||A({nodes:Tn(t,b),edges:a}),j++,(j>=S||this.judgingDistance<R)&&(window.clearInterval(this.timeInterval),I({nodes:Tn(t,b),edges:a}))},0),this.running=!0})})}formatOptions(r,t){const n=Object.assign({},r),{width:i,height:s,getMass:a}=r;n.width=!i&&typeof window<"u"?window.innerWidth:i,n.height=!s&&typeof window<"u"?window.innerHeight:s,r.center||(n.center=[n.width/2,n.height/2]),a||(n.getMass=c=>{let f=1;me(c==null?void 0:c.data.mass)&&(f=c==null?void 0:c.data.mass);const l=t.getDegree(c.id,"both");return!l||l<5?f:l*5*f}),n.nodeSize=qn(r.nodeSize,r.nodeSpacing);const o=r.linkDistance?Ct(1,r.linkDistance):c=>1+n.nodeSize(t.getNode(c.source))+n.nodeSize(t.getNode(c.target));return n.linkDistance=o,n.nodeStrength=Ct(1,r.nodeStrength),n.edgeStrength=Ct(1,r.edgeStrength),n}formatCentripetal(r,t){const{dimensions:n,centripetalOptions:i,center:s,clusterNodeStrength:a,leafCluster:o,clustering:c,nodeClusterBy:f}=r,l=t.getAllNodes(),p=i||{leaf:2,single:2,others:1,center:w=>({x:s[0],y:s[1],z:n===3?s[2]:void 0})};typeof a!="function"&&(r.clusterNodeStrength=w=>a);let m,y;if(o&&f&&(m=qf(t,f),y=Array.from(new Set(l==null?void 0:l.map(w=>w.data[f])))||[],r.centripetalOptions=Object.assign(p,{single:100,leaf:w=>{const{siblingLeaves:E,sameTypeLeaves:N}=m[w.id]||{};return(N==null?void 0:N.length)===(E==null?void 0:E.length)||(y==null?void 0:y.length)===1?1:r.clusterNodeStrength(w)},others:1,center:w=>{const E=t.getDegree(w.id,"both");if(!E)return{x:100,y:100,z:0};let N;if(E===1){const{sameTypeLeaves:S=[]}=m[w.id]||{};S.length===1?N=void 0:S.length>1&&(N=Rf(S))}else N=void 0;return{x:N==null?void 0:N.x,y:N==null?void 0:N.y,z:N==null?void 0:N.z}}})),c&&f){m||(m=qf(t,f)),y||(y=Array.from(new Set(l.map(E=>E.data[f])))),y=y.filter(E=>E!==void 0);const w={};y.forEach(E=>{const N=l.filter(S=>S.data[f]===E).map(S=>t.getNode(S.id));w[E]=Rf(N)}),r.centripetalOptions=Object.assign(p,{single:E=>r.clusterNodeStrength(E),leaf:E=>r.clusterNodeStrength(E),others:E=>r.clusterNodeStrength(E),center:E=>{const N=w[E.data[f]];return{x:N==null?void 0:N.x,y:N==null?void 0:N.y,z:N==null?void 0:N.z}}})}const{leaf:x,single:_,others:b}=r.centripetalOptions||{};x&&typeof x!="function"&&(r.centripetalOptions.leaf=()=>x),_&&typeof _!="function"&&(r.centripetalOptions.single=()=>_),b&&typeof b!="function"&&(r.centripetalOptions.others=()=>b)}runOneStep(r,t,n,i,s){const a={},o=r.getAllNodes(),c=r.getAllEdges();if(!(o!=null&&o.length))return;const{monitor:f}=s;if(this.calRepulsive(r,a,s),c&&this.calAttractive(r,a,s),this.calGravity(r,t,a,s),this.updateVelocity(r,a,i,s),f){const l=this.calTotalEnergy(a,o);f({energy:l,nodes:t.getAllNodes(),edges:t.getAllEdges(),iterations:n})}}calTotalEnergy(r,t){if(!(t!=null&&t.length))return 0;let n=0;return t.forEach((i,s)=>{const a=r[i.id].x,o=r[i.id].y,c=this.options.dimensions===3?r[i.id].z:0,f=a*a+o*o+c*c,{mass:l=1}=i.data;n+=l*f*.5}),n}calRepulsive(r,t,n){const{dimensions:i,factor:s,coulombDisScale:a}=n;Sw(r,s,a*a,t,i)}calAttractive(r,t,n){const{dimensions:i,nodeSize:s}=n;r.getAllEdges().forEach((a,o)=>{const{source:c,target:f}=a,l=r.getNode(c),p=r.getNode(f);if(!l||!p)return;let m=p.data.x-l.data.x,y=p.data.y-l.data.y,x=i===3?p.data.z-l.data.z:0;!m&&!y&&(m=Math.random()*.01,y=Math.random()*.01,i===3&&!x&&(x=Math.random()*.01));const _=Math.sqrt(m*m+y*y+x*x);if(_<s(l)+s(p))return;const b=m/_,w=y/_,E=x/_,{linkDistance:N=200,edgeStrength:S=200}=a.data||{},A=(N-_)*S,j=l.data.mass||1,I=p.data.mass||1,D=1/j,z=1/I,$=b*A,V=w*A,Y=E*A;t[c].x-=$*D,t[c].y-=V*D,t[c].z-=Y*D,t[f].x+=$*z,t[f].y+=V*z,t[f].z+=Y*z})}calGravity(r,t,n,i){const{getCenter:s}=i,a=r.getAllNodes(),o=t.getAllNodes(),c=t.getAllEdges(),{width:f,height:l,center:p,gravity:m,centripetalOptions:y}=i;a&&a.forEach(x=>{const{id:_,data:b}=x,{mass:w,x:E,y:N,z:S}=b,R=t.getNode(_);let A=0,j=0,I=0,D=m;const z=r.getDegree(_,"in"),$=r.getDegree(_,"out"),V=r.getDegree(_,"both"),Y=s==null?void 0:s(R,V);if(Y){const[ee,J,ae]=Y;A=E-ee,j=N-J,D=ae}else A=E-p[0],j=N-p[1],I=S-p[2];if(D&&(n[_].x-=D*A/w,n[_].y-=D*j/w,n[_].z-=D*I/w),y){const{leaf:ee,single:J,others:ae,center:be}=y,{x:Z,y:ue,z:pe,centerStrength:he}=(be==null?void 0:be(R,o,c,f,l))||{x:0,y:0,z:0,centerStrength:0};if(!me(Z)||!me(ue))return;const ie=(E-Z)/w,_e=(N-ue)/w,G=(S-pe)/w;if(he&&(n[_].x-=he*ie,n[_].y-=he*_e,n[_].z-=he*G),V===0){const X=J(R);if(!X)return;n[_].x-=X*ie,n[_].y-=X*_e,n[_].z-=X*G;return}if(z===0||$===0){const X=ee(R,o,c);if(!X)return;n[_].x-=X*ie,n[_].y-=X*_e,n[_].z-=X*G;return}const P=ae(R);if(!P)return;n[_].x-=P*ie,n[_].y-=P*_e,n[_].z-=P*G}})}updateVelocity(r,t,n,i){const{damping:s,maxSpeed:a,interval:o,dimensions:c}=i,f=r.getAllNodes();f!=null&&f.length&&f.forEach(l=>{const{id:p}=l;let m=(n[p].x+t[p].x*o)*s||.01,y=(n[p].y+t[p].y*o)*s||.01,x=c===3?(n[p].z+t[p].z*o)*s||.01:0;const _=Math.sqrt(m*m+y*y+x*x);if(_>a){const b=a/_;m=b*m,y=b*y,x=b*x}n[p]={x:m,y,z:x}})}updatePosition(r,t,n,i){const{distanceThresholdMode:s,interval:a,dimensions:o}=i,c=t.getAllNodes();if(!(c!=null&&c.length)){this.judgingDistance=0;return}let f=0;s==="max"?this.judgingDistance=-1/0:s==="min"&&(this.judgingDistance=1/0),c.forEach(l=>{const{id:p}=l,m=r.getNode(p);if(me(m.data.fx)&&me(m.data.fy)){t.mergeNodeData(p,{x:m.data.fx,y:m.data.fy,z:o===3?m.data.fz:void 0});return}const y=n[p].x*a,x=n[p].y*a,_=o===3?n[p].z*a:0;t.mergeNodeData(p,{x:l.data.x+y,y:l.data.y+x,z:l.data.z+_});const b=Math.sqrt(y*y+x*x+_*_);switch(s){case"max":this.judgingDistance<b&&(this.judgingDistance=b);break;case"min":this.judgingDistance>b&&(this.judgingDistance=b);break;default:f=f+b;break}}),(!s||s==="mean")&&(this.judgingDistance=f/c.length)}}const qf=(e,r)=>{const t=e.getAllNodes();if(!(t!=null&&t.length))return{};const n={};return t.forEach((i,s)=>{e.getDegree(i.id,"both")===1&&(n[i.id]=Iw(e,"leaf",i,r))}),n},Iw=(e,r,t,n)=>{const i=e.getDegree(t.id,"in"),s=e.getDegree(t.id,"out");let a=t,o=[];i===0?(a=e.getSuccessors(t.id)[0],o=e.getNeighbors(a.id)):s===0&&(a=e.getPredecessors(t.id)[0],o=e.getNeighbors(a.id)),o=o.filter(f=>e.getDegree(f.id,"in")===0||e.getDegree(f.id,"out")===0);const c=Tw(e,r,n,t,o);return{coreNode:a,siblingLeaves:o,sameTypeLeaves:c}},Tw=(e,r,t,n,i)=>{const s=n.data[t]||"";let a=(i==null?void 0:i.filter(o=>o.data[t]===s))||[];return a=a.filter(o=>e.getDegree(o.id,"in")===0||e.getDegree(o.id,"out")===0),a},Rf=e=>{const r={x:0,y:0};e.forEach(n=>{const{x:i,y:s}=n.data;r.x+=i||0,r.y+=s||0});const t=e.length||1;return{x:r.x/t,y:r.y/t}},Tn=(e,r)=>r.map(t=>{const{id:n,data:i}=t,s=e.getNode(n);return Object.assign(Object.assign({},s),{data:Object.assign(Object.assign({},s.data),{x:i.x,y:i.y,z:i.z})})});var Or=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Of(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Af(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var r=e.default;if(typeof r=="function"){var t=function n(){return this instanceof n?Reflect.construct(r,arguments,this.constructor):r.apply(this,arguments)};t.prototype=r.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}),t}var we={};const kw=Object.prototype.toString;function or(e){const r=kw.call(e);return r.endsWith("Array]")&&!r.includes("Big")}var jw=Object.freeze({__proto__:null,isAnyArray:or}),Cw=Af(jw);function Pw(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!or(e))throw new TypeError("input must be an array");if(e.length===0)throw new TypeError("input must not be empty");var t=r.fromIndex,n=t===void 0?0:t,i=r.toIndex,s=i===void 0?e.length:i;if(n<0||n>=e.length||!Number.isInteger(n))throw new Error("fromIndex must be a positive integer smaller than length");if(s<=n||s>e.length||!Number.isInteger(s))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var a=e[n],o=n+1;o<s;o++)e[o]>a&&(a=e[o]);return a}function Lw(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!or(e))throw new TypeError("input must be an array");if(e.length===0)throw new TypeError("input must not be empty");var t=r.fromIndex,n=t===void 0?0:t,i=r.toIndex,s=i===void 0?e.length:i;if(n<0||n>=e.length||!Number.isInteger(n))throw new Error("fromIndex must be a positive integer smaller than length");if(s<=n||s>e.length||!Number.isInteger(s))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var a=e[n],o=n+1;o<s;o++)e[o]<a&&(a=e[o]);return a}function Dw(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(or(e)){if(e.length===0)throw new TypeError("input must not be empty")}else throw new TypeError("input must be an array");var t;if(r.output!==void 0){if(!or(r.output))throw new TypeError("output option must be an array if specified");t=r.output}else t=new Array(e.length);var n=Lw(e),i=Pw(e);if(n===i)throw new RangeError("minimum and maximum input values are equal. Cannot rescale a constant array");var s=r.min,a=s===void 0?r.autoMinMax?n:0:s,o=r.max,c=o===void 0?r.autoMinMax?i:1:o;if(a>=c)throw new RangeError("min option must be smaller than max option");for(var f=(c-a)/(i-n),l=0;l<e.length;l++)t[l]=(e[l]-n)*f+a;return t}var zw=Object.freeze({__proto__:null,default:Dw}),Fw=Af(zw),If;function Bw(){var wr,Ac,He;if(If)return we;If=1,Object.defineProperty(we,"__esModule",{value:!0});var e=Cw,r=Fw;const t=" ".repeat(2),n=" ".repeat(4);function i(){return s(this)}function s(M,g={}){const{maxRows:h=15,maxColumns:u=10,maxNumSize:d=8,padMinus:v="auto"}=g;return`${M.constructor.name} {
7
+ ${t}[
8
+ ${n}${a(M,h,u,d,v)}
9
+ ${t}]
10
+ ${t}rows: ${M.rows}
11
+ ${t}columns: ${M.columns}
12
+ }`}function a(M,g,h,u,d){const{rows:v,columns:q}=M,O=Math.min(v,g),T=Math.min(q,h),k=[];if(d==="auto"){d=!1;e:for(let B=0;B<O;B++)for(let C=0;C<T;C++)if(M.get(B,C)<0){d=!0;break e}}for(let B=0;B<O;B++){let C=[];for(let W=0;W<T;W++)C.push(o(M.get(B,W),u,d));k.push(`${C.join(" ")}`)}return T!==q&&(k[k.length-1]+=` ... ${q-h} more columns`),O!==v&&k.push(`... ${v-g} more rows`),k.join(`
13
+ ${n}`)}function o(M,g,h){return(M>=0&&h?` ${c(M,g-1)}`:c(M,g)).padEnd(g)}function c(M,g){let h=M.toString();if(h.length<=g)return h;let u=M.toFixed(g);if(u.length>g&&(u=M.toFixed(Math.max(0,g-(u.length-g)))),u.length<=g&&!u.startsWith("0.000")&&!u.startsWith("-0.000"))return u;let d=M.toExponential(g);return d.length>g&&(d=M.toExponential(Math.max(0,g-(d.length-g)))),d.slice(0)}function f(M,g){M.prototype.add=function(u){return typeof u=="number"?this.addS(u):this.addM(u)},M.prototype.addS=function(u){for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)+u);return this},M.prototype.addM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)+u.get(d,v));return this},M.add=function(u,d){return new g(u).add(d)},M.prototype.sub=function(u){return typeof u=="number"?this.subS(u):this.subM(u)},M.prototype.subS=function(u){for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)-u);return this},M.prototype.subM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)-u.get(d,v));return this},M.sub=function(u,d){return new g(u).sub(d)},M.prototype.subtract=M.prototype.sub,M.prototype.subtractS=M.prototype.subS,M.prototype.subtractM=M.prototype.subM,M.subtract=M.sub,M.prototype.mul=function(u){return typeof u=="number"?this.mulS(u):this.mulM(u)},M.prototype.mulS=function(u){for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)*u);return this},M.prototype.mulM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)*u.get(d,v));return this},M.mul=function(u,d){return new g(u).mul(d)},M.prototype.multiply=M.prototype.mul,M.prototype.multiplyS=M.prototype.mulS,M.prototype.multiplyM=M.prototype.mulM,M.multiply=M.mul,M.prototype.div=function(u){return typeof u=="number"?this.divS(u):this.divM(u)},M.prototype.divS=function(u){for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)/u);return this},M.prototype.divM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)/u.get(d,v));return this},M.div=function(u,d){return new g(u).div(d)},M.prototype.divide=M.prototype.div,M.prototype.divideS=M.prototype.divS,M.prototype.divideM=M.prototype.divM,M.divide=M.div,M.prototype.mod=function(u){return typeof u=="number"?this.modS(u):this.modM(u)},M.prototype.modS=function(u){for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)%u);return this},M.prototype.modM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)%u.get(d,v));return this},M.mod=function(u,d){return new g(u).mod(d)},M.prototype.modulus=M.prototype.mod,M.prototype.modulusS=M.prototype.modS,M.prototype.modulusM=M.prototype.modM,M.modulus=M.mod,M.prototype.and=function(u){return typeof u=="number"?this.andS(u):this.andM(u)},M.prototype.andS=function(u){for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)&u);return this},M.prototype.andM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)&u.get(d,v));return this},M.and=function(u,d){return new g(u).and(d)},M.prototype.or=function(u){return typeof u=="number"?this.orS(u):this.orM(u)},M.prototype.orS=function(u){for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)|u);return this},M.prototype.orM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)|u.get(d,v));return this},M.or=function(u,d){return new g(u).or(d)},M.prototype.xor=function(u){return typeof u=="number"?this.xorS(u):this.xorM(u)},M.prototype.xorS=function(u){for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)^u);return this},M.prototype.xorM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)^u.get(d,v));return this},M.xor=function(u,d){return new g(u).xor(d)},M.prototype.leftShift=function(u){return typeof u=="number"?this.leftShiftS(u):this.leftShiftM(u)},M.prototype.leftShiftS=function(u){for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)<<u);return this},M.prototype.leftShiftM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)<<u.get(d,v));return this},M.leftShift=function(u,d){return new g(u).leftShift(d)},M.prototype.signPropagatingRightShift=function(u){return typeof u=="number"?this.signPropagatingRightShiftS(u):this.signPropagatingRightShiftM(u)},M.prototype.signPropagatingRightShiftS=function(u){for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)>>u);return this},M.prototype.signPropagatingRightShiftM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)>>u.get(d,v));return this},M.signPropagatingRightShift=function(u,d){return new g(u).signPropagatingRightShift(d)},M.prototype.rightShift=function(u){return typeof u=="number"?this.rightShiftS(u):this.rightShiftM(u)},M.prototype.rightShiftS=function(u){for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)>>>u);return this},M.prototype.rightShiftM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)>>>u.get(d,v));return this},M.rightShift=function(u,d){return new g(u).rightShift(d)},M.prototype.zeroFillRightShift=M.prototype.rightShift,M.prototype.zeroFillRightShiftS=M.prototype.rightShiftS,M.prototype.zeroFillRightShiftM=M.prototype.rightShiftM,M.zeroFillRightShift=M.rightShift,M.prototype.not=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,~this.get(u,d));return this},M.not=function(u){return new g(u).not()},M.prototype.abs=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.abs(this.get(u,d)));return this},M.abs=function(u){return new g(u).abs()},M.prototype.acos=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.acos(this.get(u,d)));return this},M.acos=function(u){return new g(u).acos()},M.prototype.acosh=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.acosh(this.get(u,d)));return this},M.acosh=function(u){return new g(u).acosh()},M.prototype.asin=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.asin(this.get(u,d)));return this},M.asin=function(u){return new g(u).asin()},M.prototype.asinh=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.asinh(this.get(u,d)));return this},M.asinh=function(u){return new g(u).asinh()},M.prototype.atan=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.atan(this.get(u,d)));return this},M.atan=function(u){return new g(u).atan()},M.prototype.atanh=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.atanh(this.get(u,d)));return this},M.atanh=function(u){return new g(u).atanh()},M.prototype.cbrt=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.cbrt(this.get(u,d)));return this},M.cbrt=function(u){return new g(u).cbrt()},M.prototype.ceil=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.ceil(this.get(u,d)));return this},M.ceil=function(u){return new g(u).ceil()},M.prototype.clz32=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.clz32(this.get(u,d)));return this},M.clz32=function(u){return new g(u).clz32()},M.prototype.cos=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.cos(this.get(u,d)));return this},M.cos=function(u){return new g(u).cos()},M.prototype.cosh=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.cosh(this.get(u,d)));return this},M.cosh=function(u){return new g(u).cosh()},M.prototype.exp=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.exp(this.get(u,d)));return this},M.exp=function(u){return new g(u).exp()},M.prototype.expm1=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.expm1(this.get(u,d)));return this},M.expm1=function(u){return new g(u).expm1()},M.prototype.floor=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.floor(this.get(u,d)));return this},M.floor=function(u){return new g(u).floor()},M.prototype.fround=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.fround(this.get(u,d)));return this},M.fround=function(u){return new g(u).fround()},M.prototype.log=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.log(this.get(u,d)));return this},M.log=function(u){return new g(u).log()},M.prototype.log1p=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.log1p(this.get(u,d)));return this},M.log1p=function(u){return new g(u).log1p()},M.prototype.log10=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.log10(this.get(u,d)));return this},M.log10=function(u){return new g(u).log10()},M.prototype.log2=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.log2(this.get(u,d)));return this},M.log2=function(u){return new g(u).log2()},M.prototype.round=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.round(this.get(u,d)));return this},M.round=function(u){return new g(u).round()},M.prototype.sign=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.sign(this.get(u,d)));return this},M.sign=function(u){return new g(u).sign()},M.prototype.sin=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.sin(this.get(u,d)));return this},M.sin=function(u){return new g(u).sin()},M.prototype.sinh=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.sinh(this.get(u,d)));return this},M.sinh=function(u){return new g(u).sinh()},M.prototype.sqrt=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.sqrt(this.get(u,d)));return this},M.sqrt=function(u){return new g(u).sqrt()},M.prototype.tan=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.tan(this.get(u,d)));return this},M.tan=function(u){return new g(u).tan()},M.prototype.tanh=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.tanh(this.get(u,d)));return this},M.tanh=function(u){return new g(u).tanh()},M.prototype.trunc=function(){for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.set(u,d,Math.trunc(this.get(u,d)));return this},M.trunc=function(u){return new g(u).trunc()},M.pow=function(u,d){return new g(u).pow(d)},M.prototype.pow=function(u){return typeof u=="number"?this.powS(u):this.powM(u)},M.prototype.powS=function(u){for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)**u);return this},M.prototype.powM=function(u){if(u=g.checkMatrix(u),this.rows!==u.rows||this.columns!==u.columns)throw new RangeError("Matrices dimensions must be equal");for(let d=0;d<this.rows;d++)for(let v=0;v<this.columns;v++)this.set(d,v,this.get(d,v)**u.get(d,v));return this}}function l(M,g,h){let u=h?M.rows:M.rows-1;if(g<0||g>u)throw new RangeError("Row index out of range")}function p(M,g,h){let u=h?M.columns:M.columns-1;if(g<0||g>u)throw new RangeError("Column index out of range")}function m(M,g){if(g.to1DArray&&(g=g.to1DArray()),g.length!==M.columns)throw new RangeError("vector size must be the same as the number of columns");return g}function y(M,g){if(g.to1DArray&&(g=g.to1DArray()),g.length!==M.rows)throw new RangeError("vector size must be the same as the number of rows");return g}function x(M,g){if(!e.isAnyArray(g))throw new TypeError("row indices must be an array");for(let h=0;h<g.length;h++)if(g[h]<0||g[h]>=M.rows)throw new RangeError("row indices are out of range")}function _(M,g){if(!e.isAnyArray(g))throw new TypeError("column indices must be an array");for(let h=0;h<g.length;h++)if(g[h]<0||g[h]>=M.columns)throw new RangeError("column indices are out of range")}function b(M,g,h,u,d){if(arguments.length!==5)throw new RangeError("expected 4 arguments");if(E("startRow",g),E("endRow",h),E("startColumn",u),E("endColumn",d),g>h||u>d||g<0||g>=M.rows||h<0||h>=M.rows||u<0||u>=M.columns||d<0||d>=M.columns)throw new RangeError("Submatrix indices are out of range")}function w(M,g=0){let h=[];for(let u=0;u<M;u++)h.push(g);return h}function E(M,g){if(typeof g!="number")throw new TypeError(`${M} must be a number`)}function N(M){if(M.isEmpty())throw new Error("Empty matrix has no elements to index")}function S(M){let g=w(M.rows);for(let h=0;h<M.rows;++h)for(let u=0;u<M.columns;++u)g[h]+=M.get(h,u);return g}function R(M){let g=w(M.columns);for(let h=0;h<M.rows;++h)for(let u=0;u<M.columns;++u)g[u]+=M.get(h,u);return g}function A(M){let g=0;for(let h=0;h<M.rows;h++)for(let u=0;u<M.columns;u++)g+=M.get(h,u);return g}function j(M){let g=w(M.rows,1);for(let h=0;h<M.rows;++h)for(let u=0;u<M.columns;++u)g[h]*=M.get(h,u);return g}function I(M){let g=w(M.columns,1);for(let h=0;h<M.rows;++h)for(let u=0;u<M.columns;++u)g[u]*=M.get(h,u);return g}function D(M){let g=1;for(let h=0;h<M.rows;h++)for(let u=0;u<M.columns;u++)g*=M.get(h,u);return g}function z(M,g,h){const u=M.rows,d=M.columns,v=[];for(let q=0;q<u;q++){let O=0,T=0,k=0;for(let B=0;B<d;B++)k=M.get(q,B)-h[q],O+=k,T+=k*k;g?v.push((T-O*O/d)/(d-1)):v.push((T-O*O/d)/d)}return v}function $(M,g,h){const u=M.rows,d=M.columns,v=[];for(let q=0;q<d;q++){let O=0,T=0,k=0;for(let B=0;B<u;B++)k=M.get(B,q)-h[q],O+=k,T+=k*k;g?v.push((T-O*O/u)/(u-1)):v.push((T-O*O/u)/u)}return v}function V(M,g,h){const u=M.rows,d=M.columns,v=u*d;let q=0,O=0,T=0;for(let k=0;k<u;k++)for(let B=0;B<d;B++)T=M.get(k,B)-h,q+=T,O+=T*T;return g?(O-q*q/v)/(v-1):(O-q*q/v)/v}function Y(M,g){for(let h=0;h<M.rows;h++)for(let u=0;u<M.columns;u++)M.set(h,u,M.get(h,u)-g[h])}function ee(M,g){for(let h=0;h<M.rows;h++)for(let u=0;u<M.columns;u++)M.set(h,u,M.get(h,u)-g[u])}function J(M,g){for(let h=0;h<M.rows;h++)for(let u=0;u<M.columns;u++)M.set(h,u,M.get(h,u)-g)}function ae(M){const g=[];for(let h=0;h<M.rows;h++){let u=0;for(let d=0;d<M.columns;d++)u+=M.get(h,d)**2/(M.columns-1);g.push(Math.sqrt(u))}return g}function be(M,g){for(let h=0;h<M.rows;h++)for(let u=0;u<M.columns;u++)M.set(h,u,M.get(h,u)/g[h])}function Z(M){const g=[];for(let h=0;h<M.columns;h++){let u=0;for(let d=0;d<M.rows;d++)u+=M.get(d,h)**2/(M.rows-1);g.push(Math.sqrt(u))}return g}function ue(M,g){for(let h=0;h<M.rows;h++)for(let u=0;u<M.columns;u++)M.set(h,u,M.get(h,u)/g[u])}function pe(M){const g=M.size-1;let h=0;for(let u=0;u<M.columns;u++)for(let d=0;d<M.rows;d++)h+=M.get(d,u)**2/g;return Math.sqrt(h)}function he(M,g){for(let h=0;h<M.rows;h++)for(let u=0;u<M.columns;u++)M.set(h,u,M.get(h,u)/g)}class ie{static from1DArray(g,h,u){if(g*h!==u.length)throw new RangeError("data length does not match given dimensions");let v=new P(g,h);for(let q=0;q<g;q++)for(let O=0;O<h;O++)v.set(q,O,u[q*h+O]);return v}static rowVector(g){let h=new P(1,g.length);for(let u=0;u<g.length;u++)h.set(0,u,g[u]);return h}static columnVector(g){let h=new P(g.length,1);for(let u=0;u<g.length;u++)h.set(u,0,g[u]);return h}static zeros(g,h){return new P(g,h)}static ones(g,h){return new P(g,h).fill(1)}static rand(g,h,u={}){if(typeof u!="object")throw new TypeError("options must be an object");const{random:d=Math.random}=u;let v=new P(g,h);for(let q=0;q<g;q++)for(let O=0;O<h;O++)v.set(q,O,d());return v}static randInt(g,h,u={}){if(typeof u!="object")throw new TypeError("options must be an object");const{min:d=0,max:v=1e3,random:q=Math.random}=u;if(!Number.isInteger(d))throw new TypeError("min must be an integer");if(!Number.isInteger(v))throw new TypeError("max must be an integer");if(d>=v)throw new RangeError("min must be smaller than max");let O=v-d,T=new P(g,h);for(let k=0;k<g;k++)for(let B=0;B<h;B++){let C=d+Math.round(q()*O);T.set(k,B,C)}return T}static eye(g,h,u){h===void 0&&(h=g),u===void 0&&(u=1);let d=Math.min(g,h),v=this.zeros(g,h);for(let q=0;q<d;q++)v.set(q,q,u);return v}static diag(g,h,u){let d=g.length;h===void 0&&(h=d),u===void 0&&(u=h);let v=Math.min(d,h,u),q=this.zeros(h,u);for(let O=0;O<v;O++)q.set(O,O,g[O]);return q}static min(g,h){g=this.checkMatrix(g),h=this.checkMatrix(h);let u=g.rows,d=g.columns,v=new P(u,d);for(let q=0;q<u;q++)for(let O=0;O<d;O++)v.set(q,O,Math.min(g.get(q,O),h.get(q,O)));return v}static max(g,h){g=this.checkMatrix(g),h=this.checkMatrix(h);let u=g.rows,d=g.columns,v=new this(u,d);for(let q=0;q<u;q++)for(let O=0;O<d;O++)v.set(q,O,Math.max(g.get(q,O),h.get(q,O)));return v}static checkMatrix(g){return ie.isMatrix(g)?g:new P(g)}static isMatrix(g){return g!=null&&g.klass==="Matrix"}get size(){return this.rows*this.columns}apply(g){if(typeof g!="function")throw new TypeError("callback must be a function");for(let h=0;h<this.rows;h++)for(let u=0;u<this.columns;u++)g.call(this,h,u);return this}to1DArray(){let g=[];for(let h=0;h<this.rows;h++)for(let u=0;u<this.columns;u++)g.push(this.get(h,u));return g}to2DArray(){let g=[];for(let h=0;h<this.rows;h++){g.push([]);for(let u=0;u<this.columns;u++)g[h].push(this.get(h,u))}return g}toJSON(){return this.to2DArray()}isRowVector(){return this.rows===1}isColumnVector(){return this.columns===1}isVector(){return this.rows===1||this.columns===1}isSquare(){return this.rows===this.columns}isEmpty(){return this.rows===0||this.columns===0}isSymmetric(){if(this.isSquare()){for(let g=0;g<this.rows;g++)for(let h=0;h<=g;h++)if(this.get(g,h)!==this.get(h,g))return!1;return!0}return!1}isDistance(){if(!this.isSymmetric())return!1;for(let g=0;g<this.rows;g++)if(this.get(g,g)!==0)return!1;return!0}isEchelonForm(){let g=0,h=0,u=-1,d=!0,v=!1;for(;g<this.rows&&d;){for(h=0,v=!1;h<this.columns&&v===!1;)this.get(g,h)===0?h++:this.get(g,h)===1&&h>u?(v=!0,u=h):(d=!1,v=!0);g++}return d}isReducedEchelonForm(){let g=0,h=0,u=-1,d=!0,v=!1;for(;g<this.rows&&d;){for(h=0,v=!1;h<this.columns&&v===!1;)this.get(g,h)===0?h++:this.get(g,h)===1&&h>u?(v=!0,u=h):(d=!1,v=!0);for(let q=h+1;q<this.rows;q++)this.get(g,q)!==0&&(d=!1);g++}return d}echelonForm(){let g=this.clone(),h=0,u=0;for(;h<g.rows&&u<g.columns;){let d=h;for(let v=h;v<g.rows;v++)g.get(v,u)>g.get(d,u)&&(d=v);if(g.get(d,u)===0)u++;else{g.swapRows(h,d);let v=g.get(h,u);for(let q=u;q<g.columns;q++)g.set(h,q,g.get(h,q)/v);for(let q=h+1;q<g.rows;q++){let O=g.get(q,u)/g.get(h,u);g.set(q,u,0);for(let T=u+1;T<g.columns;T++)g.set(q,T,g.get(q,T)-g.get(h,T)*O)}h++,u++}}return g}reducedEchelonForm(){let g=this.echelonForm(),h=g.columns,u=g.rows,d=u-1;for(;d>=0;)if(g.maxRow(d)===0)d--;else{let v=0,q=!1;for(;v<u&&q===!1;)g.get(d,v)===1?q=!0:v++;for(let O=0;O<d;O++){let T=g.get(O,v);for(let k=v;k<h;k++){let B=g.get(O,k)-T*g.get(d,k);g.set(O,k,B)}}d--}return g}set(){throw new Error("set method is unimplemented")}get(){throw new Error("get method is unimplemented")}repeat(g={}){if(typeof g!="object")throw new TypeError("options must be an object");const{rows:h=1,columns:u=1}=g;if(!Number.isInteger(h)||h<=0)throw new TypeError("rows must be a positive integer");if(!Number.isInteger(u)||u<=0)throw new TypeError("columns must be a positive integer");let d=new P(this.rows*h,this.columns*u);for(let v=0;v<h;v++)for(let q=0;q<u;q++)d.setSubMatrix(this,this.rows*v,this.columns*q);return d}fill(g){for(let h=0;h<this.rows;h++)for(let u=0;u<this.columns;u++)this.set(h,u,g);return this}neg(){return this.mulS(-1)}getRow(g){l(this,g);let h=[];for(let u=0;u<this.columns;u++)h.push(this.get(g,u));return h}getRowVector(g){return P.rowVector(this.getRow(g))}setRow(g,h){l(this,g),h=m(this,h);for(let u=0;u<this.columns;u++)this.set(g,u,h[u]);return this}swapRows(g,h){l(this,g),l(this,h);for(let u=0;u<this.columns;u++){let d=this.get(g,u);this.set(g,u,this.get(h,u)),this.set(h,u,d)}return this}getColumn(g){p(this,g);let h=[];for(let u=0;u<this.rows;u++)h.push(this.get(u,g));return h}getColumnVector(g){return P.columnVector(this.getColumn(g))}setColumn(g,h){p(this,g),h=y(this,h);for(let u=0;u<this.rows;u++)this.set(u,g,h[u]);return this}swapColumns(g,h){p(this,g),p(this,h);for(let u=0;u<this.rows;u++){let d=this.get(u,g);this.set(u,g,this.get(u,h)),this.set(u,h,d)}return this}addRowVector(g){g=m(this,g);for(let h=0;h<this.rows;h++)for(let u=0;u<this.columns;u++)this.set(h,u,this.get(h,u)+g[u]);return this}subRowVector(g){g=m(this,g);for(let h=0;h<this.rows;h++)for(let u=0;u<this.columns;u++)this.set(h,u,this.get(h,u)-g[u]);return this}mulRowVector(g){g=m(this,g);for(let h=0;h<this.rows;h++)for(let u=0;u<this.columns;u++)this.set(h,u,this.get(h,u)*g[u]);return this}divRowVector(g){g=m(this,g);for(let h=0;h<this.rows;h++)for(let u=0;u<this.columns;u++)this.set(h,u,this.get(h,u)/g[u]);return this}addColumnVector(g){g=y(this,g);for(let h=0;h<this.rows;h++)for(let u=0;u<this.columns;u++)this.set(h,u,this.get(h,u)+g[h]);return this}subColumnVector(g){g=y(this,g);for(let h=0;h<this.rows;h++)for(let u=0;u<this.columns;u++)this.set(h,u,this.get(h,u)-g[h]);return this}mulColumnVector(g){g=y(this,g);for(let h=0;h<this.rows;h++)for(let u=0;u<this.columns;u++)this.set(h,u,this.get(h,u)*g[h]);return this}divColumnVector(g){g=y(this,g);for(let h=0;h<this.rows;h++)for(let u=0;u<this.columns;u++)this.set(h,u,this.get(h,u)/g[h]);return this}mulRow(g,h){l(this,g);for(let u=0;u<this.columns;u++)this.set(g,u,this.get(g,u)*h);return this}mulColumn(g,h){p(this,g);for(let u=0;u<this.rows;u++)this.set(u,g,this.get(u,g)*h);return this}max(g){if(this.isEmpty())return NaN;switch(g){case"row":{const h=new Array(this.rows).fill(Number.NEGATIVE_INFINITY);for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.get(u,d)>h[u]&&(h[u]=this.get(u,d));return h}case"column":{const h=new Array(this.columns).fill(Number.NEGATIVE_INFINITY);for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.get(u,d)>h[d]&&(h[d]=this.get(u,d));return h}case void 0:{let h=this.get(0,0);for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.get(u,d)>h&&(h=this.get(u,d));return h}default:throw new Error(`invalid option: ${g}`)}}maxIndex(){N(this);let g=this.get(0,0),h=[0,0];for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.get(u,d)>g&&(g=this.get(u,d),h[0]=u,h[1]=d);return h}min(g){if(this.isEmpty())return NaN;switch(g){case"row":{const h=new Array(this.rows).fill(Number.POSITIVE_INFINITY);for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.get(u,d)<h[u]&&(h[u]=this.get(u,d));return h}case"column":{const h=new Array(this.columns).fill(Number.POSITIVE_INFINITY);for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.get(u,d)<h[d]&&(h[d]=this.get(u,d));return h}case void 0:{let h=this.get(0,0);for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.get(u,d)<h&&(h=this.get(u,d));return h}default:throw new Error(`invalid option: ${g}`)}}minIndex(){N(this);let g=this.get(0,0),h=[0,0];for(let u=0;u<this.rows;u++)for(let d=0;d<this.columns;d++)this.get(u,d)<g&&(g=this.get(u,d),h[0]=u,h[1]=d);return h}maxRow(g){if(l(this,g),this.isEmpty())return NaN;let h=this.get(g,0);for(let u=1;u<this.columns;u++)this.get(g,u)>h&&(h=this.get(g,u));return h}maxRowIndex(g){l(this,g),N(this);let h=this.get(g,0),u=[g,0];for(let d=1;d<this.columns;d++)this.get(g,d)>h&&(h=this.get(g,d),u[1]=d);return u}minRow(g){if(l(this,g),this.isEmpty())return NaN;let h=this.get(g,0);for(let u=1;u<this.columns;u++)this.get(g,u)<h&&(h=this.get(g,u));return h}minRowIndex(g){l(this,g),N(this);let h=this.get(g,0),u=[g,0];for(let d=1;d<this.columns;d++)this.get(g,d)<h&&(h=this.get(g,d),u[1]=d);return u}maxColumn(g){if(p(this,g),this.isEmpty())return NaN;let h=this.get(0,g);for(let u=1;u<this.rows;u++)this.get(u,g)>h&&(h=this.get(u,g));return h}maxColumnIndex(g){p(this,g),N(this);let h=this.get(0,g),u=[0,g];for(let d=1;d<this.rows;d++)this.get(d,g)>h&&(h=this.get(d,g),u[0]=d);return u}minColumn(g){if(p(this,g),this.isEmpty())return NaN;let h=this.get(0,g);for(let u=1;u<this.rows;u++)this.get(u,g)<h&&(h=this.get(u,g));return h}minColumnIndex(g){p(this,g),N(this);let h=this.get(0,g),u=[0,g];for(let d=1;d<this.rows;d++)this.get(d,g)<h&&(h=this.get(d,g),u[0]=d);return u}diag(){let g=Math.min(this.rows,this.columns),h=[];for(let u=0;u<g;u++)h.push(this.get(u,u));return h}norm(g="frobenius"){switch(g){case"max":return this.max();case"frobenius":return Math.sqrt(this.dot(this));default:throw new RangeError(`unknown norm type: ${g}`)}}cumulativeSum(){let g=0;for(let h=0;h<this.rows;h++)for(let u=0;u<this.columns;u++)g+=this.get(h,u),this.set(h,u,g);return this}dot(g){ie.isMatrix(g)&&(g=g.to1DArray());let h=this.to1DArray();if(h.length!==g.length)throw new RangeError("vectors do not have the same size");let u=0;for(let d=0;d<h.length;d++)u+=h[d]*g[d];return u}mmul(g){g=P.checkMatrix(g);let h=this.rows,u=this.columns,d=g.columns,v=new P(h,d),q=new Float64Array(u);for(let O=0;O<d;O++){for(let T=0;T<u;T++)q[T]=g.get(T,O);for(let T=0;T<h;T++){let k=0;for(let B=0;B<u;B++)k+=this.get(T,B)*q[B];v.set(T,O,k)}}return v}mpow(g){if(!this.isSquare())throw new RangeError("Matrix must be square");if(!Number.isInteger(g)||g<0)throw new RangeError("Exponent must be a non-negative integer");let h=P.eye(this.rows),u=this;for(let d=g;d>1;d/=2)(d&1)!==0&&(h=h.mmul(u)),u=u.mmul(u);return h}strassen2x2(g){g=P.checkMatrix(g);let h=new P(2,2);const u=this.get(0,0),d=g.get(0,0),v=this.get(0,1),q=g.get(0,1),O=this.get(1,0),T=g.get(1,0),k=this.get(1,1),B=g.get(1,1),C=(u+k)*(d+B),W=(O+k)*d,ne=u*(q-B),U=k*(T-d),K=(u+v)*B,se=(O-u)*(d+q),L=(v-k)*(T+B),re=C+U-K+L,ce=ne+K,ve=W+U,ye=C-W+ne+se;return h.set(0,0,re),h.set(0,1,ce),h.set(1,0,ve),h.set(1,1,ye),h}strassen3x3(g){g=P.checkMatrix(g);let h=new P(3,3);const u=this.get(0,0),d=this.get(0,1),v=this.get(0,2),q=this.get(1,0),O=this.get(1,1),T=this.get(1,2),k=this.get(2,0),B=this.get(2,1),C=this.get(2,2),W=g.get(0,0),ne=g.get(0,1),U=g.get(0,2),K=g.get(1,0),se=g.get(1,1),L=g.get(1,2),re=g.get(2,0),ce=g.get(2,1),ve=g.get(2,2),ye=(u+d+v-q-O-B-C)*se,ke=(u-q)*(-ne+se),de=O*(-W+ne+K-se-L-re+ve),ge=(-u+q+O)*(W-ne+se),Re=(q+O)*(-W+ne),F=u*W,Q=(-u+k+B)*(W-U+L),oe=(-u+k)*(U-L),H=(k+B)*(-W+U),je=(u+d+v-O-T-k-B)*L,Se=B*(-W+U+K-se-L-re+ce),Ae=(-v+B+C)*(se+re-ce),Ce=(v-C)*(se-ce),Ke=v*re,dt=(B+C)*(-re+ce),Ge=(-v+O+T)*(L+re-ve),yt=(v-T)*(L-ve),Rt=(O+T)*(-re+ve),Ne=d*K,Xe=T*ce,st=q*U,ot=k*ne,Ue=C*ve,$x=F+Ke+Ne,Gx=ye+ge+Re+F+Ae+Ke+dt,Ux=F+Q+H+je+Ke+Ge+Rt,Vx=ke+de+ge+F+Ke+Ge+yt,Wx=ke+ge+Re+F+Xe,Yx=Ke+Ge+yt+Rt+st,Kx=F+Q+oe+Se+Ae+Ce+Ke,Xx=Ae+Ce+Ke+dt+ot,Zx=F+Q+oe+H+Ue;return h.set(0,0,$x),h.set(0,1,Gx),h.set(0,2,Ux),h.set(1,0,Vx),h.set(1,1,Wx),h.set(1,2,Yx),h.set(2,0,Kx),h.set(2,1,Xx),h.set(2,2,Zx),h}mmulStrassen(g){g=P.checkMatrix(g);let h=this.clone(),u=h.rows,d=h.columns,v=g.rows,q=g.columns;d!==v&&console.warn(`Multiplying ${u} x ${d} and ${v} x ${q} matrix: dimensions do not match.`);function O(C,W,ne){let U=C.rows,K=C.columns;if(U===W&&K===ne)return C;{let se=ie.zeros(W,ne);return se=se.setSubMatrix(C,0,0),se}}let T=Math.max(u,v),k=Math.max(d,q);h=O(h,T,k),g=O(g,T,k);function B(C,W,ne,U){if(ne<=512||U<=512)return C.mmul(W);ne%2===1&&U%2===1?(C=O(C,ne+1,U+1),W=O(W,ne+1,U+1)):ne%2===1?(C=O(C,ne+1,U),W=O(W,ne+1,U)):U%2===1&&(C=O(C,ne,U+1),W=O(W,ne,U+1));let K=parseInt(C.rows/2,10),se=parseInt(C.columns/2,10),L=C.subMatrix(0,K-1,0,se-1),re=W.subMatrix(0,K-1,0,se-1),ce=C.subMatrix(0,K-1,se,C.columns-1),ve=W.subMatrix(0,K-1,se,W.columns-1),ye=C.subMatrix(K,C.rows-1,0,se-1),ke=W.subMatrix(K,W.rows-1,0,se-1),de=C.subMatrix(K,C.rows-1,se,C.columns-1),ge=W.subMatrix(K,W.rows-1,se,W.columns-1),Re=B(ie.add(L,de),ie.add(re,ge),K,se),F=B(ie.add(ye,de),re,K,se),Q=B(L,ie.sub(ve,ge),K,se),oe=B(de,ie.sub(ke,re),K,se),H=B(ie.add(L,ce),ge,K,se),je=B(ie.sub(ye,L),ie.add(re,ve),K,se),Se=B(ie.sub(ce,de),ie.add(ke,ge),K,se),Ae=ie.add(Re,oe);Ae.sub(H),Ae.add(Se);let Ce=ie.add(Q,H),Ke=ie.add(F,oe),dt=ie.sub(Re,F);dt.add(Q),dt.add(je);let Ge=ie.zeros(2*Ae.rows,2*Ae.columns);return Ge=Ge.setSubMatrix(Ae,0,0),Ge=Ge.setSubMatrix(Ce,Ae.rows,0),Ge=Ge.setSubMatrix(Ke,0,Ae.columns),Ge=Ge.setSubMatrix(dt,Ae.rows,Ae.columns),Ge.subMatrix(0,ne-1,0,U-1)}return B(h,g,T,k)}scaleRows(g={}){if(typeof g!="object")throw new TypeError("options must be an object");const{min:h=0,max:u=1}=g;if(!Number.isFinite(h))throw new TypeError("min must be a number");if(!Number.isFinite(u))throw new TypeError("max must be a number");if(h>=u)throw new RangeError("min must be smaller than max");let d=new P(this.rows,this.columns);for(let v=0;v<this.rows;v++){const q=this.getRow(v);q.length>0&&r(q,{min:h,max:u,output:q}),d.setRow(v,q)}return d}scaleColumns(g={}){if(typeof g!="object")throw new TypeError("options must be an object");const{min:h=0,max:u=1}=g;if(!Number.isFinite(h))throw new TypeError("min must be a number");if(!Number.isFinite(u))throw new TypeError("max must be a number");if(h>=u)throw new RangeError("min must be smaller than max");let d=new P(this.rows,this.columns);for(let v=0;v<this.columns;v++){const q=this.getColumn(v);q.length&&r(q,{min:h,max:u,output:q}),d.setColumn(v,q)}return d}flipRows(){const g=Math.ceil(this.columns/2);for(let h=0;h<this.rows;h++)for(let u=0;u<g;u++){let d=this.get(h,u),v=this.get(h,this.columns-1-u);this.set(h,u,v),this.set(h,this.columns-1-u,d)}return this}flipColumns(){const g=Math.ceil(this.rows/2);for(let h=0;h<this.columns;h++)for(let u=0;u<g;u++){let d=this.get(u,h),v=this.get(this.rows-1-u,h);this.set(u,h,v),this.set(this.rows-1-u,h,d)}return this}kroneckerProduct(g){g=P.checkMatrix(g);let h=this.rows,u=this.columns,d=g.rows,v=g.columns,q=new P(h*d,u*v);for(let O=0;O<h;O++)for(let T=0;T<u;T++)for(let k=0;k<d;k++)for(let B=0;B<v;B++)q.set(d*O+k,v*T+B,this.get(O,T)*g.get(k,B));return q}kroneckerSum(g){if(g=P.checkMatrix(g),!this.isSquare()||!g.isSquare())throw new Error("Kronecker Sum needs two Square Matrices");let h=this.rows,u=g.rows,d=this.kroneckerProduct(P.eye(u,u)),v=P.eye(h,h).kroneckerProduct(g);return d.add(v)}transpose(){let g=new P(this.columns,this.rows);for(let h=0;h<this.rows;h++)for(let u=0;u<this.columns;u++)g.set(u,h,this.get(h,u));return g}sortRows(g=_e){for(let h=0;h<this.rows;h++)this.setRow(h,this.getRow(h).sort(g));return this}sortColumns(g=_e){for(let h=0;h<this.columns;h++)this.setColumn(h,this.getColumn(h).sort(g));return this}subMatrix(g,h,u,d){b(this,g,h,u,d);let v=new P(h-g+1,d-u+1);for(let q=g;q<=h;q++)for(let O=u;O<=d;O++)v.set(q-g,O-u,this.get(q,O));return v}subMatrixRow(g,h,u){if(h===void 0&&(h=0),u===void 0&&(u=this.columns-1),h>u||h<0||h>=this.columns||u<0||u>=this.columns)throw new RangeError("Argument out of range");let d=new P(g.length,u-h+1);for(let v=0;v<g.length;v++)for(let q=h;q<=u;q++){if(g[v]<0||g[v]>=this.rows)throw new RangeError(`Row index out of range: ${g[v]}`);d.set(v,q-h,this.get(g[v],q))}return d}subMatrixColumn(g,h,u){if(h===void 0&&(h=0),u===void 0&&(u=this.rows-1),h>u||h<0||h>=this.rows||u<0||u>=this.rows)throw new RangeError("Argument out of range");let d=new P(u-h+1,g.length);for(let v=0;v<g.length;v++)for(let q=h;q<=u;q++){if(g[v]<0||g[v]>=this.columns)throw new RangeError(`Column index out of range: ${g[v]}`);d.set(q-h,v,this.get(q,g[v]))}return d}setSubMatrix(g,h,u){if(g=P.checkMatrix(g),g.isEmpty())return this;let d=h+g.rows-1,v=u+g.columns-1;b(this,h,d,u,v);for(let q=0;q<g.rows;q++)for(let O=0;O<g.columns;O++)this.set(h+q,u+O,g.get(q,O));return this}selection(g,h){x(this,g),_(this,h);let u=new P(g.length,h.length);for(let d=0;d<g.length;d++){let v=g[d];for(let q=0;q<h.length;q++){let O=h[q];u.set(d,q,this.get(v,O))}}return u}trace(){let g=Math.min(this.rows,this.columns),h=0;for(let u=0;u<g;u++)h+=this.get(u,u);return h}clone(){return this.constructor.copy(this,new P(this.rows,this.columns))}static copy(g,h){for(const[u,d,v]of g.entries())h.set(u,d,v);return h}sum(g){switch(g){case"row":return S(this);case"column":return R(this);case void 0:return A(this);default:throw new Error(`invalid option: ${g}`)}}product(g){switch(g){case"row":return j(this);case"column":return I(this);case void 0:return D(this);default:throw new Error(`invalid option: ${g}`)}}mean(g){const h=this.sum(g);switch(g){case"row":{for(let u=0;u<this.rows;u++)h[u]/=this.columns;return h}case"column":{for(let u=0;u<this.columns;u++)h[u]/=this.rows;return h}case void 0:return h/this.size;default:throw new Error(`invalid option: ${g}`)}}variance(g,h={}){if(typeof g=="object"&&(h=g,g=void 0),typeof h!="object")throw new TypeError("options must be an object");const{unbiased:u=!0,mean:d=this.mean(g)}=h;if(typeof u!="boolean")throw new TypeError("unbiased must be a boolean");switch(g){case"row":{if(!e.isAnyArray(d))throw new TypeError("mean must be an array");return z(this,u,d)}case"column":{if(!e.isAnyArray(d))throw new TypeError("mean must be an array");return $(this,u,d)}case void 0:{if(typeof d!="number")throw new TypeError("mean must be a number");return V(this,u,d)}default:throw new Error(`invalid option: ${g}`)}}standardDeviation(g,h){typeof g=="object"&&(h=g,g=void 0);const u=this.variance(g,h);if(g===void 0)return Math.sqrt(u);for(let d=0;d<u.length;d++)u[d]=Math.sqrt(u[d]);return u}center(g,h={}){if(typeof g=="object"&&(h=g,g=void 0),typeof h!="object")throw new TypeError("options must be an object");const{center:u=this.mean(g)}=h;switch(g){case"row":{if(!e.isAnyArray(u))throw new TypeError("center must be an array");return Y(this,u),this}case"column":{if(!e.isAnyArray(u))throw new TypeError("center must be an array");return ee(this,u),this}case void 0:{if(typeof u!="number")throw new TypeError("center must be a number");return J(this,u),this}default:throw new Error(`invalid option: ${g}`)}}scale(g,h={}){if(typeof g=="object"&&(h=g,g=void 0),typeof h!="object")throw new TypeError("options must be an object");let u=h.scale;switch(g){case"row":{if(u===void 0)u=ae(this);else if(!e.isAnyArray(u))throw new TypeError("scale must be an array");return be(this,u),this}case"column":{if(u===void 0)u=Z(this);else if(!e.isAnyArray(u))throw new TypeError("scale must be an array");return ue(this,u),this}case void 0:{if(u===void 0)u=pe(this);else if(typeof u!="number")throw new TypeError("scale must be a number");return he(this,u),this}default:throw new Error(`invalid option: ${g}`)}}toString(g){return s(this,g)}[Symbol.iterator](){return this.entries()}*entries(){for(let g=0;g<this.rows;g++)for(let h=0;h<this.columns;h++)yield[g,h,this.get(g,h)]}*values(){for(let g=0;g<this.rows;g++)for(let h=0;h<this.columns;h++)yield this.get(g,h)}}ie.prototype.klass="Matrix",typeof Symbol<"u"&&(ie.prototype[Symbol.for("nodejs.util.inspect.custom")]=i);function _e(M,g){return M-g}function G(M){return M.every(g=>typeof g=="number")}ie.random=ie.rand,ie.randomInt=ie.randInt,ie.diagonal=ie.diag,ie.prototype.diagonal=ie.prototype.diag,ie.identity=ie.eye,ie.prototype.negate=ie.prototype.neg,ie.prototype.tensorProduct=ie.prototype.kroneckerProduct;const un=class un extends ie{constructor(h,u){super();Rc(this,wr);Ie(this,"data");if(un.isMatrix(h))Oc(this,wr,Ac).call(this,h.rows,h.columns),un.copy(h,this);else if(Number.isInteger(h)&&h>=0)Oc(this,wr,Ac).call(this,h,u);else if(e.isAnyArray(h)){const d=h;if(h=d.length,u=h?d[0].length:0,typeof u!="number")throw new TypeError("Data must be a 2D array with at least one element");this.data=[];for(let v=0;v<h;v++){if(d[v].length!==u)throw new RangeError("Inconsistent array dimensions");if(!G(d[v]))throw new TypeError("Input data contains non-numeric values");this.data.push(Float64Array.from(d[v]))}this.rows=h,this.columns=u}else throw new TypeError("First argument must be a positive number or an array")}set(h,u,d){return this.data[h][u]=d,this}get(h,u){return this.data[h][u]}removeRow(h){return l(this,h),this.data.splice(h,1),this.rows-=1,this}addRow(h,u){return u===void 0&&(u=h,h=this.rows),l(this,h,!0),u=Float64Array.from(m(this,u)),this.data.splice(h,0,u),this.rows+=1,this}removeColumn(h){p(this,h);for(let u=0;u<this.rows;u++){const d=new Float64Array(this.columns-1);for(let v=0;v<h;v++)d[v]=this.data[u][v];for(let v=h+1;v<this.columns;v++)d[v-1]=this.data[u][v];this.data[u]=d}return this.columns-=1,this}addColumn(h,u){typeof u>"u"&&(u=h,h=this.columns),p(this,h,!0),u=y(this,u);for(let d=0;d<this.rows;d++){const v=new Float64Array(this.columns+1);let q=0;for(;q<h;q++)v[q]=this.data[d][q];for(v[q++]=u[d];q<this.columns+1;q++)v[q]=this.data[d][q-1];this.data[d]=v}return this.columns+=1,this}};wr=new WeakSet,Ac=function(h,u){if(this.data=[],Number.isInteger(u)&&u>=0)for(let d=0;d<h;d++)this.data.push(new Float64Array(u));else throw new TypeError("nColumns must be a positive integer");this.rows=h,this.columns=u};let P=un;f(ie,P);const cn=class cn extends ie{constructor(h){super();Rc(this,He);if(P.isMatrix(h)){if(!h.isSymmetric())throw new TypeError("not symmetric data");fn(this,He,P.copy(h,new P(h.rows,h.rows)))}else if(Number.isInteger(h)&&h>=0)fn(this,He,new P(h,h));else if(fn(this,He,new P(h)),!this.isSymmetric())throw new TypeError("not symmetric data")}get size(){return gt(this,He).size}get rows(){return gt(this,He).rows}get columns(){return gt(this,He).columns}get diagonalSize(){return this.rows}static isSymmetricMatrix(h){return P.isMatrix(h)&&h.klassType==="SymmetricMatrix"}static zeros(h){return new this(h)}static ones(h){return new this(h).fill(1)}clone(){const h=new cn(this.diagonalSize);for(const[u,d,v]of this.upperRightEntries())h.set(u,d,v);return h}toMatrix(){return new P(this)}get(h,u){return gt(this,He).get(h,u)}set(h,u,d){return gt(this,He).set(h,u,d),gt(this,He).set(u,h,d),this}removeCross(h){return gt(this,He).removeRow(h),gt(this,He).removeColumn(h),this}addCross(h,u){u===void 0&&(u=h,h=this.diagonalSize);const d=u.slice();return d.splice(h,1),gt(this,He).addRow(h,d),gt(this,He).addColumn(h,u),this}applyMask(h){if(h.length!==this.diagonalSize)throw new RangeError("Mask size do not match with matrix size");const u=[];for(const[d,v]of h.entries())v||u.push(d);u.reverse();for(const d of u)this.removeCross(d);return this}toCompact(){const{diagonalSize:h}=this,u=new Array(h*(h+1)/2);for(let d=0,v=0,q=0;q<u.length;q++)u[q]=this.get(v,d),++d>=h&&(d=++v);return u}static fromCompact(h){const u=h.length,d=(Math.sqrt(8*u+1)-1)/2;if(!Number.isInteger(d))throw new TypeError(`This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(h)}`);const v=new cn(d);for(let q=0,O=0,T=0;T<u;T++)v.set(q,O,h[T]),++q>=d&&(q=++O);return v}*upperRightEntries(){for(let h=0,u=0;h<this.diagonalSize;void 0){const d=this.get(h,u);yield[h,u,d],++u>=this.diagonalSize&&(u=++h)}}*upperRightValues(){for(let h=0,u=0;h<this.diagonalSize;void 0)yield this.get(h,u),++u>=this.diagonalSize&&(u=++h)}};He=new WeakMap;let X=cn;X.prototype.klassType="SymmetricMatrix";class te extends X{static isDistanceMatrix(g){return X.isSymmetricMatrix(g)&&g.klassSubType==="DistanceMatrix"}constructor(g){if(super(g),!this.isDistance())throw new TypeError("Provided arguments do no produce a distance matrix")}set(g,h,u){return g===h&&(u=0),super.set(g,h,u)}addCross(g,h){return h===void 0&&(h=g,g=this.diagonalSize),h=h.slice(),h[g]=0,super.addCross(g,h)}toSymmetricMatrix(){return new X(this)}clone(){const g=new te(this.diagonalSize);for(const[h,u,d]of this.upperRightEntries())h!==u&&g.set(h,u,d);return g}toCompact(){const{diagonalSize:g}=this,h=(g-1)*g/2,u=new Array(h);for(let d=1,v=0,q=0;q<u.length;q++)u[q]=this.get(v,d),++d>=g&&(d=++v+1);return u}static fromCompact(g){const h=g.length;if(h===0)return new this(0);const u=(Math.sqrt(8*h+1)+1)/2;if(!Number.isInteger(u))throw new TypeError(`This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(g)}`);const d=new this(u);for(let v=1,q=0,O=0;O<h;O++)d.set(v,q,g[O]),++v>=u&&(v=++q+1);return d}}te.prototype.klassSubType="DistanceMatrix";class le extends ie{constructor(g,h,u){super(),this.matrix=g,this.rows=h,this.columns=u}}class xe extends le{constructor(g,h){p(g,h),super(g,g.rows,1),this.column=h}set(g,h,u){return this.matrix.set(g,this.column,u),this}get(g){return this.matrix.get(g,this.column)}}class Le extends le{constructor(g,h){_(g,h),super(g,g.rows,h.length),this.columnIndices=h}set(g,h,u){return this.matrix.set(g,this.columnIndices[h],u),this}get(g,h){return this.matrix.get(g,this.columnIndices[h])}}class Je extends le{constructor(g){super(g,g.rows,g.columns)}set(g,h,u){return this.matrix.set(g,this.columns-h-1,u),this}get(g,h){return this.matrix.get(g,this.columns-h-1)}}class tr extends le{constructor(g){super(g,g.rows,g.columns)}set(g,h,u){return this.matrix.set(this.rows-g-1,h,u),this}get(g,h){return this.matrix.get(this.rows-g-1,h)}}class Qe extends le{constructor(g,h){l(g,h),super(g,1,g.columns),this.row=h}set(g,h,u){return this.matrix.set(this.row,h,u),this}get(g,h){return this.matrix.get(this.row,h)}}class Ve extends le{constructor(g,h){x(g,h),super(g,h.length,g.columns),this.rowIndices=h}set(g,h,u){return this.matrix.set(this.rowIndices[g],h,u),this}get(g,h){return this.matrix.get(this.rowIndices[g],h)}}class Ee extends le{constructor(g,h,u){x(g,h),_(g,u),super(g,h.length,u.length),this.rowIndices=h,this.columnIndices=u}set(g,h,u){return this.matrix.set(this.rowIndices[g],this.columnIndices[h],u),this}get(g,h){return this.matrix.get(this.rowIndices[g],this.columnIndices[h])}}class Mt extends le{constructor(g,h,u,d,v){b(g,h,u,d,v),super(g,u-h+1,v-d+1),this.startRow=h,this.startColumn=d}set(g,h,u){return this.matrix.set(this.startRow+g,this.startColumn+h,u),this}get(g,h){return this.matrix.get(this.startRow+g,this.startColumn+h)}}class Me extends le{constructor(g){super(g,g.columns,g.rows)}set(g,h,u){return this.matrix.set(h,g,u),this}get(g,h){return this.matrix.get(h,g)}}class St extends ie{constructor(g,h={}){const{rows:u=1}=h;if(g.length%u!==0)throw new Error("the data length is not divisible by the number of rows");super(),this.rows=u,this.columns=g.length/u,this.data=g}set(g,h,u){let d=this._calculateIndex(g,h);return this.data[d]=u,this}get(g,h){let u=this._calculateIndex(g,h);return this.data[u]}_calculateIndex(g,h){return g*this.columns+h}}class ze extends ie{constructor(g){super(),this.data=g,this.rows=g.length,this.columns=g[0].length}set(g,h,u){return this.data[g][h]=u,this}get(g,h){return this.data[g][h]}}function Mc(M,g){if(e.isAnyArray(M))return M[0]&&e.isAnyArray(M[0])?new ze(M):new St(M,g);throw new Error("the argument is not an array")}class qt{constructor(g){g=ze.checkMatrix(g);let h=g.clone(),u=h.rows,d=h.columns,v=new Float64Array(u),q=1,O,T,k,B,C,W,ne,U,K;for(O=0;O<u;O++)v[O]=O;for(U=new Float64Array(u),T=0;T<d;T++){for(O=0;O<u;O++)U[O]=h.get(O,T);for(O=0;O<u;O++){for(K=Math.min(O,T),C=0,k=0;k<K;k++)C+=h.get(O,k)*U[k];U[O]-=C,h.set(O,T,U[O])}for(B=T,O=T+1;O<u;O++)Math.abs(U[O])>Math.abs(U[B])&&(B=O);if(B!==T){for(k=0;k<d;k++)W=h.get(B,k),h.set(B,k,h.get(T,k)),h.set(T,k,W);ne=v[B],v[B]=v[T],v[T]=ne,q=-q}if(T<u&&h.get(T,T)!==0)for(O=T+1;O<u;O++)h.set(O,T,h.get(O,T)/h.get(T,T))}this.LU=h,this.pivotVector=v,this.pivotSign=q}isSingular(){let g=this.LU,h=g.columns;for(let u=0;u<h;u++)if(g.get(u,u)===0)return!0;return!1}solve(g){g=P.checkMatrix(g);let h=this.LU;if(h.rows!==g.rows)throw new Error("Invalid matrix dimensions");if(this.isSingular())throw new Error("LU matrix is singular");let d=g.columns,v=g.subMatrixRow(this.pivotVector,0,d-1),q=h.columns,O,T,k;for(k=0;k<q;k++)for(O=k+1;O<q;O++)for(T=0;T<d;T++)v.set(O,T,v.get(O,T)-v.get(k,T)*h.get(O,k));for(k=q-1;k>=0;k--){for(T=0;T<d;T++)v.set(k,T,v.get(k,T)/h.get(k,k));for(O=0;O<k;O++)for(T=0;T<d;T++)v.set(O,T,v.get(O,T)-v.get(k,T)*h.get(O,k))}return v}get determinant(){let g=this.LU;if(!g.isSquare())throw new Error("Matrix must be square");let h=this.pivotSign,u=g.columns;for(let d=0;d<u;d++)h*=g.get(d,d);return h}get lowerTriangularMatrix(){let g=this.LU,h=g.rows,u=g.columns,d=new P(h,u);for(let v=0;v<h;v++)for(let q=0;q<u;q++)v>q?d.set(v,q,g.get(v,q)):v===q?d.set(v,q,1):d.set(v,q,0);return d}get upperTriangularMatrix(){let g=this.LU,h=g.rows,u=g.columns,d=new P(h,u);for(let v=0;v<h;v++)for(let q=0;q<u;q++)v<=q?d.set(v,q,g.get(v,q)):d.set(v,q,0);return d}get pivotPermutationVector(){return Array.from(this.pivotVector)}}function We(M,g){let h=0;return Math.abs(M)>Math.abs(g)?(h=g/M,Math.abs(M)*Math.sqrt(1+h*h)):g!==0?(h=M/g,Math.abs(g)*Math.sqrt(1+h*h)):0}class Ye{constructor(g){g=ze.checkMatrix(g);let h=g.clone(),u=g.rows,d=g.columns,v=new Float64Array(d),q,O,T,k;for(T=0;T<d;T++){let B=0;for(q=T;q<u;q++)B=We(B,h.get(q,T));if(B!==0){for(h.get(T,T)<0&&(B=-B),q=T;q<u;q++)h.set(q,T,h.get(q,T)/B);for(h.set(T,T,h.get(T,T)+1),O=T+1;O<d;O++){for(k=0,q=T;q<u;q++)k+=h.get(q,T)*h.get(q,O);for(k=-k/h.get(T,T),q=T;q<u;q++)h.set(q,O,h.get(q,O)+k*h.get(q,T))}}v[T]=-B}this.QR=h,this.Rdiag=v}solve(g){g=P.checkMatrix(g);let h=this.QR,u=h.rows;if(g.rows!==u)throw new Error("Matrix row dimensions must agree");if(!this.isFullRank())throw new Error("Matrix is rank deficient");let d=g.columns,v=g.clone(),q=h.columns,O,T,k,B;for(k=0;k<q;k++)for(T=0;T<d;T++){for(B=0,O=k;O<u;O++)B+=h.get(O,k)*v.get(O,T);for(B=-B/h.get(k,k),O=k;O<u;O++)v.set(O,T,v.get(O,T)+B*h.get(O,k))}for(k=q-1;k>=0;k--){for(T=0;T<d;T++)v.set(k,T,v.get(k,T)/this.Rdiag[k]);for(O=0;O<k;O++)for(T=0;T<d;T++)v.set(O,T,v.get(O,T)-v.get(k,T)*h.get(O,k))}return v.subMatrix(0,q-1,0,d-1)}isFullRank(){let g=this.QR.columns;for(let h=0;h<g;h++)if(this.Rdiag[h]===0)return!1;return!0}get upperTriangularMatrix(){let g=this.QR,h=g.columns,u=new P(h,h),d,v;for(d=0;d<h;d++)for(v=0;v<h;v++)d<v?u.set(d,v,g.get(d,v)):d===v?u.set(d,v,this.Rdiag[d]):u.set(d,v,0);return u}get orthogonalMatrix(){let g=this.QR,h=g.rows,u=g.columns,d=new P(h,u),v,q,O,T;for(O=u-1;O>=0;O--){for(v=0;v<h;v++)d.set(v,O,0);for(d.set(O,O,1),q=O;q<u;q++)if(g.get(O,O)!==0){for(T=0,v=O;v<h;v++)T+=g.get(v,O)*d.get(v,q);for(T=-T/g.get(O,O),v=O;v<h;v++)d.set(v,q,d.get(v,q)+T*g.get(v,O))}}return d}}class ht{constructor(g,h={}){if(g=ze.checkMatrix(g),g.isEmpty())throw new Error("Matrix must be non-empty");let u=g.rows,d=g.columns;const{computeLeftSingularVectors:v=!0,computeRightSingularVectors:q=!0,autoTranspose:O=!1}=h;let T=!!v,k=!!q,B=!1,C;if(u<d)if(!O)C=g.clone(),console.warn("Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose");else{C=g.transpose(),u=C.rows,d=C.columns,B=!0;let F=T;T=k,k=F}else C=g.clone();let W=Math.min(u,d),ne=Math.min(u+1,d),U=new Float64Array(ne),K=new P(u,W),se=new P(d,d),L=new Float64Array(d),re=new Float64Array(u),ce=new Float64Array(ne);for(let F=0;F<ne;F++)ce[F]=F;let ve=Math.min(u-1,d),ye=Math.max(0,Math.min(d-2,u)),ke=Math.max(ve,ye);for(let F=0;F<ke;F++){if(F<ve){U[F]=0;for(let Q=F;Q<u;Q++)U[F]=We(U[F],C.get(Q,F));if(U[F]!==0){C.get(F,F)<0&&(U[F]=-U[F]);for(let Q=F;Q<u;Q++)C.set(Q,F,C.get(Q,F)/U[F]);C.set(F,F,C.get(F,F)+1)}U[F]=-U[F]}for(let Q=F+1;Q<d;Q++){if(F<ve&&U[F]!==0){let oe=0;for(let H=F;H<u;H++)oe+=C.get(H,F)*C.get(H,Q);oe=-oe/C.get(F,F);for(let H=F;H<u;H++)C.set(H,Q,C.get(H,Q)+oe*C.get(H,F))}L[Q]=C.get(F,Q)}if(T&&F<ve)for(let Q=F;Q<u;Q++)K.set(Q,F,C.get(Q,F));if(F<ye){L[F]=0;for(let Q=F+1;Q<d;Q++)L[F]=We(L[F],L[Q]);if(L[F]!==0){L[F+1]<0&&(L[F]=0-L[F]);for(let Q=F+1;Q<d;Q++)L[Q]/=L[F];L[F+1]+=1}if(L[F]=-L[F],F+1<u&&L[F]!==0){for(let Q=F+1;Q<u;Q++)re[Q]=0;for(let Q=F+1;Q<u;Q++)for(let oe=F+1;oe<d;oe++)re[Q]+=L[oe]*C.get(Q,oe);for(let Q=F+1;Q<d;Q++){let oe=-L[Q]/L[F+1];for(let H=F+1;H<u;H++)C.set(H,Q,C.get(H,Q)+oe*re[H])}}if(k)for(let Q=F+1;Q<d;Q++)se.set(Q,F,L[Q])}}let de=Math.min(d,u+1);if(ve<d&&(U[ve]=C.get(ve,ve)),u<de&&(U[de-1]=0),ye+1<de&&(L[ye]=C.get(ye,de-1)),L[de-1]=0,T){for(let F=ve;F<W;F++){for(let Q=0;Q<u;Q++)K.set(Q,F,0);K.set(F,F,1)}for(let F=ve-1;F>=0;F--)if(U[F]!==0){for(let Q=F+1;Q<W;Q++){let oe=0;for(let H=F;H<u;H++)oe+=K.get(H,F)*K.get(H,Q);oe=-oe/K.get(F,F);for(let H=F;H<u;H++)K.set(H,Q,K.get(H,Q)+oe*K.get(H,F))}for(let Q=F;Q<u;Q++)K.set(Q,F,-K.get(Q,F));K.set(F,F,1+K.get(F,F));for(let Q=0;Q<F-1;Q++)K.set(Q,F,0)}else{for(let Q=0;Q<u;Q++)K.set(Q,F,0);K.set(F,F,1)}}if(k)for(let F=d-1;F>=0;F--){if(F<ye&&L[F]!==0)for(let Q=F+1;Q<d;Q++){let oe=0;for(let H=F+1;H<d;H++)oe+=se.get(H,F)*se.get(H,Q);oe=-oe/se.get(F+1,F);for(let H=F+1;H<d;H++)se.set(H,Q,se.get(H,Q)+oe*se.get(H,F))}for(let Q=0;Q<d;Q++)se.set(Q,F,0);se.set(F,F,1)}let ge=de-1,Re=Number.EPSILON;for(;de>0;){let F,Q;for(F=de-2;F>=-1&&F!==-1;F--){const oe=Number.MIN_VALUE+Re*Math.abs(U[F]+Math.abs(U[F+1]));if(Math.abs(L[F])<=oe||Number.isNaN(L[F])){L[F]=0;break}}if(F===de-2)Q=4;else{let oe;for(oe=de-1;oe>=F&&oe!==F;oe--){let H=(oe!==de?Math.abs(L[oe]):0)+(oe!==F+1?Math.abs(L[oe-1]):0);if(Math.abs(U[oe])<=Re*H){U[oe]=0;break}}oe===F?Q=3:oe===de-1?Q=1:(Q=2,F=oe)}switch(F++,Q){case 1:{let oe=L[de-2];L[de-2]=0;for(let H=de-2;H>=F;H--){let je=We(U[H],oe),Se=U[H]/je,Ae=oe/je;if(U[H]=je,H!==F&&(oe=-Ae*L[H-1],L[H-1]=Se*L[H-1]),k)for(let Ce=0;Ce<d;Ce++)je=Se*se.get(Ce,H)+Ae*se.get(Ce,de-1),se.set(Ce,de-1,-Ae*se.get(Ce,H)+Se*se.get(Ce,de-1)),se.set(Ce,H,je)}break}case 2:{let oe=L[F-1];L[F-1]=0;for(let H=F;H<de;H++){let je=We(U[H],oe),Se=U[H]/je,Ae=oe/je;if(U[H]=je,oe=-Ae*L[H],L[H]=Se*L[H],T)for(let Ce=0;Ce<u;Ce++)je=Se*K.get(Ce,H)+Ae*K.get(Ce,F-1),K.set(Ce,F-1,-Ae*K.get(Ce,H)+Se*K.get(Ce,F-1)),K.set(Ce,H,je)}break}case 3:{const oe=Math.max(Math.abs(U[de-1]),Math.abs(U[de-2]),Math.abs(L[de-2]),Math.abs(U[F]),Math.abs(L[F])),H=U[de-1]/oe,je=U[de-2]/oe,Se=L[de-2]/oe,Ae=U[F]/oe,Ce=L[F]/oe,Ke=((je+H)*(je-H)+Se*Se)/2,dt=H*Se*(H*Se);let Ge=0;(Ke!==0||dt!==0)&&(Ke<0?Ge=0-Math.sqrt(Ke*Ke+dt):Ge=Math.sqrt(Ke*Ke+dt),Ge=dt/(Ke+Ge));let yt=(Ae+H)*(Ae-H)+Ge,Rt=Ae*Ce;for(let Ne=F;Ne<de-1;Ne++){let Xe=We(yt,Rt);Xe===0&&(Xe=Number.MIN_VALUE);let st=yt/Xe,ot=Rt/Xe;if(Ne!==F&&(L[Ne-1]=Xe),yt=st*U[Ne]+ot*L[Ne],L[Ne]=st*L[Ne]-ot*U[Ne],Rt=ot*U[Ne+1],U[Ne+1]=st*U[Ne+1],k)for(let Ue=0;Ue<d;Ue++)Xe=st*se.get(Ue,Ne)+ot*se.get(Ue,Ne+1),se.set(Ue,Ne+1,-ot*se.get(Ue,Ne)+st*se.get(Ue,Ne+1)),se.set(Ue,Ne,Xe);if(Xe=We(yt,Rt),Xe===0&&(Xe=Number.MIN_VALUE),st=yt/Xe,ot=Rt/Xe,U[Ne]=Xe,yt=st*L[Ne]+ot*U[Ne+1],U[Ne+1]=-ot*L[Ne]+st*U[Ne+1],Rt=ot*L[Ne+1],L[Ne+1]=st*L[Ne+1],T&&Ne<u-1)for(let Ue=0;Ue<u;Ue++)Xe=st*K.get(Ue,Ne)+ot*K.get(Ue,Ne+1),K.set(Ue,Ne+1,-ot*K.get(Ue,Ne)+st*K.get(Ue,Ne+1)),K.set(Ue,Ne,Xe)}L[de-2]=yt;break}case 4:{if(U[F]<=0&&(U[F]=U[F]<0?-U[F]:0,k))for(let oe=0;oe<=ge;oe++)se.set(oe,F,-se.get(oe,F));for(;F<ge&&!(U[F]>=U[F+1]);){let oe=U[F];if(U[F]=U[F+1],U[F+1]=oe,k&&F<d-1)for(let H=0;H<d;H++)oe=se.get(H,F+1),se.set(H,F+1,se.get(H,F)),se.set(H,F,oe);if(T&&F<u-1)for(let H=0;H<u;H++)oe=K.get(H,F+1),K.set(H,F+1,K.get(H,F)),K.set(H,F,oe);F++}de--;break}}}if(B){let F=se;se=K,K=F}this.m=u,this.n=d,this.s=U,this.U=K,this.V=se}solve(g){let h=g,u=this.threshold,d=this.s.length,v=P.zeros(d,d);for(let W=0;W<d;W++)Math.abs(this.s[W])<=u?v.set(W,W,0):v.set(W,W,1/this.s[W]);let q=this.U,O=this.rightSingularVectors,T=O.mmul(v),k=O.rows,B=q.rows,C=P.zeros(k,B);for(let W=0;W<k;W++)for(let ne=0;ne<B;ne++){let U=0;for(let K=0;K<d;K++)U+=T.get(W,K)*q.get(ne,K);C.set(W,ne,U)}return C.mmul(h)}solveForDiagonal(g){return this.solve(P.diag(g))}inverse(){let g=this.V,h=this.threshold,u=g.rows,d=g.columns,v=new P(u,this.s.length);for(let B=0;B<u;B++)for(let C=0;C<d;C++)Math.abs(this.s[C])>h&&v.set(B,C,g.get(B,C)/this.s[C]);let q=this.U,O=q.rows,T=q.columns,k=new P(u,O);for(let B=0;B<u;B++)for(let C=0;C<O;C++){let W=0;for(let ne=0;ne<T;ne++)W+=v.get(B,ne)*q.get(C,ne);k.set(B,C,W)}return k}get condition(){return this.s[0]/this.s[Math.min(this.m,this.n)-1]}get norm2(){return this.s[0]}get rank(){let g=Math.max(this.m,this.n)*this.s[0]*Number.EPSILON,h=0,u=this.s;for(let d=0,v=u.length;d<v;d++)u[d]>g&&h++;return h}get diagonal(){return Array.from(this.s)}get threshold(){return Number.EPSILON/2*Math.max(this.m,this.n)*this.s[0]}get leftSingularVectors(){return this.U}get rightSingularVectors(){return this.V}get diagonalMatrix(){return P.diag(this.s)}}function rr(M,g=!1){return M=ze.checkMatrix(M),g?new ht(M).inverse():rn(M,P.eye(M.rows))}function rn(M,g,h=!1){return M=ze.checkMatrix(M),g=ze.checkMatrix(g),h?new ht(M).solve(g):M.isSquare()?new qt(M).solve(g):new Ye(M).solve(g)}function $t(M){if(M=P.checkMatrix(M),M.isSquare()){if(M.columns===0)return 1;let g,h,u,d;if(M.columns===2)return g=M.get(0,0),h=M.get(0,1),u=M.get(1,0),d=M.get(1,1),g*d-h*u;if(M.columns===3){let v,q,O;return v=new Ee(M,[1,2],[1,2]),q=new Ee(M,[1,2],[0,2]),O=new Ee(M,[1,2],[0,1]),g=M.get(0,0),h=M.get(0,1),u=M.get(0,2),g*$t(v)-h*$t(q)+u*$t(O)}else return new qt(M).determinant}else throw Error("determinant can only be calculated for a square matrix")}function kt(M,g){let h=[];for(let u=0;u<M;u++)u!==g&&h.push(u);return h}function nn(M,g,h,u=1e-9,d=1e-9){if(M>d)return new Array(g.rows+1).fill(0);{let v=g.addRow(h,[0]);for(let q=0;q<v.rows;q++)Math.abs(v.get(q,0))<u&&v.set(q,0,0);return v.to1DArray()}}function sn(M,g={}){const{thresholdValue:h=1e-9,thresholdError:u=1e-9}=g;M=P.checkMatrix(M);let d=M.rows,v=new P(d,d);for(let q=0;q<d;q++){let O=P.columnVector(M.getRow(q)),T=M.subMatrixRow(kt(d,q)).transpose(),B=new ht(T).solve(O),C=P.sub(O,T.mmul(B)).abs().max();v.setRow(q,nn(C,B,q,h,u))}return v}function Sc(M,g=Number.EPSILON){if(M=P.checkMatrix(M),M.isEmpty())return M.transpose();let h=new ht(M,{autoTranspose:!0}),u=h.leftSingularVectors,d=h.rightSingularVectors,v=h.diagonal;for(let q=0;q<v.length;q++)Math.abs(v[q])>g?v[q]=1/v[q]:v[q]=0;return d.mmul(P.diag(v).mmul(u.transpose()))}function on(M,g=M,h={}){M=new P(M);let u=!1;if(typeof g=="object"&&!P.isMatrix(g)&&!e.isAnyArray(g)?(h=g,g=M,u=!0):g=new P(g),M.rows!==g.rows)throw new TypeError("Both matrices must have the same number of rows");const{center:d=!0}=h;d&&(M=M.center("column"),u||(g=g.center("column")));const v=M.transpose().mmul(g);for(let q=0;q<v.rows;q++)for(let O=0;O<v.columns;O++)v.set(q,O,v.get(q,O)*(1/(M.rows-1)));return v}function vt(M,g=M,h={}){M=new P(M);let u=!1;if(typeof g=="object"&&!P.isMatrix(g)&&!e.isAnyArray(g)?(h=g,g=M,u=!0):g=new P(g),M.rows!==g.rows)throw new TypeError("Both matrices must have the same number of rows");const{center:d=!0,scale:v=!0}=h;d&&(M.center("column"),u||g.center("column")),v&&(M.scale("column"),u||g.scale("column"));const q=M.standardDeviation("column",{unbiased:!0}),O=u?q:g.standardDeviation("column",{unbiased:!0}),T=M.transpose().mmul(g);for(let k=0;k<T.rows;k++)for(let B=0;B<T.columns;B++)T.set(k,B,T.get(k,B)*(1/(q[k]*O[B]))*(1/(M.rows-1)));return T}class mt{constructor(g,h={}){const{assumeSymmetric:u=!1}=h;if(g=ze.checkMatrix(g),!g.isSquare())throw new Error("Matrix is not a square matrix");if(g.isEmpty())throw new Error("Matrix must be non-empty");let d=g.columns,v=new P(d,d),q=new Float64Array(d),O=new Float64Array(d),T=g,k,B,C=!1;if(u?C=!0:C=g.isSymmetric(),C){for(k=0;k<d;k++)for(B=0;B<d;B++)v.set(k,B,T.get(k,B));Dx(d,O,q,v),zx(d,O,q,v)}else{let W=new P(d,d),ne=new Float64Array(d);for(B=0;B<d;B++)for(k=0;k<d;k++)W.set(k,B,T.get(k,B));Fx(d,W,ne,v),Bx(d,O,q,v,W)}this.n=d,this.e=O,this.d=q,this.V=v}get realEigenvalues(){return Array.from(this.d)}get imaginaryEigenvalues(){return Array.from(this.e)}get eigenvectorMatrix(){return this.V}get diagonalMatrix(){let g=this.n,h=this.e,u=this.d,d=new P(g,g),v,q;for(v=0;v<g;v++){for(q=0;q<g;q++)d.set(v,q,0);d.set(v,v,u[v]),h[v]>0?d.set(v,v+1,h[v]):h[v]<0&&d.set(v,v-1,h[v])}return d}}function Dx(M,g,h,u){let d,v,q,O,T,k,B,C;for(T=0;T<M;T++)h[T]=u.get(M-1,T);for(O=M-1;O>0;O--){for(C=0,q=0,k=0;k<O;k++)C=C+Math.abs(h[k]);if(C===0)for(g[O]=h[O-1],T=0;T<O;T++)h[T]=u.get(O-1,T),u.set(O,T,0),u.set(T,O,0);else{for(k=0;k<O;k++)h[k]/=C,q+=h[k]*h[k];for(d=h[O-1],v=Math.sqrt(q),d>0&&(v=-v),g[O]=C*v,q=q-d*v,h[O-1]=d-v,T=0;T<O;T++)g[T]=0;for(T=0;T<O;T++){for(d=h[T],u.set(T,O,d),v=g[T]+u.get(T,T)*d,k=T+1;k<=O-1;k++)v+=u.get(k,T)*h[k],g[k]+=u.get(k,T)*d;g[T]=v}for(d=0,T=0;T<O;T++)g[T]/=q,d+=g[T]*h[T];for(B=d/(q+q),T=0;T<O;T++)g[T]-=B*h[T];for(T=0;T<O;T++){for(d=h[T],v=g[T],k=T;k<=O-1;k++)u.set(k,T,u.get(k,T)-(d*g[k]+v*h[k]));h[T]=u.get(O-1,T),u.set(O,T,0)}}h[O]=q}for(O=0;O<M-1;O++){if(u.set(M-1,O,u.get(O,O)),u.set(O,O,1),q=h[O+1],q!==0){for(k=0;k<=O;k++)h[k]=u.get(k,O+1)/q;for(T=0;T<=O;T++){for(v=0,k=0;k<=O;k++)v+=u.get(k,O+1)*u.get(k,T);for(k=0;k<=O;k++)u.set(k,T,u.get(k,T)-v*h[k])}}for(k=0;k<=O;k++)u.set(k,O+1,0)}for(T=0;T<M;T++)h[T]=u.get(M-1,T),u.set(M-1,T,0);u.set(M-1,M-1,1),g[0]=0}function zx(M,g,h,u){let d,v,q,O,T,k,B,C,W,ne,U,K,se,L,re,ce;for(q=1;q<M;q++)g[q-1]=g[q];g[M-1]=0;let ve=0,ye=0,ke=Number.EPSILON;for(k=0;k<M;k++){for(ye=Math.max(ye,Math.abs(h[k])+Math.abs(g[k])),B=k;B<M&&!(Math.abs(g[B])<=ke*ye);)B++;if(B>k)do{for(d=h[k],C=(h[k+1]-d)/(2*g[k]),W=We(C,1),C<0&&(W=-W),h[k]=g[k]/(C+W),h[k+1]=g[k]*(C+W),ne=h[k+1],v=d-h[k],q=k+2;q<M;q++)h[q]-=v;for(ve=ve+v,C=h[B],U=1,K=U,se=U,L=g[k+1],re=0,ce=0,q=B-1;q>=k;q--)for(se=K,K=U,ce=re,d=U*g[q],v=U*C,W=We(C,g[q]),g[q+1]=re*W,re=g[q]/W,U=C/W,C=U*h[q]-re*d,h[q+1]=v+re*(U*d+re*h[q]),T=0;T<M;T++)v=u.get(T,q+1),u.set(T,q+1,re*u.get(T,q)+U*v),u.set(T,q,U*u.get(T,q)-re*v);C=-re*ce*se*L*g[k]/ne,g[k]=re*C,h[k]=U*C}while(Math.abs(g[k])>ke*ye);h[k]=h[k]+ve,g[k]=0}for(q=0;q<M-1;q++){for(T=q,C=h[q],O=q+1;O<M;O++)h[O]<C&&(T=O,C=h[O]);if(T!==q)for(h[T]=h[q],h[q]=C,O=0;O<M;O++)C=u.get(O,q),u.set(O,q,u.get(O,T)),u.set(O,T,C)}}function Fx(M,g,h,u){let d=0,v=M-1,q,O,T,k,B,C,W;for(C=d+1;C<=v-1;C++){for(W=0,k=C;k<=v;k++)W=W+Math.abs(g.get(k,C-1));if(W!==0){for(T=0,k=v;k>=C;k--)h[k]=g.get(k,C-1)/W,T+=h[k]*h[k];for(O=Math.sqrt(T),h[C]>0&&(O=-O),T=T-h[C]*O,h[C]=h[C]-O,B=C;B<M;B++){for(q=0,k=v;k>=C;k--)q+=h[k]*g.get(k,B);for(q=q/T,k=C;k<=v;k++)g.set(k,B,g.get(k,B)-q*h[k])}for(k=0;k<=v;k++){for(q=0,B=v;B>=C;B--)q+=h[B]*g.get(k,B);for(q=q/T,B=C;B<=v;B++)g.set(k,B,g.get(k,B)-q*h[B])}h[C]=W*h[C],g.set(C,C-1,W*O)}}for(k=0;k<M;k++)for(B=0;B<M;B++)u.set(k,B,k===B?1:0);for(C=v-1;C>=d+1;C--)if(g.get(C,C-1)!==0){for(k=C+1;k<=v;k++)h[k]=g.get(k,C-1);for(B=C;B<=v;B++){for(O=0,k=C;k<=v;k++)O+=h[k]*u.get(k,B);for(O=O/h[C]/g.get(C,C-1),k=C;k<=v;k++)u.set(k,B,u.get(k,B)+O*h[k])}}}function Bx(M,g,h,u,d){let v=M-1,q=0,O=M-1,T=Number.EPSILON,k=0,B=0,C=0,W=0,ne=0,U=0,K=0,se=0,L,re,ce,ve,ye,ke,de,ge,Re,F,Q,oe,H,je,Se;for(L=0;L<M;L++)for((L<q||L>O)&&(h[L]=d.get(L,L),g[L]=0),re=Math.max(L-1,0);re<M;re++)B=B+Math.abs(d.get(L,re));for(;v>=q;){for(ve=v;ve>q&&(U=Math.abs(d.get(ve-1,ve-1))+Math.abs(d.get(ve,ve)),U===0&&(U=B),!(Math.abs(d.get(ve,ve-1))<T*U));)ve--;if(ve===v)d.set(v,v,d.get(v,v)+k),h[v]=d.get(v,v),g[v]=0,v--,se=0;else if(ve===v-1){if(de=d.get(v,v-1)*d.get(v-1,v),C=(d.get(v-1,v-1)-d.get(v,v))/2,W=C*C+de,K=Math.sqrt(Math.abs(W)),d.set(v,v,d.get(v,v)+k),d.set(v-1,v-1,d.get(v-1,v-1)+k),ge=d.get(v,v),W>=0){for(K=C>=0?C+K:C-K,h[v-1]=ge+K,h[v]=h[v-1],K!==0&&(h[v]=ge-de/K),g[v-1]=0,g[v]=0,ge=d.get(v,v-1),U=Math.abs(ge)+Math.abs(K),C=ge/U,W=K/U,ne=Math.sqrt(C*C+W*W),C=C/ne,W=W/ne,re=v-1;re<M;re++)K=d.get(v-1,re),d.set(v-1,re,W*K+C*d.get(v,re)),d.set(v,re,W*d.get(v,re)-C*K);for(L=0;L<=v;L++)K=d.get(L,v-1),d.set(L,v-1,W*K+C*d.get(L,v)),d.set(L,v,W*d.get(L,v)-C*K);for(L=q;L<=O;L++)K=u.get(L,v-1),u.set(L,v-1,W*K+C*u.get(L,v)),u.set(L,v,W*u.get(L,v)-C*K)}else h[v-1]=ge+C,h[v]=ge+C,g[v-1]=K,g[v]=-K;v=v-2,se=0}else{if(ge=d.get(v,v),Re=0,de=0,ve<v&&(Re=d.get(v-1,v-1),de=d.get(v,v-1)*d.get(v-1,v)),se===10){for(k+=ge,L=q;L<=v;L++)d.set(L,L,d.get(L,L)-ge);U=Math.abs(d.get(v,v-1))+Math.abs(d.get(v-1,v-2)),ge=Re=.75*U,de=-.4375*U*U}if(se===30&&(U=(Re-ge)/2,U=U*U+de,U>0)){for(U=Math.sqrt(U),Re<ge&&(U=-U),U=ge-de/((Re-ge)/2+U),L=q;L<=v;L++)d.set(L,L,d.get(L,L)-U);k+=U,ge=Re=de=.964}for(se=se+1,ye=v-2;ye>=ve&&(K=d.get(ye,ye),ne=ge-K,U=Re-K,C=(ne*U-de)/d.get(ye+1,ye)+d.get(ye,ye+1),W=d.get(ye+1,ye+1)-K-ne-U,ne=d.get(ye+2,ye+1),U=Math.abs(C)+Math.abs(W)+Math.abs(ne),C=C/U,W=W/U,ne=ne/U,!(ye===ve||Math.abs(d.get(ye,ye-1))*(Math.abs(W)+Math.abs(ne))<T*(Math.abs(C)*(Math.abs(d.get(ye-1,ye-1))+Math.abs(K)+Math.abs(d.get(ye+1,ye+1))))));)ye--;for(L=ye+2;L<=v;L++)d.set(L,L-2,0),L>ye+2&&d.set(L,L-3,0);for(ce=ye;ce<=v-1&&(je=ce!==v-1,ce!==ye&&(C=d.get(ce,ce-1),W=d.get(ce+1,ce-1),ne=je?d.get(ce+2,ce-1):0,ge=Math.abs(C)+Math.abs(W)+Math.abs(ne),ge!==0&&(C=C/ge,W=W/ge,ne=ne/ge)),ge!==0);ce++)if(U=Math.sqrt(C*C+W*W+ne*ne),C<0&&(U=-U),U!==0){for(ce!==ye?d.set(ce,ce-1,-U*ge):ve!==ye&&d.set(ce,ce-1,-d.get(ce,ce-1)),C=C+U,ge=C/U,Re=W/U,K=ne/U,W=W/C,ne=ne/C,re=ce;re<M;re++)C=d.get(ce,re)+W*d.get(ce+1,re),je&&(C=C+ne*d.get(ce+2,re),d.set(ce+2,re,d.get(ce+2,re)-C*K)),d.set(ce,re,d.get(ce,re)-C*ge),d.set(ce+1,re,d.get(ce+1,re)-C*Re);for(L=0;L<=Math.min(v,ce+3);L++)C=ge*d.get(L,ce)+Re*d.get(L,ce+1),je&&(C=C+K*d.get(L,ce+2),d.set(L,ce+2,d.get(L,ce+2)-C*ne)),d.set(L,ce,d.get(L,ce)-C),d.set(L,ce+1,d.get(L,ce+1)-C*W);for(L=q;L<=O;L++)C=ge*u.get(L,ce)+Re*u.get(L,ce+1),je&&(C=C+K*u.get(L,ce+2),u.set(L,ce+2,u.get(L,ce+2)-C*ne)),u.set(L,ce,u.get(L,ce)-C),u.set(L,ce+1,u.get(L,ce+1)-C*W)}}}if(B!==0){for(v=M-1;v>=0;v--)if(C=h[v],W=g[v],W===0)for(ve=v,d.set(v,v,1),L=v-1;L>=0;L--){for(de=d.get(L,L)-C,ne=0,re=ve;re<=v;re++)ne=ne+d.get(L,re)*d.get(re,v);if(g[L]<0)K=de,U=ne;else if(ve=L,g[L]===0?d.set(L,v,de!==0?-ne/de:-ne/(T*B)):(ge=d.get(L,L+1),Re=d.get(L+1,L),W=(h[L]-C)*(h[L]-C)+g[L]*g[L],ke=(ge*U-K*ne)/W,d.set(L,v,ke),d.set(L+1,v,Math.abs(ge)>Math.abs(K)?(-ne-de*ke)/ge:(-U-Re*ke)/K)),ke=Math.abs(d.get(L,v)),T*ke*ke>1)for(re=L;re<=v;re++)d.set(re,v,d.get(re,v)/ke)}else if(W<0)for(ve=v-1,Math.abs(d.get(v,v-1))>Math.abs(d.get(v-1,v))?(d.set(v-1,v-1,W/d.get(v,v-1)),d.set(v-1,v,-(d.get(v,v)-C)/d.get(v,v-1))):(Se=an(0,-d.get(v-1,v),d.get(v-1,v-1)-C,W),d.set(v-1,v-1,Se[0]),d.set(v-1,v,Se[1])),d.set(v,v-1,0),d.set(v,v,1),L=v-2;L>=0;L--){for(F=0,Q=0,re=ve;re<=v;re++)F=F+d.get(L,re)*d.get(re,v-1),Q=Q+d.get(L,re)*d.get(re,v);if(de=d.get(L,L)-C,g[L]<0)K=de,ne=F,U=Q;else if(ve=L,g[L]===0?(Se=an(-F,-Q,de,W),d.set(L,v-1,Se[0]),d.set(L,v,Se[1])):(ge=d.get(L,L+1),Re=d.get(L+1,L),oe=(h[L]-C)*(h[L]-C)+g[L]*g[L]-W*W,H=(h[L]-C)*2*W,oe===0&&H===0&&(oe=T*B*(Math.abs(de)+Math.abs(W)+Math.abs(ge)+Math.abs(Re)+Math.abs(K))),Se=an(ge*ne-K*F+W*Q,ge*U-K*Q-W*F,oe,H),d.set(L,v-1,Se[0]),d.set(L,v,Se[1]),Math.abs(ge)>Math.abs(K)+Math.abs(W)?(d.set(L+1,v-1,(-F-de*d.get(L,v-1)+W*d.get(L,v))/ge),d.set(L+1,v,(-Q-de*d.get(L,v)-W*d.get(L,v-1))/ge)):(Se=an(-ne-Re*d.get(L,v-1),-U-Re*d.get(L,v),K,W),d.set(L+1,v-1,Se[0]),d.set(L+1,v,Se[1]))),ke=Math.max(Math.abs(d.get(L,v-1)),Math.abs(d.get(L,v))),T*ke*ke>1)for(re=L;re<=v;re++)d.set(re,v-1,d.get(re,v-1)/ke),d.set(re,v,d.get(re,v)/ke)}for(L=0;L<M;L++)if(L<q||L>O)for(re=L;re<M;re++)u.set(L,re,d.get(L,re));for(re=M-1;re>=q;re--)for(L=q;L<=O;L++){for(K=0,ce=q;ce<=Math.min(re,O);ce++)K=K+u.get(L,ce)*d.get(ce,re);u.set(L,re,K)}}}function an(M,g,h,u){let d,v;return Math.abs(h)>Math.abs(u)?(d=u/h,v=h+d*u,[(M+d*g)/v,(g-d*M)/v]):(d=h/u,v=u+d*h,[(d*M+g)/v,(d*g-M)/v])}class _0{constructor(g){if(g=ze.checkMatrix(g),!g.isSymmetric())throw new Error("Matrix is not symmetric");let h=g,u=h.rows,d=new P(u,u),v=!0,q,O,T;for(O=0;O<u;O++){let k=0;for(T=0;T<O;T++){let B=0;for(q=0;q<T;q++)B+=d.get(T,q)*d.get(O,q);B=(h.get(O,T)-B)/d.get(T,T),d.set(O,T,B),k=k+B*B}for(k=h.get(O,O)-k,v&&(v=k>0),d.set(O,O,Math.sqrt(Math.max(k,0))),T=O+1;T<u;T++)d.set(O,T,0)}this.L=d,this.positiveDefinite=v}isPositiveDefinite(){return this.positiveDefinite}solve(g){g=ze.checkMatrix(g);let h=this.L,u=h.rows;if(g.rows!==u)throw new Error("Matrix dimensions do not match");if(this.isPositiveDefinite()===!1)throw new Error("Matrix is not positive definite");let d=g.columns,v=g.clone(),q,O,T;for(T=0;T<u;T++)for(O=0;O<d;O++){for(q=0;q<T;q++)v.set(T,O,v.get(T,O)-v.get(q,O)*h.get(T,q));v.set(T,O,v.get(T,O)/h.get(T,T))}for(T=u-1;T>=0;T--)for(O=0;O<d;O++){for(q=T+1;q<u;q++)v.set(T,O,v.get(T,O)-v.get(q,O)*h.get(q,T));v.set(T,O,v.get(T,O)/h.get(T,T))}return v}get lowerTriangularMatrix(){return this.L}}class E0{constructor(g,h={}){g=ze.checkMatrix(g);let{Y:u}=h;const{scaleScores:d=!1,maxIterations:v=1e3,terminationCriteria:q=1e-10}=h;let O;if(u){if(e.isAnyArray(u)&&typeof u[0]=="number"?u=P.columnVector(u):u=ze.checkMatrix(u),u.rows!==g.rows)throw new Error("Y should have the same number of rows as X");O=u.getColumnVector(0)}else O=g.getColumnVector(0);let T=1,k,B,C,W;for(let ne=0;ne<v&&T>q;ne++)C=g.transpose().mmul(O).div(O.transpose().mmul(O).get(0,0)),C=C.div(C.norm()),k=g.mmul(C).div(C.transpose().mmul(C).get(0,0)),ne>0&&(T=k.clone().sub(W).pow(2).sum()),W=k.clone(),u?(B=u.transpose().mmul(k).div(k.transpose().mmul(k).get(0,0)),B=B.div(B.norm()),O=u.mmul(B).div(B.transpose().mmul(B).get(0,0))):O=k;if(u){let ne=g.transpose().mmul(k).div(k.transpose().mmul(k).get(0,0));ne=ne.div(ne.norm());let U=g.clone().sub(k.clone().mmul(ne.transpose())),K=O.transpose().mmul(k).div(k.transpose().mmul(k).get(0,0)),se=u.clone().sub(k.clone().mulS(K.get(0,0)).mmul(B.transpose()));this.t=k,this.p=ne.transpose(),this.w=C.transpose(),this.q=B,this.u=O,this.s=k.transpose().mmul(k),this.xResidual=U,this.yResidual=se,this.betas=K}else this.w=C.transpose(),this.s=k.transpose().mmul(k).sqrt(),d?this.t=k.clone().div(this.s.get(0,0)):this.t=k,this.xResidual=g.sub(k.mmul(C.transpose()))}}return we.AbstractMatrix=ie,we.CHO=_0,we.CholeskyDecomposition=_0,we.DistanceMatrix=te,we.EVD=mt,we.EigenvalueDecomposition=mt,we.LU=qt,we.LuDecomposition=qt,we.Matrix=P,we.MatrixColumnSelectionView=Le,we.MatrixColumnView=xe,we.MatrixFlipColumnView=Je,we.MatrixFlipRowView=tr,we.MatrixRowSelectionView=Ve,we.MatrixRowView=Qe,we.MatrixSelectionView=Ee,we.MatrixSubView=Mt,we.MatrixTransposeView=Me,we.NIPALS=E0,we.Nipals=E0,we.QR=Ye,we.QrDecomposition=Ye,we.SVD=ht,we.SingularValueDecomposition=ht,we.SymmetricMatrix=X,we.WrapperMatrix1D=St,we.WrapperMatrix2D=ze,we.correlation=vt,we.covariance=on,we.default=P,we.determinant=$t,we.inverse=rr,we.linearDependencies=sn,we.pseudoInverse=Sc,we.solve=rn,we.wrap=Mc,we}var Ar=Bw(),Tf=Of(Ar);const At=Ar.Matrix,kf=Ar.SingularValueDecomposition;Tf.Matrix?Tf.Matrix:Ar.Matrix;const $w={center:[0,0],linkDistance:50};class jf{constructor(r={}){this.options=r,this.id="mds",this.options=Object.assign(Object.assign({},$w),r)}execute(r,t){return fe(this,void 0,void 0,function*(){return this.genericMDSLayout(!1,r,t)})}assign(r,t){return fe(this,void 0,void 0,function*(){yield this.genericMDSLayout(!0,r,t)})}genericMDSLayout(r,t,n){return fe(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{center:s=[0,0],linkDistance:a=50}=i,o=t.getAllNodes(),c=t.getAllEdges();if(!(o!=null&&o.length)||o.length===1)return Pt(t,r,s);const f=wf({nodes:o,edges:c}),l=yf(f);Gw(l);const p=Cy(l,a),m=Uw(p),y=[];return m.forEach((_,b)=>{const w=it(o[b]);w.data.x=_[0]+s[0],w.data.y=_[1]+s[1],y.push(w)}),r&&y.forEach(_=>t.mergeNodeData(_.id,{x:_.data.x,y:_.data.y})),{nodes:y,edges:c}})}}const Gw=e=>{let r=-999999;e.forEach(t=>{t.forEach(n=>{n!==1/0&&r<n&&(r=n)})}),e.forEach((t,n)=>{t.forEach((i,s)=>{i===1/0&&(e[n][s]=r)})})},Uw=e=>{const t=At.mul(At.pow(e,2),-.5),n=t.mean("row"),i=t.mean("column"),s=t.mean();t.add(s).subRowVector(n).subColumnVector(i);const a=new kf(t),o=At.sqrt(a.diagonalMatrix).diagonal();return a.leftSingularVectors.toJSON().map(c=>At.mul([c],[o]).toJSON()[0].splice(0,2))};function Cf(e){return!!e.tick&&!!e.stop}const Vw={gForce:!0,force2:!0,d3force:!0,fruchterman:!0,forceAtlas2:!0,force:!0,"graphin-force":!0},Ww={center:[0,0],comboPadding:10,treeKey:"combo"};class Yw{constructor(r={}){this.options=r,this.id="comboCombined",this.options=Object.assign(Object.assign({},Ww),r)}execute(r,t){return fe(this,void 0,void 0,function*(){return this.genericComboCombinedLayout(!1,r,t)})}assign(r,t){return fe(this,void 0,void 0,function*(){yield this.genericComboCombinedLayout(!0,r,t)})}genericComboCombinedLayout(r,t,n){return fe(this,void 0,void 0,function*(){const i=this.initVals(Object.assign(Object.assign({},this.options),n)),{center:s,treeKey:a,outerLayout:o}=i,c=t.getAllNodes().filter(I=>!I.data._isCombo),f=t.getAllNodes().filter(I=>I.data._isCombo),l=t.getAllEdges(),p=c==null?void 0:c.length;if(!p||p===1)return Pt(t,r,s);const m=[],y=new Map;c.forEach(I=>{y.set(I.id,I)});const x=new Map;f.forEach(I=>{x.set(I.id,I)});const _=new Map,b=this.getInnerGraphs(t,a,y,x,l,i,_);yield Promise.all(b);const w=new Map,E=[],N=new Map;let S=!0;t.getRoots(a).forEach(I=>{const D=_.get(I.id),z=x.get(I.id)||y.get(I.id),$={id:I.id,data:Object.assign(Object.assign({},I.data),{x:D.data.x||z.data.x,y:D.data.y||z.data.y,fx:D.data.fx||z.data.fx,fy:D.data.fy||z.data.fy,mass:D.data.mass||z.data.mass,size:D.data.size})};E.push($),w.set(I.id,!0),!isNaN($.data.x)&&$.data.x!==0&&!isNaN($.data.y)&&$.data.y!==0?S=!1:($.data.x=Math.random()*100,$.data.y=Math.random()*100),Nn(t,[I],V=>{V.id!==I.id&&N.set(V.id,I.id)},"TB",a)});const R=[];l.forEach(I=>{const D=N.get(I.source)||I.source,z=N.get(I.target)||I.target;D!==z&&w.has(D)&&w.has(z)&&R.push({id:I.id,source:D,target:z,data:{}})});let A;if(E!=null&&E.length){if(E.length===1)E[0].data.x=s[0],E[0].data.y=s[1];else{const I=new Be({nodes:E,edges:R}),D=o||new Sf;S&&Vw[D.id]&&(yield(E.length<100?new jf:new Rn).assign(I));const z=Object.assign({center:s,kg:5,preventOverlap:!0,animate:!1},D.id==="force"?{gravity:1,factor:4,linkDistance:($,V,Y)=>{const ee=Math.max(...V.data.size)||32,J=Math.max(...Y.data.size)||32;return ee/2+J/2+200}}:{});A=yield Pf(D,I,z)}_.forEach(I=>{var D;const z=A.nodes.find(Y=>Y.id===I.id);if(z){const{x:Y,y:ee}=z.data;I.data.visited=!0,I.data.x=Y,I.data.y=ee,m.push({id:I.id,data:{x:Y,y:ee}})}const{x:$,y:V}=I.data;(D=I.data.nodes)===null||D===void 0||D.forEach(Y=>{m.push({id:Y.id,data:{x:Y.data.x+$,y:Y.data.y+V}})})}),_.forEach(({data:I})=>{const{x:D,y:z,visited:$,nodes:V}=I;V==null||V.forEach(Y=>{if(!$){const ee=m.find(J=>J.id===Y.id);ee.data.x+=D||0,ee.data.y+=z||0}})})}return r&&m.forEach(I=>{t.mergeNodeData(I.id,{x:I.data.x,y:I.data.y})}),{nodes:m,edges:l}})}initVals(r){const t=Object.assign({},r),{nodeSize:n,spacing:i,comboPadding:s}=r;let a,o;if(me(i)?o=()=>i:wt(i)?o=i:o=()=>0,t.spacing=o,!n)a=f=>{const l=o(f);return f.size?bt(f.size)?((f.size[0]>f.size[1]?f.size[0]:f.size[1])+l)/2:Ut(f.size)?((f.size.width>f.size.height?f.size.width:f.size.height)+l)/2:(f.size+l)/2:32+l/2};else if(wt(n))a=f=>{const l=n(f),p=o(f);return bt(f.size)?((f.size[0]>f.size[1]?f.size[0]:f.size[1])+p)/2:((l||32)+p)/2};else if(bt(n)){const l=(n[0]>n[1]?n[0]:n[1])/2;a=p=>l+o(p)/2}else{const f=n/2;a=l=>f+o(l)/2}t.nodeSize=a;let c;return me(s)?c=()=>s:bt(s)?c=()=>Math.max.apply(null,s):wt(s)?c=s:c=()=>0,t.comboPadding=c,t}getInnerGraphs(r,t,n,i,s,a,o){const{nodeSize:c,comboPadding:f,spacing:l,innerLayout:p}=a,m=p||new Rn({}),y={center:[0,0],preventOverlap:!0,nodeSpacing:l},x=[],_=b=>{let w=(f==null?void 0:f(b))||10;return bt(w)&&(w=Math.max(...w)),{size:w?[w*2,w*2]:[30,30],padding:w}};return r.getRoots(t).forEach(b=>{o.set(b.id,{id:b.id,data:{nodes:[],size:_(b).size}});let w=Promise.resolve();Nn(r,[b],E=>{var N;if(!E.data._isCombo)return;const{size:S,padding:R}=_(E);if(!(!((N=r.getChildren(E.id,t))===null||N===void 0)&&N.length))o.set(E.id,{id:E.id,data:Object.assign(Object.assign({},E.data),{size:S})});else{const A=o.get(E.id);o.set(E.id,{id:E.id,data:Object.assign({nodes:[]},A==null?void 0:A.data)});const j=new Map,I=r.getChildren(E.id,t).map($=>{if($.data._isCombo)return o.has($.id)||o.set($.id,{id:$.id,data:Object.assign({},$.data)}),j.set($.id,!0),o.get($.id);const V=n.get($.id)||i.get($.id);return j.set($.id,!0),{id:$.id,data:Object.assign(Object.assign({},V.data),$.data)}}),D={nodes:I,edges:s.filter($=>j.has($.source)&&j.has($.target))};let z=1/0;I.forEach($=>{var V;let{size:Y}=$.data;Y||(Y=((V=o.get($.id))===null||V===void 0?void 0:V.data.size)||(c==null?void 0:c($))||[30,30]),me(Y)&&(Y=[Y,Y]);const[ee,J]=Y;z>ee&&(z=ee),z>J&&(z=J),$.data.size=Y}),w=w.then(()=>fe(this,void 0,void 0,function*(){const $=new Be(D);yield Pf(m,$,y,!0);const{minX:V,minY:Y,maxX:ee,maxY:J}=Py(I),ae={x:(ee+V)/2,y:(J+Y)/2};D.nodes.forEach(Z=>{Z.data.x-=ae.x,Z.data.y-=ae.y});const be=[Math.max(ee-V,z)+R*2,Math.max(J-Y,z)+R*2];o.get(E.id).data.size=be,o.get(E.id).data.nodes=I}))}return!0},"BT",t),x.push(w)}),x}}function Pf(e,r,t,n){var i;return fe(this,void 0,void 0,function*(){return Cf(e)?(e.execute(r,t),e.stop(),e.tick((i=t.iterations)!==null&&i!==void 0?i:300)):n?yield e.assign(r,t):yield e.execute(r,t)})}function Kw(e,r){var t,n=1;e==null&&(e=0),r==null&&(r=0);function i(){var s,a=t.length,o,c=0,f=0;for(s=0;s<a;++s)o=t[s],c+=o.x,f+=o.y;for(c=(c/a-e)*n,f=(f/a-r)*n,s=0;s<a;++s)o=t[s],o.x-=c,o.y-=f}return i.initialize=function(s){t=s},i.x=function(s){return arguments.length?(e=+s,i):e},i.y=function(s){return arguments.length?(r=+s,i):r},i.strength=function(s){return arguments.length?(n=+s,i):n},i}function $e(e){return function(){return e}}function It(e){return(e()-.5)*1e-6}function Xw(e){return e.x+e.vx}function Zw(e){return e.y+e.vy}function Jw(e){var r,t,n,i=1,s=1;typeof e!="function"&&(e=$e(e==null?1:+e));function a(){for(var f,l=r.length,p,m,y,x,_,b,w=0;w<s;++w)for(p=Wt(r,Xw,Zw).visitAfter(o),f=0;f<l;++f)m=r[f],_=t[m.index],b=_*_,y=m.x+m.vx,x=m.y+m.vy,p.visit(E);function E(N,S,R,A,j){var I=N.data,D=N.r,z=_+D;if(I){if(I.index>m.index){var $=y-I.x-I.vx,V=x-I.y-I.vy,Y=$*$+V*V;Y<z*z&&($===0&&($=It(n),Y+=$*$),V===0&&(V=It(n),Y+=V*V),Y=(z-(Y=Math.sqrt(Y)))/Y*i,m.vx+=($*=Y)*(z=(D*=D)/(b+D)),m.vy+=(V*=Y)*z,I.vx-=$*(z=1-z),I.vy-=V*z)}return}return S>y+z||A<y-z||R>x+z||j<x-z}}function o(f){if(f.data)return f.r=t[f.data.index];for(var l=f.r=0;l<4;++l)f[l]&&f[l].r>f.r&&(f.r=f[l].r)}function c(){if(r){var f,l=r.length,p;for(t=new Array(l),f=0;f<l;++f)p=r[f],t[p.index]=+e(p,f,r)}}return a.initialize=function(f,l){r=f,n=l,c()},a.iterations=function(f){return arguments.length?(s=+f,a):s},a.strength=function(f){return arguments.length?(i=+f,a):i},a.radius=function(f){return arguments.length?(e=typeof f=="function"?f:$e(+f),c(),a):e},a}function Qw(e){return e.index}function Lf(e,r){var t=e.get(r);if(!t)throw new Error("node not found: "+r);return t}function Hw(e){var r=Qw,t=p,n,i=$e(30),s,a,o,c,f,l=1;e==null&&(e=[]);function p(b){return 1/Math.min(o[b.source.index],o[b.target.index])}function m(b){for(var w=0,E=e.length;w<l;++w)for(var N=0,S,R,A,j,I,D,z;N<E;++N)S=e[N],R=S.source,A=S.target,j=A.x+A.vx-R.x-R.vx||It(f),I=A.y+A.vy-R.y-R.vy||It(f),D=Math.sqrt(j*j+I*I),D=(D-s[N])/D*b*n[N],j*=D,I*=D,A.vx-=j*(z=c[N]),A.vy-=I*z,R.vx+=j*(z=1-z),R.vy+=I*z}function y(){if(a){var b,w=a.length,E=e.length,N=new Map(a.map((R,A)=>[r(R,A,a),R])),S;for(b=0,o=new Array(w);b<E;++b)S=e[b],S.index=b,typeof S.source!="object"&&(S.source=Lf(N,S.source)),typeof S.target!="object"&&(S.target=Lf(N,S.target)),o[S.source.index]=(o[S.source.index]||0)+1,o[S.target.index]=(o[S.target.index]||0)+1;for(b=0,c=new Array(E);b<E;++b)S=e[b],c[b]=o[S.source.index]/(o[S.source.index]+o[S.target.index]);n=new Array(E),x(),s=new Array(E),_()}}function x(){if(a)for(var b=0,w=e.length;b<w;++b)n[b]=+t(e[b],b,e)}function _(){if(a)for(var b=0,w=e.length;b<w;++b)s[b]=+i(e[b],b,e)}return m.initialize=function(b,w){a=b,f=w,y()},m.links=function(b){return arguments.length?(e=b,y(),m):e},m.id=function(b){return arguments.length?(r=b,m):r},m.iterations=function(b){return arguments.length?(l=+b,m):l},m.strength=function(b){return arguments.length?(t=typeof b=="function"?b:$e(+b),x(),m):t},m.distance=function(b){return arguments.length?(i=typeof b=="function"?b:$e(+b),_(),m):i},m}var e1={value:()=>{}};function kn(){for(var e=0,r=arguments.length,t={},n;e<r;++e){if(!(n=arguments[e]+"")||n in t||/[\s.]/.test(n))throw new Error("illegal type: "+n);t[n]=[]}return new Ir(t)}function Ir(e){this._=e}function t1(e,r){return e.trim().split(/^|\s+/).map(function(t){var n="",i=t.indexOf(".");if(i>=0&&(n=t.slice(i+1),t=t.slice(0,i)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}})}Ir.prototype=kn.prototype={constructor:Ir,on:function(e,r){var t=this._,n=t1(e+"",t),i,s=-1,a=n.length;if(arguments.length<2){for(;++s<a;)if((i=(e=n[s]).type)&&(i=r1(t[i],e.name)))return i;return}if(r!=null&&typeof r!="function")throw new Error("invalid callback: "+r);for(;++s<a;)if(i=(e=n[s]).type)t[i]=Df(t[i],e.name,r);else if(r==null)for(i in t)t[i]=Df(t[i],e.name,null);return this},copy:function(){var e={},r=this._;for(var t in r)e[t]=r[t].slice();return new Ir(e)},call:function(e,r){if((i=arguments.length-2)>0)for(var t=new Array(i),n=0,i,s;n<i;++n)t[n]=arguments[n+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(s=this._[e],n=0,i=s.length;n<i;++n)s[n].value.apply(r,t)},apply:function(e,r,t){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var n=this._[e],i=0,s=n.length;i<s;++i)n[i].value.apply(r,t)}};function r1(e,r){for(var t=0,n=e.length,i;t<n;++t)if((i=e[t]).name===r)return i.value}function Df(e,r,t){for(var n=0,i=e.length;n<i;++n)if(e[n].name===r){e[n]=e1,e=e.slice(0,n).concat(e.slice(n+1));break}return t!=null&&e.push({name:r,value:t}),e}var Yt=0,ar=0,ur=0,zf=1e3,Tr,cr,kr=0,Lt=0,jr=0,fr=typeof performance=="object"&&performance.now?performance:Date,Ff=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Bf(){return Lt||(Ff(n1),Lt=fr.now()+jr)}function n1(){Lt=0}function jn(){this._call=this._time=this._next=null}jn.prototype=Cn.prototype={constructor:jn,restart:function(e,r,t){if(typeof e!="function")throw new TypeError("callback is not a function");t=(t==null?Bf():+t)+(r==null?0:+r),!this._next&&cr!==this&&(cr?cr._next=this:Tr=this,cr=this),this._call=e,this._time=t,Pn()},stop:function(){this._call&&(this._call=null,this._time=1/0,Pn())}};function Cn(e,r,t){var n=new jn;return n.restart(e,r,t),n}function i1(){Bf(),++Yt;for(var e=Tr,r;e;)(r=Lt-e._time)>=0&&e._call.call(void 0,r),e=e._next;--Yt}function $f(){Lt=(kr=fr.now())+jr,Yt=ar=0;try{i1()}finally{Yt=0,o1(),Lt=0}}function s1(){var e=fr.now(),r=e-kr;r>zf&&(jr-=r,kr=e)}function o1(){for(var e,r=Tr,t,n=1/0;r;)r._call?(n>r._time&&(n=r._time),e=r,r=r._next):(t=r._next,r._next=null,r=e?e._next=t:Tr=t);cr=e,Pn(n)}function Pn(e){if(!Yt){ar&&(ar=clearTimeout(ar));var r=e-Lt;r>24?(e<1/0&&(ar=setTimeout($f,e-fr.now()-jr)),ur&&(ur=clearInterval(ur))):(ur||(kr=fr.now(),ur=setInterval(s1,zf)),Yt=1,Ff($f))}}const a1=1664525,u1=1013904223,Gf=4294967296;function c1(){let e=1;return()=>(e=(a1*e+u1)%Gf)/Gf}function f1(e){return e.x}function l1(e){return e.y}var h1=10,d1=Math.PI*(3-Math.sqrt(5));function g1(e){var r,t=1,n=.001,i=1-Math.pow(n,1/300),s=0,a=.6,o=new Map,c=Cn(p),f=kn("tick","end"),l=c1();e==null&&(e=[]);function p(){m(),f.call("tick",r),t<n&&(c.stop(),f.call("end",r))}function m(_){var b,w=e.length,E;_===void 0&&(_=1);for(var N=0;N<_;++N)for(t+=(s-t)*i,o.forEach(function(S){S(t)}),b=0;b<w;++b)E=e[b],E.fx==null?E.x+=E.vx*=a:(E.x=E.fx,E.vx=0),E.fy==null?E.y+=E.vy*=a:(E.y=E.fy,E.vy=0);return r}function y(){for(var _=0,b=e.length,w;_<b;++_){if(w=e[_],w.index=_,w.fx!=null&&(w.x=w.fx),w.fy!=null&&(w.y=w.fy),isNaN(w.x)||isNaN(w.y)){var E=h1*Math.sqrt(.5+_),N=_*d1;w.x=E*Math.cos(N),w.y=E*Math.sin(N)}(isNaN(w.vx)||isNaN(w.vy))&&(w.vx=w.vy=0)}}function x(_){return _.initialize&&_.initialize(e,l),_}return y(),r={tick:m,restart:function(){return c.restart(p),r},stop:function(){return c.stop(),r},nodes:function(_){return arguments.length?(e=_,y(),o.forEach(x),r):e},alpha:function(_){return arguments.length?(t=+_,r):t},alphaMin:function(_){return arguments.length?(n=+_,r):n},alphaDecay:function(_){return arguments.length?(i=+_,r):+i},alphaTarget:function(_){return arguments.length?(s=+_,r):s},velocityDecay:function(_){return arguments.length?(a=1-_,r):1-a},randomSource:function(_){return arguments.length?(l=_,o.forEach(x),r):l},force:function(_,b){return arguments.length>1?(b==null?o.delete(_):o.set(_,x(b)),r):o.get(_)},find:function(_,b,w){var E=0,N=e.length,S,R,A,j,I;for(w==null?w=1/0:w*=w,E=0;E<N;++E)j=e[E],S=_-j.x,R=b-j.y,A=S*S+R*R,A<w&&(I=j,w=A);return I},on:function(_,b){return arguments.length>1?(f.on(_,b),r):f.on(_)}}}function p1(){var e,r,t,n,i=$e(-30),s,a=1,o=1/0,c=.81;function f(y){var x,_=e.length,b=Wt(e,f1,l1).visitAfter(p);for(n=y,x=0;x<_;++x)r=e[x],b.visit(m)}function l(){if(e){var y,x=e.length,_;for(s=new Array(x),y=0;y<x;++y)_=e[y],s[_.index]=+i(_,y,e)}}function p(y){var x=0,_,b,w=0,E,N,S;if(y.length){for(E=N=S=0;S<4;++S)(_=y[S])&&(b=Math.abs(_.value))&&(x+=_.value,w+=b,E+=b*_.x,N+=b*_.y);y.x=E/w,y.y=N/w}else{_=y,_.x=_.data.x,_.y=_.data.y;do x+=s[_.data.index];while(_=_.next)}y.value=x}function m(y,x,_,b){if(!y.value)return!0;var w=y.x-r.x,E=y.y-r.y,N=b-x,S=w*w+E*E;if(N*N/c<S)return S<o&&(w===0&&(w=It(t),S+=w*w),E===0&&(E=It(t),S+=E*E),S<a&&(S=Math.sqrt(a*S)),r.vx+=w*y.value*n/S,r.vy+=E*y.value*n/S),!0;if(y.length||S>=o)return;(y.data!==r||y.next)&&(w===0&&(w=It(t),S+=w*w),E===0&&(E=It(t),S+=E*E),S<a&&(S=Math.sqrt(a*S)));do y.data!==r&&(N=s[y.data.index]*n/S,r.vx+=w*N,r.vy+=E*N);while(y=y.next)}return f.initialize=function(y,x){e=y,t=x,l()},f.strength=function(y){return arguments.length?(i=typeof y=="function"?y:$e(+y),l(),f):i},f.distanceMin=function(y){return arguments.length?(a=y*y,f):Math.sqrt(a)},f.distanceMax=function(y){return arguments.length?(o=y*y,f):Math.sqrt(o)},f.theta=function(y){return arguments.length?(c=y*y,f):Math.sqrt(c)},f}function v1(e,r,t){var n,i=$e(.1),s,a;typeof e!="function"&&(e=$e(+e)),r==null&&(r=0),t==null&&(t=0);function o(f){for(var l=0,p=n.length;l<p;++l){var m=n[l],y=m.x-r||1e-6,x=m.y-t||1e-6,_=Math.sqrt(y*y+x*x),b=(a[l]-_)*s[l]*f/_;m.vx+=y*b,m.vy+=x*b}}function c(){if(n){var f,l=n.length;for(s=new Array(l),a=new Array(l),f=0;f<l;++f)a[f]=+e(n[f],f,n),s[f]=isNaN(a[f])?0:+i(n[f],f,n)}}return o.initialize=function(f){n=f,c()},o.strength=function(f){return arguments.length?(i=typeof f=="function"?f:$e(+f),c(),o):i},o.radius=function(f){return arguments.length?(e=typeof f=="function"?f:$e(+f),c(),o):e},o.x=function(f){return arguments.length?(r=+f,o):r},o.y=function(f){return arguments.length?(t=+f,o):t},o}function m1(e){var r=$e(.1),t,n,i;typeof e!="function"&&(e=$e(e==null?0:+e));function s(o){for(var c=0,f=t.length,l;c<f;++c)l=t[c],l.vx+=(i[c]-l.x)*n[c]*o}function a(){if(t){var o,c=t.length;for(n=new Array(c),i=new Array(c),o=0;o<c;++o)n[o]=isNaN(i[o]=+e(t[o],o,t))?0:+r(t[o],o,t)}}return s.initialize=function(o){t=o,a()},s.strength=function(o){return arguments.length?(r=typeof o=="function"?o:$e(+o),a(),s):r},s.x=function(o){return arguments.length?(e=typeof o=="function"?o:$e(+o),a(),s):e},s}function y1(e){var r=$e(.1),t,n,i;typeof e!="function"&&(e=$e(e==null?0:+e));function s(o){for(var c=0,f=t.length,l;c<f;++c)l=t[c],l.vy+=(i[c]-l.y)*n[c]*o}function a(){if(t){var o,c=t.length;for(n=new Array(c),i=new Array(c),o=0;o<c;++o)n[o]=isNaN(i[o]=+e(t[o],o,t))?0:+r(t[o],o,t)}}return s.initialize=function(o){t=o,a()},s.strength=function(o){return arguments.length?(r=typeof o=="function"?o:$e(+o),a(),s):r},s.y=function(o){return arguments.length?(e=typeof o=="function"?o:$e(+o),a(),s):e},s}class Uf{constructor(r){this.id="d3-force",this.config={inputNodeAttrs:["x","y","vx","vy","fx","fy"],outputNodeAttrs:["x","y","vx","vy"],simulationAttrs:["alpha","alphaMin","alphaDecay","alphaTarget","velocityDecay","randomSource"]},this.forceMap={link:Hw,manyBody:p1,center:Kw,collide:Jw,radial:v1,x:m1,y:y1},this.options={link:{id:t=>t.id},manyBody:{},center:{x:0,y:0}},this.context={options:{},assign:!1,nodes:[],edges:[]},Fc(this.options,r),this.options.forceSimulation&&(this.simulation=this.options.forceSimulation)}execute(r,t){return fe(this,void 0,void 0,function*(){return this.genericLayout(!1,r,t)})}assign(r,t){return fe(this,void 0,void 0,function*(){yield this.genericLayout(!0,r,t)})}stop(){this.simulation.stop()}tick(r){return this.simulation.tick(r),this.getResult()}restart(){this.simulation.restart()}setFixedPosition(r,t){const n=this.context.nodes.find(i=>i.id===r);n&&t.forEach((i,s)=>{if(typeof i=="number"||i===null){const a=["fx","fy","fz"][s];n[a]=i}})}getOptions(r){var t,n;const i=Fc({},this.options,r);return i.collide&&((t=i.collide)===null||t===void 0?void 0:t.radius)===void 0&&(i.collide=i.collide||{},i.collide.radius=(n=i.nodeSize)!==null&&n!==void 0?n:10),i.iterations===void 0&&(i.link&&i.link.iterations===void 0&&(i.iterations=i.link.iterations),i.collide&&i.collide.iterations===void 0&&(i.iterations=i.collide.iterations)),this.context.options=i,i}genericLayout(r,t,n){var i;return fe(this,void 0,void 0,function*(){const s=this.getOptions(n),a=t.getAllNodes().map(({id:l,data:p})=>Object.assign(Object.assign({id:l},p),Bc(p.data,this.config.inputNodeAttrs))),o=t.getAllEdges().map(l=>Object.assign({},l));Object.assign(this.context,{assign:r,nodes:a,edges:o,graph:t});const c=new Promise(l=>{this.resolver=l}),f=this.setSimulation(s);return f.nodes(a),(i=f.force("link"))===null||i===void 0||i.links(o),c})}getResult(){const{assign:r,nodes:t,edges:n,graph:i}=this.context,s=t.map(o=>({id:o.id,data:Object.assign(Object.assign({},o.data),Bc(o,this.config.outputNodeAttrs))})),a=n.map(({id:o,source:c,target:f,data:l})=>({id:o,source:typeof c=="object"?c.id:c,target:typeof f=="object"?f.id:f,data:l}));return r&&s.forEach(o=>i.mergeNodeData(o.id,o.data)),{nodes:s,edges:a}}initSimulation(){return g1()}setSimulation(r){const t=this.simulation||this.options.forceSimulation||this.initSimulation();return this.simulation||(this.simulation=t.on("tick",()=>{var n;return(n=r.onTick)===null||n===void 0?void 0:n.call(r,this.getResult())}).on("end",()=>{var n;return(n=this.resolver)===null||n===void 0?void 0:n.call(this,this.getResult())})),Vf(t,this.config.simulationAttrs.map(n=>[n,r[n]])),Object.entries(this.forceMap).forEach(([n,i])=>{const s=n;if(r[n]){let a=t.force(s);a||(a=i(),t.force(s,a)),Vf(a,Object.entries(r[s]))}else t.force(s,null)}),t}}const Vf=(e,r)=>r.reduce((t,[n,i])=>!t[n]||i===void 0?t:t[n].call(e,i),e);function w1(e,r,t){var n,i=1;e==null&&(e=0),r==null&&(r=0),t==null&&(t=0);function s(){var a,o=n.length,c,f=0,l=0,p=0;for(a=0;a<o;++a)c=n[a],f+=c.x||0,l+=c.y||0,p+=c.z||0;for(f=(f/o-e)*i,l=(l/o-r)*i,p=(p/o-t)*i,a=0;a<o;++a)c=n[a],f&&(c.x-=f),l&&(c.y-=l),p&&(c.z-=p)}return s.initialize=function(a){n=a},s.x=function(a){return arguments.length?(e=+a,s):e},s.y=function(a){return arguments.length?(r=+a,s):r},s.z=function(a){return arguments.length?(t=+a,s):t},s.strength=function(a){return arguments.length?(i=+a,s):i},s}function b1(e){const r=+this._x.call(null,e);return Wf(this.cover(r),r,e)}function Wf(e,r,t){if(isNaN(r))return e;var n,i=e._root,s={data:t},a=e._x0,o=e._x1,c,f,l,p,m;if(!i)return e._root=s,e;for(;i.length;)if((l=r>=(c=(a+o)/2))?a=c:o=c,n=i,!(i=i[p=+l]))return n[p]=s,e;if(f=+e._x.call(null,i.data),r===f)return s.next=i,n?n[p]=s:e._root=s,e;do n=n?n[p]=new Array(2):e._root=new Array(2),(l=r>=(c=(a+o)/2))?a=c:o=c;while((p=+l)==(m=+(f>=c)));return n[m]=i,n[p]=s,e}function _1(e){Array.isArray(e)||(e=Array.from(e));const r=e.length,t=new Float64Array(r);let n=1/0,i=-1/0;for(let s=0,a;s<r;++s)isNaN(a=+this._x.call(null,e[s]))||(t[s]=a,a<n&&(n=a),a>i&&(i=a));if(n>i)return this;this.cover(n).cover(i);for(let s=0;s<r;++s)Wf(this,t[s],e[s]);return this}function E1(e){if(isNaN(e=+e))return this;var r=this._x0,t=this._x1;if(isNaN(r))t=(r=Math.floor(e))+1;else{for(var n=t-r||1,i=this._root,s,a;r>e||e>=t;)switch(a=+(e<r),s=new Array(2),s[a]=i,i=s,n*=2,a){case 0:t=r+n;break;case 1:r=t-n;break}this._root&&this._root.length&&(this._root=i)}return this._x0=r,this._x1=t,this}function x1(){var e=[];return this.visit(function(r){if(!r.length)do e.push(r.data);while(r=r.next)}),e}function N1(e){return arguments.length?this.cover(+e[0][0]).cover(+e[1][0]):isNaN(this._x0)?void 0:[[this._x0],[this._x1]]}function _t(e,r,t){this.node=e,this.x0=r,this.x1=t}function M1(e,r){var t,n=this._x0,i,s,a=this._x1,o=[],c=this._root,f,l;for(c&&o.push(new _t(c,n,a)),r==null?r=1/0:(n=e-r,a=e+r);f=o.pop();)if(!(!(c=f.node)||(i=f.x0)>a||(s=f.x1)<n))if(c.length){var p=(i+s)/2;o.push(new _t(c[1],p,s),new _t(c[0],i,p)),(l=+(e>=p))&&(f=o[o.length-1],o[o.length-1]=o[o.length-1-l],o[o.length-1-l]=f)}else{var m=Math.abs(e-+this._x.call(null,c.data));m<r&&(r=m,n=e-m,a=e+m,t=c.data)}return t}function S1(e){if(isNaN(c=+this._x.call(null,e)))return this;var r,t=this._root,n,i,s,a=this._x0,o=this._x1,c,f,l,p,m;if(!t)return this;if(t.length)for(;;){if((l=c>=(f=(a+o)/2))?a=f:o=f,r=t,!(t=t[p=+l]))return this;if(!t.length)break;r[p+1&1]&&(n=r,m=p)}for(;t.data!==e;)if(i=t,!(t=t.next))return this;return(s=t.next)&&delete t.next,i?(s?i.next=s:delete i.next,this):r?(s?r[p]=s:delete r[p],(t=r[0]||r[1])&&t===(r[1]||r[0])&&!t.length&&(n?n[m]=t:this._root=t),this):(this._root=s,this)}function q1(e){for(var r=0,t=e.length;r<t;++r)this.remove(e[r]);return this}function R1(){return this._root}function O1(){var e=0;return this.visit(function(r){if(!r.length)do++e;while(r=r.next)}),e}function A1(e){var r=[],t,n=this._root,i,s,a;for(n&&r.push(new _t(n,this._x0,this._x1));t=r.pop();)if(!e(n=t.node,s=t.x0,a=t.x1)&&n.length){var o=(s+a)/2;(i=n[1])&&r.push(new _t(i,o,a)),(i=n[0])&&r.push(new _t(i,s,o))}return this}function I1(e){var r=[],t=[],n;for(this._root&&r.push(new _t(this._root,this._x0,this._x1));n=r.pop();){var i=n.node;if(i.length){var s,a=n.x0,o=n.x1,c=(a+o)/2;(s=i[0])&&r.push(new _t(s,a,c)),(s=i[1])&&r.push(new _t(s,c,o))}t.push(n)}for(;n=t.pop();)e(n.node,n.x0,n.x1);return this}function T1(e){return e[0]}function k1(e){return arguments.length?(this._x=e,this):this._x}function Ln(e,r){var t=new Dn(r??T1,NaN,NaN);return e==null?t:t.addAll(e)}function Dn(e,r,t){this._x=e,this._x0=r,this._x1=t,this._root=void 0}function Yf(e){for(var r={data:e.data},t=r;e=e.next;)t=t.next={data:e.data};return r}var rt=Ln.prototype=Dn.prototype;rt.copy=function(){var e=new Dn(this._x,this._x0,this._x1),r=this._root,t,n;if(!r)return e;if(!r.length)return e._root=Yf(r),e;for(t=[{source:r,target:e._root=new Array(2)}];r=t.pop();)for(var i=0;i<2;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(2)}):r.target[i]=Yf(n));return e},rt.add=b1,rt.addAll=_1,rt.cover=E1,rt.data=x1,rt.extent=N1,rt.find=M1,rt.remove=S1,rt.removeAll=q1,rt.root=R1,rt.size=O1,rt.visit=A1,rt.visitAfter=I1,rt.x=k1;function Pe(e){return function(){return e}}function at(e){return(e()-.5)*1e-6}function zn(e){return e.x+e.vx}function Kf(e){return e.y+e.vy}function j1(e){return e.z+e.vz}function C1(e){var r,t,n,i,s=1,a=1;typeof e!="function"&&(e=Pe(e==null?1:+e));function o(){for(var l,p=r.length,m,y,x,_,b,w,E,N=0;N<a;++N)for(m=(t===1?Ln(r,zn):t===2?Wt(r,zn,Kf):t===3?Rr(r,zn,Kf,j1):null).visitAfter(c),l=0;l<p;++l)y=r[l],w=n[y.index],E=w*w,x=y.x+y.vx,t>1&&(_=y.y+y.vy),t>2&&(b=y.z+y.vz),m.visit(S);function S(R,A,j,I,D,z,$){var V=[A,j,I,D,z,$],Y=V[0],ee=V[1],J=V[2],ae=V[t],be=V[t+1],Z=V[t+2],ue=R.data,pe=R.r,he=w+pe;if(ue){if(ue.index>y.index){var ie=x-ue.x-ue.vx,_e=t>1?_-ue.y-ue.vy:0,G=t>2?b-ue.z-ue.vz:0,P=ie*ie+_e*_e+G*G;P<he*he&&(ie===0&&(ie=at(i),P+=ie*ie),t>1&&_e===0&&(_e=at(i),P+=_e*_e),t>2&&G===0&&(G=at(i),P+=G*G),P=(he-(P=Math.sqrt(P)))/P*s,y.vx+=(ie*=P)*(he=(pe*=pe)/(E+pe)),t>1&&(y.vy+=(_e*=P)*he),t>2&&(y.vz+=(G*=P)*he),ue.vx-=ie*(he=1-he),t>1&&(ue.vy-=_e*he),t>2&&(ue.vz-=G*he))}return}return Y>x+he||ae<x-he||t>1&&(ee>_+he||be<_-he)||t>2&&(J>b+he||Z<b-he)}}function c(l){if(l.data)return l.r=n[l.data.index];for(var p=l.r=0;p<Math.pow(2,t);++p)l[p]&&l[p].r>l.r&&(l.r=l[p].r)}function f(){if(r){var l,p=r.length,m;for(n=new Array(p),l=0;l<p;++l)m=r[l],n[m.index]=+e(m,l,r)}}return o.initialize=function(l,...p){r=l,i=p.find(m=>typeof m=="function")||Math.random,t=p.find(m=>[1,2,3].includes(m))||2,f()},o.iterations=function(l){return arguments.length?(a=+l,o):a},o.strength=function(l){return arguments.length?(s=+l,o):s},o.radius=function(l){return arguments.length?(e=typeof l=="function"?l:Pe(+l),f(),o):e},o}function P1(e){return e.index}function Xf(e,r){var t=e.get(r);if(!t)throw new Error("node not found: "+r);return t}function L1(e){var r=P1,t=m,n,i=Pe(30),s,a,o,c,f,l,p=1;e==null&&(e=[]);function m(w){return 1/Math.min(c[w.source.index],c[w.target.index])}function y(w){for(var E=0,N=e.length;E<p;++E)for(var S=0,R,A,j,I=0,D=0,z=0,$,V;S<N;++S)R=e[S],A=R.source,j=R.target,I=j.x+j.vx-A.x-A.vx||at(l),o>1&&(D=j.y+j.vy-A.y-A.vy||at(l)),o>2&&(z=j.z+j.vz-A.z-A.vz||at(l)),$=Math.sqrt(I*I+D*D+z*z),$=($-s[S])/$*w*n[S],I*=$,D*=$,z*=$,j.vx-=I*(V=f[S]),o>1&&(j.vy-=D*V),o>2&&(j.vz-=z*V),A.vx+=I*(V=1-V),o>1&&(A.vy+=D*V),o>2&&(A.vz+=z*V)}function x(){if(a){var w,E=a.length,N=e.length,S=new Map(a.map((A,j)=>[r(A,j,a),A])),R;for(w=0,c=new Array(E);w<N;++w)R=e[w],R.index=w,typeof R.source!="object"&&(R.source=Xf(S,R.source)),typeof R.target!="object"&&(R.target=Xf(S,R.target)),c[R.source.index]=(c[R.source.index]||0)+1,c[R.target.index]=(c[R.target.index]||0)+1;for(w=0,f=new Array(N);w<N;++w)R=e[w],f[w]=c[R.source.index]/(c[R.source.index]+c[R.target.index]);n=new Array(N),_(),s=new Array(N),b()}}function _(){if(a)for(var w=0,E=e.length;w<E;++w)n[w]=+t(e[w],w,e)}function b(){if(a)for(var w=0,E=e.length;w<E;++w)s[w]=+i(e[w],w,e)}return y.initialize=function(w,...E){a=w,l=E.find(N=>typeof N=="function")||Math.random,o=E.find(N=>[1,2,3].includes(N))||2,x()},y.links=function(w){return arguments.length?(e=w,x(),y):e},y.id=function(w){return arguments.length?(r=w,y):r},y.iterations=function(w){return arguments.length?(p=+w,y):p},y.strength=function(w){return arguments.length?(t=typeof w=="function"?w:Pe(+w),_(),y):t},y.distance=function(w){return arguments.length?(i=typeof w=="function"?w:Pe(+w),b(),y):i},y}const D1=1664525,z1=1013904223,Zf=4294967296;function F1(){let e=1;return()=>(e=(D1*e+z1)%Zf)/Zf}var Jf=3;function Fn(e){return e.x}function Qf(e){return e.y}function B1(e){return e.z}var $1=10,G1=Math.PI*(3-Math.sqrt(5)),U1=Math.PI*20/(9+Math.sqrt(221));function V1(e,r){r=r||2;var t=Math.min(Jf,Math.max(1,Math.round(r))),n,i=1,s=.001,a=1-Math.pow(s,1/300),o=0,c=.6,f=new Map,l=Cn(y),p=kn("tick","end"),m=F1();e==null&&(e=[]);function y(){x(),p.call("tick",n),i<s&&(l.stop(),p.call("end",n))}function x(w){var E,N=e.length,S;w===void 0&&(w=1);for(var R=0;R<w;++R)for(i+=(o-i)*a,f.forEach(function(A){A(i)}),E=0;E<N;++E)S=e[E],S.fx==null?S.x+=S.vx*=c:(S.x=S.fx,S.vx=0),t>1&&(S.fy==null?S.y+=S.vy*=c:(S.y=S.fy,S.vy=0)),t>2&&(S.fz==null?S.z+=S.vz*=c:(S.z=S.fz,S.vz=0));return n}function _(){for(var w=0,E=e.length,N;w<E;++w){if(N=e[w],N.index=w,N.fx!=null&&(N.x=N.fx),N.fy!=null&&(N.y=N.fy),N.fz!=null&&(N.z=N.fz),isNaN(N.x)||t>1&&isNaN(N.y)||t>2&&isNaN(N.z)){var S=$1*(t>2?Math.cbrt(.5+w):t>1?Math.sqrt(.5+w):w),R=w*G1,A=w*U1;t===1?N.x=S:t===2?(N.x=S*Math.cos(R),N.y=S*Math.sin(R)):(N.x=S*Math.sin(R)*Math.cos(A),N.y=S*Math.cos(R),N.z=S*Math.sin(R)*Math.sin(A))}(isNaN(N.vx)||t>1&&isNaN(N.vy)||t>2&&isNaN(N.vz))&&(N.vx=0,t>1&&(N.vy=0),t>2&&(N.vz=0))}}function b(w){return w.initialize&&w.initialize(e,m,t),w}return _(),n={tick:x,restart:function(){return l.restart(y),n},stop:function(){return l.stop(),n},numDimensions:function(w){return arguments.length?(t=Math.min(Jf,Math.max(1,Math.round(w))),f.forEach(b),n):t},nodes:function(w){return arguments.length?(e=w,_(),f.forEach(b),n):e},alpha:function(w){return arguments.length?(i=+w,n):i},alphaMin:function(w){return arguments.length?(s=+w,n):s},alphaDecay:function(w){return arguments.length?(a=+w,n):+a},alphaTarget:function(w){return arguments.length?(o=+w,n):o},velocityDecay:function(w){return arguments.length?(c=1-w,n):1-c},randomSource:function(w){return arguments.length?(m=w,f.forEach(b),n):m},force:function(w,E){return arguments.length>1?(E==null?f.delete(w):f.set(w,b(E)),n):f.get(w)},find:function(){var w=Array.prototype.slice.call(arguments),E=w.shift()||0,N=(t>1?w.shift():null)||0,S=(t>2?w.shift():null)||0,R=w.shift()||1/0,A=0,j=e.length,I,D,z,$,V,Y;for(R*=R,A=0;A<j;++A)V=e[A],I=E-V.x,D=N-(V.y||0),z=S-(V.z||0),$=I*I+D*D+z*z,$<R&&(Y=V,R=$);return Y},on:function(w,E){return arguments.length>1?(p.on(w,E),n):p.on(w)}}}function W1(){var e,r,t,n,i,s=Pe(-30),a,o=1,c=1/0,f=.81;function l(x){var _,b=e.length,w=(r===1?Ln(e,Fn):r===2?Wt(e,Fn,Qf):r===3?Rr(e,Fn,Qf,B1):null).visitAfter(m);for(i=x,_=0;_<b;++_)t=e[_],w.visit(y)}function p(){if(e){var x,_=e.length,b;for(a=new Array(_),x=0;x<_;++x)b=e[x],a[b.index]=+s(b,x,e)}}function m(x){var _=0,b,w,E=0,N,S,R,A,j=x.length;if(j){for(N=S=R=A=0;A<j;++A)(b=x[A])&&(w=Math.abs(b.value))&&(_+=b.value,E+=w,N+=w*(b.x||0),S+=w*(b.y||0),R+=w*(b.z||0));_*=Math.sqrt(4/j),x.x=N/E,r>1&&(x.y=S/E),r>2&&(x.z=R/E)}else{b=x,b.x=b.data.x,r>1&&(b.y=b.data.y),r>2&&(b.z=b.data.z);do _+=a[b.data.index];while(b=b.next)}x.value=_}function y(x,_,b,w,E){if(!x.value)return!0;var N=[b,w,E][r-1],S=x.x-t.x,R=r>1?x.y-t.y:0,A=r>2?x.z-t.z:0,j=N-_,I=S*S+R*R+A*A;if(j*j/f<I)return I<c&&(S===0&&(S=at(n),I+=S*S),r>1&&R===0&&(R=at(n),I+=R*R),r>2&&A===0&&(A=at(n),I+=A*A),I<o&&(I=Math.sqrt(o*I)),t.vx+=S*x.value*i/I,r>1&&(t.vy+=R*x.value*i/I),r>2&&(t.vz+=A*x.value*i/I)),!0;if(x.length||I>=c)return;(x.data!==t||x.next)&&(S===0&&(S=at(n),I+=S*S),r>1&&R===0&&(R=at(n),I+=R*R),r>2&&A===0&&(A=at(n),I+=A*A),I<o&&(I=Math.sqrt(o*I)));do x.data!==t&&(j=a[x.data.index]*i/I,t.vx+=S*j,r>1&&(t.vy+=R*j),r>2&&(t.vz+=A*j));while(x=x.next)}return l.initialize=function(x,..._){e=x,n=_.find(b=>typeof b=="function")||Math.random,r=_.find(b=>[1,2,3].includes(b))||2,p()},l.strength=function(x){return arguments.length?(s=typeof x=="function"?x:Pe(+x),p(),l):s},l.distanceMin=function(x){return arguments.length?(o=x*x,l):Math.sqrt(o)},l.distanceMax=function(x){return arguments.length?(c=x*x,l):Math.sqrt(c)},l.theta=function(x){return arguments.length?(f=x*x,l):Math.sqrt(f)},l}function Y1(e,r,t,n){var i,s,a=Pe(.1),o,c;typeof e!="function"&&(e=Pe(+e)),r==null&&(r=0),t==null&&(t=0),n==null&&(n=0);function f(p){for(var m=0,y=i.length;m<y;++m){var x=i[m],_=x.x-r||1e-6,b=(x.y||0)-t||1e-6,w=(x.z||0)-n||1e-6,E=Math.sqrt(_*_+b*b+w*w),N=(c[m]-E)*o[m]*p/E;x.vx+=_*N,s>1&&(x.vy+=b*N),s>2&&(x.vz+=w*N)}}function l(){if(i){var p,m=i.length;for(o=new Array(m),c=new Array(m),p=0;p<m;++p)c[p]=+e(i[p],p,i),o[p]=isNaN(c[p])?0:+a(i[p],p,i)}}return f.initialize=function(p,...m){i=p,s=m.find(y=>[1,2,3].includes(y))||2,l()},f.strength=function(p){return arguments.length?(a=typeof p=="function"?p:Pe(+p),l(),f):a},f.radius=function(p){return arguments.length?(e=typeof p=="function"?p:Pe(+p),l(),f):e},f.x=function(p){return arguments.length?(r=+p,f):r},f.y=function(p){return arguments.length?(t=+p,f):t},f.z=function(p){return arguments.length?(n=+p,f):n},f}function K1(e){var r=Pe(.1),t,n,i;typeof e!="function"&&(e=Pe(e==null?0:+e));function s(o){for(var c=0,f=t.length,l;c<f;++c)l=t[c],l.vx+=(i[c]-l.x)*n[c]*o}function a(){if(t){var o,c=t.length;for(n=new Array(c),i=new Array(c),o=0;o<c;++o)n[o]=isNaN(i[o]=+e(t[o],o,t))?0:+r(t[o],o,t)}}return s.initialize=function(o){t=o,a()},s.strength=function(o){return arguments.length?(r=typeof o=="function"?o:Pe(+o),a(),s):r},s.x=function(o){return arguments.length?(e=typeof o=="function"?o:Pe(+o),a(),s):e},s}function X1(e){var r=Pe(.1),t,n,i;typeof e!="function"&&(e=Pe(e==null?0:+e));function s(o){for(var c=0,f=t.length,l;c<f;++c)l=t[c],l.vy+=(i[c]-l.y)*n[c]*o}function a(){if(t){var o,c=t.length;for(n=new Array(c),i=new Array(c),o=0;o<c;++o)n[o]=isNaN(i[o]=+e(t[o],o,t))?0:+r(t[o],o,t)}}return s.initialize=function(o){t=o,a()},s.strength=function(o){return arguments.length?(r=typeof o=="function"?o:Pe(+o),a(),s):r},s.y=function(o){return arguments.length?(e=typeof o=="function"?o:Pe(+o),a(),s):e},s}function Z1(e){var r=Pe(.1),t,n,i;typeof e!="function"&&(e=Pe(e==null?0:+e));function s(o){for(var c=0,f=t.length,l;c<f;++c)l=t[c],l.vz+=(i[c]-l.z)*n[c]*o}function a(){if(t){var o,c=t.length;for(n=new Array(c),i=new Array(c),o=0;o<c;++o)n[o]=isNaN(i[o]=+e(t[o],o,t))?0:+r(t[o],o,t)}}return s.initialize=function(o){t=o,a()},s.strength=function(o){return arguments.length?(r=typeof o=="function"?o:Pe(+o),a(),s):r},s.z=function(o){return arguments.length?(e=typeof o=="function"?o:Pe(+o),a(),s):e},s}class J1 extends Uf{constructor(){super(...arguments),this.id="d3-force-3d",this.config={inputNodeAttrs:["x","y","z","vx","vy","vz","fx","fy","fz"],outputNodeAttrs:["x","y","z","vx","vy","vz"],simulationAttrs:["alpha","alphaMin","alphaDecay","alphaTarget","velocityDecay","randomSource","numDimensions"]},this.forceMap={link:L1,manyBody:W1,center:w1,collide:C1,radial:Y1,x:K1,y:X1,z:Z1},this.options={numDimensions:3,link:{id:r=>r.id},manyBody:{},center:{x:0,y:0,z:0}}}initSimulation(){return V1()}}function Bn(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var $n,Hf;function Q1(){if(Hf)return $n;Hf=1;function e(){this.__data__=[],this.size=0}return $n=e,$n}var Gn,el;function Kt(){if(el)return Gn;el=1;function e(r,t){return r===t||r!==r&&t!==t}return Gn=e,Gn}var Un,tl;function Cr(){if(tl)return Un;tl=1;var e=Kt();function r(t,n){for(var i=t.length;i--;)if(e(t[i][0],n))return i;return-1}return Un=r,Un}var Vn,rl;function H1(){if(rl)return Vn;rl=1;var e=Cr(),r=Array.prototype,t=r.splice;function n(i){var s=this.__data__,a=e(s,i);if(a<0)return!1;var o=s.length-1;return a==o?s.pop():t.call(s,a,1),--this.size,!0}return Vn=n,Vn}var Wn,nl;function eb(){if(nl)return Wn;nl=1;var e=Cr();function r(t){var n=this.__data__,i=e(n,t);return i<0?void 0:n[i][1]}return Wn=r,Wn}var Yn,il;function tb(){if(il)return Yn;il=1;var e=Cr();function r(t){return e(this.__data__,t)>-1}return Yn=r,Yn}var Kn,sl;function rb(){if(sl)return Kn;sl=1;var e=Cr();function r(t,n){var i=this.__data__,s=e(i,t);return s<0?(++this.size,i.push([t,n])):i[s][1]=n,this}return Kn=r,Kn}var Xn,ol;function Pr(){if(ol)return Xn;ol=1;var e=Q1(),r=H1(),t=eb(),n=tb(),i=rb();function s(a){var o=-1,c=a==null?0:a.length;for(this.clear();++o<c;){var f=a[o];this.set(f[0],f[1])}}return s.prototype.clear=e,s.prototype.delete=r,s.prototype.get=t,s.prototype.has=n,s.prototype.set=i,Xn=s,Xn}var Zn,al;function nb(){if(al)return Zn;al=1;var e=Pr();function r(){this.__data__=new e,this.size=0}return Zn=r,Zn}var Jn,ul;function ib(){if(ul)return Jn;ul=1;function e(r){var t=this.__data__,n=t.delete(r);return this.size=t.size,n}return Jn=e,Jn}var Qn,cl;function sb(){if(cl)return Qn;cl=1;function e(r){return this.__data__.get(r)}return Qn=e,Qn}var Hn,fl;function ob(){if(fl)return Hn;fl=1;function e(r){return this.__data__.has(r)}return Hn=e,Hn}var ei,ll;function hl(){if(ll)return ei;ll=1;var e=typeof Or=="object"&&Or&&Or.Object===Object&&Or;return ei=e,ei}var ti,dl;function ft(){if(dl)return ti;dl=1;var e=hl(),r=typeof self=="object"&&self&&self.Object===Object&&self,t=e||r||Function("return this")();return ti=t,ti}var ri,gl;function Xt(){if(gl)return ri;gl=1;var e=ft(),r=e.Symbol;return ri=r,ri}var ni,pl;function ab(){if(pl)return ni;pl=1;var e=Xt(),r=Object.prototype,t=r.hasOwnProperty,n=r.toString,i=e?e.toStringTag:void 0;function s(a){var o=t.call(a,i),c=a[i];try{a[i]=void 0;var f=!0}catch{}var l=n.call(a);return f&&(o?a[i]=c:delete a[i]),l}return ni=s,ni}var ii,vl;function ub(){if(vl)return ii;vl=1;var e=Object.prototype,r=e.toString;function t(n){return r.call(n)}return ii=t,ii}var si,ml;function Dt(){if(ml)return si;ml=1;var e=Xt(),r=ab(),t=ub(),n="[object Null]",i="[object Undefined]",s=e?e.toStringTag:void 0;function a(o){return o==null?o===void 0?i:n:s&&s in Object(o)?r(o):t(o)}return si=a,si}var oi,yl;function ut(){if(yl)return oi;yl=1;function e(r){var t=typeof r;return r!=null&&(t=="object"||t=="function")}return oi=e,oi}var ai,wl;function lr(){if(wl)return ai;wl=1;var e=Dt(),r=ut(),t="[object AsyncFunction]",n="[object Function]",i="[object GeneratorFunction]",s="[object Proxy]";function a(o){if(!r(o))return!1;var c=e(o);return c==n||c==i||c==t||c==s}return ai=a,ai}var ui,bl;function cb(){if(bl)return ui;bl=1;var e=ft(),r=e["__core-js_shared__"];return ui=r,ui}var ci,_l;function fb(){if(_l)return ci;_l=1;var e=cb(),r=function(){var n=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function t(n){return!!r&&r in n}return ci=t,ci}var fi,El;function xl(){if(El)return fi;El=1;var e=Function.prototype,r=e.toString;function t(n){if(n!=null){try{return r.call(n)}catch{}try{return n+""}catch{}}return""}return fi=t,fi}var li,Nl;function lb(){if(Nl)return li;Nl=1;var e=lr(),r=fb(),t=ut(),n=xl(),i=/[\\^$.*+?()[\]{}|]/g,s=/^\[object .+?Constructor\]$/,a=Function.prototype,o=Object.prototype,c=a.toString,f=o.hasOwnProperty,l=RegExp("^"+c.call(f).replace(i,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function p(m){if(!t(m)||r(m))return!1;var y=e(m)?l:s;return y.test(n(m))}return li=p,li}var hi,Ml;function hb(){if(Ml)return hi;Ml=1;function e(r,t){return r==null?void 0:r[t]}return hi=e,hi}var di,Sl;function zt(){if(Sl)return di;Sl=1;var e=lb(),r=hb();function t(n,i){var s=r(n,i);return e(s)?s:void 0}return di=t,di}var gi,ql;function pi(){if(ql)return gi;ql=1;var e=zt(),r=ft(),t=e(r,"Map");return gi=t,gi}var vi,Rl;function Lr(){if(Rl)return vi;Rl=1;var e=zt(),r=e(Object,"create");return vi=r,vi}var mi,Ol;function db(){if(Ol)return mi;Ol=1;var e=Lr();function r(){this.__data__=e?e(null):{},this.size=0}return mi=r,mi}var yi,Al;function gb(){if(Al)return yi;Al=1;function e(r){var t=this.has(r)&&delete this.__data__[r];return this.size-=t?1:0,t}return yi=e,yi}var wi,Il;function pb(){if(Il)return wi;Il=1;var e=Lr(),r="__lodash_hash_undefined__",t=Object.prototype,n=t.hasOwnProperty;function i(s){var a=this.__data__;if(e){var o=a[s];return o===r?void 0:o}return n.call(a,s)?a[s]:void 0}return wi=i,wi}var bi,Tl;function vb(){if(Tl)return bi;Tl=1;var e=Lr(),r=Object.prototype,t=r.hasOwnProperty;function n(i){var s=this.__data__;return e?s[i]!==void 0:t.call(s,i)}return bi=n,bi}var _i,kl;function mb(){if(kl)return _i;kl=1;var e=Lr(),r="__lodash_hash_undefined__";function t(n,i){var s=this.__data__;return this.size+=this.has(n)?0:1,s[n]=e&&i===void 0?r:i,this}return _i=t,_i}var Ei,jl;function yb(){if(jl)return Ei;jl=1;var e=db(),r=gb(),t=pb(),n=vb(),i=mb();function s(a){var o=-1,c=a==null?0:a.length;for(this.clear();++o<c;){var f=a[o];this.set(f[0],f[1])}}return s.prototype.clear=e,s.prototype.delete=r,s.prototype.get=t,s.prototype.has=n,s.prototype.set=i,Ei=s,Ei}var xi,Cl;function wb(){if(Cl)return xi;Cl=1;var e=yb(),r=Pr(),t=pi();function n(){this.size=0,this.__data__={hash:new e,map:new(t||r),string:new e}}return xi=n,xi}var Ni,Pl;function bb(){if(Pl)return Ni;Pl=1;function e(r){var t=typeof r;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?r!=="__proto__":r===null}return Ni=e,Ni}var Mi,Ll;function Dr(){if(Ll)return Mi;Ll=1;var e=bb();function r(t,n){var i=t.__data__;return e(n)?i[typeof n=="string"?"string":"hash"]:i.map}return Mi=r,Mi}var Si,Dl;function _b(){if(Dl)return Si;Dl=1;var e=Dr();function r(t){var n=e(this,t).delete(t);return this.size-=n?1:0,n}return Si=r,Si}var qi,zl;function Eb(){if(zl)return qi;zl=1;var e=Dr();function r(t){return e(this,t).get(t)}return qi=r,qi}var Ri,Fl;function xb(){if(Fl)return Ri;Fl=1;var e=Dr();function r(t){return e(this,t).has(t)}return Ri=r,Ri}var Oi,Bl;function Nb(){if(Bl)return Oi;Bl=1;var e=Dr();function r(t,n){var i=e(this,t),s=i.size;return i.set(t,n),this.size+=i.size==s?0:1,this}return Oi=r,Oi}var Ai,$l;function Ii(){if($l)return Ai;$l=1;var e=wb(),r=_b(),t=Eb(),n=xb(),i=Nb();function s(a){var o=-1,c=a==null?0:a.length;for(this.clear();++o<c;){var f=a[o];this.set(f[0],f[1])}}return s.prototype.clear=e,s.prototype.delete=r,s.prototype.get=t,s.prototype.has=n,s.prototype.set=i,Ai=s,Ai}var Ti,Gl;function Mb(){if(Gl)return Ti;Gl=1;var e=Pr(),r=pi(),t=Ii(),n=200;function i(s,a){var o=this.__data__;if(o instanceof e){var c=o.__data__;if(!r||c.length<n-1)return c.push([s,a]),this.size=++o.size,this;o=this.__data__=new t(c)}return o.set(s,a),this.size=o.size,this}return Ti=i,Ti}var ki,Ul;function zr(){if(Ul)return ki;Ul=1;var e=Pr(),r=nb(),t=ib(),n=sb(),i=ob(),s=Mb();function a(o){var c=this.__data__=new e(o);this.size=c.size}return a.prototype.clear=r,a.prototype.delete=t,a.prototype.get=n,a.prototype.has=i,a.prototype.set=s,ki=a,ki}var ji,Vl;function Ci(){if(Vl)return ji;Vl=1;function e(r,t){for(var n=-1,i=r==null?0:r.length;++n<i&&t(r[n],n,r)!==!1;);return r}return ji=e,ji}var Pi,Wl;function Yl(){if(Wl)return Pi;Wl=1;var e=zt(),r=function(){try{var t=e(Object,"defineProperty");return t({},"",{}),t}catch{}}();return Pi=r,Pi}var Li,Kl;function Fr(){if(Kl)return Li;Kl=1;var e=Yl();function r(t,n,i){n=="__proto__"&&e?e(t,n,{configurable:!0,enumerable:!0,value:i,writable:!0}):t[n]=i}return Li=r,Li}var Di,Xl;function Br(){if(Xl)return Di;Xl=1;var e=Fr(),r=Kt(),t=Object.prototype,n=t.hasOwnProperty;function i(s,a,o){var c=s[a];(!(n.call(s,a)&&r(c,o))||o===void 0&&!(a in s))&&e(s,a,o)}return Di=i,Di}var zi,Zl;function hr(){if(Zl)return zi;Zl=1;var e=Br(),r=Fr();function t(n,i,s,a){var o=!s;s||(s={});for(var c=-1,f=i.length;++c<f;){var l=i[c],p=a?a(s[l],n[l],l,s,n):void 0;p===void 0&&(p=n[l]),o?r(s,l,p):e(s,l,p)}return s}return zi=t,zi}var Fi,Jl;function Sb(){if(Jl)return Fi;Jl=1;function e(r,t){for(var n=-1,i=Array(r);++n<r;)i[n]=t(n);return i}return Fi=e,Fi}var Bi,Ql;function pt(){if(Ql)return Bi;Ql=1;function e(r){return r!=null&&typeof r=="object"}return Bi=e,Bi}var $i,Hl;function qb(){if(Hl)return $i;Hl=1;var e=Dt(),r=pt(),t="[object Arguments]";function n(i){return r(i)&&e(i)==t}return $i=n,$i}var Gi,eh;function dr(){if(eh)return Gi;eh=1;var e=qb(),r=pt(),t=Object.prototype,n=t.hasOwnProperty,i=t.propertyIsEnumerable,s=e(function(){return arguments}())?e:function(a){return r(a)&&n.call(a,"callee")&&!i.call(a,"callee")};return Gi=s,Gi}var Ui,th;function De(){if(th)return Ui;th=1;var e=Array.isArray;return Ui=e,Ui}var gr={exports:{}},Vi,rh;function Rb(){if(rh)return Vi;rh=1;function e(){return!1}return Vi=e,Vi}gr.exports;var nh;function Zt(){return nh||(nh=1,function(e,r){var t=ft(),n=Rb(),i=r&&!r.nodeType&&r,s=i&&!0&&e&&!e.nodeType&&e,a=s&&s.exports===i,o=a?t.Buffer:void 0,c=o?o.isBuffer:void 0,f=c||n;e.exports=f}(gr,gr.exports)),gr.exports}var Wi,ih;function $r(){if(ih)return Wi;ih=1;var e=9007199254740991,r=/^(?:0|[1-9]\d*)$/;function t(n,i){var s=typeof n;return i=i??e,!!i&&(s=="number"||s!="symbol"&&r.test(n))&&n>-1&&n%1==0&&n<i}return Wi=t,Wi}var Yi,sh;function Ki(){if(sh)return Yi;sh=1;var e=9007199254740991;function r(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=e}return Yi=r,Yi}var Xi,oh;function Ob(){if(oh)return Xi;oh=1;var e=Dt(),r=Ki(),t=pt(),n="[object Arguments]",i="[object Array]",s="[object Boolean]",a="[object Date]",o="[object Error]",c="[object Function]",f="[object Map]",l="[object Number]",p="[object Object]",m="[object RegExp]",y="[object Set]",x="[object String]",_="[object WeakMap]",b="[object ArrayBuffer]",w="[object DataView]",E="[object Float32Array]",N="[object Float64Array]",S="[object Int8Array]",R="[object Int16Array]",A="[object Int32Array]",j="[object Uint8Array]",I="[object Uint8ClampedArray]",D="[object Uint16Array]",z="[object Uint32Array]",$={};$[E]=$[N]=$[S]=$[R]=$[A]=$[j]=$[I]=$[D]=$[z]=!0,$[n]=$[i]=$[b]=$[s]=$[w]=$[a]=$[o]=$[c]=$[f]=$[l]=$[p]=$[m]=$[y]=$[x]=$[_]=!1;function V(Y){return t(Y)&&r(Y.length)&&!!$[e(Y)]}return Xi=V,Xi}var Zi,ah;function Gr(){if(ah)return Zi;ah=1;function e(r){return function(t){return r(t)}}return Zi=e,Zi}var pr={exports:{}};pr.exports;var uh;function Ji(){return uh||(uh=1,function(e,r){var t=hl(),n=r&&!r.nodeType&&r,i=n&&!0&&e&&!e.nodeType&&e,s=i&&i.exports===n,a=s&&t.process,o=function(){try{var c=i&&i.require&&i.require("util").types;return c||a&&a.binding&&a.binding("util")}catch{}}();e.exports=o}(pr,pr.exports)),pr.exports}var Qi,ch;function vr(){if(ch)return Qi;ch=1;var e=Ob(),r=Gr(),t=Ji(),n=t&&t.isTypedArray,i=n?r(n):e;return Qi=i,Qi}var Hi,fh;function lh(){if(fh)return Hi;fh=1;var e=Sb(),r=dr(),t=De(),n=Zt(),i=$r(),s=vr(),a=Object.prototype,o=a.hasOwnProperty;function c(f,l){var p=t(f),m=!p&&r(f),y=!p&&!m&&n(f),x=!p&&!m&&!y&&s(f),_=p||m||y||x,b=_?e(f.length,String):[],w=b.length;for(var E in f)(l||o.call(f,E))&&!(_&&(E=="length"||y&&(E=="offset"||E=="parent")||x&&(E=="buffer"||E=="byteLength"||E=="byteOffset")||i(E,w)))&&b.push(E);return b}return Hi=c,Hi}var es,hh;function Ur(){if(hh)return es;hh=1;var e=Object.prototype;function r(t){var n=t&&t.constructor,i=typeof n=="function"&&n.prototype||e;return t===i}return es=r,es}var ts,dh;function gh(){if(dh)return ts;dh=1;function e(r,t){return function(n){return r(t(n))}}return ts=e,ts}var rs,ph;function Ab(){if(ph)return rs;ph=1;var e=gh(),r=e(Object.keys,Object);return rs=r,rs}var ns,vh;function is(){if(vh)return ns;vh=1;var e=Ur(),r=Ab(),t=Object.prototype,n=t.hasOwnProperty;function i(s){if(!e(s))return r(s);var a=[];for(var o in Object(s))n.call(s,o)&&o!="constructor"&&a.push(o);return a}return ns=i,ns}var ss,mh;function Et(){if(mh)return ss;mh=1;var e=lr(),r=Ki();function t(n){return n!=null&&r(n.length)&&!e(n)}return ss=t,ss}var os,yh;function Tt(){if(yh)return os;yh=1;var e=lh(),r=is(),t=Et();function n(i){return t(i)?e(i):r(i)}return os=n,os}var as,wh;function Ib(){if(wh)return as;wh=1;var e=hr(),r=Tt();function t(n,i){return n&&e(i,r(i),n)}return as=t,as}var us,bh;function Tb(){if(bh)return us;bh=1;function e(r){var t=[];if(r!=null)for(var n in Object(r))t.push(n);return t}return us=e,us}var cs,_h;function kb(){if(_h)return cs;_h=1;var e=ut(),r=Ur(),t=Tb(),n=Object.prototype,i=n.hasOwnProperty;function s(a){if(!e(a))return t(a);var o=r(a),c=[];for(var f in a)f=="constructor"&&(o||!i.call(a,f))||c.push(f);return c}return cs=s,cs}var fs,Eh;function Ft(){if(Eh)return fs;Eh=1;var e=lh(),r=kb(),t=Et();function n(i){return t(i)?e(i,!0):r(i)}return fs=n,fs}var ls,xh;function jb(){if(xh)return ls;xh=1;var e=hr(),r=Ft();function t(n,i){return n&&e(i,r(i),n)}return ls=t,ls}var mr={exports:{}};mr.exports;var Nh;function Mh(){return Nh||(Nh=1,function(e,r){var t=ft(),n=r&&!r.nodeType&&r,i=n&&!0&&e&&!e.nodeType&&e,s=i&&i.exports===n,a=s?t.Buffer:void 0,o=a?a.allocUnsafe:void 0;function c(f,l){if(l)return f.slice();var p=f.length,m=o?o(p):new f.constructor(p);return f.copy(m),m}e.exports=c}(mr,mr.exports)),mr.exports}var hs,Sh;function qh(){if(Sh)return hs;Sh=1;function e(r,t){var n=-1,i=r.length;for(t||(t=Array(i));++n<i;)t[n]=r[n];return t}return hs=e,hs}var ds,Rh;function Oh(){if(Rh)return ds;Rh=1;function e(r,t){for(var n=-1,i=r==null?0:r.length,s=0,a=[];++n<i;){var o=r[n];t(o,n,r)&&(a[s++]=o)}return a}return ds=e,ds}var gs,Ah;function Ih(){if(Ah)return gs;Ah=1;function e(){return[]}return gs=e,gs}var ps,Th;function vs(){if(Th)return ps;Th=1;var e=Oh(),r=Ih(),t=Object.prototype,n=t.propertyIsEnumerable,i=Object.getOwnPropertySymbols,s=i?function(a){return a==null?[]:(a=Object(a),e(i(a),function(o){return n.call(a,o)}))}:r;return ps=s,ps}var ms,kh;function Cb(){if(kh)return ms;kh=1;var e=hr(),r=vs();function t(n,i){return e(n,r(n),i)}return ms=t,ms}var ys,jh;function ws(){if(jh)return ys;jh=1;function e(r,t){for(var n=-1,i=t.length,s=r.length;++n<i;)r[s+n]=t[n];return r}return ys=e,ys}var bs,Ch;function Vr(){if(Ch)return bs;Ch=1;var e=gh(),r=e(Object.getPrototypeOf,Object);return bs=r,bs}var _s,Ph;function Lh(){if(Ph)return _s;Ph=1;var e=ws(),r=Vr(),t=vs(),n=Ih(),i=Object.getOwnPropertySymbols,s=i?function(a){for(var o=[];a;)e(o,t(a)),a=r(a);return o}:n;return _s=s,_s}var Es,Dh;function Pb(){if(Dh)return Es;Dh=1;var e=hr(),r=Lh();function t(n,i){return e(n,r(n),i)}return Es=t,Es}var xs,zh;function Fh(){if(zh)return xs;zh=1;var e=ws(),r=De();function t(n,i,s){var a=i(n);return r(n)?a:e(a,s(n))}return xs=t,xs}var Ns,Bh;function $h(){if(Bh)return Ns;Bh=1;var e=Fh(),r=vs(),t=Tt();function n(i){return e(i,t,r)}return Ns=n,Ns}var Ms,Gh;function Lb(){if(Gh)return Ms;Gh=1;var e=Fh(),r=Lh(),t=Ft();function n(i){return e(i,t,r)}return Ms=n,Ms}var Ss,Uh;function Db(){if(Uh)return Ss;Uh=1;var e=zt(),r=ft(),t=e(r,"DataView");return Ss=t,Ss}var qs,Vh;function zb(){if(Vh)return qs;Vh=1;var e=zt(),r=ft(),t=e(r,"Promise");return qs=t,qs}var Rs,Wh;function Yh(){if(Wh)return Rs;Wh=1;var e=zt(),r=ft(),t=e(r,"Set");return Rs=t,Rs}var Os,Kh;function Fb(){if(Kh)return Os;Kh=1;var e=zt(),r=ft(),t=e(r,"WeakMap");return Os=t,Os}var As,Xh;function Jt(){if(Xh)return As;Xh=1;var e=Db(),r=pi(),t=zb(),n=Yh(),i=Fb(),s=Dt(),a=xl(),o="[object Map]",c="[object Object]",f="[object Promise]",l="[object Set]",p="[object WeakMap]",m="[object DataView]",y=a(e),x=a(r),_=a(t),b=a(n),w=a(i),E=s;return(e&&E(new e(new ArrayBuffer(1)))!=m||r&&E(new r)!=o||t&&E(t.resolve())!=f||n&&E(new n)!=l||i&&E(new i)!=p)&&(E=function(N){var S=s(N),R=S==c?N.constructor:void 0,A=R?a(R):"";if(A)switch(A){case y:return m;case x:return o;case _:return f;case b:return l;case w:return p}return S}),As=E,As}var Is,Zh;function Bb(){if(Zh)return Is;Zh=1;var e=Object.prototype,r=e.hasOwnProperty;function t(n){var i=n.length,s=new n.constructor(i);return i&&typeof n[0]=="string"&&r.call(n,"index")&&(s.index=n.index,s.input=n.input),s}return Is=t,Is}var Ts,Jh;function Qh(){if(Jh)return Ts;Jh=1;var e=ft(),r=e.Uint8Array;return Ts=r,Ts}var ks,Hh;function js(){if(Hh)return ks;Hh=1;var e=Qh();function r(t){var n=new t.constructor(t.byteLength);return new e(n).set(new e(t)),n}return ks=r,ks}var Cs,ed;function $b(){if(ed)return Cs;ed=1;var e=js();function r(t,n){var i=n?e(t.buffer):t.buffer;return new t.constructor(i,t.byteOffset,t.byteLength)}return Cs=r,Cs}var Ps,td;function Gb(){if(td)return Ps;td=1;var e=/\w*$/;function r(t){var n=new t.constructor(t.source,e.exec(t));return n.lastIndex=t.lastIndex,n}return Ps=r,Ps}var Ls,rd;function Ub(){if(rd)return Ls;rd=1;var e=Xt(),r=e?e.prototype:void 0,t=r?r.valueOf:void 0;function n(i){return t?Object(t.call(i)):{}}return Ls=n,Ls}var Ds,nd;function id(){if(nd)return Ds;nd=1;var e=js();function r(t,n){var i=n?e(t.buffer):t.buffer;return new t.constructor(i,t.byteOffset,t.length)}return Ds=r,Ds}var zs,sd;function Vb(){if(sd)return zs;sd=1;var e=js(),r=$b(),t=Gb(),n=Ub(),i=id(),s="[object Boolean]",a="[object Date]",o="[object Map]",c="[object Number]",f="[object RegExp]",l="[object Set]",p="[object String]",m="[object Symbol]",y="[object ArrayBuffer]",x="[object DataView]",_="[object Float32Array]",b="[object Float64Array]",w="[object Int8Array]",E="[object Int16Array]",N="[object Int32Array]",S="[object Uint8Array]",R="[object Uint8ClampedArray]",A="[object Uint16Array]",j="[object Uint32Array]";function I(D,z,$){var V=D.constructor;switch(z){case y:return e(D);case s:case a:return new V(+D);case x:return r(D,$);case _:case b:case w:case E:case N:case S:case R:case A:case j:return i(D,$);case o:return new V;case c:case p:return new V(D);case f:return t(D);case l:return new V;case m:return n(D)}}return zs=I,zs}var Fs,od;function ad(){if(od)return Fs;od=1;var e=ut(),r=Object.create,t=function(){function n(){}return function(i){if(!e(i))return{};if(r)return r(i);n.prototype=i;var s=new n;return n.prototype=void 0,s}}();return Fs=t,Fs}var Bs,ud;function cd(){if(ud)return Bs;ud=1;var e=ad(),r=Vr(),t=Ur();function n(i){return typeof i.constructor=="function"&&!t(i)?e(r(i)):{}}return Bs=n,Bs}var $s,fd;function Wb(){if(fd)return $s;fd=1;var e=Jt(),r=pt(),t="[object Map]";function n(i){return r(i)&&e(i)==t}return $s=n,$s}var Gs,ld;function Yb(){if(ld)return Gs;ld=1;var e=Wb(),r=Gr(),t=Ji(),n=t&&t.isMap,i=n?r(n):e;return Gs=i,Gs}var Us,hd;function Kb(){if(hd)return Us;hd=1;var e=Jt(),r=pt(),t="[object Set]";function n(i){return r(i)&&e(i)==t}return Us=n,Us}var Vs,dd;function Xb(){if(dd)return Vs;dd=1;var e=Kb(),r=Gr(),t=Ji(),n=t&&t.isSet,i=n?r(n):e;return Vs=i,Vs}var Ws,gd;function pd(){if(gd)return Ws;gd=1;var e=zr(),r=Ci(),t=Br(),n=Ib(),i=jb(),s=Mh(),a=qh(),o=Cb(),c=Pb(),f=$h(),l=Lb(),p=Jt(),m=Bb(),y=Vb(),x=cd(),_=De(),b=Zt(),w=Yb(),E=ut(),N=Xb(),S=Tt(),R=Ft(),A=1,j=2,I=4,D="[object Arguments]",z="[object Array]",$="[object Boolean]",V="[object Date]",Y="[object Error]",ee="[object Function]",J="[object GeneratorFunction]",ae="[object Map]",be="[object Number]",Z="[object Object]",ue="[object RegExp]",pe="[object Set]",he="[object String]",ie="[object Symbol]",_e="[object WeakMap]",G="[object ArrayBuffer]",P="[object DataView]",X="[object Float32Array]",te="[object Float64Array]",le="[object Int8Array]",xe="[object Int16Array]",Le="[object Int32Array]",Je="[object Uint8Array]",tr="[object Uint8ClampedArray]",Qe="[object Uint16Array]",Ve="[object Uint32Array]",Ee={};Ee[D]=Ee[z]=Ee[G]=Ee[P]=Ee[$]=Ee[V]=Ee[X]=Ee[te]=Ee[le]=Ee[xe]=Ee[Le]=Ee[ae]=Ee[be]=Ee[Z]=Ee[ue]=Ee[pe]=Ee[he]=Ee[ie]=Ee[Je]=Ee[tr]=Ee[Qe]=Ee[Ve]=!0,Ee[Y]=Ee[ee]=Ee[_e]=!1;function Mt(Me,St,ze,Mc,qt,We){var Ye,ht=St&A,rr=St&j,rn=St&I;if(ze&&(Ye=qt?ze(Me,Mc,qt,We):ze(Me)),Ye!==void 0)return Ye;if(!E(Me))return Me;var $t=_(Me);if($t){if(Ye=m(Me),!ht)return a(Me,Ye)}else{var kt=p(Me),nn=kt==ee||kt==J;if(b(Me))return s(Me,ht);if(kt==Z||kt==D||nn&&!qt){if(Ye=rr||nn?{}:x(Me),!ht)return rr?c(Me,i(Ye,Me)):o(Me,n(Ye,Me))}else{if(!Ee[kt])return qt?Me:{};Ye=y(Me,kt,ht)}}We||(We=new e);var sn=We.get(Me);if(sn)return sn;We.set(Me,Ye),N(Me)?Me.forEach(function(vt){Ye.add(Mt(vt,St,ze,vt,Me,We))}):w(Me)&&Me.forEach(function(vt,mt){Ye.set(mt,Mt(vt,St,ze,mt,Me,We))});var Sc=rn?rr?l:f:rr?R:S,on=$t?void 0:Sc(Me);return r(on||Me,function(vt,mt){on&&(mt=vt,vt=Me[mt]),t(Ye,mt,Mt(vt,St,ze,mt,Me,We))}),Ye}return Ws=Mt,Ws}var Ys,vd;function Zb(){if(vd)return Ys;vd=1;var e=pd(),r=4;function t(n){return e(n,r)}return Ys=t,Ys}var Ks,md;function Xs(){if(md)return Ks;md=1;function e(r){return function(){return r}}return Ks=e,Ks}var Zs,yd;function Jb(){if(yd)return Zs;yd=1;function e(r){return function(t,n,i){for(var s=-1,a=Object(t),o=i(t),c=o.length;c--;){var f=o[r?c:++s];if(n(a[f],f,a)===!1)break}return t}}return Zs=e,Zs}var Js,wd;function Qs(){if(wd)return Js;wd=1;var e=Jb(),r=e();return Js=r,Js}var Hs,bd;function eo(){if(bd)return Hs;bd=1;var e=Qs(),r=Tt();function t(n,i){return n&&e(n,i,r)}return Hs=t,Hs}var to,_d;function Qb(){if(_d)return to;_d=1;var e=Et();function r(t,n){return function(i,s){if(i==null)return i;if(!e(i))return t(i,s);for(var a=i.length,o=n?a:-1,c=Object(i);(n?o--:++o<a)&&s(c[o],o,c)!==!1;);return i}}return to=r,to}var ro,Ed;function Wr(){if(Ed)return ro;Ed=1;var e=eo(),r=Qb(),t=r(e);return ro=t,ro}var no,xd;function Bt(){if(xd)return no;xd=1;function e(r){return r}return no=e,no}var io,Nd;function Md(){if(Nd)return io;Nd=1;var e=Bt();function r(t){return typeof t=="function"?t:e}return io=r,io}var so,Sd;function qd(){if(Sd)return so;Sd=1;var e=Ci(),r=Wr(),t=Md(),n=De();function i(s,a){var o=n(s)?e:r;return o(s,t(a))}return so=i,so}var oo,Rd;function Od(){return Rd||(Rd=1,oo=qd()),oo}var ao,Ad;function Hb(){if(Ad)return ao;Ad=1;var e=Wr();function r(t,n){var i=[];return e(t,function(s,a,o){n(s,a,o)&&i.push(s)}),i}return ao=r,ao}var uo,Id;function e_(){if(Id)return uo;Id=1;var e="__lodash_hash_undefined__";function r(t){return this.__data__.set(t,e),this}return uo=r,uo}var co,Td;function t_(){if(Td)return co;Td=1;function e(r){return this.__data__.has(r)}return co=e,co}var fo,kd;function jd(){if(kd)return fo;kd=1;var e=Ii(),r=e_(),t=t_();function n(i){var s=-1,a=i==null?0:i.length;for(this.__data__=new e;++s<a;)this.add(i[s])}return n.prototype.add=n.prototype.push=r,n.prototype.has=t,fo=n,fo}var lo,Cd;function r_(){if(Cd)return lo;Cd=1;function e(r,t){for(var n=-1,i=r==null?0:r.length;++n<i;)if(t(r[n],n,r))return!0;return!1}return lo=e,lo}var ho,Pd;function Ld(){if(Pd)return ho;Pd=1;function e(r,t){return r.has(t)}return ho=e,ho}var go,Dd;function zd(){if(Dd)return go;Dd=1;var e=jd(),r=r_(),t=Ld(),n=1,i=2;function s(a,o,c,f,l,p){var m=c&n,y=a.length,x=o.length;if(y!=x&&!(m&&x>y))return!1;var _=p.get(a),b=p.get(o);if(_&&b)return _==o&&b==a;var w=-1,E=!0,N=c&i?new e:void 0;for(p.set(a,o),p.set(o,a);++w<y;){var S=a[w],R=o[w];if(f)var A=m?f(R,S,w,o,a,p):f(S,R,w,a,o,p);if(A!==void 0){if(A)continue;E=!1;break}if(N){if(!r(o,function(j,I){if(!t(N,I)&&(S===j||l(S,j,c,f,p)))return N.push(I)})){E=!1;break}}else if(!(S===R||l(S,R,c,f,p))){E=!1;break}}return p.delete(a),p.delete(o),E}return go=s,go}var po,Fd;function n_(){if(Fd)return po;Fd=1;function e(r){var t=-1,n=Array(r.size);return r.forEach(function(i,s){n[++t]=[s,i]}),n}return po=e,po}var vo,Bd;function mo(){if(Bd)return vo;Bd=1;function e(r){var t=-1,n=Array(r.size);return r.forEach(function(i){n[++t]=i}),n}return vo=e,vo}var yo,$d;function i_(){if($d)return yo;$d=1;var e=Xt(),r=Qh(),t=Kt(),n=zd(),i=n_(),s=mo(),a=1,o=2,c="[object Boolean]",f="[object Date]",l="[object Error]",p="[object Map]",m="[object Number]",y="[object RegExp]",x="[object Set]",_="[object String]",b="[object Symbol]",w="[object ArrayBuffer]",E="[object DataView]",N=e?e.prototype:void 0,S=N?N.valueOf:void 0;function R(A,j,I,D,z,$,V){switch(I){case E:if(A.byteLength!=j.byteLength||A.byteOffset!=j.byteOffset)return!1;A=A.buffer,j=j.buffer;case w:return!(A.byteLength!=j.byteLength||!$(new r(A),new r(j)));case c:case f:case m:return t(+A,+j);case l:return A.name==j.name&&A.message==j.message;case y:case _:return A==j+"";case p:var Y=i;case x:var ee=D&a;if(Y||(Y=s),A.size!=j.size&&!ee)return!1;var J=V.get(A);if(J)return J==j;D|=o,V.set(A,j);var ae=n(Y(A),Y(j),D,z,$,V);return V.delete(A),ae;case b:if(S)return S.call(A)==S.call(j)}return!1}return yo=R,yo}var wo,Gd;function s_(){if(Gd)return wo;Gd=1;var e=$h(),r=1,t=Object.prototype,n=t.hasOwnProperty;function i(s,a,o,c,f,l){var p=o&r,m=e(s),y=m.length,x=e(a),_=x.length;if(y!=_&&!p)return!1;for(var b=y;b--;){var w=m[b];if(!(p?w in a:n.call(a,w)))return!1}var E=l.get(s),N=l.get(a);if(E&&N)return E==a&&N==s;var S=!0;l.set(s,a),l.set(a,s);for(var R=p;++b<y;){w=m[b];var A=s[w],j=a[w];if(c)var I=p?c(j,A,w,a,s,l):c(A,j,w,s,a,l);if(!(I===void 0?A===j||f(A,j,o,c,l):I)){S=!1;break}R||(R=w=="constructor")}if(S&&!R){var D=s.constructor,z=a.constructor;D!=z&&"constructor"in s&&"constructor"in a&&!(typeof D=="function"&&D instanceof D&&typeof z=="function"&&z instanceof z)&&(S=!1)}return l.delete(s),l.delete(a),S}return wo=i,wo}var bo,Ud;function o_(){if(Ud)return bo;Ud=1;var e=zr(),r=zd(),t=i_(),n=s_(),i=Jt(),s=De(),a=Zt(),o=vr(),c=1,f="[object Arguments]",l="[object Array]",p="[object Object]",m=Object.prototype,y=m.hasOwnProperty;function x(_,b,w,E,N,S){var R=s(_),A=s(b),j=R?l:i(_),I=A?l:i(b);j=j==f?p:j,I=I==f?p:I;var D=j==p,z=I==p,$=j==I;if($&&a(_)){if(!a(b))return!1;R=!0,D=!1}if($&&!D)return S||(S=new e),R||o(_)?r(_,b,w,E,N,S):t(_,b,j,w,E,N,S);if(!(w&c)){var V=D&&y.call(_,"__wrapped__"),Y=z&&y.call(b,"__wrapped__");if(V||Y){var ee=V?_.value():_,J=Y?b.value():b;return S||(S=new e),N(ee,J,w,E,S)}}return $?(S||(S=new e),n(_,b,w,E,N,S)):!1}return bo=x,bo}var _o,Vd;function Wd(){if(Vd)return _o;Vd=1;var e=o_(),r=pt();function t(n,i,s,a,o){return n===i?!0:n==null||i==null||!r(n)&&!r(i)?n!==n&&i!==i:e(n,i,s,a,t,o)}return _o=t,_o}var Eo,Yd;function a_(){if(Yd)return Eo;Yd=1;var e=zr(),r=Wd(),t=1,n=2;function i(s,a,o,c){var f=o.length,l=f,p=!c;if(s==null)return!l;for(s=Object(s);f--;){var m=o[f];if(p&&m[2]?m[1]!==s[m[0]]:!(m[0]in s))return!1}for(;++f<l;){m=o[f];var y=m[0],x=s[y],_=m[1];if(p&&m[2]){if(x===void 0&&!(y in s))return!1}else{var b=new e;if(c)var w=c(x,_,y,s,a,b);if(!(w===void 0?r(_,x,t|n,c,b):w))return!1}}return!0}return Eo=i,Eo}var xo,Kd;function Xd(){if(Kd)return xo;Kd=1;var e=ut();function r(t){return t===t&&!e(t)}return xo=r,xo}var No,Zd;function u_(){if(Zd)return No;Zd=1;var e=Xd(),r=Tt();function t(n){for(var i=r(n),s=i.length;s--;){var a=i[s],o=n[a];i[s]=[a,o,e(o)]}return i}return No=t,No}var Mo,Jd;function Qd(){if(Jd)return Mo;Jd=1;function e(r,t){return function(n){return n==null?!1:n[r]===t&&(t!==void 0||r in Object(n))}}return Mo=e,Mo}var So,Hd;function c_(){if(Hd)return So;Hd=1;var e=a_(),r=u_(),t=Qd();function n(i){var s=r(i);return s.length==1&&s[0][2]?t(s[0][0],s[0][1]):function(a){return a===i||e(a,i,s)}}return So=n,So}var qo,eg;function Qt(){if(eg)return qo;eg=1;var e=Dt(),r=pt(),t="[object Symbol]";function n(i){return typeof i=="symbol"||r(i)&&e(i)==t}return qo=n,qo}var Ro,tg;function Oo(){if(tg)return Ro;tg=1;var e=De(),r=Qt(),t=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;function i(s,a){if(e(s))return!1;var o=typeof s;return o=="number"||o=="symbol"||o=="boolean"||s==null||r(s)?!0:n.test(s)||!t.test(s)||a!=null&&s in Object(a)}return Ro=i,Ro}var Ao,rg;function f_(){if(rg)return Ao;rg=1;var e=Ii(),r="Expected a function";function t(n,i){if(typeof n!="function"||i!=null&&typeof i!="function")throw new TypeError(r);var s=function(){var a=arguments,o=i?i.apply(this,a):a[0],c=s.cache;if(c.has(o))return c.get(o);var f=n.apply(this,a);return s.cache=c.set(o,f)||c,f};return s.cache=new(t.Cache||e),s}return t.Cache=e,Ao=t,Ao}var Io,ng;function l_(){if(ng)return Io;ng=1;var e=f_(),r=500;function t(n){var i=e(n,function(a){return s.size===r&&s.clear(),a}),s=i.cache;return i}return Io=t,Io}var To,ig;function h_(){if(ig)return To;ig=1;var e=l_(),r=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,t=/\\(\\)?/g,n=e(function(i){var s=[];return i.charCodeAt(0)===46&&s.push(""),i.replace(r,function(a,o,c,f){s.push(c?f.replace(t,"$1"):o||a)}),s});return To=n,To}var ko,sg;function Yr(){if(sg)return ko;sg=1;function e(r,t){for(var n=-1,i=r==null?0:r.length,s=Array(i);++n<i;)s[n]=t(r[n],n,r);return s}return ko=e,ko}var jo,og;function d_(){if(og)return jo;og=1;var e=Xt(),r=Yr(),t=De(),n=Qt(),i=e?e.prototype:void 0,s=i?i.toString:void 0;function a(o){if(typeof o=="string")return o;if(t(o))return r(o,a)+"";if(n(o))return s?s.call(o):"";var c=o+"";return c=="0"&&1/o==-1/0?"-0":c}return jo=a,jo}var Co,ag;function ug(){if(ag)return Co;ag=1;var e=d_();function r(t){return t==null?"":e(t)}return Co=r,Co}var Po,cg;function Kr(){if(cg)return Po;cg=1;var e=De(),r=Oo(),t=h_(),n=ug();function i(s,a){return e(s)?s:r(s,a)?[s]:t(n(s))}return Po=i,Po}var Lo,fg;function yr(){if(fg)return Lo;fg=1;var e=Qt();function r(t){if(typeof t=="string"||e(t))return t;var n=t+"";return n=="0"&&1/t==-1/0?"-0":n}return Lo=r,Lo}var Do,lg;function Xr(){if(lg)return Do;lg=1;var e=Kr(),r=yr();function t(n,i){i=e(i,n);for(var s=0,a=i.length;n!=null&&s<a;)n=n[r(i[s++])];return s&&s==a?n:void 0}return Do=t,Do}var zo,hg;function g_(){if(hg)return zo;hg=1;var e=Xr();function r(t,n,i){var s=t==null?void 0:e(t,n);return s===void 0?i:s}return zo=r,zo}var Fo,dg;function p_(){if(dg)return Fo;dg=1;function e(r,t){return r!=null&&t in Object(r)}return Fo=e,Fo}var Bo,gg;function pg(){if(gg)return Bo;gg=1;var e=Kr(),r=dr(),t=De(),n=$r(),i=Ki(),s=yr();function a(o,c,f){c=e(c,o);for(var l=-1,p=c.length,m=!1;++l<p;){var y=s(c[l]);if(!(m=o!=null&&f(o,y)))break;o=o[y]}return m||++l!=p?m:(p=o==null?0:o.length,!!p&&i(p)&&n(y,p)&&(t(o)||r(o)))}return Bo=a,Bo}var $o,vg;function mg(){if(vg)return $o;vg=1;var e=p_(),r=pg();function t(n,i){return n!=null&&r(n,i,e)}return $o=t,$o}var Go,yg;function v_(){if(yg)return Go;yg=1;var e=Wd(),r=g_(),t=mg(),n=Oo(),i=Xd(),s=Qd(),a=yr(),o=1,c=2;function f(l,p){return n(l)&&i(p)?s(a(l),p):function(m){var y=r(m,l);return y===void 0&&y===p?t(m,l):e(p,y,o|c)}}return Go=f,Go}var Uo,wg;function bg(){if(wg)return Uo;wg=1;function e(r){return function(t){return t==null?void 0:t[r]}}return Uo=e,Uo}var Vo,_g;function m_(){if(_g)return Vo;_g=1;var e=Xr();function r(t){return function(n){return e(n,t)}}return Vo=r,Vo}var Wo,Eg;function y_(){if(Eg)return Wo;Eg=1;var e=bg(),r=m_(),t=Oo(),n=yr();function i(s){return t(s)?e(n(s)):r(s)}return Wo=i,Wo}var Yo,xg;function xt(){if(xg)return Yo;xg=1;var e=c_(),r=v_(),t=Bt(),n=De(),i=y_();function s(a){return typeof a=="function"?a:a==null?t:typeof a=="object"?n(a)?r(a[0],a[1]):e(a):i(a)}return Yo=s,Yo}var Ko,Ng;function Mg(){if(Ng)return Ko;Ng=1;var e=Oh(),r=Hb(),t=xt(),n=De();function i(s,a){var o=n(s)?e:r;return o(s,t(a,3))}return Ko=i,Ko}var Xo,Sg;function w_(){if(Sg)return Xo;Sg=1;var e=Object.prototype,r=e.hasOwnProperty;function t(n,i){return n!=null&&r.call(n,i)}return Xo=t,Xo}var Zo,qg;function Rg(){if(qg)return Zo;qg=1;var e=w_(),r=pg();function t(n,i){return n!=null&&r(n,i,e)}return Zo=t,Zo}var Jo,Og;function b_(){if(Og)return Jo;Og=1;var e=is(),r=Jt(),t=dr(),n=De(),i=Et(),s=Zt(),a=Ur(),o=vr(),c="[object Map]",f="[object Set]",l=Object.prototype,p=l.hasOwnProperty;function m(y){if(y==null)return!0;if(i(y)&&(n(y)||typeof y=="string"||typeof y.splice=="function"||s(y)||o(y)||t(y)))return!y.length;var x=r(y);if(x==c||x==f)return!y.size;if(a(y))return!e(y).length;for(var _ in y)if(p.call(y,_))return!1;return!0}return Jo=m,Jo}var Qo,Ag;function Ig(){if(Ag)return Qo;Ag=1;function e(r){return r===void 0}return Qo=e,Qo}var Ho,Tg;function kg(){if(Tg)return Ho;Tg=1;var e=Wr(),r=Et();function t(n,i){var s=-1,a=r(n)?Array(n.length):[];return e(n,function(o,c,f){a[++s]=i(o,c,f)}),a}return Ho=t,Ho}var ea,jg;function Cg(){if(jg)return ea;jg=1;var e=Yr(),r=xt(),t=kg(),n=De();function i(s,a){var o=n(s)?e:t;return o(s,r(a,3))}return ea=i,ea}var ta,Pg;function __(){if(Pg)return ta;Pg=1;function e(r,t,n,i){var s=-1,a=r==null?0:r.length;for(i&&a&&(n=r[++s]);++s<a;)n=t(n,r[s],s,r);return n}return ta=e,ta}var ra,Lg;function E_(){if(Lg)return ra;Lg=1;function e(r,t,n,i,s){return s(r,function(a,o,c){n=i?(i=!1,a):t(n,a,o,c)}),n}return ra=e,ra}var na,Dg;function zg(){if(Dg)return na;Dg=1;var e=__(),r=Wr(),t=xt(),n=E_(),i=De();function s(a,o,c){var f=i(a)?e:n,l=arguments.length<3;return f(a,t(o,4),c,l,r)}return na=s,na}var ia,Fg;function x_(){if(Fg)return ia;Fg=1;var e=Dt(),r=De(),t=pt(),n="[object String]";function i(s){return typeof s=="string"||!r(s)&&t(s)&&e(s)==n}return ia=i,ia}var sa,Bg;function N_(){if(Bg)return sa;Bg=1;var e=bg(),r=e("length");return sa=r,sa}var oa,$g;function M_(){if($g)return oa;$g=1;var e="\\ud800-\\udfff",r="\\u0300-\\u036f",t="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",i=r+t+n,s="\\ufe0e\\ufe0f",a="\\u200d",o=RegExp("["+a+e+i+s+"]");function c(f){return o.test(f)}return oa=c,oa}var aa,Gg;function S_(){if(Gg)return aa;Gg=1;var e="\\ud800-\\udfff",r="\\u0300-\\u036f",t="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",i=r+t+n,s="\\ufe0e\\ufe0f",a="["+e+"]",o="["+i+"]",c="\\ud83c[\\udffb-\\udfff]",f="(?:"+o+"|"+c+")",l="[^"+e+"]",p="(?:\\ud83c[\\udde6-\\uddff]){2}",m="[\\ud800-\\udbff][\\udc00-\\udfff]",y="\\u200d",x=f+"?",_="["+s+"]?",b="(?:"+y+"(?:"+[l,p,m].join("|")+")"+_+x+")*",w=_+x+b,E="(?:"+[l+o+"?",o,p,m,a].join("|")+")",N=RegExp(c+"(?="+c+")|"+E+w,"g");function S(R){for(var A=N.lastIndex=0;N.test(R);)++A;return A}return aa=S,aa}var ua,Ug;function q_(){if(Ug)return ua;Ug=1;var e=N_(),r=M_(),t=S_();function n(i){return r(i)?t(i):e(i)}return ua=n,ua}var ca,Vg;function R_(){if(Vg)return ca;Vg=1;var e=is(),r=Jt(),t=Et(),n=x_(),i=q_(),s="[object Map]",a="[object Set]";function o(c){if(c==null)return 0;if(t(c))return n(c)?i(c):c.length;var f=r(c);return f==s||f==a?c.size:e(c).length}return ca=o,ca}var fa,Wg;function O_(){if(Wg)return fa;Wg=1;var e=Ci(),r=ad(),t=eo(),n=xt(),i=Vr(),s=De(),a=Zt(),o=lr(),c=ut(),f=vr();function l(p,m,y){var x=s(p),_=x||a(p)||f(p);if(m=n(m,4),y==null){var b=p&&p.constructor;_?y=x?new b:[]:c(p)?y=o(b)?r(i(p)):{}:y={}}return(_?e:t)(p,function(w,E,N){return m(y,w,E,N)}),y}return fa=l,fa}var la,Yg;function A_(){if(Yg)return la;Yg=1;var e=Xt(),r=dr(),t=De(),n=e?e.isConcatSpreadable:void 0;function i(s){return t(s)||r(s)||!!(n&&s&&s[n])}return la=i,la}var ha,Kg;function da(){if(Kg)return ha;Kg=1;var e=ws(),r=A_();function t(n,i,s,a,o){var c=-1,f=n.length;for(s||(s=r),o||(o=[]);++c<f;){var l=n[c];i>0&&s(l)?i>1?t(l,i-1,s,a,o):e(o,l):a||(o[o.length]=l)}return o}return ha=t,ha}var ga,Xg;function I_(){if(Xg)return ga;Xg=1;function e(r,t,n){switch(n.length){case 0:return r.call(t);case 1:return r.call(t,n[0]);case 2:return r.call(t,n[0],n[1]);case 3:return r.call(t,n[0],n[1],n[2])}return r.apply(t,n)}return ga=e,ga}var pa,Zg;function Jg(){if(Zg)return pa;Zg=1;var e=I_(),r=Math.max;function t(n,i,s){return i=r(i===void 0?n.length-1:i,0),function(){for(var a=arguments,o=-1,c=r(a.length-i,0),f=Array(c);++o<c;)f[o]=a[i+o];o=-1;for(var l=Array(i+1);++o<i;)l[o]=a[o];return l[i]=s(f),e(n,this,l)}}return pa=t,pa}var va,Qg;function T_(){if(Qg)return va;Qg=1;var e=Xs(),r=Yl(),t=Bt(),n=r?function(i,s){return r(i,"toString",{configurable:!0,enumerable:!1,value:e(s),writable:!0})}:t;return va=n,va}var ma,Hg;function k_(){if(Hg)return ma;Hg=1;var e=800,r=16,t=Date.now;function n(i){var s=0,a=0;return function(){var o=t(),c=r-(o-a);if(a=o,c>0){if(++s>=e)return arguments[0]}else s=0;return i.apply(void 0,arguments)}}return ma=n,ma}var ya,ep;function tp(){if(ep)return ya;ep=1;var e=T_(),r=k_(),t=r(e);return ya=t,ya}var wa,rp;function Zr(){if(rp)return wa;rp=1;var e=Bt(),r=Jg(),t=tp();function n(i,s){return t(r(i,s,e),i+"")}return wa=n,wa}var ba,np;function ip(){if(np)return ba;np=1;function e(r,t,n,i){for(var s=r.length,a=n+(i?1:-1);i?a--:++a<s;)if(t(r[a],a,r))return a;return-1}return ba=e,ba}var _a,sp;function j_(){if(sp)return _a;sp=1;function e(r){return r!==r}return _a=e,_a}var Ea,op;function C_(){if(op)return Ea;op=1;function e(r,t,n){for(var i=n-1,s=r.length;++i<s;)if(r[i]===t)return i;return-1}return Ea=e,Ea}var xa,ap;function P_(){if(ap)return xa;ap=1;var e=ip(),r=j_(),t=C_();function n(i,s,a){return s===s?t(i,s,a):e(i,r,a)}return xa=n,xa}var Na,up;function L_(){if(up)return Na;up=1;var e=P_();function r(t,n){var i=t==null?0:t.length;return!!i&&e(t,n,0)>-1}return Na=r,Na}var Ma,cp;function D_(){if(cp)return Ma;cp=1;function e(r,t,n){for(var i=-1,s=r==null?0:r.length;++i<s;)if(n(t,r[i]))return!0;return!1}return Ma=e,Ma}var Sa,fp;function z_(){if(fp)return Sa;fp=1;function e(){}return Sa=e,Sa}var qa,lp;function F_(){if(lp)return qa;lp=1;var e=Yh(),r=z_(),t=mo(),n=1/0,i=e&&1/t(new e([,-0]))[1]==n?function(s){return new e(s)}:r;return qa=i,qa}var Ra,hp;function B_(){if(hp)return Ra;hp=1;var e=jd(),r=L_(),t=D_(),n=Ld(),i=F_(),s=mo(),a=200;function o(c,f,l){var p=-1,m=r,y=c.length,x=!0,_=[],b=_;if(l)x=!1,m=t;else if(y>=a){var w=f?null:i(c);if(w)return s(w);x=!1,m=n,b=new e}else b=f?[]:_;e:for(;++p<y;){var E=c[p],N=f?f(E):E;if(E=l||E!==0?E:0,x&&N===N){for(var S=b.length;S--;)if(b[S]===N)continue e;f&&b.push(N),_.push(E)}else m(b,N,l)||(b!==_&&b.push(N),_.push(E))}return _}return Ra=o,Ra}var Oa,dp;function gp(){if(dp)return Oa;dp=1;var e=Et(),r=pt();function t(n){return r(n)&&e(n)}return Oa=t,Oa}var Aa,pp;function $_(){if(pp)return Aa;pp=1;var e=da(),r=Zr(),t=B_(),n=gp(),i=r(function(s){return t(e(s,1,n,!0))});return Aa=i,Aa}var Ia,vp;function G_(){if(vp)return Ia;vp=1;var e=Yr();function r(t,n){return e(n,function(i){return t[i]})}return Ia=r,Ia}var Ta,mp;function yp(){if(mp)return Ta;mp=1;var e=G_(),r=Tt();function t(n){return n==null?[]:e(n,r(n))}return Ta=t,Ta}var ka,wp;function ct(){if(wp)return ka;wp=1;var e;if(typeof Bn=="function")try{e={clone:Zb(),constant:Xs(),each:Od(),filter:Mg(),has:Rg(),isArray:De(),isEmpty:b_(),isFunction:lr(),isUndefined:Ig(),keys:Tt(),map:Cg(),reduce:zg(),size:R_(),transform:O_(),union:$_(),values:yp()}}catch{}return e||(e=window._),ka=e,ka}var ja,bp;function Ca(){if(bp)return ja;bp=1;var e=ct();ja=i;var r="\0",t="\0",n="";function i(l){this._isDirected=e.has(l,"directed")?l.directed:!0,this._isMultigraph=e.has(l,"multigraph")?l.multigraph:!1,this._isCompound=e.has(l,"compound")?l.compound:!1,this._label=void 0,this._defaultNodeLabelFn=e.constant(void 0),this._defaultEdgeLabelFn=e.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[t]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}i.prototype._nodeCount=0,i.prototype._edgeCount=0,i.prototype.isDirected=function(){return this._isDirected},i.prototype.isMultigraph=function(){return this._isMultigraph},i.prototype.isCompound=function(){return this._isCompound},i.prototype.setGraph=function(l){return this._label=l,this},i.prototype.graph=function(){return this._label},i.prototype.setDefaultNodeLabel=function(l){return e.isFunction(l)||(l=e.constant(l)),this._defaultNodeLabelFn=l,this},i.prototype.nodeCount=function(){return this._nodeCount},i.prototype.nodes=function(){return e.keys(this._nodes)},i.prototype.sources=function(){var l=this;return e.filter(this.nodes(),function(p){return e.isEmpty(l._in[p])})},i.prototype.sinks=function(){var l=this;return e.filter(this.nodes(),function(p){return e.isEmpty(l._out[p])})},i.prototype.setNodes=function(l,p){var m=arguments,y=this;return e.each(l,function(x){m.length>1?y.setNode(x,p):y.setNode(x)}),this},i.prototype.setNode=function(l,p){return e.has(this._nodes,l)?(arguments.length>1&&(this._nodes[l]=p),this):(this._nodes[l]=arguments.length>1?p:this._defaultNodeLabelFn(l),this._isCompound&&(this._parent[l]=t,this._children[l]={},this._children[t][l]=!0),this._in[l]={},this._preds[l]={},this._out[l]={},this._sucs[l]={},++this._nodeCount,this)},i.prototype.node=function(l){return this._nodes[l]},i.prototype.hasNode=function(l){return e.has(this._nodes,l)},i.prototype.removeNode=function(l){var p=this;if(e.has(this._nodes,l)){var m=function(y){p.removeEdge(p._edgeObjs[y])};delete this._nodes[l],this._isCompound&&(this._removeFromParentsChildList(l),delete this._parent[l],e.each(this.children(l),function(y){p.setParent(y)}),delete this._children[l]),e.each(e.keys(this._in[l]),m),delete this._in[l],delete this._preds[l],e.each(e.keys(this._out[l]),m),delete this._out[l],delete this._sucs[l],--this._nodeCount}return this},i.prototype.setParent=function(l,p){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(e.isUndefined(p))p=t;else{p+="";for(var m=p;!e.isUndefined(m);m=this.parent(m))if(m===l)throw new Error("Setting "+p+" as parent of "+l+" would create a cycle");this.setNode(p)}return this.setNode(l),this._removeFromParentsChildList(l),this._parent[l]=p,this._children[p][l]=!0,this},i.prototype._removeFromParentsChildList=function(l){delete this._children[this._parent[l]][l]},i.prototype.parent=function(l){if(this._isCompound){var p=this._parent[l];if(p!==t)return p}},i.prototype.children=function(l){if(e.isUndefined(l)&&(l=t),this._isCompound){var p=this._children[l];if(p)return e.keys(p)}else{if(l===t)return this.nodes();if(this.hasNode(l))return[]}},i.prototype.predecessors=function(l){var p=this._preds[l];if(p)return e.keys(p)},i.prototype.successors=function(l){var p=this._sucs[l];if(p)return e.keys(p)},i.prototype.neighbors=function(l){var p=this.predecessors(l);if(p)return e.union(p,this.successors(l))},i.prototype.isLeaf=function(l){var p;return this.isDirected()?p=this.successors(l):p=this.neighbors(l),p.length===0},i.prototype.filterNodes=function(l){var p=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});p.setGraph(this.graph());var m=this;e.each(this._nodes,function(_,b){l(b)&&p.setNode(b,_)}),e.each(this._edgeObjs,function(_){p.hasNode(_.v)&&p.hasNode(_.w)&&p.setEdge(_,m.edge(_))});var y={};function x(_){var b=m.parent(_);return b===void 0||p.hasNode(b)?(y[_]=b,b):b in y?y[b]:x(b)}return this._isCompound&&e.each(p.nodes(),function(_){p.setParent(_,x(_))}),p},i.prototype.setDefaultEdgeLabel=function(l){return e.isFunction(l)||(l=e.constant(l)),this._defaultEdgeLabelFn=l,this},i.prototype.edgeCount=function(){return this._edgeCount},i.prototype.edges=function(){return e.values(this._edgeObjs)},i.prototype.setPath=function(l,p){var m=this,y=arguments;return e.reduce(l,function(x,_){return y.length>1?m.setEdge(x,_,p):m.setEdge(x,_),_}),this},i.prototype.setEdge=function(){var l,p,m,y,x=!1,_=arguments[0];typeof _=="object"&&_!==null&&"v"in _?(l=_.v,p=_.w,m=_.name,arguments.length===2&&(y=arguments[1],x=!0)):(l=_,p=arguments[1],m=arguments[3],arguments.length>2&&(y=arguments[2],x=!0)),l=""+l,p=""+p,e.isUndefined(m)||(m=""+m);var b=o(this._isDirected,l,p,m);if(e.has(this._edgeLabels,b))return x&&(this._edgeLabels[b]=y),this;if(!e.isUndefined(m)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(l),this.setNode(p),this._edgeLabels[b]=x?y:this._defaultEdgeLabelFn(l,p,m);var w=c(this._isDirected,l,p,m);return l=w.v,p=w.w,Object.freeze(w),this._edgeObjs[b]=w,s(this._preds[p],l),s(this._sucs[l],p),this._in[p][b]=w,this._out[l][b]=w,this._edgeCount++,this},i.prototype.edge=function(l,p,m){var y=arguments.length===1?f(this._isDirected,arguments[0]):o(this._isDirected,l,p,m);return this._edgeLabels[y]},i.prototype.hasEdge=function(l,p,m){var y=arguments.length===1?f(this._isDirected,arguments[0]):o(this._isDirected,l,p,m);return e.has(this._edgeLabels,y)},i.prototype.removeEdge=function(l,p,m){var y=arguments.length===1?f(this._isDirected,arguments[0]):o(this._isDirected,l,p,m),x=this._edgeObjs[y];return x&&(l=x.v,p=x.w,delete this._edgeLabels[y],delete this._edgeObjs[y],a(this._preds[p],l),a(this._sucs[l],p),delete this._in[p][y],delete this._out[l][y],this._edgeCount--),this},i.prototype.inEdges=function(l,p){var m=this._in[l];if(m){var y=e.values(m);return p?e.filter(y,function(x){return x.v===p}):y}},i.prototype.outEdges=function(l,p){var m=this._out[l];if(m){var y=e.values(m);return p?e.filter(y,function(x){return x.w===p}):y}},i.prototype.nodeEdges=function(l,p){var m=this.inEdges(l,p);if(m)return m.concat(this.outEdges(l,p))};function s(l,p){l[p]?l[p]++:l[p]=1}function a(l,p){--l[p]||delete l[p]}function o(l,p,m,y){var x=""+p,_=""+m;if(!l&&x>_){var b=x;x=_,_=b}return x+n+_+n+(e.isUndefined(y)?r:y)}function c(l,p,m,y){var x=""+p,_=""+m;if(!l&&x>_){var b=x;x=_,_=b}var w={v:x,w:_};return y&&(w.name=y),w}function f(l,p){return o(l,p.v,p.w,p.name)}return ja}var Pa,_p;function U_(){return _p||(_p=1,Pa="2.1.8"),Pa}var La,Ep;function V_(){return Ep||(Ep=1,La={Graph:Ca(),version:U_()}),La}var Da,xp;function W_(){if(xp)return Da;xp=1;var e=ct(),r=Ca();Da={write:t,read:s};function t(a){var o={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:n(a),edges:i(a)};return e.isUndefined(a.graph())||(o.value=e.clone(a.graph())),o}function n(a){return e.map(a.nodes(),function(o){var c=a.node(o),f=a.parent(o),l={v:o};return e.isUndefined(c)||(l.value=c),e.isUndefined(f)||(l.parent=f),l})}function i(a){return e.map(a.edges(),function(o){var c=a.edge(o),f={v:o.v,w:o.w};return e.isUndefined(o.name)||(f.name=o.name),e.isUndefined(c)||(f.value=c),f})}function s(a){var o=new r(a.options).setGraph(a.value);return e.each(a.nodes,function(c){o.setNode(c.v,c.value),c.parent&&o.setParent(c.v,c.parent)}),e.each(a.edges,function(c){o.setEdge({v:c.v,w:c.w,name:c.name},c.value)}),o}return Da}var za,Np;function Y_(){if(Np)return za;Np=1;var e=ct();za=r;function r(t){var n={},i=[],s;function a(o){e.has(n,o)||(n[o]=!0,s.push(o),e.each(t.successors(o),a),e.each(t.predecessors(o),a))}return e.each(t.nodes(),function(o){s=[],a(o),s.length&&i.push(s)}),i}return za}var Fa,Mp;function Sp(){if(Mp)return Fa;Mp=1;var e=ct();Fa=r;function r(){this._arr=[],this._keyIndices={}}return r.prototype.size=function(){return this._arr.length},r.prototype.keys=function(){return this._arr.map(function(t){return t.key})},r.prototype.has=function(t){return e.has(this._keyIndices,t)},r.prototype.priority=function(t){var n=this._keyIndices[t];if(n!==void 0)return this._arr[n].priority},r.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},r.prototype.add=function(t,n){var i=this._keyIndices;if(t=String(t),!e.has(i,t)){var s=this._arr,a=s.length;return i[t]=a,s.push({key:t,priority:n}),this._decrease(a),!0}return!1},r.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key},r.prototype.decrease=function(t,n){var i=this._keyIndices[t];if(n>this._arr[i].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+this._arr[i].priority+" New: "+n);this._arr[i].priority=n,this._decrease(i)},r.prototype._heapify=function(t){var n=this._arr,i=2*t,s=i+1,a=t;i<n.length&&(a=n[i].priority<n[a].priority?i:a,s<n.length&&(a=n[s].priority<n[a].priority?s:a),a!==t&&(this._swap(t,a),this._heapify(a)))},r.prototype._decrease=function(t){for(var n=this._arr,i=n[t].priority,s;t!==0&&(s=t>>1,!(n[s].priority<i));)this._swap(t,s),t=s},r.prototype._swap=function(t,n){var i=this._arr,s=this._keyIndices,a=i[t],o=i[n];i[t]=o,i[n]=a,s[o.key]=t,s[a.key]=n},Fa}var Ba,qp;function Rp(){if(qp)return Ba;qp=1;var e=ct(),r=Sp();Ba=n;var t=e.constant(1);function n(s,a,o,c){return i(s,String(a),o||t,c||function(f){return s.outEdges(f)})}function i(s,a,o,c){var f={},l=new r,p,m,y=function(x){var _=x.v!==p?x.v:x.w,b=f[_],w=o(x),E=m.distance+w;if(w<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+x+" Weight: "+w);E<b.distance&&(b.distance=E,b.predecessor=p,l.decrease(_,E))};for(s.nodes().forEach(function(x){var _=x===a?0:Number.POSITIVE_INFINITY;f[x]={distance:_},l.add(x,_)});l.size()>0&&(p=l.removeMin(),m=f[p],m.distance!==Number.POSITIVE_INFINITY);)c(p).forEach(y);return f}return Ba}var $a,Op;function K_(){if(Op)return $a;Op=1;var e=Rp(),r=ct();$a=t;function t(n,i,s){return r.transform(n.nodes(),function(a,o){a[o]=e(n,o,i,s)},{})}return $a}var Ga,Ap;function Ip(){if(Ap)return Ga;Ap=1;var e=ct();Ga=r;function r(t){var n=0,i=[],s={},a=[];function o(c){var f=s[c]={onStack:!0,lowlink:n,index:n++};if(i.push(c),t.successors(c).forEach(function(m){e.has(s,m)?s[m].onStack&&(f.lowlink=Math.min(f.lowlink,s[m].index)):(o(m),f.lowlink=Math.min(f.lowlink,s[m].lowlink))}),f.lowlink===f.index){var l=[],p;do p=i.pop(),s[p].onStack=!1,l.push(p);while(c!==p);a.push(l)}}return t.nodes().forEach(function(c){e.has(s,c)||o(c)}),a}return Ga}var Ua,Tp;function X_(){if(Tp)return Ua;Tp=1;var e=ct(),r=Ip();Ua=t;function t(n){return e.filter(r(n),function(i){return i.length>1||i.length===1&&n.hasEdge(i[0],i[0])})}return Ua}var Va,kp;function Z_(){if(kp)return Va;kp=1;var e=ct();Va=t;var r=e.constant(1);function t(i,s,a){return n(i,s||r,a||function(o){return i.outEdges(o)})}function n(i,s,a){var o={},c=i.nodes();return c.forEach(function(f){o[f]={},o[f][f]={distance:0},c.forEach(function(l){f!==l&&(o[f][l]={distance:Number.POSITIVE_INFINITY})}),a(f).forEach(function(l){var p=l.v===f?l.w:l.v,m=s(l);o[f][p]={distance:m,predecessor:f}})}),c.forEach(function(f){var l=o[f];c.forEach(function(p){var m=o[p];c.forEach(function(y){var x=m[f],_=l[y],b=m[y],w=x.distance+_.distance;w<b.distance&&(b.distance=w,b.predecessor=_.predecessor)})})}),o}return Va}var Wa,jp;function Cp(){if(jp)return Wa;jp=1;var e=ct();Wa=r,r.CycleException=t;function r(n){var i={},s={},a=[];function o(c){if(e.has(s,c))throw new t;e.has(i,c)||(s[c]=!0,i[c]=!0,e.each(n.predecessors(c),o),delete s[c],a.push(c))}if(e.each(n.sinks(),o),e.size(i)!==n.nodeCount())throw new t;return a}function t(){}return t.prototype=new Error,Wa}var Ya,Pp;function J_(){if(Pp)return Ya;Pp=1;var e=Cp();Ya=r;function r(t){try{e(t)}catch(n){if(n instanceof e.CycleException)return!1;throw n}return!0}return Ya}var Ka,Lp;function Dp(){if(Lp)return Ka;Lp=1;var e=ct();Ka=r;function r(n,i,s){e.isArray(i)||(i=[i]);var a=(n.isDirected()?n.successors:n.neighbors).bind(n),o=[],c={};return e.each(i,function(f){if(!n.hasNode(f))throw new Error("Graph does not have node: "+f);t(n,f,s==="post",c,a,o)}),o}function t(n,i,s,a,o,c){e.has(a,i)||(a[i]=!0,s||c.push(i),e.each(o(i),function(f){t(n,f,s,a,o,c)}),s&&c.push(i))}return Ka}var Xa,zp;function Q_(){if(zp)return Xa;zp=1;var e=Dp();Xa=r;function r(t,n){return e(t,n,"post")}return Xa}var Za,Fp;function H_(){if(Fp)return Za;Fp=1;var e=Dp();Za=r;function r(t,n){return e(t,n,"pre")}return Za}var Ja,Bp;function eE(){if(Bp)return Ja;Bp=1;var e=ct(),r=Ca(),t=Sp();Ja=n;function n(i,s){var a=new r,o={},c=new t,f;function l(m){var y=m.v===f?m.w:m.v,x=c.priority(y);if(x!==void 0){var _=s(m);_<x&&(o[y]=f,c.decrease(y,_))}}if(i.nodeCount()===0)return a;e.each(i.nodes(),function(m){c.add(m,Number.POSITIVE_INFINITY),a.setNode(m)}),c.decrease(i.nodes()[0],0);for(var p=!1;c.size()>0;){if(f=c.removeMin(),e.has(o,f))a.setEdge(f,o[f]);else{if(p)throw new Error("Input graph is not connected: "+i);p=!0}i.nodeEdges(f).forEach(l)}return a}return Ja}var Qa,$p;function tE(){return $p||($p=1,Qa={components:Y_(),dijkstra:Rp(),dijkstraAll:K_(),findCycles:X_(),floydWarshall:Z_(),isAcyclic:J_(),postorder:Q_(),preorder:H_(),prim:eE(),tarjan:Ip(),topsort:Cp()}),Qa}var Ha,Gp;function rE(){if(Gp)return Ha;Gp=1;var e=V_();return Ha={Graph:e.Graph,json:W_(),alg:tE(),version:e.version},Ha}var eu,Up;function lt(){if(Up)return eu;Up=1;var e;if(typeof Bn=="function")try{e=rE()}catch{}return e||(e=window.graphlib),eu=e,eu}var tu,Vp;function nE(){if(Vp)return tu;Vp=1;var e=pd(),r=1,t=4;function n(i){return e(i,r|t)}return tu=n,tu}var ru,Wp;function Jr(){if(Wp)return ru;Wp=1;var e=Kt(),r=Et(),t=$r(),n=ut();function i(s,a,o){if(!n(o))return!1;var c=typeof a;return(c=="number"?r(o)&&t(a,o.length):c=="string"&&a in o)?e(o[a],s):!1}return ru=i,ru}var nu,Yp;function iE(){if(Yp)return nu;Yp=1;var e=Zr(),r=Kt(),t=Jr(),n=Ft(),i=Object.prototype,s=i.hasOwnProperty,a=e(function(o,c){o=Object(o);var f=-1,l=c.length,p=l>2?c[2]:void 0;for(p&&t(c[0],c[1],p)&&(l=1);++f<l;)for(var m=c[f],y=n(m),x=-1,_=y.length;++x<_;){var b=y[x],w=o[b];(w===void 0||r(w,i[b])&&!s.call(o,b))&&(o[b]=m[b])}return o});return nu=a,nu}var iu,Kp;function sE(){if(Kp)return iu;Kp=1;var e=xt(),r=Et(),t=Tt();function n(i){return function(s,a,o){var c=Object(s);if(!r(s)){var f=e(a,3);s=t(s),a=function(p){return f(c[p],p,c)}}var l=i(s,a,o);return l>-1?c[f?s[l]:l]:void 0}}return iu=n,iu}var su,Xp;function oE(){if(Xp)return su;Xp=1;var e=/\s/;function r(t){for(var n=t.length;n--&&e.test(t.charAt(n)););return n}return su=r,su}var ou,Zp;function aE(){if(Zp)return ou;Zp=1;var e=oE(),r=/^\s+/;function t(n){return n&&n.slice(0,e(n)+1).replace(r,"")}return ou=t,ou}var au,Jp;function uE(){if(Jp)return au;Jp=1;var e=aE(),r=ut(),t=Qt(),n=NaN,i=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,a=/^0o[0-7]+$/i,o=parseInt;function c(f){if(typeof f=="number")return f;if(t(f))return n;if(r(f)){var l=typeof f.valueOf=="function"?f.valueOf():f;f=r(l)?l+"":l}if(typeof f!="string")return f===0?f:+f;f=e(f);var p=s.test(f);return p||a.test(f)?o(f.slice(2),p?2:8):i.test(f)?n:+f}return au=c,au}var uu,Qp;function Hp(){if(Qp)return uu;Qp=1;var e=uE(),r=1/0,t=17976931348623157e292;function n(i){if(!i)return i===0?i:0;if(i=e(i),i===r||i===-1/0){var s=i<0?-1:1;return s*t}return i===i?i:0}return uu=n,uu}var cu,ev;function cE(){if(ev)return cu;ev=1;var e=Hp();function r(t){var n=e(t),i=n%1;return n===n?i?n-i:n:0}return cu=r,cu}var fu,tv;function fE(){if(tv)return fu;tv=1;var e=ip(),r=xt(),t=cE(),n=Math.max;function i(s,a,o){var c=s==null?0:s.length;if(!c)return-1;var f=o==null?0:t(o);return f<0&&(f=n(c+f,0)),e(s,r(a,3),f)}return fu=i,fu}var lu,rv;function lE(){if(rv)return lu;rv=1;var e=sE(),r=fE(),t=e(r);return lu=t,lu}var hu,nv;function iv(){if(nv)return hu;nv=1;var e=da();function r(t){var n=t==null?0:t.length;return n?e(t,1):[]}return hu=r,hu}var du,sv;function hE(){if(sv)return du;sv=1;var e=Qs(),r=Md(),t=Ft();function n(i,s){return i==null?i:e(i,r(s),t)}return du=n,du}var gu,ov;function dE(){if(ov)return gu;ov=1;function e(r){var t=r==null?0:r.length;return t?r[t-1]:void 0}return gu=e,gu}var pu,av;function gE(){if(av)return pu;av=1;var e=Fr(),r=eo(),t=xt();function n(i,s){var a={};return s=t(s,3),r(i,function(o,c,f){e(a,c,s(o,c,f))}),a}return pu=n,pu}var vu,uv;function mu(){if(uv)return vu;uv=1;var e=Qt();function r(t,n,i){for(var s=-1,a=t.length;++s<a;){var o=t[s],c=n(o);if(c!=null&&(f===void 0?c===c&&!e(c):i(c,f)))var f=c,l=o}return l}return vu=r,vu}var yu,cv;function pE(){if(cv)return yu;cv=1;function e(r,t){return r>t}return yu=e,yu}var wu,fv;function vE(){if(fv)return wu;fv=1;var e=mu(),r=pE(),t=Bt();function n(i){return i&&i.length?e(i,t,r):void 0}return wu=n,wu}var bu,lv;function hv(){if(lv)return bu;lv=1;var e=Fr(),r=Kt();function t(n,i,s){(s!==void 0&&!r(n[i],s)||s===void 0&&!(i in n))&&e(n,i,s)}return bu=t,bu}var _u,dv;function mE(){if(dv)return _u;dv=1;var e=Dt(),r=Vr(),t=pt(),n="[object Object]",i=Function.prototype,s=Object.prototype,a=i.toString,o=s.hasOwnProperty,c=a.call(Object);function f(l){if(!t(l)||e(l)!=n)return!1;var p=r(l);if(p===null)return!0;var m=o.call(p,"constructor")&&p.constructor;return typeof m=="function"&&m instanceof m&&a.call(m)==c}return _u=f,_u}var Eu,gv;function pv(){if(gv)return Eu;gv=1;function e(r,t){if(!(t==="constructor"&&typeof r[t]=="function")&&t!="__proto__")return r[t]}return Eu=e,Eu}var xu,vv;function yE(){if(vv)return xu;vv=1;var e=hr(),r=Ft();function t(n){return e(n,r(n))}return xu=t,xu}var Nu,mv;function wE(){if(mv)return Nu;mv=1;var e=hv(),r=Mh(),t=id(),n=qh(),i=cd(),s=dr(),a=De(),o=gp(),c=Zt(),f=lr(),l=ut(),p=mE(),m=vr(),y=pv(),x=yE();function _(b,w,E,N,S,R,A){var j=y(b,E),I=y(w,E),D=A.get(I);if(D){e(b,E,D);return}var z=R?R(j,I,E+"",b,w,A):void 0,$=z===void 0;if($){var V=a(I),Y=!V&&c(I),ee=!V&&!Y&&m(I);z=I,V||Y||ee?a(j)?z=j:o(j)?z=n(j):Y?($=!1,z=r(I,!0)):ee?($=!1,z=t(I,!0)):z=[]:p(I)||s(I)?(z=j,s(j)?z=x(j):(!l(j)||f(j))&&(z=i(I))):$=!1}$&&(A.set(I,z),S(z,I,N,R,A),A.delete(I)),e(b,E,z)}return Nu=_,Nu}var Mu,yv;function bE(){if(yv)return Mu;yv=1;var e=zr(),r=hv(),t=Qs(),n=wE(),i=ut(),s=Ft(),a=pv();function o(c,f,l,p,m){c!==f&&t(f,function(y,x){if(m||(m=new e),i(y))n(c,f,x,l,o,p,m);else{var _=p?p(a(c,x),y,x+"",c,f,m):void 0;_===void 0&&(_=y),r(c,x,_)}},s)}return Mu=o,Mu}var Su,wv;function _E(){if(wv)return Su;wv=1;var e=Zr(),r=Jr();function t(n){return e(function(i,s){var a=-1,o=s.length,c=o>1?s[o-1]:void 0,f=o>2?s[2]:void 0;for(c=n.length>3&&typeof c=="function"?(o--,c):void 0,f&&r(s[0],s[1],f)&&(c=o<3?void 0:c,o=1),i=Object(i);++a<o;){var l=s[a];l&&n(i,l,a,c)}return i})}return Su=t,Su}var qu,bv;function EE(){if(bv)return qu;bv=1;var e=bE(),r=_E(),t=r(function(n,i,s){e(n,i,s)});return qu=t,qu}var Ru,_v;function Ev(){if(_v)return Ru;_v=1;function e(r,t){return r<t}return Ru=e,Ru}var Ou,xv;function xE(){if(xv)return Ou;xv=1;var e=mu(),r=Ev(),t=Bt();function n(i){return i&&i.length?e(i,t,r):void 0}return Ou=n,Ou}var Au,Nv;function NE(){if(Nv)return Au;Nv=1;var e=mu(),r=xt(),t=Ev();function n(i,s){return i&&i.length?e(i,r(s,2),t):void 0}return Au=n,Au}var Iu,Mv;function ME(){if(Mv)return Iu;Mv=1;var e=ft(),r=function(){return e.Date.now()};return Iu=r,Iu}var Tu,Sv;function SE(){if(Sv)return Tu;Sv=1;var e=Br(),r=Kr(),t=$r(),n=ut(),i=yr();function s(a,o,c,f){if(!n(a))return a;o=r(o,a);for(var l=-1,p=o.length,m=p-1,y=a;y!=null&&++l<p;){var x=i(o[l]),_=c;if(x==="__proto__"||x==="constructor"||x==="prototype")return a;if(l!=m){var b=y[x];_=f?f(b,x,y):void 0,_===void 0&&(_=n(b)?b:t(o[l+1])?[]:{})}e(y,x,_),y=y[x]}return a}return Tu=s,Tu}var ku,qv;function qE(){if(qv)return ku;qv=1;var e=Xr(),r=SE(),t=Kr();function n(i,s,a){for(var o=-1,c=s.length,f={};++o<c;){var l=s[o],p=e(i,l);a(p,l)&&r(f,t(l,i),p)}return f}return ku=n,ku}var ju,Rv;function RE(){if(Rv)return ju;Rv=1;var e=qE(),r=mg();function t(n,i){return e(n,i,function(s,a){return r(n,a)})}return ju=t,ju}var Cu,Ov;function OE(){if(Ov)return Cu;Ov=1;var e=iv(),r=Jg(),t=tp();function n(i){return t(r(i,void 0,e),i+"")}return Cu=n,Cu}var Pu,Av;function AE(){if(Av)return Pu;Av=1;var e=RE(),r=OE(),t=r(function(n,i){return n==null?{}:e(n,i)});return Pu=t,Pu}var Lu,Iv;function IE(){if(Iv)return Lu;Iv=1;var e=Math.ceil,r=Math.max;function t(n,i,s,a){for(var o=-1,c=r(e((i-n)/(s||1)),0),f=Array(c);c--;)f[a?c:++o]=n,n+=s;return f}return Lu=t,Lu}var Du,Tv;function TE(){if(Tv)return Du;Tv=1;var e=IE(),r=Jr(),t=Hp();function n(i){return function(s,a,o){return o&&typeof o!="number"&&r(s,a,o)&&(a=o=void 0),s=t(s),a===void 0?(a=s,s=0):a=t(a),o=o===void 0?s<a?1:-1:t(o),e(s,a,o,i)}}return Du=n,Du}var zu,kv;function kE(){if(kv)return zu;kv=1;var e=TE(),r=e();return zu=r,zu}var Fu,jv;function jE(){if(jv)return Fu;jv=1;function e(r,t){var n=r.length;for(r.sort(t);n--;)r[n]=r[n].value;return r}return Fu=e,Fu}var Bu,Cv;function CE(){if(Cv)return Bu;Cv=1;var e=Qt();function r(t,n){if(t!==n){var i=t!==void 0,s=t===null,a=t===t,o=e(t),c=n!==void 0,f=n===null,l=n===n,p=e(n);if(!f&&!p&&!o&&t>n||o&&c&&l&&!f&&!p||s&&c&&l||!i&&l||!a)return 1;if(!s&&!o&&!p&&t<n||p&&i&&a&&!s&&!o||f&&i&&a||!c&&a||!l)return-1}return 0}return Bu=r,Bu}var $u,Pv;function PE(){if(Pv)return $u;Pv=1;var e=CE();function r(t,n,i){for(var s=-1,a=t.criteria,o=n.criteria,c=a.length,f=i.length;++s<c;){var l=e(a[s],o[s]);if(l){if(s>=f)return l;var p=i[s];return l*(p=="desc"?-1:1)}}return t.index-n.index}return $u=r,$u}var Gu,Lv;function LE(){if(Lv)return Gu;Lv=1;var e=Yr(),r=Xr(),t=xt(),n=kg(),i=jE(),s=Gr(),a=PE(),o=Bt(),c=De();function f(l,p,m){p.length?p=e(p,function(_){return c(_)?function(b){return r(b,_.length===1?_[0]:_)}:_}):p=[o];var y=-1;p=e(p,s(t));var x=n(l,function(_,b,w){var E=e(p,function(N){return N(_)});return{criteria:E,index:++y,value:_}});return i(x,function(_,b){return a(_,b,m)})}return Gu=f,Gu}var Uu,Dv;function DE(){if(Dv)return Uu;Dv=1;var e=da(),r=LE(),t=Zr(),n=Jr(),i=t(function(s,a){if(s==null)return[];var o=a.length;return o>1&&n(s,a[0],a[1])?a=[]:o>2&&n(a[0],a[1],a[2])&&(a=[a[0]]),r(s,e(a,1),[])});return Uu=i,Uu}var Vu,zv;function zE(){if(zv)return Vu;zv=1;var e=ug(),r=0;function t(n){var i=++r;return e(n)+i}return Vu=t,Vu}var Wu,Fv;function FE(){if(Fv)return Wu;Fv=1;function e(r,t,n){for(var i=-1,s=r.length,a=t.length,o={};++i<s;){var c=i<a?t[i]:void 0;n(o,r[i],c)}return o}return Wu=e,Wu}var Yu,Bv;function BE(){if(Bv)return Yu;Bv=1;var e=Br(),r=FE();function t(n,i){return r(n||[],i||[],e)}return Yu=t,Yu}var Ku,$v;function Te(){if($v)return Ku;$v=1;var e;if(typeof Bn=="function")try{e={cloneDeep:nE(),constant:Xs(),defaults:iE(),each:Od(),filter:Mg(),find:lE(),flatten:iv(),forEach:qd(),forIn:hE(),has:Rg(),isUndefined:Ig(),last:dE(),map:Cg(),mapValues:gE(),max:vE(),merge:EE(),min:xE(),minBy:NE(),now:ME(),pick:AE(),range:kE(),reduce:zg(),sortBy:DE(),uniqueId:zE(),values:yp(),zipObject:BE()}}catch{}return e||(e=window._),Ku=e,Ku}var Xu,Gv;function $E(){if(Gv)return Xu;Gv=1,Xu=e;function e(){var n={};n._next=n._prev=n,this._sentinel=n}e.prototype.dequeue=function(){var n=this._sentinel,i=n._prev;if(i!==n)return r(i),i},e.prototype.enqueue=function(n){var i=this._sentinel;n._prev&&n._next&&r(n),n._next=i._next,i._next._prev=n,i._next=n,n._prev=i},e.prototype.toString=function(){for(var n=[],i=this._sentinel,s=i._prev;s!==i;)n.push(JSON.stringify(s,t)),s=s._prev;return"["+n.join(", ")+"]"};function r(n){n._prev._next=n._next,n._next._prev=n._prev,delete n._next,delete n._prev}function t(n,i){if(n!=="_next"&&n!=="_prev")return i}return Xu}var Zu,Uv;function GE(){if(Uv)return Zu;Uv=1;var e=Te(),r=lt().Graph,t=$E();Zu=i;var n=e.constant(1);function i(f,l){if(f.nodeCount()<=1)return[];var p=o(f,l||n),m=s(p.graph,p.buckets,p.zeroIdx);return e.flatten(e.map(m,function(y){return f.outEdges(y.v,y.w)}),!0)}function s(f,l,p){for(var m=[],y=l[l.length-1],x=l[0],_;f.nodeCount();){for(;_=x.dequeue();)a(f,l,p,_);for(;_=y.dequeue();)a(f,l,p,_);if(f.nodeCount()){for(var b=l.length-2;b>0;--b)if(_=l[b].dequeue(),_){m=m.concat(a(f,l,p,_,!0));break}}}return m}function a(f,l,p,m,y){var x=y?[]:void 0;return e.forEach(f.inEdges(m.v),function(_){var b=f.edge(_),w=f.node(_.v);y&&x.push({v:_.v,w:_.w}),w.out-=b,c(l,p,w)}),e.forEach(f.outEdges(m.v),function(_){var b=f.edge(_),w=_.w,E=f.node(w);E.in-=b,c(l,p,E)}),f.removeNode(m.v),x}function o(f,l){var p=new r,m=0,y=0;e.forEach(f.nodes(),function(b){p.setNode(b,{v:b,in:0,out:0})}),e.forEach(f.edges(),function(b){var w=p.edge(b.v,b.w)||0,E=l(b),N=w+E;p.setEdge(b.v,b.w,N),y=Math.max(y,p.node(b.v).out+=E),m=Math.max(m,p.node(b.w).in+=E)});var x=e.range(y+m+3).map(function(){return new t}),_=m+1;return e.forEach(p.nodes(),function(b){c(x,_,p.node(b))}),{graph:p,buckets:x,zeroIdx:_}}function c(f,l,p){p.out?p.in?f[p.out-p.in+l].enqueue(p):f[f.length-1].enqueue(p):f[0].enqueue(p)}return Zu}var Ju,Vv;function UE(){if(Vv)return Ju;Vv=1;var e=Te(),r=GE();Ju={run:t,undo:i};function t(s){var a=s.graph().acyclicer==="greedy"?r(s,o(s)):n(s);e.forEach(a,function(c){var f=s.edge(c);s.removeEdge(c),f.forwardName=c.name,f.reversed=!0,s.setEdge(c.w,c.v,f,e.uniqueId("rev"))});function o(c){return function(f){return c.edge(f).weight}}}function n(s){var a=[],o={},c={};function f(l){e.has(c,l)||(c[l]=!0,o[l]=!0,e.forEach(s.outEdges(l),function(p){e.has(o,p.w)?a.push(p):f(p.w)}),delete o[l])}return e.forEach(s.nodes(),f),a}function i(s){e.forEach(s.edges(),function(a){var o=s.edge(a);if(o.reversed){s.removeEdge(a);var c=o.forwardName;delete o.reversed,delete o.forwardName,s.setEdge(a.w,a.v,o,c)}})}return Ju}var Qu,Wv;function nt(){if(Wv)return Qu;Wv=1;var e=Te(),r=lt().Graph;Qu={addDummyNode:t,simplify:n,asNonCompoundGraph:i,successorWeights:s,predecessorWeights:a,intersectRect:o,buildLayerMatrix:c,normalizeRanks:f,removeEmptyRanks:l,addBorderNode:p,maxRank:m,partition:y,time:x,notime:_};function t(b,w,E,N){var S;do S=e.uniqueId(N);while(b.hasNode(S));return E.dummy=w,b.setNode(S,E),S}function n(b){var w=new r().setGraph(b.graph());return e.forEach(b.nodes(),function(E){w.setNode(E,b.node(E))}),e.forEach(b.edges(),function(E){var N=w.edge(E.v,E.w)||{weight:0,minlen:1},S=b.edge(E);w.setEdge(E.v,E.w,{weight:N.weight+S.weight,minlen:Math.max(N.minlen,S.minlen)})}),w}function i(b){var w=new r({multigraph:b.isMultigraph()}).setGraph(b.graph());return e.forEach(b.nodes(),function(E){b.children(E).length||w.setNode(E,b.node(E))}),e.forEach(b.edges(),function(E){w.setEdge(E,b.edge(E))}),w}function s(b){var w=e.map(b.nodes(),function(E){var N={};return e.forEach(b.outEdges(E),function(S){N[S.w]=(N[S.w]||0)+b.edge(S).weight}),N});return e.zipObject(b.nodes(),w)}function a(b){var w=e.map(b.nodes(),function(E){var N={};return e.forEach(b.inEdges(E),function(S){N[S.v]=(N[S.v]||0)+b.edge(S).weight}),N});return e.zipObject(b.nodes(),w)}function o(b,w){var E=b.x,N=b.y,S=w.x-E,R=w.y-N,A=b.width/2,j=b.height/2;if(!S&&!R)throw new Error("Not possible to find intersection inside of the rectangle");var I,D;return Math.abs(R)*A>Math.abs(S)*j?(R<0&&(j=-j),I=j*S/R,D=j):(S<0&&(A=-A),I=A,D=A*R/S),{x:E+I,y:N+D}}function c(b){var w=e.map(e.range(m(b)+1),function(){return[]});return e.forEach(b.nodes(),function(E){var N=b.node(E),S=N.rank;e.isUndefined(S)||(w[S][N.order]=E)}),w}function f(b){var w=e.min(e.map(b.nodes(),function(E){return b.node(E).rank}));e.forEach(b.nodes(),function(E){var N=b.node(E);e.has(N,"rank")&&(N.rank-=w)})}function l(b){var w=e.min(e.map(b.nodes(),function(R){return b.node(R).rank})),E=[];e.forEach(b.nodes(),function(R){var A=b.node(R).rank-w;E[A]||(E[A]=[]),E[A].push(R)});var N=0,S=b.graph().nodeRankFactor;e.forEach(E,function(R,A){e.isUndefined(R)&&A%S!==0?--N:N&&e.forEach(R,function(j){b.node(j).rank+=N})})}function p(b,w,E,N){var S={width:0,height:0};return arguments.length>=4&&(S.rank=E,S.order=N),t(b,"border",S,w)}function m(b){return e.max(e.map(b.nodes(),function(w){var E=b.node(w).rank;if(!e.isUndefined(E))return E}))}function y(b,w){var E={lhs:[],rhs:[]};return e.forEach(b,function(N){w(N)?E.lhs.push(N):E.rhs.push(N)}),E}function x(b,w){var E=e.now();try{return w()}finally{console.log(b+" time: "+(e.now()-E)+"ms")}}function _(b,w){return w()}return Qu}var Hu,Yv;function VE(){if(Yv)return Hu;Yv=1;var e=Te(),r=nt();Hu={run:t,undo:i};function t(s){s.graph().dummyChains=[],e.forEach(s.edges(),function(a){n(s,a)})}function n(s,a){var o=a.v,c=s.node(o).rank,f=a.w,l=s.node(f).rank,p=a.name,m=s.edge(a),y=m.labelRank;if(l!==c+1){s.removeEdge(a);var x,_,b;for(b=0,++c;c<l;++b,++c)m.points=[],_={width:0,height:0,edgeLabel:m,edgeObj:a,rank:c},x=r.addDummyNode(s,"edge",_,"_d"),c===y&&(_.width=m.width,_.height=m.height,_.dummy="edge-label",_.labelpos=m.labelpos),s.setEdge(o,x,{weight:m.weight},p),b===0&&s.graph().dummyChains.push(x),o=x;s.setEdge(o,f,{weight:m.weight},p)}}function i(s){e.forEach(s.graph().dummyChains,function(a){var o=s.node(a),c=o.edgeLabel,f;for(s.setEdge(o.edgeObj,c);o.dummy;)f=s.successors(a)[0],s.removeNode(a),c.points.push({x:o.x,y:o.y}),o.dummy==="edge-label"&&(c.x=o.x,c.y=o.y,c.width=o.width,c.height=o.height),a=f,o=s.node(a)})}return Hu}var ec,Kv;function Qr(){if(Kv)return ec;Kv=1;var e=Te();ec={longestPath:r,slack:t};function r(n){var i={};function s(a){var o=n.node(a);if(e.has(i,a))return o.rank;i[a]=!0;var c=e.min(e.map(n.outEdges(a),function(f){return s(f.w)-n.edge(f).minlen}));return(c===Number.POSITIVE_INFINITY||c===void 0||c===null)&&(c=0),o.rank=c}e.forEach(n.sources(),s)}function t(n,i){return n.node(i.w).rank-n.node(i.v).rank-n.edge(i).minlen}return ec}var tc,Xv;function Zv(){if(Xv)return tc;Xv=1;var e=Te(),r=lt().Graph,t=Qr().slack;tc=n;function n(o){var c=new r({directed:!1}),f=o.nodes()[0],l=o.nodeCount();c.setNode(f,{});for(var p,m;i(c,o)<l;)p=s(c,o),m=c.hasNode(p.v)?t(o,p):-t(o,p),a(c,o,m);return c}function i(o,c){function f(l){e.forEach(c.nodeEdges(l),function(p){var m=p.v,y=l===m?p.w:m;!o.hasNode(y)&&!t(c,p)&&(o.setNode(y,{}),o.setEdge(l,y,{}),f(y))})}return e.forEach(o.nodes(),f),o.nodeCount()}function s(o,c){return e.minBy(c.edges(),function(f){if(o.hasNode(f.v)!==o.hasNode(f.w))return t(c,f)})}function a(o,c,f){e.forEach(o.nodes(),function(l){c.node(l).rank+=f})}return tc}var rc,Jv;function WE(){if(Jv)return rc;Jv=1;var e=Te(),r=Zv(),t=Qr().slack,n=Qr().longestPath,i=lt().alg.preorder,s=lt().alg.postorder,a=nt().simplify;rc=o,o.initLowLimValues=p,o.initCutValues=c,o.calcCutValue=l,o.leaveEdge=y,o.enterEdge=x,o.exchangeEdges=_;function o(N){N=a(N),n(N);var S=r(N);p(S),c(S,N);for(var R,A;R=y(S);)A=x(S,N,R),_(S,N,R,A)}function c(N,S){var R=s(N,N.nodes());R=R.slice(0,R.length-1),e.forEach(R,function(A){f(N,S,A)})}function f(N,S,R){var A=N.node(R),j=A.parent;N.edge(R,j).cutvalue=l(N,S,R)}function l(N,S,R){var A=N.node(R),j=A.parent,I=!0,D=S.edge(R,j),z=0;return D||(I=!1,D=S.edge(j,R)),z=D.weight,e.forEach(S.nodeEdges(R),function($){var V=$.v===R,Y=V?$.w:$.v;if(Y!==j){var ee=V===I,J=S.edge($).weight;if(z+=ee?J:-J,w(N,R,Y)){var ae=N.edge(R,Y).cutvalue;z+=ee?-ae:ae}}}),z}function p(N,S){arguments.length<2&&(S=N.nodes()[0]),m(N,{},1,S)}function m(N,S,R,A,j){var I=R,D=N.node(A);return S[A]=!0,e.forEach(N.neighbors(A),function(z){e.has(S,z)||(R=m(N,S,R,z,A))}),D.low=I,D.lim=R++,j?D.parent=j:delete D.parent,R}function y(N){return e.find(N.edges(),function(S){return N.edge(S).cutvalue<0})}function x(N,S,R){var A=R.v,j=R.w;S.hasEdge(A,j)||(A=R.w,j=R.v);var I=N.node(A),D=N.node(j),z=I,$=!1;I.lim>D.lim&&(z=D,$=!0);var V=e.filter(S.edges(),function(Y){return $===E(N,N.node(Y.v),z)&&$!==E(N,N.node(Y.w),z)});return e.minBy(V,function(Y){return t(S,Y)})}function _(N,S,R,A){var j=R.v,I=R.w;N.removeEdge(j,I),N.setEdge(A.v,A.w,{}),p(N),c(N,S),b(N,S)}function b(N,S){var R=e.find(N.nodes(),function(j){return!S.node(j).parent}),A=i(N,R);A=A.slice(1),e.forEach(A,function(j){var I=N.node(j).parent,D=S.edge(j,I),z=!1;D||(D=S.edge(I,j),z=!0),S.node(j).rank=S.node(I).rank+(z?D.minlen:-D.minlen)})}function w(N,S,R){return N.hasEdge(S,R)}function E(N,S,R){return R.low<=S.lim&&S.lim<=R.lim}return rc}var nc,Qv;function YE(){if(Qv)return nc;Qv=1;var e=Qr(),r=e.longestPath,t=Zv(),n=WE();nc=i;function i(c){switch(c.graph().ranker){case"network-simplex":o(c);break;case"tight-tree":a(c);break;case"longest-path":s(c);break;default:o(c)}}var s=r;function a(c){r(c),t(c)}function o(c){n(c)}return nc}var ic,Hv;function KE(){if(Hv)return ic;Hv=1;var e=Te();ic=r;function r(i){var s=n(i);e.forEach(i.graph().dummyChains,function(a){for(var o=i.node(a),c=o.edgeObj,f=t(i,s,c.v,c.w),l=f.path,p=f.lca,m=0,y=l[m],x=!0;a!==c.w;){if(o=i.node(a),x){for(;(y=l[m])!==p&&i.node(y).maxRank<o.rank;)m++;y===p&&(x=!1)}if(!x){for(;m<l.length-1&&i.node(y=l[m+1]).minRank<=o.rank;)m++;y=l[m]}i.setParent(a,y),a=i.successors(a)[0]}})}function t(i,s,a,o){var c=[],f=[],l=Math.min(s[a].low,s[o].low),p=Math.max(s[a].lim,s[o].lim),m,y;m=a;do m=i.parent(m),c.push(m);while(m&&(s[m].low>l||p>s[m].lim));for(y=m,m=o;(m=i.parent(m))!==y;)f.push(m);return{path:c.concat(f.reverse()),lca:y}}function n(i){var s={},a=0;function o(c){var f=a;e.forEach(i.children(c),o),s[c]={low:f,lim:a++}}return e.forEach(i.children(),o),s}return ic}var sc,e0;function XE(){if(e0)return sc;e0=1;var e=Te(),r=nt();sc={run:t,cleanup:a};function t(o){var c=r.addDummyNode(o,"root",{},"_root"),f=i(o),l=e.max(e.values(f))-1,p=2*l+1;o.graph().nestingRoot=c,e.forEach(o.edges(),function(y){o.edge(y).minlen*=p});var m=s(o)+1;e.forEach(o.children(),function(y){n(o,c,p,m,l,f,y)}),o.graph().nodeRankFactor=p}function n(o,c,f,l,p,m,y){var x=o.children(y);if(!x.length){y!==c&&o.setEdge(c,y,{weight:0,minlen:f});return}var _=r.addBorderNode(o,"_bt"),b=r.addBorderNode(o,"_bb"),w=o.node(y);o.setParent(_,y),w.borderTop=_,o.setParent(b,y),w.borderBottom=b,e.forEach(x,function(E){n(o,c,f,l,p,m,E);var N=o.node(E),S=N.borderTop?N.borderTop:E,R=N.borderBottom?N.borderBottom:E,A=N.borderTop?l:2*l,j=S!==R?1:p-m[y]+1;o.setEdge(_,S,{weight:A,minlen:j,nestingEdge:!0}),o.setEdge(R,b,{weight:A,minlen:j,nestingEdge:!0})}),o.parent(y)||o.setEdge(c,_,{weight:0,minlen:p+m[y]})}function i(o){var c={};function f(l,p){var m=o.children(l);m&&m.length&&e.forEach(m,function(y){f(y,p+1)}),c[l]=p}return e.forEach(o.children(),function(l){f(l,1)}),c}function s(o){return e.reduce(o.edges(),function(c,f){return c+o.edge(f).weight},0)}function a(o){var c=o.graph();o.removeNode(c.nestingRoot),delete c.nestingRoot,e.forEach(o.edges(),function(f){var l=o.edge(f);l.nestingEdge&&o.removeEdge(f)})}return sc}var oc,t0;function ZE(){if(t0)return oc;t0=1;var e=Te(),r=nt();oc=t;function t(i){function s(a){var o=i.children(a),c=i.node(a);if(o.length&&e.forEach(o,s),e.has(c,"minRank")){c.borderLeft=[],c.borderRight=[];for(var f=c.minRank,l=c.maxRank+1;f<l;++f)n(i,"borderLeft","_bl",a,c,f),n(i,"borderRight","_br",a,c,f)}}e.forEach(i.children(),s)}function n(i,s,a,o,c,f){var l={width:0,height:0,rank:f,borderType:s},p=c[s][f-1],m=r.addDummyNode(i,"border",l,a);c[s][f]=m,i.setParent(m,o),p&&i.setEdge(p,m,{weight:1})}return oc}var ac,r0;function JE(){if(r0)return ac;r0=1;var e=Te();ac={adjust:r,undo:t};function r(f){var l=f.graph().rankdir.toLowerCase();(l==="lr"||l==="rl")&&n(f)}function t(f){var l=f.graph().rankdir.toLowerCase();(l==="bt"||l==="rl")&&s(f),(l==="lr"||l==="rl")&&(o(f),n(f))}function n(f){e.forEach(f.nodes(),function(l){i(f.node(l))}),e.forEach(f.edges(),function(l){i(f.edge(l))})}function i(f){var l=f.width;f.width=f.height,f.height=l}function s(f){e.forEach(f.nodes(),function(l){a(f.node(l))}),e.forEach(f.edges(),function(l){var p=f.edge(l);e.forEach(p.points,a),e.has(p,"y")&&a(p)})}function a(f){f.y=-f.y}function o(f){e.forEach(f.nodes(),function(l){c(f.node(l))}),e.forEach(f.edges(),function(l){var p=f.edge(l);e.forEach(p.points,c),e.has(p,"x")&&c(p)})}function c(f){var l=f.x;f.x=f.y,f.y=l}return ac}var uc,n0;function QE(){if(n0)return uc;n0=1;var e=Te();uc=r;function r(t){var n={},i=e.filter(t.nodes(),function(f){return!t.children(f).length}),s=e.max(e.map(i,function(f){return t.node(f).rank})),a=e.map(e.range(s+1),function(){return[]});function o(f){if(!e.has(n,f)){n[f]=!0;var l=t.node(f);a[l.rank].push(f),e.forEach(t.successors(f),o)}}var c=e.sortBy(i,function(f){return t.node(f).rank});return e.forEach(c,o),a}return uc}var cc,i0;function HE(){if(i0)return cc;i0=1;var e=Te();cc=r;function r(n,i){for(var s=0,a=1;a<i.length;++a)s+=t(n,i[a-1],i[a]);return s}function t(n,i,s){for(var a=e.zipObject(s,e.map(s,function(m,y){return y})),o=e.flatten(e.map(i,function(m){return e.sortBy(e.map(n.outEdges(m),function(y){return{pos:a[y.w],weight:n.edge(y).weight}}),"pos")}),!0),c=1;c<s.length;)c<<=1;var f=2*c-1;c-=1;var l=e.map(new Array(f),function(){return 0}),p=0;return e.forEach(o.forEach(function(m){var y=m.pos+c;l[y]+=m.weight;for(var x=0;y>0;)y%2&&(x+=l[y+1]),y=y-1>>1,l[y]+=m.weight;p+=m.weight*x})),p}return cc}var fc,s0;function ex(){if(s0)return fc;s0=1;var e=Te();fc=r;function r(t,n){return e.map(n,function(i){var s=t.inEdges(i);if(s.length){var a=e.reduce(s,function(o,c){var f=t.edge(c),l=t.node(c.v);return{sum:o.sum+f.weight*l.order,weight:o.weight+f.weight}},{sum:0,weight:0});return{v:i,barycenter:a.sum/a.weight,weight:a.weight}}else return{v:i}})}return fc}var lc,o0;function tx(){if(o0)return lc;o0=1;var e=Te();lc=r;function r(i,s){var a={};e.forEach(i,function(c,f){var l=a[c.v]={indegree:0,in:[],out:[],vs:[c.v],i:f};e.isUndefined(c.barycenter)||(l.barycenter=c.barycenter,l.weight=c.weight)}),e.forEach(s.edges(),function(c){var f=a[c.v],l=a[c.w];!e.isUndefined(f)&&!e.isUndefined(l)&&(l.indegree++,f.out.push(a[c.w]))});var o=e.filter(a,function(c){return!c.indegree});return t(o)}function t(i){var s=[];function a(f){return function(l){l.merged||(e.isUndefined(l.barycenter)||e.isUndefined(f.barycenter)||l.barycenter>=f.barycenter)&&n(f,l)}}function o(f){return function(l){l.in.push(f),--l.indegree===0&&i.push(l)}}for(;i.length;){var c=i.pop();s.push(c),e.forEach(c.in.reverse(),a(c)),e.forEach(c.out,o(c))}return e.map(e.filter(s,function(f){return!f.merged}),function(f){return e.pick(f,["vs","i","barycenter","weight"])})}function n(i,s){var a=0,o=0;i.weight&&(a+=i.barycenter*i.weight,o+=i.weight),s.weight&&(a+=s.barycenter*s.weight,o+=s.weight),i.vs=s.vs.concat(i.vs),i.barycenter=a/o,i.weight=o,i.i=Math.min(s.i,i.i),s.merged=!0}return lc}var hc,a0;function rx(){if(a0)return hc;a0=1;var e=Te(),r=nt();hc=t;function t(s,a){var o=r.partition(s,function(_){return e.has(_,"barycenter")}),c=o.lhs,f=e.sortBy(o.rhs,function(_){return-_.i}),l=[],p=0,m=0,y=0;c.sort(i(!!a)),y=n(l,f,y),e.forEach(c,function(_){y+=_.vs.length,l.push(_.vs),p+=_.barycenter*_.weight,m+=_.weight,y=n(l,f,y)});var x={vs:e.flatten(l,!0)};return m&&(x.barycenter=p/m,x.weight=m),x}function n(s,a,o){for(var c;a.length&&(c=e.last(a)).i<=o;)a.pop(),s.push(c.vs),o++;return o}function i(s){return function(a,o){return a.barycenter<o.barycenter?-1:a.barycenter>o.barycenter?1:s?o.i-a.i:a.i-o.i}}return hc}var dc,u0;function nx(){if(u0)return dc;u0=1;var e=Te(),r=ex(),t=tx(),n=rx();dc=i;function i(o,c,f,l){var p=o.children(c),m=o.node(c),y=m?m.borderLeft:void 0,x=m?m.borderRight:void 0,_={};y&&(p=e.filter(p,function(R){return R!==y&&R!==x}));var b=r(o,p);e.forEach(b,function(R){if(o.children(R.v).length){var A=i(o,R.v,f,l);_[R.v]=A,e.has(A,"barycenter")&&a(R,A)}});var w=t(b,f);s(w,_);var E=n(w,l);if(y&&(E.vs=e.flatten([y,E.vs,x],!0),o.predecessors(y).length)){var N=o.node(o.predecessors(y)[0]),S=o.node(o.predecessors(x)[0]);e.has(E,"barycenter")||(E.barycenter=0,E.weight=0),E.barycenter=(E.barycenter*E.weight+N.order+S.order)/(E.weight+2),E.weight+=2}return E}function s(o,c){e.forEach(o,function(f){f.vs=e.flatten(f.vs.map(function(l){return c[l]?c[l].vs:l}),!0)})}function a(o,c){e.isUndefined(o.barycenter)?(o.barycenter=c.barycenter,o.weight=c.weight):(o.barycenter=(o.barycenter*o.weight+c.barycenter*c.weight)/(o.weight+c.weight),o.weight+=c.weight)}return dc}var gc,c0;function ix(){if(c0)return gc;c0=1;var e=Te(),r=lt().Graph;gc=t;function t(i,s,a){var o=n(i),c=new r({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(function(f){return i.node(f)});return e.forEach(i.nodes(),function(f){var l=i.node(f),p=i.parent(f);(l.rank===s||l.minRank<=s&&s<=l.maxRank)&&(c.setNode(f),c.setParent(f,p||o),e.forEach(i[a](f),function(m){var y=m.v===f?m.w:m.v,x=c.edge(y,f),_=e.isUndefined(x)?0:x.weight;c.setEdge(y,f,{weight:i.edge(m).weight+_})}),e.has(l,"minRank")&&c.setNode(f,{borderLeft:l.borderLeft[s],borderRight:l.borderRight[s]}))}),c}function n(i){for(var s;i.hasNode(s=e.uniqueId("_root")););return s}return gc}var pc,f0;function sx(){if(f0)return pc;f0=1;var e=Te();pc=r;function r(t,n,i){var s={},a;e.forEach(i,function(o){for(var c=t.parent(o),f,l;c;){if(f=t.parent(c),f?(l=s[f],s[f]=c):(l=a,a=c),l&&l!==c){n.setEdge(l,c);return}c=f}})}return pc}var vc,l0;function ox(){if(l0)return vc;l0=1;var e=Te(),r=QE(),t=HE(),n=nx(),i=ix(),s=sx(),a=lt().Graph,o=nt();vc=c;function c(m){var y=o.maxRank(m),x=f(m,e.range(1,y+1),"inEdges"),_=f(m,e.range(y-1,-1,-1),"outEdges"),b=r(m);p(m,b);for(var w=Number.POSITIVE_INFINITY,E,N=0,S=0;S<4;++N,++S){l(N%2?x:_,N%4>=2),b=o.buildLayerMatrix(m);var R=t(m,b);R<w&&(S=0,E=e.cloneDeep(b),w=R)}p(m,E)}function f(m,y,x){return e.map(y,function(_){return i(m,_,x)})}function l(m,y){var x=new a;e.forEach(m,function(_){var b=_.graph().root,w=n(_,b,x,y);e.forEach(w.vs,function(E,N){_.node(E).order=N}),s(_,x,w.vs)})}function p(m,y){e.forEach(y,function(x){e.forEach(x,function(_,b){m.node(_).order=b})})}return vc}var mc,h0;function ax(){if(h0)return mc;h0=1;var e=Te(),r=lt().Graph,t=nt();mc={positionX:x,findType1Conflicts:n,findType2Conflicts:i,addConflict:a,hasConflict:o,verticalAlignment:c,horizontalCompaction:f,alignCoordinates:m,findSmallestWidthAlignment:p,balance:y};function n(w,E){var N={};function S(R,A){var j=0,I=0,D=R.length,z=e.last(A);return e.forEach(A,function($,V){var Y=s(w,$),ee=Y?w.node(Y).order:D;(Y||$===z)&&(e.forEach(A.slice(I,V+1),function(J){e.forEach(w.predecessors(J),function(ae){var be=w.node(ae),Z=be.order;(Z<j||ee<Z)&&!(be.dummy&&w.node(J).dummy)&&a(N,ae,J)})}),I=V+1,j=ee)}),A}return e.reduce(E,S),N}function i(w,E){var N={};function S(A,j,I,D,z){var $;e.forEach(e.range(j,I),function(V){$=A[V],w.node($).dummy&&e.forEach(w.predecessors($),function(Y){var ee=w.node(Y);ee.dummy&&(ee.order<D||ee.order>z)&&a(N,Y,$)})})}function R(A,j){var I=-1,D,z=0;return e.forEach(j,function($,V){if(w.node($).dummy==="border"){var Y=w.predecessors($);Y.length&&(D=w.node(Y[0]).order,S(j,z,V,I,D),z=V,I=D)}S(j,z,j.length,D,A.length)}),j}return e.reduce(E,R),N}function s(w,E){if(w.node(E).dummy)return e.find(w.predecessors(E),function(N){return w.node(N).dummy})}function a(w,E,N){if(E>N){var S=E;E=N,N=S}var R=w[E];R||(w[E]=R={}),R[N]=!0}function o(w,E,N){if(E>N){var S=E;E=N,N=S}return e.has(w[E],N)}function c(w,E,N,S){var R={},A={},j={};return e.forEach(E,function(I){e.forEach(I,function(D,z){R[D]=D,A[D]=D,j[D]=z})}),e.forEach(E,function(I){var D=-1;e.forEach(I,function(z){var $=S(z);if($.length){$=e.sortBy($,function(ae){return j[ae]});for(var V=($.length-1)/2,Y=Math.floor(V),ee=Math.ceil(V);Y<=ee;++Y){var J=$[Y];A[z]===z&&D<j[J]&&!o(N,z,J)&&(A[J]=z,A[z]=R[z]=R[J],D=j[J])}}})}),{root:R,align:A}}function f(w,E,N,S,R){var A={},j=l(w,E,N,R),I=R?"borderLeft":"borderRight";function D(V,Y){for(var ee=j.nodes(),J=ee.pop(),ae={};J;)ae[J]?V(J):(ae[J]=!0,ee.push(J),ee=ee.concat(Y(J))),J=ee.pop()}function z(V){A[V]=j.inEdges(V).reduce(function(Y,ee){return Math.max(Y,A[ee.v]+j.edge(ee))},0)}function $(V){var Y=j.outEdges(V).reduce(function(J,ae){return Math.min(J,A[ae.w]-j.edge(ae))},Number.POSITIVE_INFINITY),ee=w.node(V);Y!==Number.POSITIVE_INFINITY&&ee.borderType!==I&&(A[V]=Math.max(A[V],Y))}return D(z,j.predecessors.bind(j)),D($,j.successors.bind(j)),e.forEach(S,function(V){A[V]=A[N[V]]}),A}function l(w,E,N,S){var R=new r,A=w.graph(),j=_(A.nodesep,A.edgesep,S);return e.forEach(E,function(I){var D;e.forEach(I,function(z){var $=N[z];if(R.setNode($),D){var V=N[D],Y=R.edge(V,$);R.setEdge(V,$,Math.max(j(w,z,D),Y||0))}D=z})}),R}function p(w,E){return e.minBy(e.values(E),function(N){var S=Number.NEGATIVE_INFINITY,R=Number.POSITIVE_INFINITY;return e.forIn(N,function(A,j){var I=b(w,j)/2;S=Math.max(A+I,S),R=Math.min(A-I,R)}),S-R})}function m(w,E){var N=e.values(E),S=e.min(N),R=e.max(N);e.forEach(["u","d"],function(A){e.forEach(["l","r"],function(j){var I=A+j,D=w[I],z;if(D!==E){var $=e.values(D);z=j==="l"?S-e.min($):R-e.max($),z&&(w[I]=e.mapValues(D,function(V){return V+z}))}})})}function y(w,E){return e.mapValues(w.ul,function(N,S){if(E)return w[E.toLowerCase()][S];var R=e.sortBy(e.map(w,S));return(R[1]+R[2])/2})}function x(w){var E=t.buildLayerMatrix(w),N=e.merge(n(w,E),i(w,E)),S={},R;e.forEach(["u","d"],function(j){R=j==="u"?E:e.values(E).reverse(),e.forEach(["l","r"],function(I){I==="r"&&(R=e.map(R,function(V){return e.values(V).reverse()}));var D=(j==="u"?w.predecessors:w.successors).bind(w),z=c(w,R,N,D),$=f(w,R,z.root,z.align,I==="r");I==="r"&&($=e.mapValues($,function(V){return-V})),S[j+I]=$})});var A=p(w,S);return m(S,A),y(S,w.graph().align)}function _(w,E,N){return function(S,R,A){var j=S.node(R),I=S.node(A),D=0,z;if(D+=j.width/2,e.has(j,"labelpos"))switch(j.labelpos.toLowerCase()){case"l":z=-j.width/2;break;case"r":z=j.width/2;break}if(z&&(D+=N?z:-z),z=0,D+=(j.dummy?E:w)/2,D+=(I.dummy?E:w)/2,D+=I.width/2,e.has(I,"labelpos"))switch(I.labelpos.toLowerCase()){case"l":z=I.width/2;break;case"r":z=-I.width/2;break}return z&&(D+=N?z:-z),z=0,D}}function b(w,E){return w.node(E).width}return mc}var yc,d0;function ux(){if(d0)return yc;d0=1;var e=Te(),r=nt(),t=ax().positionX;yc=n;function n(s){s=r.asNonCompoundGraph(s),i(s),e.forEach(t(s),function(a,o){s.node(o).x=a})}function i(s){var a=r.buildLayerMatrix(s),o=s.graph().ranksep,c=0;e.forEach(a,function(f){var l=e.max(e.map(f,function(p){return s.node(p).height}));e.forEach(f,function(p){s.node(p).y=c+l/2}),c+=l+o})}return yc}var wc,g0;function cx(){if(g0)return wc;g0=1;var e=Te(),r=UE(),t=VE(),n=YE(),i=nt().normalizeRanks,s=KE(),a=nt().removeEmptyRanks,o=XE(),c=ZE(),f=JE(),l=ox(),p=ux(),m=nt(),y=lt().Graph;wc=x;function x(G,P){var X=P&&P.debugTiming?m.time:m.notime;X("layout",function(){var te=X(" buildLayoutGraph",function(){return D(G)});X(" runLayout",function(){_(te,X)}),X(" updateInputGraph",function(){b(G,te)})})}function _(G,P){P(" makeSpaceForEdgeLabels",function(){z(G)}),P(" removeSelfEdges",function(){ue(G)}),P(" acyclic",function(){r.run(G)}),P(" nestingGraph.run",function(){o.run(G)}),P(" rank",function(){n(m.asNonCompoundGraph(G))}),P(" injectEdgeLabelProxies",function(){$(G)}),P(" removeEmptyRanks",function(){a(G)}),P(" nestingGraph.cleanup",function(){o.cleanup(G)}),P(" normalizeRanks",function(){i(G)}),P(" assignRankMinMax",function(){V(G)}),P(" removeEdgeLabelProxies",function(){Y(G)}),P(" normalize.run",function(){t.run(G)}),P(" parentDummyChains",function(){s(G)}),P(" addBorderSegments",function(){c(G)}),P(" order",function(){l(G)}),P(" insertSelfEdges",function(){pe(G)}),P(" adjustCoordinateSystem",function(){f.adjust(G)}),P(" position",function(){p(G)}),P(" positionSelfEdges",function(){he(G)}),P(" removeBorderNodes",function(){Z(G)}),P(" normalize.undo",function(){t.undo(G)}),P(" fixupEdgeLabelCoords",function(){ae(G)}),P(" undoCoordinateSystem",function(){f.undo(G)}),P(" translateGraph",function(){ee(G)}),P(" assignNodeIntersects",function(){J(G)}),P(" reversePoints",function(){be(G)}),P(" acyclic.undo",function(){r.undo(G)})}function b(G,P){e.forEach(G.nodes(),function(X){var te=G.node(X),le=P.node(X);te&&(te.x=le.x,te.y=le.y,P.children(X).length&&(te.width=le.width,te.height=le.height))}),e.forEach(G.edges(),function(X){var te=G.edge(X),le=P.edge(X);te.points=le.points,e.has(le,"x")&&(te.x=le.x,te.y=le.y)}),G.graph().width=P.graph().width,G.graph().height=P.graph().height}var w=["nodesep","edgesep","ranksep","marginx","marginy"],E={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},N=["acyclicer","ranker","rankdir","align"],S=["width","height"],R={width:0,height:0},A=["minlen","weight","width","height","labeloffset"],j={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},I=["labelpos"];function D(G){var P=new y({multigraph:!0,compound:!0}),X=_e(G.graph());return P.setGraph(e.merge({},E,ie(X,w),e.pick(X,N))),e.forEach(G.nodes(),function(te){var le=_e(G.node(te));P.setNode(te,e.defaults(ie(le,S),R)),P.setParent(te,G.parent(te))}),e.forEach(G.edges(),function(te){var le=_e(G.edge(te));P.setEdge(te,e.merge({},j,ie(le,A),e.pick(le,I)))}),P}function z(G){var P=G.graph();P.ranksep/=2,e.forEach(G.edges(),function(X){var te=G.edge(X);te.minlen*=2,te.labelpos.toLowerCase()!=="c"&&(P.rankdir==="TB"||P.rankdir==="BT"?te.width+=te.labeloffset:te.height+=te.labeloffset)})}function $(G){e.forEach(G.edges(),function(P){var X=G.edge(P);if(X.width&&X.height){var te=G.node(P.v),le=G.node(P.w),xe={rank:(le.rank-te.rank)/2+te.rank,e:P};m.addDummyNode(G,"edge-proxy",xe,"_ep")}})}function V(G){var P=0;e.forEach(G.nodes(),function(X){var te=G.node(X);te.borderTop&&(te.minRank=G.node(te.borderTop).rank,te.maxRank=G.node(te.borderBottom).rank,P=e.max(P,te.maxRank))}),G.graph().maxRank=P}function Y(G){e.forEach(G.nodes(),function(P){var X=G.node(P);X.dummy==="edge-proxy"&&(G.edge(X.e).labelRank=X.rank,G.removeNode(P))})}function ee(G){var P=Number.POSITIVE_INFINITY,X=0,te=Number.POSITIVE_INFINITY,le=0,xe=G.graph(),Le=xe.marginx||0,Je=xe.marginy||0;function tr(Qe){var Ve=Qe.x,Ee=Qe.y,Mt=Qe.width,Me=Qe.height;P=Math.min(P,Ve-Mt/2),X=Math.max(X,Ve+Mt/2),te=Math.min(te,Ee-Me/2),le=Math.max(le,Ee+Me/2)}e.forEach(G.nodes(),function(Qe){tr(G.node(Qe))}),e.forEach(G.edges(),function(Qe){var Ve=G.edge(Qe);e.has(Ve,"x")&&tr(Ve)}),P-=Le,te-=Je,e.forEach(G.nodes(),function(Qe){var Ve=G.node(Qe);Ve.x-=P,Ve.y-=te}),e.forEach(G.edges(),function(Qe){var Ve=G.edge(Qe);e.forEach(Ve.points,function(Ee){Ee.x-=P,Ee.y-=te}),e.has(Ve,"x")&&(Ve.x-=P),e.has(Ve,"y")&&(Ve.y-=te)}),xe.width=X-P+Le,xe.height=le-te+Je}function J(G){e.forEach(G.edges(),function(P){var X=G.edge(P),te=G.node(P.v),le=G.node(P.w),xe,Le;X.points?(xe=X.points[0],Le=X.points[X.points.length-1]):(X.points=[],xe=le,Le=te),X.points.unshift(m.intersectRect(te,xe)),X.points.push(m.intersectRect(le,Le))})}function ae(G){e.forEach(G.edges(),function(P){var X=G.edge(P);if(e.has(X,"x"))switch((X.labelpos==="l"||X.labelpos==="r")&&(X.width-=X.labeloffset),X.labelpos){case"l":X.x-=X.width/2+X.labeloffset;break;case"r":X.x+=X.width/2+X.labeloffset;break}})}function be(G){e.forEach(G.edges(),function(P){var X=G.edge(P);X.reversed&&X.points.reverse()})}function Z(G){e.forEach(G.nodes(),function(P){if(G.children(P).length){var X=G.node(P),te=G.node(X.borderTop),le=G.node(X.borderBottom),xe=G.node(e.last(X.borderLeft)),Le=G.node(e.last(X.borderRight));X.width=Math.abs(Le.x-xe.x),X.height=Math.abs(le.y-te.y),X.x=xe.x+X.width/2,X.y=te.y+X.height/2}}),e.forEach(G.nodes(),function(P){G.node(P).dummy==="border"&&G.removeNode(P)})}function ue(G){e.forEach(G.edges(),function(P){if(P.v===P.w){var X=G.node(P.v);X.selfEdges||(X.selfEdges=[]),X.selfEdges.push({e:P,label:G.edge(P)}),G.removeEdge(P)}})}function pe(G){var P=m.buildLayerMatrix(G);e.forEach(P,function(X){var te=0;e.forEach(X,function(le,xe){var Le=G.node(le);Le.order=xe+te,e.forEach(Le.selfEdges,function(Je){m.addDummyNode(G,"selfedge",{width:Je.label.width,height:Je.label.height,rank:Le.rank,order:xe+ ++te,e:Je.e,label:Je.label},"_se")}),delete Le.selfEdges})})}function he(G){e.forEach(G.nodes(),function(P){var X=G.node(P);if(X.dummy==="selfedge"){var te=G.node(X.e.v),le=te.x+te.width/2,xe=te.y,Le=X.x-le,Je=te.height/2;G.setEdge(X.e,X.label),G.removeNode(P),X.label.points=[{x:le+2*Le/3,y:xe-Je},{x:le+5*Le/6,y:xe-Je},{x:le+Le,y:xe},{x:le+5*Le/6,y:xe+Je},{x:le+2*Le/3,y:xe+Je}],X.label.x=X.x,X.label.y=X.y}})}function ie(G,P){return e.mapValues(e.pick(G,P),Number)}function _e(G){var P={};return e.forEach(G,function(X,te){P[te.toLowerCase()]=X}),P}return wc}var bc,p0;function fx(){if(p0)return bc;p0=1;var e=Te(),r=nt(),t=lt().Graph;bc={debugOrdering:n};function n(i){var s=r.buildLayerMatrix(i),a=new t({compound:!0,multigraph:!0}).setGraph({});return e.forEach(i.nodes(),function(o){a.setNode(o,{label:o}),a.setParent(o,"layer"+i.node(o).rank)}),e.forEach(i.edges(),function(o){a.setEdge(o.v,o.w,{},o.name)}),e.forEach(s,function(o,c){var f="layer"+c;a.setNode(f,{rank:"same"}),e.reduce(o,function(l,p){return a.setEdge(l,p,{style:"invis"}),p})}),a}return bc}var _c,v0;function lx(){return v0||(v0=1,_c="0.8.5"),_c}var Ec,m0;function hx(){return m0||(m0=1,Ec={graphlib:lt(),layout:cx(),debug:fx(),util:{time:nt().time,notime:nt().notime},version:lx()}),Ec}var y0=hx(),dx=Of(y0);class Hr{constructor(r){this.id="dagre",this.options={},Object.assign(this.options,Hr.defaultOptions,r)}execute(r,t){return fe(this,void 0,void 0,function*(){return this.genericDagreLayout(!1,r,Object.assign(Object.assign({},this.options),t))})}assign(r,t){return fe(this,void 0,void 0,function*(){yield this.genericDagreLayout(!0,r,Object.assign(Object.assign({},this.options),t))})}genericDagreLayout(r,t,n){return fe(this,void 0,void 0,function*(){const{nodeSize:i}=n,s=new y0.graphlib.Graph;s.setGraph(n),s.setDefaultEdgeLabel(()=>({}));const a=t.getAllNodes(),o=t.getAllEdges();[...a,...o].some(({id:f})=>me(f))&&console.error("Dagre layout only support string id, it will convert number to string."),t.getAllNodes().forEach(f=>{const{id:l}=f,p=Object.assign({},f.data);if(i!==void 0){const[m,y]=sr(wt(i)?i(f):i);Object.assign(p,{width:m,height:y})}s.setNode(l.toString(),p)}),t.getAllEdges().forEach(({id:f,source:l,target:p})=>{s.setEdge(l.toString(),p.toString(),{id:f})}),dx.layout(s);const c={nodes:[],edges:[]};return s.nodes().forEach(f=>{const l=s.node(f);c.nodes.push({id:f,data:l}),r&&t.mergeNodeData(f,l)}),s.edges().forEach(f=>{const l=s.edge(f),{id:p}=l,m=Oe(l,["id"]),{v:y,w:x}=f;c.edges.push({id:p,source:y,target:x,data:m}),r&&t.mergeEdgeData(p,m)}),c})}}Hr.defaultOptions={};class xc{constructor(r){this.id=r.id||0,this.rx=r.rx,this.ry=r.ry,this.fx=0,this.fy=0,this.mass=r.mass,this.degree=r.degree,this.g=r.g||0}distanceTo(r){const t=this.rx-r.rx,n=this.ry-r.ry;return Math.hypot(t,n)}setPos(r,t){this.rx=r,this.ry=t}resetForce(){this.fx=0,this.fy=0}addForce(r){const t=r.rx-this.rx,n=r.ry-this.ry;let i=Math.hypot(t,n);i=i<1e-4?1e-4:i;const s=this.g*(this.degree+1)*(r.degree+1)/i;this.fx+=s*t/i,this.fy+=s*n/i}in(r){return r.contains(this.rx,this.ry)}add(r){const t=this.mass+r.mass,n=(this.rx*this.mass+r.rx*r.mass)/t,i=(this.ry*this.mass+r.ry*r.mass)/t,s=this.degree+r.degree,a={rx:n,ry:i,mass:t,degree:s};return new xc(a)}}class Ht{constructor(r){this.xmid=r.xmid,this.ymid=r.ymid,this.length=r.length,this.massCenter=r.massCenter||[0,0],this.mass=r.mass||1}getLength(){return this.length}contains(r,t){const n=this.length/2;return r<=this.xmid+n&&r>=this.xmid-n&&t<=this.ymid+n&&t>=this.ymid-n}NW(){const r=this.xmid-this.length/4,t=this.ymid+this.length/4,n=this.length/2,i={xmid:r,ymid:t,length:n};return new Ht(i)}NE(){const r=this.xmid+this.length/4,t=this.ymid+this.length/4,n=this.length/2,i={xmid:r,ymid:t,length:n};return new Ht(i)}SW(){const r=this.xmid-this.length/4,t=this.ymid-this.length/4,n=this.length/2,i={xmid:r,ymid:t,length:n};return new Ht(i)}SE(){const r=this.xmid+this.length/4,t=this.ymid-this.length/4,n=this.length/2,i={xmid:r,ymid:t,length:n};return new Ht(i)}}class er{constructor(r){this.body=null,this.quad=null,this.NW=null,this.NE=null,this.SW=null,this.SE=null,this.theta=.5,r!=null&&(this.quad=r)}insert(r){if(this.body==null){this.body=r;return}this._isExternal()?(this.quad&&(this.NW=new er(this.quad.NW()),this.NE=new er(this.quad.NE()),this.SW=new er(this.quad.SW()),this.SE=new er(this.quad.SE())),this._putBody(this.body),this._putBody(r),this.body=this.body.add(r)):(this.body=this.body.add(r),this._putBody(r))}_putBody(r){this.quad&&(r.in(this.quad.NW())&&this.NW?this.NW.insert(r):r.in(this.quad.NE())&&this.NE?this.NE.insert(r):r.in(this.quad.SW())&&this.SW?this.SW.insert(r):r.in(this.quad.SE())&&this.SE&&this.SE.insert(r))}_isExternal(){return this.NW==null&&this.NE==null&&this.SW==null&&this.SE==null}updateForce(r){if(!(this.body==null||r===this.body))if(this._isExternal())r.addForce(this.body);else{const t=this.quad?this.quad.getLength():0,n=this.body.distanceTo(r);t/n<this.theta?r.addForce(this.body):(this.NW&&this.NW.updateForce(r),this.NE&&this.NE.updateForce(r),this.SW&&this.SW.updateForce(r),this.SE&&this.SE.updateForce(r))}}}const gx={center:[0,0],width:300,height:300,kr:5,kg:1,mode:"normal",preventOverlap:!1,dissuadeHubs:!1,maxIteration:0,ks:.1,ksmax:10,tao:.1};class px{constructor(r={}){this.options=r,this.id="forceAtlas2",this.options=Object.assign(Object.assign({},gx),r)}execute(r,t){return fe(this,void 0,void 0,function*(){return this.genericForceAtlas2Layout(!1,r,t)})}assign(r,t){return fe(this,void 0,void 0,function*(){yield this.genericForceAtlas2Layout(!0,r,t)})}genericForceAtlas2Layout(r,t,n){return fe(this,void 0,void 0,function*(){const i=t.getAllEdges(),s=t.getAllNodes(),a=this.formatOptions(n,s.length),{width:o,height:c,prune:f,maxIteration:l,nodeSize:p,center:m}=a;if(!(s!=null&&s.length)||s.length===1)return Pt(t,r,m);const y=s.map(w=>it(w,[o,c])),x=i.filter(w=>{const{source:E,target:N}=w;return E!==N}),_=new Be({nodes:y,edges:x}),b=this.getSizes(_,p);if(this.run(_,t,l,b,r,a),f){for(let E=0;E<x.length;E+=1){const{source:N,target:S}=x[E],R=_.getDegree(N),A=_.getDegree(N);if(R<=1){const j=_.getNode(S);_.mergeNodeData(N,{x:j.data.x,y:j.data.y})}else if(A<=1){const j=_.getNode(N);_.mergeNodeData(S,{x:j.data.x,y:j.data.y})}}const w=Object.assign(Object.assign({},a),{prune:!1,barnesHut:!1});this.run(_,t,100,b,r,w)}return{nodes:y,edges:i}})}getSizes(r,t){const n=r.getAllNodes(),i={};for(let s=0;s<n.length;s+=1){const a=n[s];i[a.id]=qn(t,void 0)(a)}return i}formatOptions(r={},t){const n=Object.assign(Object.assign({},this.options),r),{center:i,width:s,height:a,barnesHut:o,prune:c,maxIteration:f,kr:l,kg:p}=n;return n.width=!s&&typeof window<"u"?window.innerWidth:s,n.height=!a&&typeof window<"u"?window.innerHeight:a,n.center=i||[n.width/2,n.height/2],o===void 0&&t>250&&(n.barnesHut=!0),c===void 0&&t>100&&(n.prune=!0),f===0&&!c?(n.maxIteration=250,t<=200&&t>100?n.maxIteration=1e3:t>200&&(n.maxIteration=1200)):f===0&&c&&(n.maxIteration=100,t<=200&&t>100?n.maxIteration=500:t>200&&(n.maxIteration=950)),l||(n.kr=50,t>100&&t<=500?n.kr=20:t>500&&(n.kr=1)),p||(n.kg=20,t>100&&t<=500?n.kg=10:t>500&&(n.kg=1)),n}run(r,t,n,i,s,a){const{kr:o,barnesHut:c,onTick:f}=a,l=r.getAllNodes();let p=0,m=n;const y={},x={},_={};for(let b=0;b<l.length;b+=1){const{data:w,id:E}=l[b];if(y[E]=[0,0],c){const N={id:b,rx:w.x,ry:w.y,mass:1,g:o,degree:r.getDegree(E)};_[E]=new xc(N)}}for(;m>0;)p=this.oneStep(r,{iter:m,preventOverlapIters:50,krPrime:100,sg:p,forces:y,preForces:x,bodies:_,sizes:i},a),m--,f==null||f({nodes:l,edges:t.getAllEdges()});return r}oneStep(r,t,n){const{iter:i,preventOverlapIters:s,krPrime:a,sg:o,preForces:c,bodies:f,sizes:l}=t;let{forces:p}=t;const{preventOverlap:m,barnesHut:y}=n,x=r.getAllNodes();for(let _=0;_<x.length;_+=1){const{id:b}=x[_];c[b]=[...p[b]],p[b]=[0,0]}return p=this.getAttrForces(r,i,s,l,p,n),y&&(m&&i>s||!m)?p=this.getOptRepGraForces(r,p,f,n):p=this.getRepGraForces(r,i,s,p,a,l,n),this.updatePos(r,p,c,o,n)}getAttrForces(r,t,n,i,s,a){const{preventOverlap:o,dissuadeHubs:c,mode:f,prune:l}=a,p=r.getAllEdges();for(let m=0;m<p.length;m+=1){const{source:y,target:x}=p[m],_=r.getNode(y),b=r.getNode(x),w=r.getDegree(y),E=r.getDegree(x);if(l&&(w<=1||E<=1))continue;const N=[b.data.x-_.data.x,b.data.y-_.data.y];let S=Math.hypot(N[0],N[1]);S=S<1e-4?1e-4:S,N[0]=N[0]/S,N[1]=N[1]/S,o&&t<n&&(S=S-i[y]-i[x]);let R=S,A=R;f==="linlog"&&(R=Math.log(1+S),A=R),c&&(R=S/w,A=S/E),o&&t<n&&S<=0?(R=0,A=0):o&&t<n&&S>0&&(R=S,A=S),s[y][0]+=R*N[0],s[x][0]-=A*N[0],s[y][1]+=R*N[1],s[x][1]-=A*N[1]}return s}getOptRepGraForces(r,t,n,i){const{kg:s,center:a,prune:o}=i,c=r.getAllNodes(),f=c.length;let l=9e10,p=-9e10,m=9e10,y=-9e10;for(let E=0;E<f;E+=1){const{id:N,data:S}=c[E];o&&r.getDegree(N)<=1||(n[N].setPos(S.x,S.y),S.x>=p&&(p=S.x),S.x<=l&&(l=S.x),S.y>=y&&(y=S.y),S.y<=m&&(m=S.y))}const x=Math.max(p-l,y-m),_={xmid:(p+l)/2,ymid:(y+m)/2,length:x,massCenter:a,mass:f},b=new Ht(_),w=new er(b);for(let E=0;E<f;E+=1){const{id:N}=c[E];o&&r.getDegree(N)<=1||n[N].in(b)&&w.insert(n[N])}for(let E=0;E<f;E+=1){const{id:N,data:S}=c[E],R=r.getDegree(N);if(o&&R<=1)continue;n[N].resetForce(),w.updateForce(n[N]),t[N][0]-=n[N].fx,t[N][1]-=n[N].fy;const A=[S.x-a[0],S.y-a[1]];let j=Math.hypot(A[0],A[1]);j=j<1e-4?1e-4:j,A[0]=A[0]/j,A[1]=A[1]/j;const I=s*(R+1);t[N][0]-=I*A[0],t[N][1]-=I*A[1]}return t}getRepGraForces(r,t,n,i,s,a,o){const{preventOverlap:c,kr:f,kg:l,center:p,prune:m}=o,y=r.getAllNodes(),x=y.length;for(let _=0;_<x;_+=1){const b=y[_],w=r.getDegree(b.id);for(let R=_+1;R<x;R+=1){const A=y[R],j=r.getDegree(A.id);if(m&&(w<=1||j<=1))continue;const I=[A.data.x-b.data.x,A.data.y-b.data.y];let D=Math.hypot(I[0],I[1]);D=D<1e-4?1e-4:D,I[0]=I[0]/D,I[1]=I[1]/D,c&&t<n&&(D=D-a[b.id]-a[A.id]);let z=f*(w+1)*(j+1)/D;c&&t<n&&D<0?z=s*(w+1)*(j+1):c&&t<n&&D===0?z=0:c&&t<n&&D>0&&(z=f*(w+1)*(j+1)/D),i[b.id][0]-=z*I[0],i[A.id][0]+=z*I[0],i[b.id][1]-=z*I[1],i[A.id][1]+=z*I[1]}const E=[b.data.x-p[0],b.data.y-p[1]],N=Math.hypot(E[0],E[1]);E[0]=E[0]/N,E[1]=E[1]/N;const S=l*(w+1);i[b.id][0]-=S*E[0],i[b.id][1]-=S*E[1]}return i}updatePos(r,t,n,i,s){const{ks:a,tao:o,prune:c,ksmax:f}=s,l=r.getAllNodes(),p=l.length,m=[],y=[];let x=0,_=0,b=i;for(let E=0;E<p;E+=1){const{id:N}=l[E],S=r.getDegree(N);if(c&&S<=1)continue;const R=[t[N][0]-n[N][0],t[N][1]-n[N][1]],A=Math.hypot(R[0],R[1]),j=[t[N][0]+n[N][0],t[N][1]+n[N][1]],I=Math.hypot(j[0],j[1]);m[E]=A,y[E]=I/2,x+=(S+1)*m[E],_+=(S+1)*y[E]}const w=b;b=o*_/x,w!==0&&(b=b>1.5*w?1.5*w:b);for(let E=0;E<p;E+=1){const{id:N,data:S}=l[E],R=r.getDegree(N);if(c&&R<=1||me(S.fx)&&me(S.fy))continue;let A=a*b/(1+b*Math.sqrt(m[E])),j=Math.hypot(t[N][0],t[N][1]);j=j<1e-4?1e-4:j;const I=f/j;A=A>I?I:A;const D=A*t[N][0],z=A*t[N][1];r.mergeNodeData(N,{x:S.x+D,y:S.y+z})}return b}}const vx={maxIteration:1e3,gravity:10,speed:5,clustering:!1,clusterGravity:10,width:300,height:300,nodeClusterBy:"cluster"},mx=800;class yx{constructor(r={}){this.options=r,this.id="fruchterman",this.timeInterval=0,this.running=!1,this.options=Object.assign(Object.assign({},vx),r)}execute(r,t){return fe(this,void 0,void 0,function*(){return this.genericFruchtermanLayout(!1,r,t)})}assign(r,t){return fe(this,void 0,void 0,function*(){yield this.genericFruchtermanLayout(!0,r,t)})}stop(){this.timeInterval&&typeof window<"u"&&window.clearInterval(this.timeInterval),this.running=!1}tick(r=this.options.maxIteration||1){if(this.lastResult)return this.lastResult;for(let n=0;n<r;n++)this.runOneStep(this.lastGraph,this.lastClusterMap,this.lastOptions);const t={nodes:this.lastLayoutNodes,edges:this.lastLayoutEdges};return this.lastAssign&&t.nodes.forEach(n=>this.lastGraph.mergeNodeData(n.id,{x:n.data.x,y:n.data.y,z:this.options.dimensions===3?n.data.z:void 0})),t}genericFruchtermanLayout(r,t,n){return fe(this,void 0,void 0,function*(){if(this.running)return;const i=this.formatOptions(n),{dimensions:s,width:a,height:o,center:c,clustering:f,nodeClusterBy:l,maxIteration:p,onTick:m}=i,y=t.getAllNodes(),x=t.getAllEdges();if(!(y!=null&&y.length)){const N={nodes:[],edges:x};return this.lastResult=N,N}if(y.length===1){r&&t.mergeNodeData(y[0].id,{x:c[0],y:c[1],z:s===3?c[2]:void 0});const N={nodes:[Object.assign(Object.assign({},y[0]),{data:Object.assign(Object.assign({},y[0].data),{x:c[0],y:c[1],z:s===3?c[2]:void 0})})],edges:x};return this.lastResult=N,N}const _=y.map(N=>it(N,[a,o])),b=new Be({nodes:_,edges:x}),w={};if(f&&_.forEach(N=>{const S=N.data[l];w[S]||(w[S]={name:S,cx:0,cy:0,count:0})}),this.lastLayoutNodes=_,this.lastLayoutEdges=x,this.lastAssign=r,this.lastGraph=b,this.lastOptions=i,this.lastClusterMap=w,typeof window>"u")return;let E=0;return new Promise(N=>{this.timeInterval=window.setInterval(()=>{if(!this.running){N({nodes:_,edges:x});return}this.runOneStep(b,w,i),r&&_.forEach(({id:S,data:R})=>t.mergeNodeData(S,{x:R.x,y:R.y,z:s===3?R.z:void 0})),m==null||m({nodes:_,edges:x}),E++,E>=p&&(window.clearInterval(this.timeInterval),N({nodes:_,edges:x}))},0),this.running=!0})})}formatOptions(r={}){const t=Object.assign(Object.assign({},this.options),r),{clustering:n,nodeClusterBy:i}=t,{center:s,width:a,height:o}=t;return t.width=!a&&typeof window<"u"?window.innerWidth:a,t.height=!o&&typeof window<"u"?window.innerHeight:o,t.center=s||[t.width/2,t.height/2],t.clustering=n&&!!i,t}runOneStep(r,t,n){const{dimensions:i,height:s,width:a,gravity:o,center:c,speed:f,clustering:l,nodeClusterBy:p,clusterGravity:m}=n,y=s*a,x=Math.sqrt(y)/10,_=r.getAllNodes(),b=y/(_.length+1),w=Math.sqrt(b),E={};if(this.applyCalculate(r,E,w,b),l){for(const S in t)t[S].cx=0,t[S].cy=0,t[S].count=0;_.forEach(S=>{const{data:R}=S,A=t[R[p]];me(R.x)&&(A.cx+=R.x),me(R.y)&&(A.cy+=R.y),A.count++});for(const S in t)t[S].cx/=t[S].count,t[S].cy/=t[S].count;const N=m||o;_.forEach((S,R)=>{const{id:A,data:j}=S;if(!me(j.x)||!me(j.y))return;const I=t[j[p]],D=Math.sqrt((j.x-I.cx)*(j.x-I.cx)+(j.y-I.cy)*(j.y-I.cy)),z=w*N;E[A].x-=z*(j.x-I.cx)/D,E[A].y-=z*(j.y-I.cy)/D})}_.forEach((N,S)=>{const{id:R,data:A}=N;if(!me(A.x)||!me(A.y))return;const j=.01*w*o;E[R].x-=j*(A.x-c[0]),E[R].y-=j*(A.y-c[1]),i===3&&(E[R].z-=j*(A.z-c[2]))}),_.forEach((N,S)=>{const{id:R,data:A}=N;if(me(A.fx)&&me(A.fy)){A.x=A.fx,A.y=A.fy,i===3&&(A.z=A.fz);return}if(!me(A.x)||!me(A.y))return;const j=Math.sqrt(E[R].x*E[R].x+E[R].y*E[R].y+(i===3?E[R].z*E[R].z:0));if(j>0){const I=Math.min(x*(f/mx),j);r.mergeNodeData(R,{x:A.x+E[R].x/j*I,y:A.y+E[R].y/j*I,z:i===3?A.z+E[R].z/j*I:void 0})}})}applyCalculate(r,t,n,i){this.calRepulsive(r,t,i),this.calAttractive(r,t,n)}calRepulsive(r,t,n){const i=r.getAllNodes();i.forEach(({data:s,id:a},o)=>{t[a]={x:0,y:0,z:0},i.forEach(({data:c,id:f},l)=>{if(o<=l||!me(s.x)||!me(c.x)||!me(s.y)||!me(c.y))return;let p=s.x-c.x,m=s.y-c.y,y=this.options.dimensions===3?s.z-c.z:0,x=p*p+m*m+y*y;x===0&&(x=1,p=.01,m=.01,y=.01);const _=n/x,b=p*_,w=m*_,E=y*_;t[a].x+=b,t[a].y+=w,t[f].x-=b,t[f].y-=w,this.options.dimensions===3&&(t[a].z+=E,t[f].z-=E)})})}calAttractive(r,t,n){r.getAllEdges().forEach(s=>{const{source:a,target:o}=s;if(!a||!o||a===o)return;const{data:c}=r.getNode(a),{data:f}=r.getNode(o);if(!me(f.x)||!me(c.x)||!me(f.y)||!me(c.y))return;const l=f.x-c.x,p=f.y-c.y,m=this.options.dimensions===3?f.z-c.z:0,y=Math.sqrt(l*l+p*p+m*m)/n,x=l*y,_=p*y,b=m*y;t[a].x+=x,t[a].y+=_,t[o].x-=x,t[o].y-=_,this.options.dimensions===3&&(t[a].z+=b,t[o].z-=b)})}}const wx={begin:[0,0],preventOverlap:!0,preventOverlapPadding:10,condense:!1,rows:void 0,cols:void 0,position:void 0,sortBy:"degree",nodeSize:30,width:300,height:300};class bx{constructor(r={}){this.options=r,this.id="grid",this.options=Object.assign(Object.assign({},wx),r)}execute(r,t){return fe(this,void 0,void 0,function*(){return this.genericGridLayout(!1,r,t)})}assign(r,t){return fe(this,void 0,void 0,function*(){yield this.genericGridLayout(!0,r,t)})}genericGridLayout(r,t,n){return fe(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{begin:s=[0,0],condense:a,preventOverlapPadding:o,preventOverlap:c,rows:f,cols:l,nodeSpacing:p,nodeSize:m,width:y,height:x,position:_}=i;let{sortBy:b}=i;const w=t.getAllNodes(),E=t.getAllEdges(),N=w==null?void 0:w.length;if(!N||N===1)return Pt(t,r,s);const S=w.map(J=>it(J));b!=="id"&&(!nr(b)||S[0].data[b]===void 0)&&(b="degree"),b==="degree"?S.sort((J,ae)=>t.getDegree(ae.id,"both")-t.getDegree(J.id,"both")):b==="id"?S.sort((J,ae)=>me(ae.id)&&me(J.id)?ae.id-J.id:`${J.id}`.localeCompare(`${ae.id}`)):S.sort((J,ae)=>ae.data[b]-J.data[b]);const R=!y&&typeof window<"u"?window.innerWidth:y,A=!x&&typeof window<"u"?window.innerHeight:x,j=N,I={rows:f,cols:l};if(f!=null&&l!=null)I.rows=f,I.cols=l;else if(f!=null&&l==null)I.rows=f,I.cols=Math.ceil(j/I.rows);else if(f==null&&l!=null)I.cols=l,I.rows=Math.ceil(j/I.cols);else{const J=Math.sqrt(j*A/R);I.rows=Math.round(J),I.cols=Math.round(R/A*J)}if(I.rows=Math.max(I.rows,1),I.cols=Math.max(I.cols,1),I.cols*I.rows>j){const J=en(I),ae=tn(I);(J-1)*ae>=j?en(I,J-1):(ae-1)*J>=j&&tn(I,ae-1)}else for(;I.cols*I.rows<j;){const J=en(I),ae=tn(I);(ae+1)*J>=j?tn(I,ae+1):en(I,J+1)}let D=a?0:R/I.cols,z=a?0:A/I.rows;if(c||p){const J=Ct(10,p),ae=Sn(30,m,!1);S.forEach(be=>{(!be.data.x||!be.data.y)&&(be.data.x=0,be.data.y=0);const Z=t.getNode(be.id),[ue,pe]=sr(ae(Z)||30),he=J!==void 0?J(be):o,ie=ue+he,_e=pe+he;D=Math.max(D,ie),z=Math.max(z,_e)})}const $={},V={row:0,col:0},Y={};for(let J=0;J<S.length;J++){const ae=S[J];let be;if(_&&(be=_(t.getNode(ae.id))),be&&(be.row!==void 0||be.col!==void 0)){const Z={row:be.row,col:be.col};if(Z.col===void 0)for(Z.col=0;Nc($,Z);)Z.col++;else if(Z.row===void 0)for(Z.row=0;Nc($,Z);)Z.row++;Y[ae.id]=Z,w0($,Z)}_x(ae,s,D,z,Y,I,V,$)}const ee={nodes:S,edges:E};return r&&S.forEach(J=>{t.mergeNodeData(J.id,{x:J.data.x,y:J.data.y})}),ee})}}const en=(e,r)=>{let t;const n=e.rows||5,i=e.cols||5;return r==null?t=Math.min(n,i):Math.min(n,i)===e.rows?e.rows=r:e.cols=r,t},tn=(e,r)=>{let t;const n=e.rows||5,i=e.cols||5;return r==null?t=Math.max(n,i):Math.max(n,i)===e.rows?e.rows=r:e.cols=r,t},Nc=(e,r)=>e[`c-${r.row}-${r.col}`]||!1,w0=(e,r)=>e[`c-${r.row}-${r.col}`]=!0,b0=(e,r)=>{const t=e.cols||5;r.col++,r.col>=t&&(r.col=0,r.row++)},_x=(e,r,t,n,i,s,a,o)=>{let c,f;const l=i[e.id];if(l)c=l.col*t+t/2+r[0],f=l.row*n+n/2+r[1];else{for(;Nc(o,a);)b0(s,a);c=a.col*t+t/2+r[0],f=a.row*n+n/2+r[1],w0(o,a),b0(s,a)}e.data.x=c,e.data.y=f},Ex=(e,r,t)=>{try{const n=At.mul(At.pow(r,2),-.5),i=n.mean("row"),s=n.mean("column"),a=n.mean();n.add(a).subRowVector(i).subColumnVector(s);const o=new kf(n),c=At.sqrt(o.diagonalMatrix).diagonal();return o.leftSingularVectors.toJSON().map(f=>At.mul([f],[c]).toJSON()[0].splice(0,e))}catch{const i=[];for(let s=0;s<r.length;s++){const a=Math.random()*t,o=Math.random()*t;i.push([a,o])}return i}},xx=800,Nx={iterations:10,height:10,width:10,speed:100,gravity:10,k:5},Mx=(e,r)=>{const t=Object.assign(Object.assign({},Nx),r),{positions:n,iterations:i,width:s,k:a,speed:o=100,strictRadial:c,focusIdx:f,radii:l=[],nodeSizeFunc:p}=t,m=e.getAllNodes(),y=[],x=s/10;for(let _=0;_<i;_++)n.forEach((b,w)=>{y[w]={x:0,y:0}}),Sx(m,n,y,a,l,p),qx(n,y,o,c,f,x,s,l);return n},Sx=(e,r,t,n,i,s)=>{r.forEach((a,o)=>{t[o]={x:0,y:0},r.forEach((c,f)=>{if(o===f||i[o]!==i[f])return;let l=a.x-c.x,p=a.y-c.y,m=Math.sqrt(l*l+p*p);if(m===0){m=1;const y=o>f?1:-1;l=.01*y,p=.01*y}if(m<s(e[o])/2+s(e[f])/2){const y=n*n/m;t[o].x+=l/m*y,t[o].y+=p/m*y}})})},qx=(e,r,t,n,i,s,a,o)=>{const c=s||a/10;return n&&r.forEach((f,l)=>{const p=e[l].x-e[i].x,m=e[l].y-e[i].y,y=Math.sqrt(p*p+m*m);let x=m/y,_=-p/y;const b=Math.sqrt(f.x*f.x+f.y*f.y);let w=Math.acos((x*f.x+_*f.y)/b);w>Math.PI/2&&(w-=Math.PI/2,x*=-1,_*=-1);const E=Math.cos(w)*b;f.x=x*E,f.y=_*E}),e.forEach((f,l)=>{if(l===i)return;const p=Math.sqrt(r[l].x*r[l].x+r[l].y*r[l].y);if(p>0&&l!==i){const m=Math.min(c*(t/xx),p);if(f.x+=r[l].x/p*m,f.y+=r[l].y/p*m,n){let y=f.x-e[i].x,x=f.y-e[i].y;const _=Math.sqrt(y*y+x*x);y=y/_*o[l],x=x/_*o[l],f.x=e[i].x+y,f.y=e[i].y+x}}}),e},Rx={maxIteration:1e3,focusNode:null,unitRadius:null,linkDistance:50,preventOverlap:!1,strictRadial:!0,maxPreventOverlapIteration:200,sortStrength:10};class Ox{constructor(r={}){this.options=r,this.id="radial",this.options=Object.assign(Object.assign({},Rx),r)}execute(r,t){return fe(this,void 0,void 0,function*(){return this.genericRadialLayout(!1,r,t)})}assign(r,t){return fe(this,void 0,void 0,function*(){yield this.genericRadialLayout(!0,r,t)})}genericRadialLayout(r,t,n){return fe(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{width:s,height:a,center:o,focusNode:c,unitRadius:f,nodeSize:l,nodeSpacing:p,strictRadial:m,preventOverlap:y,maxPreventOverlapIteration:x,sortBy:_,linkDistance:b=50,sortStrength:w=10,maxIteration:E=1e3}=i,N=t.getAllNodes(),S=t.getAllEdges(),R=!s&&typeof window<"u"?window.innerWidth:s,A=!a&&typeof window<"u"?window.innerHeight:a,j=o||[R/2,A/2];if(!(N!=null&&N.length)||N.length===1)return Pt(t,r,j);let I=N[0];if(nr(c)){for(let te=0;te<N.length;te++)if(N[te].id===c){I=N[te];break}}else I=c||N[0];const D=Tx(N,I.id),z=wf({nodes:N,edges:S}),$=yf(z),V=jx($,D);kx($,D,V+1);const Y=$[D];let ee=R-j[0]>j[0]?j[0]:R-j[0],J=A-j[1]>j[1]?j[1]:A-j[1];ee===0&&(ee=R/2),J===0&&(J=A/2);const ae=Math.min(ee,J),be=Math.max(...Y),Z=[],ue=f||ae/be;Y.forEach((te,le)=>{Z[le]=te*ue});const pe=Ax(N,$,b,Z,ue,_,w),he=Ix(pe),ie=Ex(b,pe,b);let _e=ie.map(([te,le])=>({x:(isNaN(te)?Math.random()*b:te)-ie[D][0],y:(isNaN(le)?Math.random()*b:le)-ie[D][1]}));this.run(E,_e,he,pe,Z,D);let G;if(y){G=qn(l,p);const te={nodes:N,nodeSizeFunc:G,positions:_e,radii:Z,height:A,width:R,strictRadial:!!m,focusIdx:D,iterations:x||200,k:_e.length/4.5};_e=Mx(t,te)}const P=[];return _e.forEach((te,le)=>{const xe=it(N[le]);xe.data.x=te.x+j[0],xe.data.y=te.y+j[1],P.push(xe)}),r&&P.forEach(te=>t.mergeNodeData(te.id,{x:te.data.x,y:te.data.y})),{nodes:P,edges:S}})}run(r,t,n,i,s,a){for(let o=0;o<=r;o++){const c=o/r;this.oneIteration(c,t,s,i,n,a)}}oneIteration(r,t,n,i,s,a){const o=1-r;t.forEach((c,f)=>{const l=bf(c,{x:0,y:0}),p=l===0?0:1/l;if(f===a)return;let m=0,y=0,x=0;t.forEach((b,w)=>{if(f===w)return;const E=bf(c,b),N=E===0?0:1/E,S=i[w][f];x+=s[f][w],m+=s[f][w]*(b.x+S*(c.x-b.x)*N),y+=s[f][w]*(b.y+S*(c.y-b.y)*N)});const _=n[f]===0?0:1/n[f];x*=o,x+=r*_*_,m*=o,m+=r*_*c.x*p,c.x=m/x,y*=o,y+=r*_*c.y*p,c.y=y/x})}}const Ax=(e,r,t,n,i,s,a)=>{if(!e)return[];const o=[];if(r){const c={};r.forEach((f,l)=>{const p=[];f.forEach((m,y)=>{var x,_;if(l===y)p.push(0);else if(n[l]===n[y])if(s==="data")p.push(m*(Math.abs(l-y)*a)/(n[l]/i));else if(s){let b,w;if(c[e[l].id])b=c[e[l].id];else{const E=(s==="id"?e[l].id:(x=e[l].data)===null||x===void 0?void 0:x[s])||0;nr(E)?b=E.charCodeAt(0):b=E,c[e[l].id]=b}if(c[e[y].id])w=c[e[y].id];else{const E=(s==="id"?e[y].id:(_=e[y].data)===null||_===void 0?void 0:_[s])||0;nr(E)?w=E.charCodeAt(0):w=E,c[e[y].id]=w}p.push(m*(Math.abs(b-w)*a)/(n[l]/i))}else p.push(m*t/(n[l]/i));else{const b=(t+i)/2;p.push(m*b)}}),o.push(p)})}return o},Ix=e=>{const r=e.length,t=e[0].length,n=[];for(let i=0;i<r;i++){const s=[];for(let a=0;a<t;a++)e[i][a]!==0?s.push(1/(e[i][a]*e[i][a])):s.push(0);n.push(s)}return n},Tx=(e,r)=>{let t=-1;return e.forEach((n,i)=>{n.id===r&&(t=i)}),Math.max(t,0)},kx=(e,r,t)=>{const n=e.length;for(let i=0;i<n;i++)if(e[r][i]===1/0){e[r][i]=t,e[i][r]=t;for(let s=0;s<n;s++)e[i][s]!==1/0&&e[r][s]===1/0&&(e[r][s]=t+e[i][s],e[s][r]=t+e[i][s])}for(let i=0;i<n;i++)if(i!==r){for(let s=0;s<n;s++)if(e[i][s]===1/0){let a=Math.abs(e[r][i]-e[r][s]);a=a===0?1:a,e[i][s]=a}}},jx=(e,r)=>{let t=0;for(let n=0;n<e[r].length;n++)e[r][n]!==1/0&&(t=e[r][n]>t?e[r][n]:t);return t},Cx={center:[0,0],width:300,height:300};class Px{constructor(r={}){this.options=r,this.id="random",this.options=Object.assign(Object.assign({},Cx),r)}execute(r,t){return fe(this,void 0,void 0,function*(){return this.genericRandomLayout(!1,r,t)})}assign(r,t){return fe(this,void 0,void 0,function*(){yield this.genericRandomLayout(!0,r,t)})}genericRandomLayout(r,t,n){return fe(this,void 0,void 0,function*(){const i=Object.assign(Object.assign({},this.options),n),{center:s,width:a,height:o}=i,c=t.getAllNodes(),f=.9,l=!a&&typeof window<"u"?window.innerWidth:a,p=!o&&typeof window<"u"?window.innerHeight:o,m=s||[l/2,p/2],y=[];return c&&c.forEach(_=>{y.push({id:_.id,data:{x:(Math.random()-.5)*f*l+m[0],y:(Math.random()-.5)*f*p+m[1]}})}),r&&y.forEach(_=>t.mergeNodeData(_.id,{x:_.data.x,y:_.data.y})),{nodes:y,edges:t.getAllEdges()}})}}const Lx={circular:By,concentric:Rn,mds:jf,random:Px,grid:bx,radial:Ox,force:Sf,d3force:Uf,"d3-force-3d":J1,fruchterman:yx,forceAtlas2:px,dagre:Hr,antvDagre:Dy,comboCombined:Yw};let Nt;dn({stopLayout(){Nt!=null&&Nt.stop&&Nt.stop()},calculateLayout(e,r){return fe(this,void 0,void 0,function*(){const{layout:{id:t,options:n,iterations:i},nodes:s,edges:a}=e,o=new Be({nodes:s,edges:a}),c=Lx[t];if(c)Nt=new c(n);else throw new Error(`Unknown layout id: ${t}`);let f=yield Nt.execute(o);return Cf(Nt)&&(Nt.stop(),f=Nt.tick(i)),[f,r]})}})})();