@antv/algorithm
Advanced tools
Comparing version 0.1.16 to 0.1.17
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Algorithm=t():e.Algorithm=t()}(this,(function(){return(()=>{"use strict";var e={458:e=>{e.exports=function(e,t,r,n){var o=self||window;try{try{var i;try{i=new o.Blob([e])}catch(t){(i=new(o.BlobBuilder||o.WebKitBlobBuilder||o.MozBlobBuilder||o.MSBlobBuilder)).append(e),i=i.getBlob()}var a=o.URL||o.webkitURL,d=a.createObjectURL(i),s=new o[t](d,r);return a.revokeObjectURL(d),s}catch(n){return new o[t]("data:application/javascript,".concat(encodeURIComponent(e)),r)}}catch(e){if(!n)throw Error("Inline worker is not supported");return new o[t](n,r)}}}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.p="./dist";var n={};return(()=>{r.d(n,{default:()=>s});var e="SUCCESS",t=r(458),o=r.n(t);function i(){return o()('(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{GADDI:()=>fe,breadthFirstSearch:()=>c,connectedComponent:()=>f,depthFirstSearch:()=>b,detectCycle:()=>E,dijkstra:()=>k,findAllPath:()=>D,findShortestPath:()=>O,floydWarshall:()=>S,getAdjMatrix:()=>r,getDegree:()=>l,getInDegree:()=>p,getNeighbors:()=>d,getOutDegree:()=>v,labelPropagation:()=>P,louvain:()=>U,minimumSpanningTree:()=>W,pageRank:()=>$});const r=function(e,t){var r=e.nodes,n=e.edges,o=[],i={};if(!r)throw new Error("invalid nodes data!");return r&&r.forEach((function(e,t){i[e.id]=t,o.push([])})),n&&n.forEach((function(e){var r=e.source,n=e.target,a=i[r],d=i[n];!a&&0!==a||!d&&0!==d||(o[a][d]=1,t||(o[d][a]=1))})),o};var n=function(e,t){return e===t},o=function(){function e(e,t){void 0===t&&(t=null),this.value=e,this.next=t}return e.prototype.toString=function(e){return e?e(this.value):"".concat(this.value)},e}();const i=function(){function e(e){void 0===e&&(e=n),this.head=null,this.tail=null,this.compare=e}return e.prototype.prepend=function(e){var t=new o(e,this.head);return this.head=t,this.tail||(this.tail=t),this},e.prototype.append=function(e){var t=new o(e);return this.head?(this.tail.next=t,this.tail=t,this):(this.head=t,this.tail=t,this)},e.prototype.delete=function(e){if(!this.head)return null;for(var t=null;this.head&&this.compare(this.head.value,e);)t=this.head,this.head=this.head.next;var r=this.head;if(null!==r)for(;r.next;)this.compare(r.next.value,e)?(t=r.next,r.next=r.next.next):r=r.next;return this.compare(this.tail.value,e)&&(this.tail=r),t},e.prototype.find=function(e){var t=e.value,r=void 0===t?void 0:t,n=e.callback,o=void 0===n?void 0:n;if(!this.head)return null;for(var i=this.head;i;){if(o&&o(i.value))return i;if(void 0!==r&&this.compare(i.value,r))return i;i=i.next}return null},e.prototype.deleteTail=function(){var e=this.tail;if(this.head===this.tail)return this.head=null,this.tail=null,e;for(var t=this.head;t.next;)t.next.next?t=t.next:t.next=null;return this.tail=t,e},e.prototype.deleteHead=function(){if(!this.head)return null;var e=this.head;return this.head.next?this.head=this.head.next:(this.head=null,this.tail=null),e},e.prototype.fromArray=function(e){var t=this;return e.forEach((function(e){return t.append(e)})),this},e.prototype.toArray=function(){for(var e=[],t=this.head;t;)e.push(t),t=t.next;return e},e.prototype.reverse=function(){for(var e=this.head,t=null,r=null;e;)r=e.next,e.next=t,t=e,e=r;this.tail=this.head,this.head=t},e.prototype.toString=function(e){return void 0===e&&(e=void 0),this.toArray().map((function(t){return t.toString(e)})).toString()},e}(),a=function(){function e(){this.linkedList=new i}return e.prototype.isEmpty=function(){return!this.linkedList.head},e.prototype.peek=function(){return this.linkedList.head?this.linkedList.head.value:null},e.prototype.enqueue=function(e){this.linkedList.append(e)},e.prototype.dequeue=function(){var e=this.linkedList.deleteHead();return e?e.value:null},e.prototype.toString=function(e){return this.linkedList.toString(e)},e}();var d=function(e,t,r){void 0===t&&(t=[]);var n=t.filter((function(t){return t.source===e||t.target===e}));return"target"===r?n.filter((function(t){return t.source===e})).map((function(e){return e.target})):"source"===r?n.filter((function(t){return t.target===e})).map((function(e){return e.source})):n.map((function(t){return t.source===e?t.target:t.source}))},s=function(e,t){return t.filter((function(t){return t.source===e||t.target===e}))},u=function(e){void 0===e&&(e=0);var t="".concat(Math.random()).split(".")[1].substr(0,5),r="".concat(Math.random()).split(".")[1].substr(0,5);return"".concat(e,"-").concat(t).concat(r)};const c=function(e,t,r,n){void 0===n&&(n=!0);var o=function(e){void 0===e&&(e={});var t,r=e,n=function(){},o=(t={},function(e){var r=e.next;return!t[r]&&(t[r]=!0,!0)});return r.allowTraversal=e.allowTraversal||o,r.enter=e.enter||n,r.leave=e.leave||n,r}(r),i=new a,s=e.edges,u=void 0===s?[]:s;i.enqueue(t);for(var c="",f=function(){var e=i.dequeue();o.enter({current:e,previous:c}),d(e,u,n?"target":void 0).forEach((function(t){o.allowTraversal({previous:c,current:e,next:t})&&i.enqueue(t)})),o.leave({current:e,previous:c}),c=e};!i.isEmpty();)f()};function f(e,t){return t?function(e){for(var t=e.nodes,r=void 0===t?[]:t,n=e.edges,o=void 0===n?[]:n,i=[],a={},s={},u={},c=[],f=0,h=function(e){s[e.id]=f,u[e.id]=f,f+=1,i.push(e),a[e.id]=!0;for(var t=d(e.id,o,"target").filter((function(e){return r.map((function(e){return e.id})).indexOf(e)>-1})),n=function(n){var o=t[n];if(s[o]||0===s[o])a[o]&&(u[e.id]=Math.min(u[e.id],s[o]));else{var i=r.filter((function(e){return e.id===o}));i.length>0&&h(i[0]),u[e.id]=Math.min(u[e.id],u[o])}},l=0;l<t.length;l++)n(l);if(u[e.id]===s[e.id]){for(var p=[];i.length>0;){var v=i.pop();if(a[v.id]=!1,p.push(v),v===e)break}p.length>0&&c.push(p)}},l=0,p=r;l<p.length;l++){var v=p[l];s[v.id]||0===s[v.id]||h(v)}return c}(e):function(e){for(var t=e.nodes,r=void 0===t?[]:t,n=e.edges,o=void 0===n?[]:n,i=[],a={},s=[],u=function(e){s.push(e),a[e.id]=!0;for(var t=d(e.id,o),n=function(e){var n=t[e];if(!a[n]){var o=r.filter((function(e){return e.id===n}));o.length>0&&u(o[0])}},i=0;i<t.length;++i)n(i)},c=0;c<r.length;c++){var f=r[c];if(!a[f.id]){u(f);for(var h=[];s.length>0;)h.push(s.pop());i.push(h)}}return i}(e)}var h=function(e){var t={},r=e.nodes,n=void 0===r?[]:r,o=e.edges,i=void 0===o?[]:o;return n.forEach((function(e){t[e.id]={degree:0,inDegree:0,outDegree:0}})),i.forEach((function(e){t[e.source].degree++,t[e.source].outDegree++,t[e.target].degree++,t[e.target].inDegree++})),t};const l=h;var p=function(e,t){return h(e)[t]?h(e)[t].inDegree:0},v=function(e,t){return h(e)[t]?h(e)[t].outDegree:0};function g(e,t,r,n){n.enter({current:t,previous:r});var o=e.edges;d(t,void 0===o?[]:o,"target").forEach((function(o){n.allowTraversal({previous:r,current:t,next:o})&&g(e,o,t,n)})),n.leave({current:t,previous:r})}function b(e,t,r){g(e,t,"",function(e){void 0===e&&(e={});var t,r=e,n=function(){},o=(t={},function(e){var r=e.next;return!t[r]&&(t[r]=!0,!0)});return r.allowTraversal=e.allowTraversal||o,r.enter=e.enter||n,r.leave=e.leave||n,r}(r))}const E=function(e){var t=null,r=e.nodes,n={},o={},i={},a={};(void 0===r?[]:r).forEach((function(e){o[e.id]=e}));for(var d={enter:function(e){var r=e.current,a=e.previous;if(i[r]){t={};for(var d=r,s=a;s!==r;)t[d]=s,d=s,s=n[s];t[d]=s}else i[r]=r,delete o[r],n[r]=a},leave:function(e){var t=e.current;a[t]=t,delete i[t]},allowTraversal:function(e){var r=e.next;return!t&&!a[r]}};Object.keys(o).length;)b(e,Object.keys(o)[0],d);return t};function m(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))}Object.create,Object.create;var y={}.toString;const L=function(e,t){return y.call(e)==="[object "+t+"]"},N=function(e){return L(e,"Function")},w=function(e){return Array.isArray?Array.isArray(e):L(e,"Array")};Object.keys;var M=Array.prototype;M.splice,M.indexOf,Array.prototype.splice,Object.prototype.hasOwnProperty;Number.isInteger&&Number.isInteger,Math.PI,parseInt,Math.PI;Object.values;Object.prototype;const I=function e(t){if("object"!=typeof t||null===t)return t;var r;if(w(t)){r=[];for(var n=0,o=t.length;n<o;n++)"object"==typeof t[n]&&null!=t[n]?r[n]=e(t[n]):r[n]=t[n]}else for(var i in r={},t)"object"==typeof t[i]&&null!=t[i]?r[i]=e(t[i]):r[i]=t[i];return r};var j;Object.prototype.hasOwnProperty,Object.prototype.hasOwnProperty,function(e,t){if(!N(e))throw new TypeError("Expected a function");new Map}((function(e,t){void 0===t&&(t={});var r,n=t.fontSize,o=t.fontFamily,i=t.fontWeight,a=t.fontStyle,d=t.fontVariant;return j||(j=document.createElement("canvas").getContext("2d")),j.font=[a,d,i,n+"px",o].join(" "),j.measureText((r=e,L(r,"String")?e:"")).width})),function(){function e(){this.map={}}e.prototype.has=function(e){return void 0!==this.map[e]},e.prototype.get=function(e,t){var r=this.map[e];return void 0===r?t:r},e.prototype.set=function(e,t){this.map[e]=t},e.prototype.clear=function(){this.map={}},e.prototype.delete=function(e){delete this.map[e]},e.prototype.size=function(){return Object.keys(this.map).length}}();const k=function(e,t,r,n){var o=e.nodes,i=void 0===o?[]:o,a=e.edges,d=void 0===a?[]:a,u=[],c={},f={},h={};i.forEach((function(e,r){var n=e.id;u.push(n),f[n]=1/0,n===t&&(f[n]=0)}));for(var l=i.length,p=function(e){var t=function(e,t,r){for(var n,o=1/0,i=0;i<t.length;i++){var a=t[i].id;!r[a]&&e[a]<=o&&(o=e[a],n=t[i])}return n}(f,i,c),o=t.id;if(c[o]=!0,f[o]===1/0)return"continue";var a=[];a=r?function(e,t){return t.filter((function(t){return t.source===e}))}(o,d):s(o,d),a.forEach((function(e){var r=e.target,i=e.source,a=r===o?i:r,d=n&&e[n]?e[n]:1;f[a]>f[t.id]+d?(f[a]=f[t.id]+d,h[a]=[t.id]):f[a]===f[t.id]+d&&h[a].push(t.id)}))},v=0;v<l;v++)p();h[t]=[t];var g={};for(var b in f)f[b]!==1/0&&x(t,b,h,g);var E={};for(var b in g)E[b]=g[b][0];return{length:f,path:E,allPath:g}};function x(e,t,r,n){if(e===t)return[e];if(n[t])return n[t];for(var o=[],i=0,a=r[t];i<a.length;i++){var d=x(e,a[i],r,n);if(!d)return;for(var s=0,u=d;s<u.length;s++){var c=u[s];w(c)?o.push(m(m([],c,!0),[t],!1)):o.push([c,t])}}return n[t]=o,n[t]}var O=function(e,t,r,n,o){var i=k(e,t,n,o),a=i.length,d=i.path,s=i.allPath;return{length:a[r],path:d[r],allPath:s[r]}},D=function(e,t,r,n){var o;if(t===r)return[[t]];var i=e.edges,a=void 0===i?[]:i,s=[t],u=((o={})[t]=!0,o),c=[],f=[],h=n?d(t,a,"target"):d(t,a);for(c.push(h);s.length>0&&c.length>0;){var l=c[c.length-1];if(l.length){var p=l.shift();if(p&&(s.push(p),u[p]=!0,h=n?d(p,a,"target"):d(p,a),c.push(h.filter((function(e){return!u[e]})))),s[s.length-1]===r){var v=s.map((function(e){return e}));f.push(v),g=s.pop(),u[g]=!1,c.pop()}}else{var g=s.pop();u[g]=!1,c.pop()}}return f};const S=function(e,t){for(var n=r(e,t),o=[],i=n.length,a=0;a<i;a+=1){o[a]=[];for(var d=0;d<i;d+=1)a===d?o[a][d]=0:0!==n[a][d]&&n[a][d]?o[a][d]=n[a][d]:o[a][d]=1/0}for(var s=0;s<i;s+=1)for(a=0;a<i;a+=1)for(d=0;d<i;d+=1)o[a][d]>o[a][s]+o[s][d]&&(o[a][d]=o[a][s]+o[s][d]);return o},P=function(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n="weight"),void 0===o&&(o=1e3);var i=e.nodes,a=void 0===i?[]:i,d=e.edges,s=void 0===d?[]:d,c={},f={};a.forEach((function(e,t){var r=u();e.clusterId=r,c[r]={id:r,nodes:[e]},f[e.id]={node:e,idx:t}}));var h=r(e,t),l=[],p={};h.forEach((function(e,t){var r=0,n=a[t].id;p[n]={},e.forEach((function(e,t){if(e){r+=e;var o=a[t].id;p[n][o]=e}})),l.push(r)}));for(var v=0,g=function(){var e=!1;if(a.forEach((function(t){var r={};Object.keys(p[t.id]).forEach((function(e){var n=p[t.id][e],o=f[e].node.clusterId;r[o]||(r[o]=0),r[o]+=n}));var n=-1/0,o=[];if(Object.keys(r).forEach((function(e){n<r[e]?(n=r[e],o=[e]):n===r[e]&&o.push(e)})),1!==o.length||o[0]!==t.clusterId){var i=o.indexOf(t.clusterId);if(i>=0&&o.splice(i,1),o&&o.length){e=!0;var a=c[t.clusterId],d=a.nodes.indexOf(t);a.nodes.splice(d,1);var s=Math.floor(Math.random()*o.length),u=c[o[s]];u.nodes.push(t),t.clusterId=u.id}}})),!e)return"break";v++};v<o&&"break"!==g(););Object.keys(c).forEach((function(e){var t=c[e];t.nodes&&t.nodes.length||delete c[e]}));var b=[],E={};s.forEach((function(e){var t=e.source,r=e.target,o=e[n]||1,i=f[t].node.clusterId,a=f[r].node.clusterId,d="".concat(i,"---").concat(a);if(E[d])E[d].weight+=o,E[d].count++;else{var s={source:i,target:a,weight:o,count:1};E[d]=s,b.push(s)}}));var m=[];return Object.keys(c).forEach((function(e){m.push(c[e])})),{clusters:m,clusterEdges:b}};const C=function(){function e(e){this.arr=e}return e.prototype.add=function(t){var r,n=t.arr;if(!(null===(r=this.arr)||void 0===r?void 0:r.length))return new e(n);if(!(null==n?void 0:n.length))return new e(this.arr);if(this.arr.length===n.length){var o=[];for(var i in this.arr)o[i]=this.arr[i]+n[i];return new e(o)}},e.prototype.subtract=function(t){var r,n=t.arr;if(!(null===(r=this.arr)||void 0===r?void 0:r.length))return new e(n);if(!(null==n?void 0:n.length))return new e(this.arr);if(this.arr.length===n.length){var o=[];for(var i in this.arr)o[i]=this.arr[i]-n[i];return new e(o)}},e.prototype.avg=function(t){var r=[];for(var n in this.arr)r[n]=this.arr[n]/t;return new e(r)},e.prototype.negate=function(){var t=[];for(var r in this.arr)t[r]=-this.arr[r];return new e(t)},e.prototype.squareEuclideanDistance=function(e){var t,r=e.arr;if(!(null===(t=this.arr)||void 0===t?void 0:t.length)||!(null==r?void 0:r.length))return 0;if(this.arr.length===r.length){var n=0;for(var o in this.arr)n+=Math.pow(this.arr[o]-e.arr[o],2);return n}},e.prototype.normalize=function(){var t=[],r=I(this.arr);r.sort((function(e,t){return e-t}));var n=r[r.length-1],o=r[0];for(var i in this.arr)t[i]=(this.arr[i]-o)/(n-o);return new e(t)},e}();var T=/^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/,q=/^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/,F=function(e,t,r,n){for(var o=t.length,i=2*n,a=0,d=0;d<o;d++)for(var s=e[d].clusterId,u=0;u<o;u++)s===e[u].clusterId&&(a+=(t[d][u]||0)-(r[d]||0)*(r[u]||0)/i);return a*(1/i)},A=function(e,t){return t.map((function(t){if(e.hasOwnProperty(t)){if(!isNaN(Number(e[t])))return Number(e[t]);if(e[t].match(T)||e[t].match(q))return Number(Date.parse(new Date(e[t])))/1e3}return 0}))},R=function(e,t){void 0===e&&(e=[]);for(var r=e.length,n=new C([]),o=0;o<r;o++)n=n.add(new C(t[o]));var i=n.avg(r);i.normalize();var a=0;for(o=0;o<r;o++)a+=(s=new C(t[o])).squareEuclideanDistance(i);var d=[];for(e.forEach((function(){d.push([])})),o=0;o<r;o++){var s=new C(t[o]);e[o].clusterInertial=0;for(var u=0;u<r;u++)if(o!==u){var c=new C(t[u]);d[o][u]=s.squareEuclideanDistance(c),e[o].clusterInertial+=d[o][u]}else d[o][u]=0}var f=0,h=2*r*a;for(o=0;o<r;o++){var l=e[o].clusterId;for(u=0;u<r;u++){var p=e[u].clusterId;o!==u&&l===p&&(f+=e[o].clusterInertial*e[u].clusterInertial/Math.pow(h,2)-d[o][u]/h)}}return Number(f.toFixed(4))};const U=function(e,t,n,o,i,a){void 0===t&&(t=!1),void 0===n&&(n="weight"),void 0===o&&(o=1e-4),void 0===i&&(i=!1),void 0===a&&(a=1);var d=e.nodes,s=void 0===d?[]:d,u=e.edges,c=void 0===u?[]:u,f=[];if(i){s.forEach((function(e,t){e.properties=e.properties||{},e.originIndex=t}));var h=[];s.every((function(e){return e.hasOwnProperty("nodeType")}))&&(h=Array.from(new Set(s.map((function(e){return e.nodeType})))),s.forEach((function(e){e.properties.nodeType=h.findIndex((function(t){return t===e.nodeType}))})));var l=function(e){void 0===e&&(e=[]);var t={};e.forEach((function(e){Object.keys(e.properties).forEach((function(r){!"".concat(e.properties[r]).match(T)&&!"".concat(e.properties[r]).match(q)&&isNaN(Number(e.properties[r]))||"id"===r?t.hasOwnProperty(r)&&delete t[r]:t.hasOwnProperty(r)?t[r]+=1:t[r]=1}))}));var r=Object.keys(t).sort((function(e,r){return t[r]-t[e]}));return r.length<100?r:r.slice(0,100)}(s);f=function(e,t){for(var r=[],n=0;n<t.length;n++)r[n]=A(t[n].properties,e);return r}(l,s)}var p=1,v={},g={};s.forEach((function(e,t){var r=String(p++);e.clusterId=r,v[r]={id:r,nodes:[e]},g[e.id]={node:e,idx:t}}));var b=r(e,t),E=[],m={},y=0;b.forEach((function(e,t){var r=0,n=s[t].id;m[n]={},e.forEach((function(e,t){if(e){r+=e;var o=s[t].id;m[n][o]=e,y+=e}})),E.push(r)})),y/=2;for(var L=1/0,N=1/0,w=0,M=[],j={};;){L=i&&s.every((function(e){return e.hasOwnProperty("properties")}))?F(s,b,E,y)+R(s,f)*a:F(s,b,E,y),0===w&&(N=L,M=s,j=v);var k=L>0&&L>N&&L-N<o;if(L>N&&(M=s.map((function(e){return{node:e,clusterId:e.clusterId}})),j=I(v),N=L),k||w>100)break;w++,Object.keys(v).forEach((function(e){var t=0;c.forEach((function(r){var o=r.source,i=r.target,a=g[o].node.clusterId,d=g[i].node.clusterId;(a===e&&d!==e||d===e&&a!==e)&&(t+=r[n]||1)})),v[e].sumTot=t})),s.forEach((function(e,t){var r,o=v[e.clusterId],d=0,s=E[t]/(2*y),u=0,h=o.nodes;h.forEach((function(e){var r=g[e.id].idx;u+=b[t][r]||0}));var l=u-o.sumTot*s,p=h.filter((function(t){return t.id!==e.id})),L=[];p.forEach((function(e,t){L[t]=f[e.originIndex]}));var N=R(p,f)*a,w=m[e.id];if(Object.keys(w).forEach((function(n){var o=g[n].node.clusterId;if(o!==e.clusterId){var u=v[o],c=u.nodes;if(c&&c.length){var h=0;c.forEach((function(e){var r=g[e.id].idx;h+=b[t][r]||0}));var p=h-u.sumTot*s,E=c.concat([e]),m=[];E.forEach((function(e,t){m[t]=f[e.originIndex]}));var y=R(E,f)*a,L=p-l;i&&(L=p+y-(l+N)),L>d&&(d=L,r=u)}}})),d>0){r.nodes.push(e);var M=e.clusterId;e.clusterId=r.id;var I=o.nodes.indexOf(e);o.nodes.splice(I,1);var j=0,k=0;c.forEach((function(e){var t=e.source,o=e.target,i=g[t].node.clusterId,a=g[o].node.clusterId;(i===r.id&&a!==r.id||a===r.id&&i!==r.id)&&(j+=e[n]||1),(i===M&&a!==M||a===M&&i!==M)&&(k+=e[n]||1)})),r.sumTot=j,o.sumTot=k}}))}var x={},O=0;Object.keys(j).forEach((function(e){var t=j[e];if(t.nodes&&t.nodes.length){var r=String(O+1);r!==e&&(t.id=r,t.nodes=t.nodes.map((function(e){return{id:e.id,clusterId:r}})),j[r]=t,x[e]=r,delete j[e],O++)}else delete j[e]})),M.forEach((function(e){var t=e.node,r=e.clusterId;t.clusterId=r,t.clusterId&&x[t.clusterId]&&(t.clusterId=x[t.clusterId])}));var D=[],S={};c.forEach((function(e){var t=e.source,r=e.target,o=e[n]||1,i=g[t].node.clusterId,a=g[r].node.clusterId,d="".concat(i,"---").concat(a);if(S[d])S[d].weight+=o,S[d].count++;else{var s={source:i,target:a,weight:o,count:1};S[d]=s,D.push(s)}}));var P=[];return Object.keys(j).forEach((function(e){P.push(j[e])})),{clusters:P,clusterEdges:D}},G=function(){function e(e){this.count=e.length,this.parent={};for(var t=0,r=e;t<r.length;t++){var n=r[t];this.parent[n]=n}}return e.prototype.find=function(e){for(;this.parent[e]!==e;)e=this.parent[e];return e},e.prototype.union=function(e,t){var r=this.find(e),n=this.find(t);r!==n&&(r<n?(this.parent[t]!==t&&this.union(this.parent[t],e),this.parent[t]=this.parent[e]):(this.parent[e]!==e&&this.union(this.parent[e],t),this.parent[e]=this.parent[t]))},e.prototype.connected=function(e,t){return this.find(e)===this.find(t)},e}();var z=function(e,t){return e-t};const _=function(){function e(e){void 0===e&&(e=z),this.compareFn=e,this.list=[]}return e.prototype.getLeft=function(e){return 2*e+1},e.prototype.getRight=function(e){return 2*e+2},e.prototype.getParent=function(e){return 0===e?null:Math.floor((e-1)/2)},e.prototype.isEmpty=function(){return this.list.length<=0},e.prototype.top=function(){return this.isEmpty()?void 0:this.list[0]},e.prototype.delMin=function(){var e=this.top(),t=this.list.pop();return this.list.length>0&&(this.list[0]=t,this.moveDown(0)),e},e.prototype.insert=function(e){if(null!==e){this.list.push(e);var t=this.list.length-1;return this.moveUp(t),!0}return!1},e.prototype.moveUp=function(e){for(var t=this.getParent(e);e&&e>0&&this.compareFn(this.list[t],this.list[e])>0;){var r=this.list[t];this.list[t]=this.list[e],this.list[e]=r,e=t,t=this.getParent(e)}},e.prototype.moveDown=function(e){var t,r=e,n=this.getLeft(e),o=this.getRight(e),i=this.list.length;null!==n&&n<i&&this.compareFn(this.list[r],this.list[n])>0?r=n:null!==o&&o<i&&this.compareFn(this.list[r],this.list[o])>0&&(r=o),e!==r&&(t=[this.list[r],this.list[e]],this.list[e]=t[0],this.list[r]=t[1],this.moveDown(r))},e}();var B=function(e,t){var r=[],n=e.nodes,o=void 0===n?[]:n,i=e.edges,a=void 0===i?[]:i;if(0===o.length)return r;var d=o[0],u=new Set;u.add(d);var c=new _((function(e,r){return t?e.weight-r.weight:0}));for(s(d.id,a).forEach((function(e){c.insert(e)}));!c.isEmpty();){var f=c.delMin(),h=f.source,l=f.target;u.has(h)&&u.has(l)||(r.push(f),u.has(h)||(u.add(h),s(h,a).forEach((function(e){c.insert(e)}))),u.has(l)||(u.add(l),s(l,a).forEach((function(e){c.insert(e)}))))}return r},H=function(e,t){var r=[],n=e.nodes,o=void 0===n?[]:n,i=e.edges,a=void 0===i?[]:i;if(0===o.length)return r;var d=a.map((function(e){return e}));t&&d.sort((function(e,t){return e.weight-t.weight}));for(var s=new G(o.map((function(e){return e.id})));d.length>0;){var u=d.shift(),c=u.source,f=u.target;s.connected(c,f)||(r.push(u),s.union(c,f))}return r};const W=function(e,t,r){return r?{prim:B,kruskal:H}[r](e,t):H(e,t)},$=function(e,t,r){"number"!=typeof t&&(t=1e-6),"number"!=typeof r&&(r=.85);for(var n,o=1,i=0,a=1e3,s=e.nodes,u=void 0===s?[]:s,c=e.edges,f=void 0===c?[]:c,h=u.length,p={},v={},g=0;g<h;++g)p[E=(w=u[g]).id]=1/h,v[E]=1/h;for(var b=l(e);a>0&&o>t;){for(i=0,g=0;g<h;++g){var E=(w=u[g]).id;if(n=0,0===b[w.id].inDegree)p[E]=0;else{for(var m=d(E,f,"source"),y=0;y<m.length;++y){var L=m[y],N=b[L].outDegree;N>0&&(n+=v[L]/N)}p[E]=r*n,i+=p[E]}}for(i=(1-i)/h,o=0,g=0;g<h;++g){var w;n=p[E=(w=u[g]).id]+i,o+=Math.abs(n-v[E]),v[E]=n}a-=1}return v};var K="-1",V=function(e,t,r,n){void 0===e&&(e=-1),void 0===t&&(t=-1),void 0===r&&(r=-1),void 0===n&&(n="-1"),this.id=e,this.from=t,this.to=r,this.label=n},J=function(){function e(e,t){void 0===e&&(e=-1),void 0===t&&(t=K),this.id=e,this.label=t,this.edges=[],this.edgeMap={}}return e.prototype.addEdge=function(e){this.edges.push(e),this.edgeMap[e.id]=e},e}(),Q=function(){function e(e,t,r){void 0===e&&(e=-1),void 0===t&&(t=!0),void 0===r&&(r=!1),this.id=e,this.edgeIdAutoIncrease=t,this.edges=[],this.nodes=[],this.nodeMap={},this.edgeMap={},this.nodeLabelMap={},this.edgeLabelMap={},this.counter=0,this.directed=r}return e.prototype.getNodeNum=function(){return this.nodes.length},e.prototype.addNode=function(e,t){if(!this.nodeMap[e]){var r=new J(e,t);this.nodes.push(r),this.nodeMap[e]=r,this.nodeLabelMap[t]||(this.nodeLabelMap[t]=[]),this.nodeLabelMap[t].push(e)}},e.prototype.addEdge=function(e,t,r,n){if((this.edgeIdAutoIncrease||void 0===e)&&(e=this.counter++),!(this.nodeMap[t]&&this.nodeMap[r]&&this.nodeMap[r].edgeMap[e])){var o=new V(e,t,r,n);if(this.edges.push(o),this.edgeMap[e]=o,this.nodeMap[t].addEdge(o),this.edgeLabelMap[n]||(this.edgeLabelMap[n]=[]),this.edgeLabelMap[n].push(o),!this.directed){var i=new V(e,r,t,n);this.nodeMap[r].addEdge(i),this.edgeLabelMap[n].push(i)}}},e}(),X=function(){function e(e,t,r,n,o){this.fromNode=e,this.toNode=t,this.nodeEdgeNodeLabel={nodeLabel1:r||K,edgeLabel:n||"-1",nodeLabel2:o||K}}return e.prototype.equalTo=function(e){return this.fromNode===e.formNode&&this.toNode===e.toNode&&this.nodeEdgeNodeLabel===e.nodeEdgeNodeLabel},e.prototype.notEqualTo=function(e){return!this.equalTo(e)},e}(),Y=function(){function e(){this.rmpath=[],this.dfsEdgeList=[]}return e.prototype.equalTo=function(e){var t=this.dfsEdgeList.length;if(t!==e.length)return!1;for(var r=0;r<t;r++)if(this.dfsEdgeList[r]!==e[r])return!1;return!0},e.prototype.notEqualTo=function(e){return!this.equalTo(e)},e.prototype.pushBack=function(e,t,r,n,o){return this.dfsEdgeList.push(new X(e,t,r,n,o)),this.dfsEdgeList},e.prototype.toGraph=function(e,t){void 0===e&&(e=-1),void 0===t&&(t=!1);var r=new Q(e,!0,t);return this.dfsEdgeList.forEach((function(e){var t=e.fromNode,n=e.toNode,o=e.nodeEdgeNodeLabel,i=o.nodeLabel1,a=o.edgeLabel,d=o.nodeLabel2;i!==K&&r.addNode(t,i),d!==K&&r.addNode(n,d),i!==K&&d!==i&&r.addEdge(void 0,t,n,a)})),r},e.prototype.buildRmpath=function(){this.rmpath=[];for(var e=void 0,t=this.dfsEdgeList.length-1;t>=0;t--){var r=this.dfsEdgeList[t],n=r.fromNode,o=r.toNode;n<o&&(void 0===e||o===e)&&(this.rmpath.push(t),e=n)}return this.rmpath},e.prototype.getNodeNum=function(){var e={};return this.dfsEdgeList.forEach((function(t){e[t.fromNode]||(e[t.fromNode]=!0),e[t.toNode]||(e[t.toNode]=!0)})),Object.keys(e).length},e}(),Z=function(){function e(e){if(this.his={},this.nodesUsed={},this.edgesUsed={},this.edges=[],e){for(;e;){var t=e.edge;this.edges.push(t),this.nodesUsed[t.from]=1,this.nodesUsed[t.to]=1,this.edgesUsed[t.id]=1,e=e.preNode}this.edges=this.edges.reverse()}}return e.prototype.hasNode=function(e){return 1===this.nodesUsed[e.id]},e.prototype.hasEdge=function(e){return 1===this.edgesUsed[e.id]},e}(),ee=function(){function e(e){var t=e.graphs,r=e.minSupport,n=void 0===r?2:r,o=e.minNodeNum,i=void 0===o?1:o,a=e.maxNodeNum,d=void 0===a?4:a,s=e.top,u=void 0===s?10:s,c=e.directed,f=void 0!==c&&c,h=e.verbose,l=void 0!==h&&h;this.graphs=t,this.dfsCode=new Y,this.support=0,this.frequentSize1Subgraphs=[],this.frequentSubgraphs=[],this.minSupport=n,this.top=u,this.directed=f,this.counter=0,this.maxNodeNum=d,this.minNodeNum=i,this.verbose=l,this.maxNodeNum<this.minNodeNum&&(this.maxNodeNum=this.minNodeNum),this.reportDF=[]}return e.prototype.findForwardRootEdges=function(e,t){var r=this,n=[],o=e.nodeMap;return t.edges.forEach((function(e){(r.directed||t.label<=o[e.to].label)&&n.push(e)})),n},e.prototype.findBackwardEdge=function(e,t,r,n){if(!this.directed&&t===r)return null;for(var o=e.nodeMap,i=o[r.to].edges,a=i.length,d=0;d<a;d++){var s=i[d];if(!n.hasEdge(s)&&s.to===t.from)if(this.directed){if(o[t.from].label<o[r.to].label||o[t.from].label===o[r.to].label&&t.label<=s.label)return s}else if(t.label<s.label||t.label===s.label&&o[t.to].label<=o[r.to].label)return s}return null},e.prototype.findForwardPureEdges=function(e,t,r,n){for(var o=[],i=t.to,a=e.nodeMap[i].edges,d=a.length,s=0;s<d;s++){var u=a[s],c=e.nodeMap[u.to];r<=c.label&&!n.hasNode(c)&&o.push(u)}return o},e.prototype.findForwardRmpathEdges=function(e,t,r,n){for(var o=[],i=e.nodeMap,a=i[t.to].label,d=i[t.from].edges,s=d.length,u=0;u<s;u++){var c=d[u],f=i[c.to].label;t.to===c.to||r>f||n.hasNode(i[c.to])||(t.label<c.label||t.label===c.label&&a<=f)&&o.push(c)}return o},e.prototype.getSupport=function(e){var t={};return e.forEach((function(e){t[e.graphId]||(t[e.graphId]=!0)})),Object.keys(t).length},e.prototype.findMinLabel=function(e){var t=void 0;return Object.keys(e).forEach((function(r){var n=e[r],o=n.nodeLabel1,i=n.edgeLabel,a=n.nodeLabel2;t?(o<t.nodeLabel1||o===t.nodeLabel1&&i<t.edgeLabel||o===t.nodeLabel1&&i===t.edgeLabel&&a<t.nodeLabel2)&&(t={nodeLabel1:o,edgeLabel:i,nodeLabel2:a}):t={nodeLabel1:o,edgeLabel:i,nodeLabel2:a}})),t},e.prototype.isMin=function(){var e=this,t=this.dfsCode;if(this.verbose&&console.log("isMin checking",t),1===t.dfsEdgeList.length)return!0;var r=this.directed,n=t.toGraph(-1,r),o=n.nodeMap,i=new Y,a={};n.nodes.forEach((function(t){e.findForwardRootEdges(n,t).forEach((function(e){var r=o[e.to],i="".concat(t.label,"-").concat(e.label,"-").concat(r.label);a[i]||(a[i]={projected:[],nodeLabel1:t.label,edgeLabel:e.label,nodeLabel2:r.label});var d={graphId:n.id,edge:e,preNode:null};a[i].projected.push(d)}))}));var d=this.findMinLabel(a);if(d){i.dfsEdgeList.push(new X(0,1,d.nodeLabel1,d.edgeLabel,d.nodeLabel2));var s=function(a){for(var d=i.buildRmpath(),u=i.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1,c=i.dfsEdgeList[d[0]].toNode,f={},h=!1,l=0,p=r?-1:0,v=function(t){if(h)return"break";a.forEach((function(r){var o=new Z(r),a=e.findBackwardEdge(n,o.edges[d[t]],o.edges[d[0]],o);a&&(f[a.label]||(f[a.label]={projected:[],edgeLabel:a.label}),f[a.label].projected.push({graphId:n.id,edge:f,preNode:r}),l=i.dfsEdgeList[d[t]].fromNode,h=!0)}))},g=d.length-1;g>p&&"break"!==v(g);g--);if(h){var b=e.findMinLabel(f);i.dfsEdgeList.push(new X(c,l,K,b.edgeLabel,K));var E=i.dfsEdgeList.length-1;return e.dfsCode.dfsEdgeList[E]===i.dfsEdgeList[E]&&s(f[b.edgeLabel].projected)}var m={};h=!1;var y=0;a.forEach((function(t){var r=new Z(t),i=e.findForwardPureEdges(n,r.edges[d[0]],u,r);i.length>0&&(h=!0,y=c,i.forEach((function(e){var r="".concat(e.label,"-").concat(o[e.to].label);m[r]||(m[r]={projected:[],edgeLabel:e.label,nodeLabel2:o[e.to].label}),m[r].projected.push({graphId:n.id,edge:e,preNode:t})})))}));var L=d.length,N=function(t){if(h)return"break";var r=d[t];a.forEach((function(t){var a=new Z(t),d=e.findForwardRmpathEdges(n,a.edges[r],u,a);d.length>0&&(h=!0,y=i.dfsEdgeList[r].fromNode,d.forEach((function(e){var r="".concat(e.label,"-").concat(o[e.to].label);m[r]||(m[r]={projected:[],edgeLabel:e.label,nodeLabel2:o[e.to].label}),m[r].projected.push({graphId:n.id,edge:e,preNode:t})})))}))};for(g=0;g<L&&"break"!==N(g);g++);if(!h)return!0;var w=e.findMinLabel(m);i.dfsEdgeList.push(new X(y,c+1,K,w.edgeLabel,w.nodeLabel2));var M=i.dfsEdgeList.length-1;return t.dfsEdgeList[M]===i.dfsEdgeList[M]&&s(m["".concat(w.edgeLabel,"-").concat(w.nodeLabel2)].projected)},u="".concat(d.nodeLabel1,"-").concat(d.edgeLabel,"-").concat(d.nodeLabel2);return s(a[u].projected)}},e.prototype.report=function(){if(!(this.dfsCode.getNodeNum()<this.minNodeNum)){this.counter++;var e=this.dfsCode.toGraph(this.counter,this.directed);this.frequentSubgraphs.push(I(e))}},e.prototype.subGraphMining=function(e){var t=this;if(!(this.getSupport(e)<this.minSupport)&&this.isMin()){this.report();var r=this.dfsCode.getNodeNum(),n=this.dfsCode.buildRmpath(),o=this.dfsCode.dfsEdgeList[n[0]].toNode,i=this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1,a={},d={};e.forEach((function(e){for(var s=t.graphs[e.graphId],u=s.nodeMap,c=new Z(e),f=n.length-1;f>=0;f--){var h=t.findBackwardEdge(s,c.edges[n[f]],c.edges[n[0]],c);if(h){var l="".concat(t.dfsCode.dfsEdgeList[n[f]].fromNode,"-").concat(h.label);d[l]||(d[l]={projected:[],toNodeId:t.dfsCode.dfsEdgeList[n[f]].fromNode,edgeLabel:h.label}),d[l].projected.push({graphId:e.graphId,edge:h,preNode:e})}}if(!(r>=t.maxNodeNum)){t.findForwardPureEdges(s,c.edges[n[0]],i,c).forEach((function(t){var r="".concat(o,"-").concat(t.label,"-").concat(u[t.to].label);a[r]||(a[r]={projected:[],fromNodeId:o,edgeLabel:t.label,nodeLabel2:u[t.to].label}),a[r].projected.push({graphId:e.graphId,edge:t,preNode:e})}));var p=function(r){t.findForwardRmpathEdges(s,c.edges[n[r]],i,c).forEach((function(o){var i="".concat(t.dfsCode.dfsEdgeList[n[r]].fromNode,"-").concat(o.label,"-").concat(u[o.to].label);a[i]||(a[i]={projected:[],fromNodeId:t.dfsCode.dfsEdgeList[n[r]].fromNode,edgeLabel:o.label,nodeLabel2:u[o.to].label}),a[i].projected.push({graphId:e.graphId,edge:o,preNode:e})}))};for(f=0;f<n.length;f++)p(f)}})),Object.keys(d).forEach((function(e){var r=d[e],n=r.toNodeId,i=r.edgeLabel;t.dfsCode.dfsEdgeList.push(new X(o,n,"-1",i,"-1")),t.subGraphMining(d[e].projected),t.dfsCode.dfsEdgeList.pop()})),Object.keys(a).forEach((function(e){var r=a[e],n=r.fromNodeId,i=r.edgeLabel,d=r.nodeLabel2;t.dfsCode.dfsEdgeList.push(new X(n,o+1,K,i,d)),t.subGraphMining(a[e].projected),t.dfsCode.dfsEdgeList.pop()}))}},e.prototype.generate1EdgeFrequentSubGraphs=function(){var e=this.graphs,t=this.directed,r=this.minSupport,n=this.frequentSize1Subgraphs,o={},i={},a={},d={};return Object.keys(e).forEach((function(r){var n=e[r],s=n.nodeMap;n.nodes.forEach((function(e,n){var u=e.label,c="".concat(r,"-").concat(u);if(!a[c]){var f=o[u]||0;f++,o[u]=f}a[c]={graphKey:r,label:u},e.edges.forEach((function(e){var n=u,o=s[e.to].label;if(!t&&n>o){var a=o;o=n,n=a}var c=e.label,f="".concat(r,"-").concat(n,"-").concat(c,"-").concat(o),h="".concat(n,"-").concat(c,"-").concat(o);if(!i[h]){var l=i[h]||0;l++,i[h]=l}d[f]={graphId:r,nodeLabel1:n,edgeLabel:c,nodeLabel2:o}}))}))})),Object.keys(o).forEach((function(e){if(!(o[e]<r)){var t={nodes:[],edges:[]};t.nodes.push({id:"0",label:e}),n.push(t)}})),n},e.prototype.run=function(){var e=this;if(this.frequentSize1Subgraphs=this.generate1EdgeFrequentSubGraphs(),!(this.maxNodeNum<2)){var t=this.graphs,r=(this.directed,{});Object.keys(t).forEach((function(n){var o=t[n],i=o.nodeMap;o.nodes.forEach((function(t){e.findForwardRootEdges(o,t).forEach((function(e){var o=i[e.to],a="".concat(t.label,"-").concat(e.label,"-").concat(o.label);r[a]||(r[a]={projected:[],nodeLabel1:t.label,edgeLabel:e.label,nodeLabel2:o.label});var d={graphId:n,edge:e,preNode:null};r[a].projected.push(d)}))}))})),Object.keys(r).forEach((function(t){var n=r[t],o=n.projected,i=n.nodeLabel1,a=n.edgeLabel,d=n.nodeLabel2;e.dfsCode.dfsEdgeList.push(new X(0,1,i,a,d)),e.subGraphMining(o),e.dfsCode.dfsEdgeList.pop()}))}},e}(),te="cluster";var re=function(e,t,r,n){void 0===r&&(r="cluster"),void 0===n&&(n=2);var o=[],i=e.nodes;return t.forEach((function(e,t){o.push(ne(i,e,t,r,n))})),o},ne=function(e,t,r,n,o){var i=[r],a=[],d={};return t.forEach((function(t,s){if(t<=o&&r!==s){i.push(s),a.push(e[s]);var u=e[s][n];d[u]?(d[u].count++,d[u].dists.push(t)):d[u]={count:1,dists:[t]}}})),Object.keys(d).forEach((function(e){d[e].dists=d[e].dists.sort((function(e,t){return e-t}))})),{nodeIdx:r,nodeId:e[r].id,nodeIdxs:i,neighbors:a,neighborNum:i.length-1,nodeLabelCountMap:d}},oe=function(e,t,r,n){var o=r.nodes;return n||(n={}),Object.keys(e).forEach((function(i){var a,d;if(!n||!n[i]){n[i]={nodes:[],edges:[]};var s=e[i],u=null===(a=t[s.start])||void 0===a?void 0:a.nodeIdxs,c=null===(d=t[s.end])||void 0===d?void 0:d.nodeIdxs;if(u&&c){var f=new Set(c),h=u.filter((function(e){return f.has(e)}));if(h&&h.length){for(var l={},p=h.length,v=0;v<p;v++){var g=o[h[v]];n[i].nodes.push(g),l[g.id]=!0}r.edges.forEach((function(e){l[e.source]&&l[e.target]&&n[i].edges.push(e)}))}}}})),n},ie=function(e,t,r,n){var o,i,a={};e.nodes.forEach((function(e){a[e.id]=e}));var d=0;return!(null===(o=null==t?void 0:t.edges)||void 0===o?void 0:o.length)||(null===(i=null==t?void 0:t.nodes)||void 0===i?void 0:i.length)<2?0:(e.edges.forEach((function(e){var o=a[e.source][r],i=a[e.target][r],s=null==t?void 0:t.nodes[0][r],u=null==t?void 0:t.nodes[1][r],c=null==t?void 0:t.edges[0][n];e[n]===c&&(o===s&&i===u||o===u&&i===s)&&d++})),d)},ae=function(e,t){var r={},n={};return e.forEach((function(e,o){r[e.id]={idx:o,node:e,degree:0,inDegree:0,outDegree:0};var i=e[t];n[i]||(n[i]=[]),n[i].push(e)})),{nodeMap:r,nodeLabelMap:n}},de=function(e,t,r){var n={},o={};return e.forEach((function(e,i){n["".concat(u)]={idx:i,edge:e};var a=e[t];o[a]||(o[a]=[]),o[a].push(e);var d=r[e.source];d&&(d.degree++,d.outDegree++);var s=r[e.target];s&&(s.degree++,s.inDegree++)})),{edgeMap:n,edgeLabelMap:o}},se=function(e,t,r){var n=t.length,o={};return t.forEach((function(t,i){for(var a=r?0:i+1,d=e[i].id,s=a;s<n;s++)if(i!==s){var u=e[s].id,c=t[s];o["".concat(d,"-").concat(u)]=c,r||(o["".concat(u,"-").concat(d)]=c)}})),o},ue=function(e,t,r,n,o,i,a,d,s,u,c){var f,h="".concat(t.id,"-").concat(r.id);if(u&&u[h])return u[h];var l=c?c[h]:void 0;if(!l){var p=((f={})[h]={start:n[t.id].idx,end:n[r.id].idx,distance:o},f);l=(c=oe(p,i,e,c))[h]}return ie(l,a,d,s)},ce=function(e,t,r,n){var o,i,a,d=null===(o=e[t])||void 0===o?void 0:o.degree,s=null===(i=e[t])||void 0===i?void 0:i.inDegree,u=null===(a=e[t])||void 0===a?void 0:a.outDegree;return void 0===e[t]&&(d=1/0,s=1/0,u=1/0,n[t].forEach((function(e){var t=r[e.id].degree;d>t&&(d=t);var n=r[e.id].inDegree;s>n&&(s=n);var o=r[e.id].outDegree;u>o&&(u=o)})),e[t]={degree:d,inDegree:s,outDegree:u}),{minPatternNodeLabelDegree:d,minPatternNodeLabelInDegree:s,minPatternNodeLabelOutDegree:u}};const fe=function(e,t,r,n,o,i,a){var d;if(void 0===r&&(r=!1),void 0===i&&(i="cluster"),void 0===a&&(a="cluster"),e&&e.nodes){var s=e.nodes.length;if(s){var u=S(e,r),c=S(t,r),f=se(e.nodes,u,r),h=se(t.nodes,c,r),l=ae(e.nodes,i),p=l.nodeMap,v=l.nodeLabelMap,g=ae(t.nodes,i),b=g.nodeMap,E=g.nodeLabelMap;de(e.edges,a,p);var y=de(t.edges,a,b).edgeLabelMap,L=[];null==c||c.forEach((function(e){L=L.concat(e)})),o||(o=Math.max.apply(Math,m(m([],L,!1),[2],!1))),n||(n=o);var N=re(e,u,i,n),w=re(t,c,i,n),M=function(e,t,r,n,o){var i=Math.ceil(r/t),a={},d=0;return n.forEach((function(e,n){for(var s=0,u=0,c=e.nodeIdxs,f=e.neighborNum-1;s<i;){for(var h=c[1+Math.floor(Math.random()*f)],l=0;(a["".concat(n,"-").concat(h)]||a["".concat(h,"-").concat(n)])&&(h=Math.floor(Math.random()*t),!(++l>2*t)););if(l<2*t&&(a["".concat(n,"-").concat(h)]={start:n,end:h,distance:o[n][h]},s++,++d>=r))return a;if(++u>2*t)break}s<i&&(i=(i+(i-s))/(t-n-1))})),a}(0,s,Math.min(100,s*(s-1)/2),w,u),I=oe(M,N,e),j=function(e){var t=e.graphs,r=e.directed,n=void 0!==r&&r,o=e.nodeLabelProp,i=void 0===o?te:o,a=e.edgeLabelProp,d=void 0===a?te:a,s=function(e,t,r,n){var o={};return Object.keys(e).forEach((function(i,a){var d=e[i],s=new Q(a,!0,t),u={};d.nodes.forEach((function(e,t){s.addNode(t,e[r]),u[e.id]=t})),d.edges.forEach((function(e,t){var r=u[e.source],o=u[e.target];s.addEdge(-1,r,o,e[n])})),s&&s.getNodeNum()&&(o[s.id]=s)})),o}(t,n,i,d),u=e.minSupport,c=e.maxNodeNum,f=e.minNodeNum,h=e.verbose,l=e.top,p=new ee({graphs:s,minSupport:u,maxNodeNum:c,minNodeNum:f,top:l,verbose:h,directed:n});p.run();var v=function(e,t,r){var n=[];return e.forEach((function(e){var o={nodes:[],edges:[]};e.nodes.forEach((function(e){var r;o.nodes.push(((r={id:"".concat(e.id)})[t]=e.label,r))})),e.edges.forEach((function(e){var t;o.edges.push(((t={source:"".concat(e.from),target:"".concat(e.to)})[r]=e.label,t))})),n.push(o)})),n}(p.frequentSubgraphs,i,d);return v}({graphs:I,nodeLabelProp:i,edgeLabelProp:a,minSupport:1,minNodeNum:1,maxNodeNum:4,directed:r}).slice(0,10),x=j.length,O=[];j.forEach((function(e,t){O[t]={},Object.keys(I).forEach((function(r){var n=I[r],o=ie(n,e,i,a);O[t][r]=o}))}));var D=function(e,t,r){for(var n=1/0,o=0,i=function(t){var r=e[t],i=Object.keys(r).sort((function(e,t){return r[e]-r[t]})),a=[];i.forEach((function(e,t){a[t%10]||(a[t%10]={graphs:[],totalCount:0,aveCount:0}),a[t%10].graphs.push(e),a[t%10].totalCount+=r[e]}));var d=0,s=[];a.forEach((function(e){var t=e.totalCount/e.graphs.length;e.aveCount=t,s.push(t);var n=0,o=e.length;e.graphs.forEach((function(t,o){var i=r[t];e.graphs.forEach((function(e,t){o!==t&&(n+=Math.abs(i-r[e]))}))})),d+=n/=o*(o-1)/2})),d/=a.length;var u=0;s.forEach((function(e,t){s.forEach((function(r,n){t!==n&&(u+=Math.abs(e-r))})),u/=s.length*(s.length-1)/2}));var c=u-d;n<c&&(n=c,o=t)},a=0;a<t;a++)i(a);return{structure:r[o],structureCountMap:e[o]}}(O,x,j),P=D.structure,C=D.structureCountMap,T=t.nodes[0],q=[],F=null===(d=t.nodes[0])||void 0===d?void 0:d[i],A=-1/0;t.nodes.forEach((function(e){var t=e[i],r=v[t];(null==r?void 0:r.length)>A&&(A=r.length,q=r,F=t,T=e)}));var R={},U={},G={},z={},_={},B={};Object.keys(E).forEach((function(n,o){_[n]=[],r&&(B[n]=[]);var d=-1/0,s=E[n],u={};s.forEach((function(e){var t=h["".concat(T.id,"-").concat(e.id)];if(t&&_[n].push(t),d<t&&(d=t),u["".concat(T.id,"-").concat(e.id)]={start:0,end:b[e.id].idx,distance:t},r){var o=h["".concat(e.id,"-").concat(T.id)];o&&B[n].push(o)}})),_[n]=_[n].sort((function(e,t){return e-t})),r&&(B[n]=B[n].sort((function(e,t){return e-t}))),U=oe(u,w,t,U);var c=[];if(Object.keys(u).forEach((function(e){if(G[e])c.push(G[e]);else{var t=U[e];G[e]=ie(t,P,i,a),c.push(G[e])}})),c=c.sort((function(e,t){return t-e})),z["".concat(T.id,"-").concat(n)]=c,n!==F)for(var l=function(t){var r=q[t],o=N[p[r.id].idx],d=o.nodeLabelCountMap[n],s=E[n].length;if(!d||d.count<s)return q.splice(t,1),"continue";for(var u=!1,h=0;h<s;h++)if(d.dists[h]>_[n][h]){u=!0;break}if(u)return q.splice(t,1),"continue";var l={};o.neighbors.forEach((function(e){var t=f["".concat(r.id,"-").concat(e.id)];l["".concat(r.id,"-").concat(e.id)]={start:p[r.id].idx,end:p[e.id].idx,distance:t}})),I=oe(l,N,e,I);var v=[];Object.keys(l).forEach((function(e){if(C[e])v.push(C[e]);else{var t=I[e];C[e]=ie(t,P,i,a),v.push(C[e])}})),v=v.sort((function(e,t){return t-e}));var g=!1;for(h=0;h<s;h++)if(v[h]<c[h]){g=!0;break}return g?(q.splice(t,1),"continue"):void 0},v=((null==q?void 0:q.length)||0)-1;v>=0;v--)l(v)}));var H=[];null==q||q.forEach((function(n){for(var d=p[n.id].idx,s=ne(e.nodes,u[d],d,i,o).neighbors,c=!1,h=s.length-1;h>=0;h--){if(s.length+1<t.nodes.length)return void(c=!0);var l=s[h],v=l[i];if(E[v]&&E[v].length)if(_[v]&&_[v].length){var g="".concat(n.id,"-").concat(l.id),m=f[g],y=_[v].length-1;if(m>_[v][y])s.splice(h,1);else{if(r){var L="".concat(l.id,"-").concat(n.id),w=f[L];if(y=B[v].length-1,w>B[v][y]){s.splice(h,1);continue}}var M=C[g]?C[g]:ue(e,n,l,p,m,N,P,i,a,C,I),j="".concat(T.id,"-").concat(v);if(M<z[j][z[j].length-1])s.splice(h,1);else{var k=ce(R,v,b,E),x=k.minPatternNodeLabelDegree;k.minPatternNodeLabelInDegree,k.minPatternNodeLabelOutDegree,p[l.id].degree<x&&s.splice(h,1)}}}else s.splice(h,1);else s.splice(h,1)}c||H.push({nodes:[n].concat(s)})}));var W=k(t,T.id,!1).length,$={};r?(Object.keys(W).forEach((function(e){var t=b[e].node[i];$[t]?$[t].push(W[e]):$[t]=[W[e]]})),Object.keys($).forEach((function(e){$[e].sort((function(e,t){return e-t}))}))):$=_;for(var K=function(n){var o=H[n],d=o.nodes[0],s={},u={};o.nodes.forEach((function(e,t){u[e.id]={idx:t,node:e,degree:0,inDegree:0,outDegree:0};var r=e[i];s[r]?s[r]++:s[r]=1}));var c=[],f={};e.edges.forEach((function(e){u[e.source]&&u[e.target]&&(c.push(e),f[e[a]]?f[e[a]]++:f[e[a]]=1,u[e.source].degree++,u[e.target].degree++,u[e.source].outDegree++,u[e.target].inDegree++)}));for(var h=Object.keys(y).length,l=!1,v=0;v<h;v++){var g=Object.keys(y)[v];if(!f[g]||f[g]<y[g].length){l=!0;break}}if(l)return H.splice(n,1),"continue";var m=c.length;if(m<t.edges.length)return H.splice(n,1),"break";var L=!1,N=function(e){var t=c[e],n=t[a],o=y[n];if(!o||!o.length)return f[n]--,o&&f[n]<o.length?(L=!0,"break"):(c.splice(e,1),u[t.source].degree--,u[t.target].degree--,u[t.source].outDegree--,u[t.target].inDegree--,"continue");var d=u[t.source].node[i],s=u[t.target].node[i],h=!1;return o.forEach((function(e){var t=b[e.source].node,n=b[e.target].node;t[i]===d&&n[i]===s&&(h=!0),r||t[i]!==s||n[i]!==d||(h=!0)})),h?void 0:(f[n]--,o&&f[n]<o.length?(L=!0,"break"):(c.splice(e,1),u[t.source].degree--,u[t.target].degree--,u[t.source].outDegree--,u[t.target].inDegree--,"continue"))};for(v=m-1;v>=0&&"break"!==N(v);v--);if(L)return H.splice(n,1),"continue";o.edges=c;var w=k(o,o.nodes[0].id,!1).length;if(Object.keys(w).reverse().forEach((function(e){if(e!==o.nodes[0].id&&!L){if(w[e]===1/0){var t=u[e].node[i];if(s[t]--,s[t]<E[t].length)return void(L=!0);var r=o.nodes.indexOf(u[e].node);return o.nodes.splice(r,1),void(u[e]=void 0)}var n=p[e].node[i];if(!$[n]||!$[n].length||w[e]>$[n][$[n].length-1]){if(t=u[e].node[i],s[t]--,s[t]<E[t].length)return void(L=!0);r=o.nodes.indexOf(u[e].node),o.nodes.splice(r,1),u[e]=void 0}}})),L)return H.splice(n,1),"continue";for(var M=!0,I=0;M&&!L;){if(M=!1,r?u[d.id].degree<b[T.id].degree||u[d.id].inDegree<b[T.id].inDegree||u[d.id].outDegree<b[T.id].outDegree:u[d.id].degree<b[T.id].degree){L=!0;break}if(s[d[i]]<E[d[i]].length){L=!0;break}for(var j=o.nodes.length-1;j>=0;j--){var x=o.nodes[j],O=u[x.id].degree,D=u[x.id].inDegree,S=u[x.id].outDegree,P=x[i],C=ce(R,P,b,E),q=C.minPatternNodeLabelDegree,F=C.minPatternNodeLabelInDegree,A=C.minPatternNodeLabelOutDegree;if(r?O<q||D<F||S<A:O<q){if(s[x[i]]--,s[x[i]]<E[x[i]].length){L=!0;break}o.nodes.splice(j,1),u[x.id]=void 0,M=!0}}if(L||!M&&0!==I)break;for(var U=(m=c.length)-1;U>=0;U--){var G=c[U];if(!u[G.source]||!u[G.target]){c.splice(U,1);var z=G[a];if(f[z]--,u[G.source]&&(u[G.source].degree--,u[G.source].outDegree--),u[G.target]&&(u[G.target].degree--,u[G.target].inDegree--),y[z]&&f[z]<y[z].length){L=!0;break}M=!0}}I++}return L||L||o.nodes.length<t.nodes.length||c.length<t.edges.length?(H.splice(n,1),"continue"):void 0},V=H.length-1;V>=0&&"break"!==K(V);V--);var J=H.length,X=function(e){var t=H[e],r={};t.edges.forEach((function(e){var t="".concat(e.source,"-").concat(e.target,"-").concat(e.label);r[t]?r[t]++:r[t]=1}));for(var n=function(e){var t=H[e],n={};t.edges.forEach((function(e){var t="".concat(e.source,"-").concat(e.target,"-").concat(e.label);n[t]?n[t]++:n[t]=1}));var o=!0;Object.keys(n).length!==Object.keys(r).length?o=!1:Object.keys(r).forEach((function(e){n[e]!==r[e]&&(o=!1)})),o&&H.splice(e,1)},o=J-1;o>e;o--)n(o);J=H.length};for(V=0;V<=J-1;V++)X(V);return H}}};var he="undefined"!=typeof self?self:{};he.onmessage=function(e){var r=e.data,n=r._algorithmType,o=r.data;if(n)if("function"!=typeof t[n])he.postMessage({_algorithmType:"FAILURE"});else{var i=t[n].apply(t,o);he.postMessage({_algorithmType:"SUCCESS",data:i})}}})();\n//# sourceMappingURL=index.worker.js.map',"Worker",void 0,r.p+"index.worker.js")}const a=function(t){return function(){for(var r=[],n=0;n<arguments.length;n++)r[n]=arguments[n];return new Promise((function(n,o){var a=new i;a.postMessage({_algorithmType:t,data:r}),a.onmessage=function(t){var r=t.data,i=r.data,d=r._algorithmType;e===d?n(i):o(),a.terminate()}}))}};var d=function(e){return a("detectCycle")(e)};const s={getAdjMatrixAsync:function(e,t){return a("getAdjMatrix").apply(void 0,[e,t])},connectedComponentAsync:function(e,t){return a("connectedComponent").apply(void 0,[e,t])},getDegreeAsync:function(e){return a("getDegree")(e)},getInDegreeAsync:function(e,t){return a("getInDegree")(e,t)},getOutDegreeAsync:function(e,t){return a("getOutDegree")(e,t)},detectCycleAsync:d,detectDirectedCycleAsync:d,detectAllCyclesAsync:function(e){return a("detectAllCycles")(e)},detectAllDirectedCycleAsync:function(e){return a("detectAllDirectedCycle")(e)},detectAllUndirectedCycleAsync:function(e){return a("detectAllUndirectedCycle")(e)},dijkstraAsync:function(e,t,r,n){return a("dijkstra").apply(void 0,[e,t,r,n])},findAllPathAsync:function(e,t,r,n){return a("findAllPath").apply(void 0,[e,t,r,n])},findShortestPathAsync:function(e,t,r,n,o){return a("findShortestPath").apply(void 0,[e,t,r,n,o])},floydWarshallAsync:function(e,t){return a("floydWarshall").apply(void 0,[e,t])},labelPropagationAsync:function(e,t,r,n){return void 0===n&&(n=1e3),a("labelPropagation")(e,t,r,n)},louvainAsync:function(e,t,r,n){return a("louvain")(e,t,r,n)},minimumSpanningTreeAsync:function(e,t,r){return a("minimumSpanningTree").apply(void 0,[e,t,r])},pageRankAsync:function(e,t,r){return a("pageRank").apply(void 0,[e,t,r])},getNeighborsAsync:function(e,t,r){return a("getNeighbors").apply(void 0,[e,t,r])},GADDIAsync:function(e,t,r,n,o,i,d){return void 0===r&&(r=!1),void 0===i&&(i="cluster"),void 0===d&&(d="cluster"),a("GADDI").apply(void 0,[e,t,r,n,o,i,d])}}})(),n.default})()})); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Algorithm=t():e.Algorithm=t()}(this,(function(){return(()=>{"use strict";var e={458:e=>{e.exports=function(e,t,r,n){var o=self||window;try{try{var i;try{i=new o.Blob([e])}catch(t){(i=new(o.BlobBuilder||o.WebKitBlobBuilder||o.MozBlobBuilder||o.MSBlobBuilder)).append(e),i=i.getBlob()}var a=o.URL||o.webkitURL,d=a.createObjectURL(i),s=new o[t](d,r);return a.revokeObjectURL(d),s}catch(n){return new o[t]("data:application/javascript,".concat(encodeURIComponent(e)),r)}}catch(e){if(!n)throw Error("Inline worker is not supported");return new o[t](n,r)}}}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.p="./dist";var n={};return(()=>{r.d(n,{default:()=>s});var e="SUCCESS",t=r(458),o=r.n(t);function i(){return o()('(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{GADDI:()=>he,breadthFirstSearch:()=>c,connectedComponent:()=>f,depthFirstSearch:()=>b,detectCycle:()=>E,dijkstra:()=>k,findAllPath:()=>D,findShortestPath:()=>O,floydWarshall:()=>S,getAdjMatrix:()=>r,getDegree:()=>l,getInDegree:()=>p,getNeighbors:()=>d,getOutDegree:()=>v,labelPropagation:()=>P,louvain:()=>G,minimumSpanningTree:()=>$,pageRank:()=>K});const r=function(e,t){var r=e.nodes,n=e.edges,o=[],i={};if(!r)throw new Error("invalid nodes data!");return r&&r.forEach((function(e,t){i[e.id]=t,o.push([])})),n&&n.forEach((function(e){var r=e.source,n=e.target,a=i[r],d=i[n];!a&&0!==a||!d&&0!==d||(o[a][d]=1,t||(o[d][a]=1))})),o};var n=function(e,t){return e===t},o=function(){function e(e,t){void 0===t&&(t=null),this.value=e,this.next=t}return e.prototype.toString=function(e){return e?e(this.value):"".concat(this.value)},e}();const i=function(){function e(e){void 0===e&&(e=n),this.head=null,this.tail=null,this.compare=e}return e.prototype.prepend=function(e){var t=new o(e,this.head);return this.head=t,this.tail||(this.tail=t),this},e.prototype.append=function(e){var t=new o(e);return this.head?(this.tail.next=t,this.tail=t,this):(this.head=t,this.tail=t,this)},e.prototype.delete=function(e){if(!this.head)return null;for(var t=null;this.head&&this.compare(this.head.value,e);)t=this.head,this.head=this.head.next;var r=this.head;if(null!==r)for(;r.next;)this.compare(r.next.value,e)?(t=r.next,r.next=r.next.next):r=r.next;return this.compare(this.tail.value,e)&&(this.tail=r),t},e.prototype.find=function(e){var t=e.value,r=void 0===t?void 0:t,n=e.callback,o=void 0===n?void 0:n;if(!this.head)return null;for(var i=this.head;i;){if(o&&o(i.value))return i;if(void 0!==r&&this.compare(i.value,r))return i;i=i.next}return null},e.prototype.deleteTail=function(){var e=this.tail;if(this.head===this.tail)return this.head=null,this.tail=null,e;for(var t=this.head;t.next;)t.next.next?t=t.next:t.next=null;return this.tail=t,e},e.prototype.deleteHead=function(){if(!this.head)return null;var e=this.head;return this.head.next?this.head=this.head.next:(this.head=null,this.tail=null),e},e.prototype.fromArray=function(e){var t=this;return e.forEach((function(e){return t.append(e)})),this},e.prototype.toArray=function(){for(var e=[],t=this.head;t;)e.push(t),t=t.next;return e},e.prototype.reverse=function(){for(var e=this.head,t=null,r=null;e;)r=e.next,e.next=t,t=e,e=r;this.tail=this.head,this.head=t},e.prototype.toString=function(e){return void 0===e&&(e=void 0),this.toArray().map((function(t){return t.toString(e)})).toString()},e}(),a=function(){function e(){this.linkedList=new i}return e.prototype.isEmpty=function(){return!this.linkedList.head},e.prototype.peek=function(){return this.linkedList.head?this.linkedList.head.value:null},e.prototype.enqueue=function(e){this.linkedList.append(e)},e.prototype.dequeue=function(){var e=this.linkedList.deleteHead();return e?e.value:null},e.prototype.toString=function(e){return this.linkedList.toString(e)},e}();var d=function(e,t,r){void 0===t&&(t=[]);var n=t.filter((function(t){return t.source===e||t.target===e}));return"target"===r?n.filter((function(t){return t.source===e})).map((function(e){return e.target})):"source"===r?n.filter((function(t){return t.target===e})).map((function(e){return e.source})):n.map((function(t){return t.source===e?t.target:t.source}))},s=function(e,t){return t.filter((function(t){return t.source===e||t.target===e}))},u=function(e){void 0===e&&(e=0);var t="".concat(Math.random()).split(".")[1].substr(0,5),r="".concat(Math.random()).split(".")[1].substr(0,5);return"".concat(e,"-").concat(t).concat(r)};const c=function(e,t,r,n){void 0===n&&(n=!0);var o=function(e){void 0===e&&(e={});var t,r=e,n=function(){},o=(t={},function(e){var r=e.next;return!t[r]&&(t[r]=!0,!0)});return r.allowTraversal=e.allowTraversal||o,r.enter=e.enter||n,r.leave=e.leave||n,r}(r),i=new a,s=e.edges,u=void 0===s?[]:s;i.enqueue(t);for(var c="",f=function(){var e=i.dequeue();o.enter({current:e,previous:c}),d(e,u,n?"target":void 0).forEach((function(t){o.allowTraversal({previous:c,current:e,next:t})&&i.enqueue(t)})),o.leave({current:e,previous:c}),c=e};!i.isEmpty();)f()};function f(e,t){return t?function(e){for(var t=e.nodes,r=void 0===t?[]:t,n=e.edges,o=void 0===n?[]:n,i=[],a={},s={},u={},c=[],f=0,h=function(e){s[e.id]=f,u[e.id]=f,f+=1,i.push(e),a[e.id]=!0;for(var t=d(e.id,o,"target").filter((function(e){return r.map((function(e){return e.id})).indexOf(e)>-1})),n=function(n){var o=t[n];if(s[o]||0===s[o])a[o]&&(u[e.id]=Math.min(u[e.id],s[o]));else{var i=r.filter((function(e){return e.id===o}));i.length>0&&h(i[0]),u[e.id]=Math.min(u[e.id],u[o])}},l=0;l<t.length;l++)n(l);if(u[e.id]===s[e.id]){for(var p=[];i.length>0;){var v=i.pop();if(a[v.id]=!1,p.push(v),v===e)break}p.length>0&&c.push(p)}},l=0,p=r;l<p.length;l++){var v=p[l];s[v.id]||0===s[v.id]||h(v)}return c}(e):function(e){for(var t=e.nodes,r=void 0===t?[]:t,n=e.edges,o=void 0===n?[]:n,i=[],a={},s=[],u=function(e){s.push(e),a[e.id]=!0;for(var t=d(e.id,o),n=function(e){var n=t[e];if(!a[n]){var o=r.filter((function(e){return e.id===n}));o.length>0&&u(o[0])}},i=0;i<t.length;++i)n(i)},c=0;c<r.length;c++){var f=r[c];if(!a[f.id]){u(f);for(var h=[];s.length>0;)h.push(s.pop());i.push(h)}}return i}(e)}var h=function(e){var t={},r=e.nodes,n=void 0===r?[]:r,o=e.edges,i=void 0===o?[]:o;return n.forEach((function(e){t[e.id]={degree:0,inDegree:0,outDegree:0}})),i.forEach((function(e){t[e.source].degree++,t[e.source].outDegree++,t[e.target].degree++,t[e.target].inDegree++})),t};const l=h;var p=function(e,t){return h(e)[t]?h(e)[t].inDegree:0},v=function(e,t){return h(e)[t]?h(e)[t].outDegree:0};function g(e,t,r,n){n.enter({current:t,previous:r});var o=e.edges;d(t,void 0===o?[]:o,"target").forEach((function(o){n.allowTraversal({previous:r,current:t,next:o})&&g(e,o,t,n)})),n.leave({current:t,previous:r})}function b(e,t,r){g(e,t,"",function(e){void 0===e&&(e={});var t,r=e,n=function(){},o=(t={},function(e){var r=e.next;return!t[r]&&(t[r]=!0,!0)});return r.allowTraversal=e.allowTraversal||o,r.enter=e.enter||n,r.leave=e.leave||n,r}(r))}const E=function(e){var t=null,r=e.nodes,n={},o={},i={},a={};(void 0===r?[]:r).forEach((function(e){o[e.id]=e}));for(var d={enter:function(e){var r=e.current,a=e.previous;if(i[r]){t={};for(var d=r,s=a;s!==r;)t[d]=s,d=s,s=n[s];t[d]=s}else i[r]=r,delete o[r],n[r]=a},leave:function(e){var t=e.current;a[t]=t,delete i[t]},allowTraversal:function(e){var r=e.next;return!t&&!a[r]}};Object.keys(o).length;)b(e,Object.keys(o)[0],d);return t};function m(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))}Object.create,Object.create;var y={}.toString;const L=function(e,t){return y.call(e)==="[object "+t+"]"},N=function(e){return L(e,"Function")},w=function(e){return Array.isArray?Array.isArray(e):L(e,"Array")};Object.keys;var M=Array.prototype;M.splice,M.indexOf,Array.prototype.splice,Object.prototype.hasOwnProperty;Number.isInteger&&Number.isInteger,Math.PI,parseInt,Math.PI;Object.values;Object.prototype;const I=function e(t){if("object"!=typeof t||null===t)return t;var r;if(w(t)){r=[];for(var n=0,o=t.length;n<o;n++)"object"==typeof t[n]&&null!=t[n]?r[n]=e(t[n]):r[n]=t[n]}else for(var i in r={},t)"object"==typeof t[i]&&null!=t[i]?r[i]=e(t[i]):r[i]=t[i];return r};var j;Object.prototype.hasOwnProperty,Object.prototype.hasOwnProperty,function(e,t){if(!N(e))throw new TypeError("Expected a function");new Map}((function(e,t){void 0===t&&(t={});var r,n=t.fontSize,o=t.fontFamily,i=t.fontWeight,a=t.fontStyle,d=t.fontVariant;return j||(j=document.createElement("canvas").getContext("2d")),j.font=[a,d,i,n+"px",o].join(" "),j.measureText((r=e,L(r,"String")?e:"")).width})),function(){function e(){this.map={}}e.prototype.has=function(e){return void 0!==this.map[e]},e.prototype.get=function(e,t){var r=this.map[e];return void 0===r?t:r},e.prototype.set=function(e,t){this.map[e]=t},e.prototype.clear=function(){this.map={}},e.prototype.delete=function(e){delete this.map[e]},e.prototype.size=function(){return Object.keys(this.map).length}}();const k=function(e,t,r,n){var o=e.nodes,i=void 0===o?[]:o,a=e.edges,d=void 0===a?[]:a,u=[],c={},f={},h={};i.forEach((function(e,r){var n=e.id;u.push(n),f[n]=1/0,n===t&&(f[n]=0)}));for(var l=i.length,p=function(e){var t=function(e,t,r){for(var n,o=1/0,i=0;i<t.length;i++){var a=t[i].id;!r[a]&&e[a]<=o&&(o=e[a],n=t[i])}return n}(f,i,c),o=t.id;if(c[o]=!0,f[o]===1/0)return"continue";var a=[];a=r?function(e,t){return t.filter((function(t){return t.source===e}))}(o,d):s(o,d),a.forEach((function(e){var r=e.target,i=e.source,a=r===o?i:r,d=n&&e[n]?e[n]:1;f[a]>f[t.id]+d?(f[a]=f[t.id]+d,h[a]=[t.id]):f[a]===f[t.id]+d&&h[a].push(t.id)}))},v=0;v<l;v++)p();h[t]=[t];var g={};for(var b in f)f[b]!==1/0&&x(t,b,h,g);var E={};for(var b in g)E[b]=g[b][0];return{length:f,path:E,allPath:g}};function x(e,t,r,n){if(e===t)return[e];if(n[t])return n[t];for(var o=[],i=0,a=r[t];i<a.length;i++){var d=x(e,a[i],r,n);if(!d)return;for(var s=0,u=d;s<u.length;s++){var c=u[s];w(c)?o.push(m(m([],c,!0),[t],!1)):o.push([c,t])}}return n[t]=o,n[t]}var O=function(e,t,r,n,o){var i=k(e,t,n,o),a=i.length,d=i.path,s=i.allPath;return{length:a[r],path:d[r],allPath:s[r]}},D=function(e,t,r,n){var o;if(t===r)return[[t]];var i=e.edges,a=void 0===i?[]:i,s=[t],u=((o={})[t]=!0,o),c=[],f=[],h=n?d(t,a,"target"):d(t,a);for(c.push(h);s.length>0&&c.length>0;){var l=c[c.length-1];if(l.length){var p=l.shift();if(p&&(s.push(p),u[p]=!0,h=n?d(p,a,"target"):d(p,a),c.push(h.filter((function(e){return!u[e]})))),s[s.length-1]===r){var v=s.map((function(e){return e}));f.push(v),g=s.pop(),u[g]=!1,c.pop()}}else{var g=s.pop();u[g]=!1,c.pop()}}return f};const S=function(e,t){for(var n=r(e,t),o=[],i=n.length,a=0;a<i;a+=1){o[a]=[];for(var d=0;d<i;d+=1)a===d?o[a][d]=0:0!==n[a][d]&&n[a][d]?o[a][d]=n[a][d]:o[a][d]=1/0}for(var s=0;s<i;s+=1)for(a=0;a<i;a+=1)for(d=0;d<i;d+=1)o[a][d]>o[a][s]+o[s][d]&&(o[a][d]=o[a][s]+o[s][d]);return o},P=function(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n="weight"),void 0===o&&(o=1e3);var i=e.nodes,a=void 0===i?[]:i,d=e.edges,s=void 0===d?[]:d,c={},f={};a.forEach((function(e,t){var r=u();e.clusterId=r,c[r]={id:r,nodes:[e]},f[e.id]={node:e,idx:t}}));var h=r(e,t),l=[],p={};h.forEach((function(e,t){var r=0,n=a[t].id;p[n]={},e.forEach((function(e,t){if(e){r+=e;var o=a[t].id;p[n][o]=e}})),l.push(r)}));for(var v=0,g=function(){var e=!1;if(a.forEach((function(t){var r={};Object.keys(p[t.id]).forEach((function(e){var n=p[t.id][e],o=f[e].node.clusterId;r[o]||(r[o]=0),r[o]+=n}));var n=-1/0,o=[];if(Object.keys(r).forEach((function(e){n<r[e]?(n=r[e],o=[e]):n===r[e]&&o.push(e)})),1!==o.length||o[0]!==t.clusterId){var i=o.indexOf(t.clusterId);if(i>=0&&o.splice(i,1),o&&o.length){e=!0;var a=c[t.clusterId],d=a.nodes.indexOf(t);a.nodes.splice(d,1);var s=Math.floor(Math.random()*o.length),u=c[o[s]];u.nodes.push(t),t.clusterId=u.id}}})),!e)return"break";v++};v<o&&"break"!==g(););Object.keys(c).forEach((function(e){var t=c[e];t.nodes&&t.nodes.length||delete c[e]}));var b=[],E={};s.forEach((function(e){var t=e.source,r=e.target,o=e[n]||1,i=f[t].node.clusterId,a=f[r].node.clusterId,d="".concat(i,"---").concat(a);if(E[d])E[d].weight+=o,E[d].count++;else{var s={source:i,target:a,weight:o,count:1};E[d]=s,b.push(s)}}));var m=[];return Object.keys(c).forEach((function(e){m.push(c[e])})),{clusters:m,clusterEdges:b}};const C=function(){function e(e){this.arr=e}return e.prototype.add=function(t){var r,n=t.arr;if(!(null===(r=this.arr)||void 0===r?void 0:r.length))return new e(n);if(!(null==n?void 0:n.length))return new e(this.arr);if(this.arr.length===n.length){var o=[];for(var i in this.arr)o[i]=this.arr[i]+n[i];return new e(o)}},e.prototype.subtract=function(t){var r,n=t.arr;if(!(null===(r=this.arr)||void 0===r?void 0:r.length))return new e(n);if(!(null==n?void 0:n.length))return new e(this.arr);if(this.arr.length===n.length){var o=[];for(var i in this.arr)o[i]=this.arr[i]-n[i];return new e(o)}},e.prototype.avg=function(t){var r=[];for(var n in this.arr)r[n]=this.arr[n]/t;return new e(r)},e.prototype.negate=function(){var t=[];for(var r in this.arr)t[r]=-this.arr[r];return new e(t)},e.prototype.squareEuclideanDistance=function(e){var t,r=e.arr;if(!(null===(t=this.arr)||void 0===t?void 0:t.length)||!(null==r?void 0:r.length))return 0;if(this.arr.length===r.length){var n=0;for(var o in this.arr)n+=Math.pow(this.arr[o]-e.arr[o],2);return n}},e.prototype.normalize=function(){var t=[],r=I(this.arr);r.sort((function(e,t){return e-t}));var n=r[r.length-1],o=r[0];for(var i in this.arr)t[i]=(this.arr[i]-o)/(n-o);return new e(t)},e.prototype.norm2=function(){var e;if(!(null===(e=this.arr)||void 0===e?void 0:e.length))return 0;var t=0;for(var r in this.arr)t+=Math.pow(this.arr[r],2);return Math.sqrt(t)},e.prototype.dot=function(e){var t,r=e.arr;if(!(null===(t=this.arr)||void 0===t?void 0:t.length)||!(null==r?void 0:r.length))return 0;if(this.arr.length===r.length){var n=0;for(var o in this.arr)n+=this.arr[o]*e.arr[o];return n}},e}();var T=/^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/,q=/^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})$/,F=function(e,t){return t.map((function(t){if(e.hasOwnProperty(t)){if(!isNaN(Number(e[t])))return Number(e[t]);if(e[t].match(T)||e[t].match(q))return Number(Date.parse(new Date(e[t])))/1e3}return 0}))},A=function(e){for(var t=function(e,t){void 0===e&&(e=[]),void 0===t&&(t=100);var r={};e.forEach((function(e){e.properties&&Object.keys(e.properties).forEach((function(t){"id"===t||!"".concat(e.properties[t]).match(T)&&!"".concat(e.properties[t]).match(q)&&isNaN(Number(e.properties[t]))?r.hasOwnProperty(t)&&delete r[t]:r.hasOwnProperty(t)?r[t]+=1:r[t]=1}))}));var n=Object.keys(r).sort((function(e,t){return r[t]-r[e]}));return n.length<t?n:n.slice(0,t)}(e),r=[],n=0;n<e.length;n++)r[n]=F(e[n].properties,t);return r},R=function(e,t,r,n){for(var o=t.length,i=2*n,a=0,d=0;d<o;d++)for(var s=e[d].clusterId,u=0;u<o;u++)s===e[u].clusterId&&(a+=(t[d][u]||0)-(r[d]||0)*(r[u]||0)/i);return a*(1/i)},U=function(e,t){void 0===e&&(e=[]);for(var r=e.length,n=new C([]),o=0;o<r;o++)n=n.add(new C(t[o]));var i=n.avg(r);i.normalize();var a=0;for(o=0;o<r;o++)a+=(s=new C(t[o])).squareEuclideanDistance(i);var d=[];for(e.forEach((function(){d.push([])})),o=0;o<r;o++){var s=new C(t[o]);e[o].clusterInertial=0;for(var u=0;u<r;u++)if(o!==u){var c=new C(t[u]);d[o][u]=s.squareEuclideanDistance(c),e[o].clusterInertial+=d[o][u]}else d[o][u]=0}var f=0,h=2*r*a;for(o=0;o<r;o++){var l=e[o].clusterId;for(u=0;u<r;u++){var p=e[u].clusterId;o!==u&&l===p&&(f+=e[o].clusterInertial*e[u].clusterInertial/Math.pow(h,2)-d[o][u]/h)}}return Number(f.toFixed(4))};const G=function(e,t,n,o,i,a){void 0===t&&(t=!1),void 0===n&&(n="weight"),void 0===o&&(o=1e-4),void 0===i&&(i=!1),void 0===a&&(a=1);var d=e.nodes,s=void 0===d?[]:d,u=e.edges,c=void 0===u?[]:u,f=[];if(i){s.forEach((function(e,t){e.properties=e.properties||{},e.originIndex=t}));var h=[];s.every((function(e){return e.hasOwnProperty("nodeType")}))&&(h=Array.from(new Set(s.map((function(e){return e.nodeType})))),s.forEach((function(e){e.properties.nodeType=h.findIndex((function(t){return t===e.nodeType}))}))),f=A(s)}var l=1,p={},v={};s.forEach((function(e,t){var r=String(l++);e.clusterId=r,p[r]={id:r,nodes:[e]},v[e.id]={node:e,idx:t}}));var g=r(e,t),b=[],E={},m=0;g.forEach((function(e,t){var r=0,n=s[t].id;E[n]={},e.forEach((function(e,t){if(e){r+=e;var o=s[t].id;E[n][o]=e,m+=e}})),b.push(r)})),m/=2;for(var y=1/0,L=1/0,N=0,w=[],M={};;){y=i&&s.every((function(e){return e.hasOwnProperty("properties")}))?R(s,g,b,m)+U(s,f)*a:R(s,g,b,m),0===N&&(L=y,w=s,M=p);var j=y>0&&y>L&&y-L<o;if(y>L&&(w=s.map((function(e){return{node:e,clusterId:e.clusterId}})),M=I(p),L=y),j||N>100)break;N++,Object.keys(p).forEach((function(e){var t=0;c.forEach((function(r){var o=r.source,i=r.target,a=v[o].node.clusterId,d=v[i].node.clusterId;(a===e&&d!==e||d===e&&a!==e)&&(t+=r[n]||1)})),p[e].sumTot=t})),s.forEach((function(e,t){var r,o=p[e.clusterId],d=0,s=b[t]/(2*m),u=0,h=o.nodes;h.forEach((function(e){var r=v[e.id].idx;u+=g[t][r]||0}));var l=u-o.sumTot*s,y=h.filter((function(t){return t.id!==e.id})),L=[];y.forEach((function(e,t){L[t]=f[e.originIndex]}));var N=U(y,f)*a,w=E[e.id];if(Object.keys(w).forEach((function(n){var o=v[n].node.clusterId;if(o!==e.clusterId){var u=p[o],c=u.nodes;if(c&&c.length){var h=0;c.forEach((function(e){var r=v[e.id].idx;h+=g[t][r]||0}));var b=h-u.sumTot*s,E=c.concat([e]),m=[];E.forEach((function(e,t){m[t]=f[e.originIndex]}));var y=U(E,f)*a,L=b-l;i&&(L=b+y-(l+N)),L>d&&(d=L,r=u)}}})),d>0){r.nodes.push(e);var M=e.clusterId;e.clusterId=r.id;var I=o.nodes.indexOf(e);o.nodes.splice(I,1);var j=0,k=0;c.forEach((function(e){var t=e.source,o=e.target,i=v[t].node.clusterId,a=v[o].node.clusterId;(i===r.id&&a!==r.id||a===r.id&&i!==r.id)&&(j+=e[n]||1),(i===M&&a!==M||a===M&&i!==M)&&(k+=e[n]||1)})),r.sumTot=j,o.sumTot=k}}))}var k={},x=0;Object.keys(M).forEach((function(e){var t=M[e];if(t.nodes&&t.nodes.length){var r=String(x+1);r!==e&&(t.id=r,t.nodes=t.nodes.map((function(e){return{id:e.id,clusterId:r}})),M[r]=t,k[e]=r,delete M[e],x++)}else delete M[e]})),w.forEach((function(e){var t=e.node,r=e.clusterId;t.clusterId=r,t.clusterId&&k[t.clusterId]&&(t.clusterId=k[t.clusterId])}));var O=[],D={};c.forEach((function(e){var t=e.source,r=e.target,o=e[n]||1,i=v[t].node.clusterId,a=v[r].node.clusterId,d="".concat(i,"---").concat(a);if(D[d])D[d].weight+=o,D[d].count++;else{var s={source:i,target:a,weight:o,count:1};D[d]=s,O.push(s)}}));var S=[];return Object.keys(M).forEach((function(e){S.push(M[e])})),{clusters:S,clusterEdges:O}},z=function(){function e(e){this.count=e.length,this.parent={};for(var t=0,r=e;t<r.length;t++){var n=r[t];this.parent[n]=n}}return e.prototype.find=function(e){for(;this.parent[e]!==e;)e=this.parent[e];return e},e.prototype.union=function(e,t){var r=this.find(e),n=this.find(t);r!==n&&(r<n?(this.parent[t]!==t&&this.union(this.parent[t],e),this.parent[t]=this.parent[e]):(this.parent[e]!==e&&this.union(this.parent[e],t),this.parent[e]=this.parent[t]))},e.prototype.connected=function(e,t){return this.find(e)===this.find(t)},e}();var _=function(e,t){return e-t};const B=function(){function e(e){void 0===e&&(e=_),this.compareFn=e,this.list=[]}return e.prototype.getLeft=function(e){return 2*e+1},e.prototype.getRight=function(e){return 2*e+2},e.prototype.getParent=function(e){return 0===e?null:Math.floor((e-1)/2)},e.prototype.isEmpty=function(){return this.list.length<=0},e.prototype.top=function(){return this.isEmpty()?void 0:this.list[0]},e.prototype.delMin=function(){var e=this.top(),t=this.list.pop();return this.list.length>0&&(this.list[0]=t,this.moveDown(0)),e},e.prototype.insert=function(e){if(null!==e){this.list.push(e);var t=this.list.length-1;return this.moveUp(t),!0}return!1},e.prototype.moveUp=function(e){for(var t=this.getParent(e);e&&e>0&&this.compareFn(this.list[t],this.list[e])>0;){var r=this.list[t];this.list[t]=this.list[e],this.list[e]=r,e=t,t=this.getParent(e)}},e.prototype.moveDown=function(e){var t,r=e,n=this.getLeft(e),o=this.getRight(e),i=this.list.length;null!==n&&n<i&&this.compareFn(this.list[r],this.list[n])>0?r=n:null!==o&&o<i&&this.compareFn(this.list[r],this.list[o])>0&&(r=o),e!==r&&(t=[this.list[r],this.list[e]],this.list[e]=t[0],this.list[r]=t[1],this.moveDown(r))},e}();var H=function(e,t){var r=[],n=e.nodes,o=void 0===n?[]:n,i=e.edges,a=void 0===i?[]:i;if(0===o.length)return r;var d=o[0],u=new Set;u.add(d);var c=new B((function(e,r){return t?e.weight-r.weight:0}));for(s(d.id,a).forEach((function(e){c.insert(e)}));!c.isEmpty();){var f=c.delMin(),h=f.source,l=f.target;u.has(h)&&u.has(l)||(r.push(f),u.has(h)||(u.add(h),s(h,a).forEach((function(e){c.insert(e)}))),u.has(l)||(u.add(l),s(l,a).forEach((function(e){c.insert(e)}))))}return r},W=function(e,t){var r=[],n=e.nodes,o=void 0===n?[]:n,i=e.edges,a=void 0===i?[]:i;if(0===o.length)return r;var d=a.map((function(e){return e}));t&&d.sort((function(e,t){return e.weight-t.weight}));for(var s=new z(o.map((function(e){return e.id})));d.length>0;){var u=d.shift(),c=u.source,f=u.target;s.connected(c,f)||(r.push(u),s.union(c,f))}return r};const $=function(e,t,r){return r?{prim:H,kruskal:W}[r](e,t):W(e,t)},K=function(e,t,r){"number"!=typeof t&&(t=1e-6),"number"!=typeof r&&(r=.85);for(var n,o=1,i=0,a=1e3,s=e.nodes,u=void 0===s?[]:s,c=e.edges,f=void 0===c?[]:c,h=u.length,p={},v={},g=0;g<h;++g)p[E=(w=u[g]).id]=1/h,v[E]=1/h;for(var b=l(e);a>0&&o>t;){for(i=0,g=0;g<h;++g){var E=(w=u[g]).id;if(n=0,0===b[w.id].inDegree)p[E]=0;else{for(var m=d(E,f,"source"),y=0;y<m.length;++y){var L=m[y],N=b[L].outDegree;N>0&&(n+=v[L]/N)}p[E]=r*n,i+=p[E]}}for(i=(1-i)/h,o=0,g=0;g<h;++g){var w;n=p[E=(w=u[g]).id]+i,o+=Math.abs(n-v[E]),v[E]=n}a-=1}return v};var V="-1",J=function(e,t,r,n){void 0===e&&(e=-1),void 0===t&&(t=-1),void 0===r&&(r=-1),void 0===n&&(n="-1"),this.id=e,this.from=t,this.to=r,this.label=n},Q=function(){function e(e,t){void 0===e&&(e=-1),void 0===t&&(t=V),this.id=e,this.label=t,this.edges=[],this.edgeMap={}}return e.prototype.addEdge=function(e){this.edges.push(e),this.edgeMap[e.id]=e},e}(),X=function(){function e(e,t,r){void 0===e&&(e=-1),void 0===t&&(t=!0),void 0===r&&(r=!1),this.id=e,this.edgeIdAutoIncrease=t,this.edges=[],this.nodes=[],this.nodeMap={},this.edgeMap={},this.nodeLabelMap={},this.edgeLabelMap={},this.counter=0,this.directed=r}return e.prototype.getNodeNum=function(){return this.nodes.length},e.prototype.addNode=function(e,t){if(!this.nodeMap[e]){var r=new Q(e,t);this.nodes.push(r),this.nodeMap[e]=r,this.nodeLabelMap[t]||(this.nodeLabelMap[t]=[]),this.nodeLabelMap[t].push(e)}},e.prototype.addEdge=function(e,t,r,n){if((this.edgeIdAutoIncrease||void 0===e)&&(e=this.counter++),!(this.nodeMap[t]&&this.nodeMap[r]&&this.nodeMap[r].edgeMap[e])){var o=new J(e,t,r,n);if(this.edges.push(o),this.edgeMap[e]=o,this.nodeMap[t].addEdge(o),this.edgeLabelMap[n]||(this.edgeLabelMap[n]=[]),this.edgeLabelMap[n].push(o),!this.directed){var i=new J(e,r,t,n);this.nodeMap[r].addEdge(i),this.edgeLabelMap[n].push(i)}}},e}(),Y=function(){function e(e,t,r,n,o){this.fromNode=e,this.toNode=t,this.nodeEdgeNodeLabel={nodeLabel1:r||V,edgeLabel:n||"-1",nodeLabel2:o||V}}return e.prototype.equalTo=function(e){return this.fromNode===e.formNode&&this.toNode===e.toNode&&this.nodeEdgeNodeLabel===e.nodeEdgeNodeLabel},e.prototype.notEqualTo=function(e){return!this.equalTo(e)},e}(),Z=function(){function e(){this.rmpath=[],this.dfsEdgeList=[]}return e.prototype.equalTo=function(e){var t=this.dfsEdgeList.length;if(t!==e.length)return!1;for(var r=0;r<t;r++)if(this.dfsEdgeList[r]!==e[r])return!1;return!0},e.prototype.notEqualTo=function(e){return!this.equalTo(e)},e.prototype.pushBack=function(e,t,r,n,o){return this.dfsEdgeList.push(new Y(e,t,r,n,o)),this.dfsEdgeList},e.prototype.toGraph=function(e,t){void 0===e&&(e=-1),void 0===t&&(t=!1);var r=new X(e,!0,t);return this.dfsEdgeList.forEach((function(e){var t=e.fromNode,n=e.toNode,o=e.nodeEdgeNodeLabel,i=o.nodeLabel1,a=o.edgeLabel,d=o.nodeLabel2;i!==V&&r.addNode(t,i),d!==V&&r.addNode(n,d),i!==V&&d!==i&&r.addEdge(void 0,t,n,a)})),r},e.prototype.buildRmpath=function(){this.rmpath=[];for(var e=void 0,t=this.dfsEdgeList.length-1;t>=0;t--){var r=this.dfsEdgeList[t],n=r.fromNode,o=r.toNode;n<o&&(void 0===e||o===e)&&(this.rmpath.push(t),e=n)}return this.rmpath},e.prototype.getNodeNum=function(){var e={};return this.dfsEdgeList.forEach((function(t){e[t.fromNode]||(e[t.fromNode]=!0),e[t.toNode]||(e[t.toNode]=!0)})),Object.keys(e).length},e}(),ee=function(){function e(e){if(this.his={},this.nodesUsed={},this.edgesUsed={},this.edges=[],e){for(;e;){var t=e.edge;this.edges.push(t),this.nodesUsed[t.from]=1,this.nodesUsed[t.to]=1,this.edgesUsed[t.id]=1,e=e.preNode}this.edges=this.edges.reverse()}}return e.prototype.hasNode=function(e){return 1===this.nodesUsed[e.id]},e.prototype.hasEdge=function(e){return 1===this.edgesUsed[e.id]},e}(),te=function(){function e(e){var t=e.graphs,r=e.minSupport,n=void 0===r?2:r,o=e.minNodeNum,i=void 0===o?1:o,a=e.maxNodeNum,d=void 0===a?4:a,s=e.top,u=void 0===s?10:s,c=e.directed,f=void 0!==c&&c,h=e.verbose,l=void 0!==h&&h;this.graphs=t,this.dfsCode=new Z,this.support=0,this.frequentSize1Subgraphs=[],this.frequentSubgraphs=[],this.minSupport=n,this.top=u,this.directed=f,this.counter=0,this.maxNodeNum=d,this.minNodeNum=i,this.verbose=l,this.maxNodeNum<this.minNodeNum&&(this.maxNodeNum=this.minNodeNum),this.reportDF=[]}return e.prototype.findForwardRootEdges=function(e,t){var r=this,n=[],o=e.nodeMap;return t.edges.forEach((function(e){(r.directed||t.label<=o[e.to].label)&&n.push(e)})),n},e.prototype.findBackwardEdge=function(e,t,r,n){if(!this.directed&&t===r)return null;for(var o=e.nodeMap,i=o[r.to].edges,a=i.length,d=0;d<a;d++){var s=i[d];if(!n.hasEdge(s)&&s.to===t.from)if(this.directed){if(o[t.from].label<o[r.to].label||o[t.from].label===o[r.to].label&&t.label<=s.label)return s}else if(t.label<s.label||t.label===s.label&&o[t.to].label<=o[r.to].label)return s}return null},e.prototype.findForwardPureEdges=function(e,t,r,n){for(var o=[],i=t.to,a=e.nodeMap[i].edges,d=a.length,s=0;s<d;s++){var u=a[s],c=e.nodeMap[u.to];r<=c.label&&!n.hasNode(c)&&o.push(u)}return o},e.prototype.findForwardRmpathEdges=function(e,t,r,n){for(var o=[],i=e.nodeMap,a=i[t.to].label,d=i[t.from].edges,s=d.length,u=0;u<s;u++){var c=d[u],f=i[c.to].label;t.to===c.to||r>f||n.hasNode(i[c.to])||(t.label<c.label||t.label===c.label&&a<=f)&&o.push(c)}return o},e.prototype.getSupport=function(e){var t={};return e.forEach((function(e){t[e.graphId]||(t[e.graphId]=!0)})),Object.keys(t).length},e.prototype.findMinLabel=function(e){var t=void 0;return Object.keys(e).forEach((function(r){var n=e[r],o=n.nodeLabel1,i=n.edgeLabel,a=n.nodeLabel2;t?(o<t.nodeLabel1||o===t.nodeLabel1&&i<t.edgeLabel||o===t.nodeLabel1&&i===t.edgeLabel&&a<t.nodeLabel2)&&(t={nodeLabel1:o,edgeLabel:i,nodeLabel2:a}):t={nodeLabel1:o,edgeLabel:i,nodeLabel2:a}})),t},e.prototype.isMin=function(){var e=this,t=this.dfsCode;if(this.verbose&&console.log("isMin checking",t),1===t.dfsEdgeList.length)return!0;var r=this.directed,n=t.toGraph(-1,r),o=n.nodeMap,i=new Z,a={};n.nodes.forEach((function(t){e.findForwardRootEdges(n,t).forEach((function(e){var r=o[e.to],i="".concat(t.label,"-").concat(e.label,"-").concat(r.label);a[i]||(a[i]={projected:[],nodeLabel1:t.label,edgeLabel:e.label,nodeLabel2:r.label});var d={graphId:n.id,edge:e,preNode:null};a[i].projected.push(d)}))}));var d=this.findMinLabel(a);if(d){i.dfsEdgeList.push(new Y(0,1,d.nodeLabel1,d.edgeLabel,d.nodeLabel2));var s=function(a){for(var d=i.buildRmpath(),u=i.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1,c=i.dfsEdgeList[d[0]].toNode,f={},h=!1,l=0,p=r?-1:0,v=function(t){if(h)return"break";a.forEach((function(r){var o=new ee(r),a=e.findBackwardEdge(n,o.edges[d[t]],o.edges[d[0]],o);a&&(f[a.label]||(f[a.label]={projected:[],edgeLabel:a.label}),f[a.label].projected.push({graphId:n.id,edge:f,preNode:r}),l=i.dfsEdgeList[d[t]].fromNode,h=!0)}))},g=d.length-1;g>p&&"break"!==v(g);g--);if(h){var b=e.findMinLabel(f);i.dfsEdgeList.push(new Y(c,l,V,b.edgeLabel,V));var E=i.dfsEdgeList.length-1;return e.dfsCode.dfsEdgeList[E]===i.dfsEdgeList[E]&&s(f[b.edgeLabel].projected)}var m={};h=!1;var y=0;a.forEach((function(t){var r=new ee(t),i=e.findForwardPureEdges(n,r.edges[d[0]],u,r);i.length>0&&(h=!0,y=c,i.forEach((function(e){var r="".concat(e.label,"-").concat(o[e.to].label);m[r]||(m[r]={projected:[],edgeLabel:e.label,nodeLabel2:o[e.to].label}),m[r].projected.push({graphId:n.id,edge:e,preNode:t})})))}));var L=d.length,N=function(t){if(h)return"break";var r=d[t];a.forEach((function(t){var a=new ee(t),d=e.findForwardRmpathEdges(n,a.edges[r],u,a);d.length>0&&(h=!0,y=i.dfsEdgeList[r].fromNode,d.forEach((function(e){var r="".concat(e.label,"-").concat(o[e.to].label);m[r]||(m[r]={projected:[],edgeLabel:e.label,nodeLabel2:o[e.to].label}),m[r].projected.push({graphId:n.id,edge:e,preNode:t})})))}))};for(g=0;g<L&&"break"!==N(g);g++);if(!h)return!0;var w=e.findMinLabel(m);i.dfsEdgeList.push(new Y(y,c+1,V,w.edgeLabel,w.nodeLabel2));var M=i.dfsEdgeList.length-1;return t.dfsEdgeList[M]===i.dfsEdgeList[M]&&s(m["".concat(w.edgeLabel,"-").concat(w.nodeLabel2)].projected)},u="".concat(d.nodeLabel1,"-").concat(d.edgeLabel,"-").concat(d.nodeLabel2);return s(a[u].projected)}},e.prototype.report=function(){if(!(this.dfsCode.getNodeNum()<this.minNodeNum)){this.counter++;var e=this.dfsCode.toGraph(this.counter,this.directed);this.frequentSubgraphs.push(I(e))}},e.prototype.subGraphMining=function(e){var t=this;if(!(this.getSupport(e)<this.minSupport)&&this.isMin()){this.report();var r=this.dfsCode.getNodeNum(),n=this.dfsCode.buildRmpath(),o=this.dfsCode.dfsEdgeList[n[0]].toNode,i=this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1,a={},d={};e.forEach((function(e){for(var s=t.graphs[e.graphId],u=s.nodeMap,c=new ee(e),f=n.length-1;f>=0;f--){var h=t.findBackwardEdge(s,c.edges[n[f]],c.edges[n[0]],c);if(h){var l="".concat(t.dfsCode.dfsEdgeList[n[f]].fromNode,"-").concat(h.label);d[l]||(d[l]={projected:[],toNodeId:t.dfsCode.dfsEdgeList[n[f]].fromNode,edgeLabel:h.label}),d[l].projected.push({graphId:e.graphId,edge:h,preNode:e})}}if(!(r>=t.maxNodeNum)){t.findForwardPureEdges(s,c.edges[n[0]],i,c).forEach((function(t){var r="".concat(o,"-").concat(t.label,"-").concat(u[t.to].label);a[r]||(a[r]={projected:[],fromNodeId:o,edgeLabel:t.label,nodeLabel2:u[t.to].label}),a[r].projected.push({graphId:e.graphId,edge:t,preNode:e})}));var p=function(r){t.findForwardRmpathEdges(s,c.edges[n[r]],i,c).forEach((function(o){var i="".concat(t.dfsCode.dfsEdgeList[n[r]].fromNode,"-").concat(o.label,"-").concat(u[o.to].label);a[i]||(a[i]={projected:[],fromNodeId:t.dfsCode.dfsEdgeList[n[r]].fromNode,edgeLabel:o.label,nodeLabel2:u[o.to].label}),a[i].projected.push({graphId:e.graphId,edge:o,preNode:e})}))};for(f=0;f<n.length;f++)p(f)}})),Object.keys(d).forEach((function(e){var r=d[e],n=r.toNodeId,i=r.edgeLabel;t.dfsCode.dfsEdgeList.push(new Y(o,n,"-1",i,"-1")),t.subGraphMining(d[e].projected),t.dfsCode.dfsEdgeList.pop()})),Object.keys(a).forEach((function(e){var r=a[e],n=r.fromNodeId,i=r.edgeLabel,d=r.nodeLabel2;t.dfsCode.dfsEdgeList.push(new Y(n,o+1,V,i,d)),t.subGraphMining(a[e].projected),t.dfsCode.dfsEdgeList.pop()}))}},e.prototype.generate1EdgeFrequentSubGraphs=function(){var e=this.graphs,t=this.directed,r=this.minSupport,n=this.frequentSize1Subgraphs,o={},i={},a={},d={};return Object.keys(e).forEach((function(r){var n=e[r],s=n.nodeMap;n.nodes.forEach((function(e,n){var u=e.label,c="".concat(r,"-").concat(u);if(!a[c]){var f=o[u]||0;f++,o[u]=f}a[c]={graphKey:r,label:u},e.edges.forEach((function(e){var n=u,o=s[e.to].label;if(!t&&n>o){var a=o;o=n,n=a}var c=e.label,f="".concat(r,"-").concat(n,"-").concat(c,"-").concat(o),h="".concat(n,"-").concat(c,"-").concat(o);if(!i[h]){var l=i[h]||0;l++,i[h]=l}d[f]={graphId:r,nodeLabel1:n,edgeLabel:c,nodeLabel2:o}}))}))})),Object.keys(o).forEach((function(e){if(!(o[e]<r)){var t={nodes:[],edges:[]};t.nodes.push({id:"0",label:e}),n.push(t)}})),n},e.prototype.run=function(){var e=this;if(this.frequentSize1Subgraphs=this.generate1EdgeFrequentSubGraphs(),!(this.maxNodeNum<2)){var t=this.graphs,r=(this.directed,{});Object.keys(t).forEach((function(n){var o=t[n],i=o.nodeMap;o.nodes.forEach((function(t){e.findForwardRootEdges(o,t).forEach((function(e){var o=i[e.to],a="".concat(t.label,"-").concat(e.label,"-").concat(o.label);r[a]||(r[a]={projected:[],nodeLabel1:t.label,edgeLabel:e.label,nodeLabel2:o.label});var d={graphId:n,edge:e,preNode:null};r[a].projected.push(d)}))}))})),Object.keys(r).forEach((function(t){var n=r[t],o=n.projected,i=n.nodeLabel1,a=n.edgeLabel,d=n.nodeLabel2;e.dfsCode.dfsEdgeList.push(new Y(0,1,i,a,d)),e.subGraphMining(o),e.dfsCode.dfsEdgeList.pop()}))}},e}(),re="cluster";var ne=function(e,t,r,n){void 0===r&&(r="cluster"),void 0===n&&(n=2);var o=[],i=e.nodes;return t.forEach((function(e,t){o.push(oe(i,e,t,r,n))})),o},oe=function(e,t,r,n,o){var i=[r],a=[],d={};return t.forEach((function(t,s){if(t<=o&&r!==s){i.push(s),a.push(e[s]);var u=e[s][n];d[u]?(d[u].count++,d[u].dists.push(t)):d[u]={count:1,dists:[t]}}})),Object.keys(d).forEach((function(e){d[e].dists=d[e].dists.sort((function(e,t){return e-t}))})),{nodeIdx:r,nodeId:e[r].id,nodeIdxs:i,neighbors:a,neighborNum:i.length-1,nodeLabelCountMap:d}},ie=function(e,t,r,n){var o=r.nodes;return n||(n={}),Object.keys(e).forEach((function(i){var a,d;if(!n||!n[i]){n[i]={nodes:[],edges:[]};var s=e[i],u=null===(a=t[s.start])||void 0===a?void 0:a.nodeIdxs,c=null===(d=t[s.end])||void 0===d?void 0:d.nodeIdxs;if(u&&c){var f=new Set(c),h=u.filter((function(e){return f.has(e)}));if(h&&h.length){for(var l={},p=h.length,v=0;v<p;v++){var g=o[h[v]];n[i].nodes.push(g),l[g.id]=!0}r.edges.forEach((function(e){l[e.source]&&l[e.target]&&n[i].edges.push(e)}))}}}})),n},ae=function(e,t,r,n){var o,i,a={};e.nodes.forEach((function(e){a[e.id]=e}));var d=0;return!(null===(o=null==t?void 0:t.edges)||void 0===o?void 0:o.length)||(null===(i=null==t?void 0:t.nodes)||void 0===i?void 0:i.length)<2?0:(e.edges.forEach((function(e){var o=a[e.source][r],i=a[e.target][r],s=null==t?void 0:t.nodes[0][r],u=null==t?void 0:t.nodes[1][r],c=null==t?void 0:t.edges[0][n];e[n]===c&&(o===s&&i===u||o===u&&i===s)&&d++})),d)},de=function(e,t){var r={},n={};return e.forEach((function(e,o){r[e.id]={idx:o,node:e,degree:0,inDegree:0,outDegree:0};var i=e[t];n[i]||(n[i]=[]),n[i].push(e)})),{nodeMap:r,nodeLabelMap:n}},se=function(e,t,r){var n={},o={};return e.forEach((function(e,i){n["".concat(u)]={idx:i,edge:e};var a=e[t];o[a]||(o[a]=[]),o[a].push(e);var d=r[e.source];d&&(d.degree++,d.outDegree++);var s=r[e.target];s&&(s.degree++,s.inDegree++)})),{edgeMap:n,edgeLabelMap:o}},ue=function(e,t,r){var n=t.length,o={};return t.forEach((function(t,i){for(var a=r?0:i+1,d=e[i].id,s=a;s<n;s++)if(i!==s){var u=e[s].id,c=t[s];o["".concat(d,"-").concat(u)]=c,r||(o["".concat(u,"-").concat(d)]=c)}})),o},ce=function(e,t,r,n,o,i,a,d,s,u,c){var f,h="".concat(t.id,"-").concat(r.id);if(u&&u[h])return u[h];var l=c?c[h]:void 0;if(!l){var p=((f={})[h]={start:n[t.id].idx,end:n[r.id].idx,distance:o},f);l=(c=ie(p,i,e,c))[h]}return ae(l,a,d,s)},fe=function(e,t,r,n){var o,i,a,d=null===(o=e[t])||void 0===o?void 0:o.degree,s=null===(i=e[t])||void 0===i?void 0:i.inDegree,u=null===(a=e[t])||void 0===a?void 0:a.outDegree;return void 0===e[t]&&(d=1/0,s=1/0,u=1/0,n[t].forEach((function(e){var t=r[e.id].degree;d>t&&(d=t);var n=r[e.id].inDegree;s>n&&(s=n);var o=r[e.id].outDegree;u>o&&(u=o)})),e[t]={degree:d,inDegree:s,outDegree:u}),{minPatternNodeLabelDegree:d,minPatternNodeLabelInDegree:s,minPatternNodeLabelOutDegree:u}};const he=function(e,t,r,n,o,i,a){var d;if(void 0===r&&(r=!1),void 0===i&&(i="cluster"),void 0===a&&(a="cluster"),e&&e.nodes){var s=e.nodes.length;if(s){var u=S(e,r),c=S(t,r),f=ue(e.nodes,u,r),h=ue(t.nodes,c,r),l=de(e.nodes,i),p=l.nodeMap,v=l.nodeLabelMap,g=de(t.nodes,i),b=g.nodeMap,E=g.nodeLabelMap;se(e.edges,a,p);var y=se(t.edges,a,b).edgeLabelMap,L=[];null==c||c.forEach((function(e){L=L.concat(e)})),o||(o=Math.max.apply(Math,m(m([],L,!1),[2],!1))),n||(n=o);var N=ne(e,u,i,n),w=ne(t,c,i,n),M=function(e,t,r,n,o){var i=Math.ceil(r/t),a={},d=0;return n.forEach((function(e,n){for(var s=0,u=0,c=e.nodeIdxs,f=e.neighborNum-1;s<i;){for(var h=c[1+Math.floor(Math.random()*f)],l=0;(a["".concat(n,"-").concat(h)]||a["".concat(h,"-").concat(n)])&&(h=Math.floor(Math.random()*t),!(++l>2*t)););if(l<2*t&&(a["".concat(n,"-").concat(h)]={start:n,end:h,distance:o[n][h]},s++,++d>=r))return a;if(++u>2*t)break}s<i&&(i=(i+(i-s))/(t-n-1))})),a}(0,s,Math.min(100,s*(s-1)/2),w,u),I=ie(M,N,e),j=function(e){var t=e.graphs,r=e.directed,n=void 0!==r&&r,o=e.nodeLabelProp,i=void 0===o?re:o,a=e.edgeLabelProp,d=void 0===a?re:a,s=function(e,t,r,n){var o={};return Object.keys(e).forEach((function(i,a){var d=e[i],s=new X(a,!0,t),u={};d.nodes.forEach((function(e,t){s.addNode(t,e[r]),u[e.id]=t})),d.edges.forEach((function(e,t){var r=u[e.source],o=u[e.target];s.addEdge(-1,r,o,e[n])})),s&&s.getNodeNum()&&(o[s.id]=s)})),o}(t,n,i,d),u=e.minSupport,c=e.maxNodeNum,f=e.minNodeNum,h=e.verbose,l=e.top,p=new te({graphs:s,minSupport:u,maxNodeNum:c,minNodeNum:f,top:l,verbose:h,directed:n});p.run();var v=function(e,t,r){var n=[];return e.forEach((function(e){var o={nodes:[],edges:[]};e.nodes.forEach((function(e){var r;o.nodes.push(((r={id:"".concat(e.id)})[t]=e.label,r))})),e.edges.forEach((function(e){var t;o.edges.push(((t={source:"".concat(e.from),target:"".concat(e.to)})[r]=e.label,t))})),n.push(o)})),n}(p.frequentSubgraphs,i,d);return v}({graphs:I,nodeLabelProp:i,edgeLabelProp:a,minSupport:1,minNodeNum:1,maxNodeNum:4,directed:r}).slice(0,10),x=j.length,O=[];j.forEach((function(e,t){O[t]={},Object.keys(I).forEach((function(r){var n=I[r],o=ae(n,e,i,a);O[t][r]=o}))}));var D=function(e,t,r){for(var n=1/0,o=0,i=function(t){var r=e[t],i=Object.keys(r).sort((function(e,t){return r[e]-r[t]})),a=[];i.forEach((function(e,t){a[t%10]||(a[t%10]={graphs:[],totalCount:0,aveCount:0}),a[t%10].graphs.push(e),a[t%10].totalCount+=r[e]}));var d=0,s=[];a.forEach((function(e){var t=e.totalCount/e.graphs.length;e.aveCount=t,s.push(t);var n=0,o=e.length;e.graphs.forEach((function(t,o){var i=r[t];e.graphs.forEach((function(e,t){o!==t&&(n+=Math.abs(i-r[e]))}))})),d+=n/=o*(o-1)/2})),d/=a.length;var u=0;s.forEach((function(e,t){s.forEach((function(r,n){t!==n&&(u+=Math.abs(e-r))})),u/=s.length*(s.length-1)/2}));var c=u-d;n<c&&(n=c,o=t)},a=0;a<t;a++)i(a);return{structure:r[o],structureCountMap:e[o]}}(O,x,j),P=D.structure,C=D.structureCountMap,T=t.nodes[0],q=[],F=null===(d=t.nodes[0])||void 0===d?void 0:d[i],A=-1/0;t.nodes.forEach((function(e){var t=e[i],r=v[t];(null==r?void 0:r.length)>A&&(A=r.length,q=r,F=t,T=e)}));var R={},U={},G={},z={},_={},B={};Object.keys(E).forEach((function(n,o){_[n]=[],r&&(B[n]=[]);var d=-1/0,s=E[n],u={};s.forEach((function(e){var t=h["".concat(T.id,"-").concat(e.id)];if(t&&_[n].push(t),d<t&&(d=t),u["".concat(T.id,"-").concat(e.id)]={start:0,end:b[e.id].idx,distance:t},r){var o=h["".concat(e.id,"-").concat(T.id)];o&&B[n].push(o)}})),_[n]=_[n].sort((function(e,t){return e-t})),r&&(B[n]=B[n].sort((function(e,t){return e-t}))),U=ie(u,w,t,U);var c=[];if(Object.keys(u).forEach((function(e){if(G[e])c.push(G[e]);else{var t=U[e];G[e]=ae(t,P,i,a),c.push(G[e])}})),c=c.sort((function(e,t){return t-e})),z["".concat(T.id,"-").concat(n)]=c,n!==F)for(var l=function(t){var r=q[t],o=N[p[r.id].idx],d=o.nodeLabelCountMap[n],s=E[n].length;if(!d||d.count<s)return q.splice(t,1),"continue";for(var u=!1,h=0;h<s;h++)if(d.dists[h]>_[n][h]){u=!0;break}if(u)return q.splice(t,1),"continue";var l={};o.neighbors.forEach((function(e){var t=f["".concat(r.id,"-").concat(e.id)];l["".concat(r.id,"-").concat(e.id)]={start:p[r.id].idx,end:p[e.id].idx,distance:t}})),I=ie(l,N,e,I);var v=[];Object.keys(l).forEach((function(e){if(C[e])v.push(C[e]);else{var t=I[e];C[e]=ae(t,P,i,a),v.push(C[e])}})),v=v.sort((function(e,t){return t-e}));var g=!1;for(h=0;h<s;h++)if(v[h]<c[h]){g=!0;break}return g?(q.splice(t,1),"continue"):void 0},v=((null==q?void 0:q.length)||0)-1;v>=0;v--)l(v)}));var H=[];null==q||q.forEach((function(n){for(var d=p[n.id].idx,s=oe(e.nodes,u[d],d,i,o).neighbors,c=!1,h=s.length-1;h>=0;h--){if(s.length+1<t.nodes.length)return void(c=!0);var l=s[h],v=l[i];if(E[v]&&E[v].length)if(_[v]&&_[v].length){var g="".concat(n.id,"-").concat(l.id),m=f[g],y=_[v].length-1;if(m>_[v][y])s.splice(h,1);else{if(r){var L="".concat(l.id,"-").concat(n.id),w=f[L];if(y=B[v].length-1,w>B[v][y]){s.splice(h,1);continue}}var M=C[g]?C[g]:ce(e,n,l,p,m,N,P,i,a,C,I),j="".concat(T.id,"-").concat(v);if(M<z[j][z[j].length-1])s.splice(h,1);else{var k=fe(R,v,b,E),x=k.minPatternNodeLabelDegree;k.minPatternNodeLabelInDegree,k.minPatternNodeLabelOutDegree,p[l.id].degree<x&&s.splice(h,1)}}}else s.splice(h,1);else s.splice(h,1)}c||H.push({nodes:[n].concat(s)})}));var W=k(t,T.id,!1).length,$={};r?(Object.keys(W).forEach((function(e){var t=b[e].node[i];$[t]?$[t].push(W[e]):$[t]=[W[e]]})),Object.keys($).forEach((function(e){$[e].sort((function(e,t){return e-t}))}))):$=_;for(var K=function(n){var o=H[n],d=o.nodes[0],s={},u={};o.nodes.forEach((function(e,t){u[e.id]={idx:t,node:e,degree:0,inDegree:0,outDegree:0};var r=e[i];s[r]?s[r]++:s[r]=1}));var c=[],f={};e.edges.forEach((function(e){u[e.source]&&u[e.target]&&(c.push(e),f[e[a]]?f[e[a]]++:f[e[a]]=1,u[e.source].degree++,u[e.target].degree++,u[e.source].outDegree++,u[e.target].inDegree++)}));for(var h=Object.keys(y).length,l=!1,v=0;v<h;v++){var g=Object.keys(y)[v];if(!f[g]||f[g]<y[g].length){l=!0;break}}if(l)return H.splice(n,1),"continue";var m=c.length;if(m<t.edges.length)return H.splice(n,1),"break";var L=!1,N=function(e){var t=c[e],n=t[a],o=y[n];if(!o||!o.length)return f[n]--,o&&f[n]<o.length?(L=!0,"break"):(c.splice(e,1),u[t.source].degree--,u[t.target].degree--,u[t.source].outDegree--,u[t.target].inDegree--,"continue");var d=u[t.source].node[i],s=u[t.target].node[i],h=!1;return o.forEach((function(e){var t=b[e.source].node,n=b[e.target].node;t[i]===d&&n[i]===s&&(h=!0),r||t[i]!==s||n[i]!==d||(h=!0)})),h?void 0:(f[n]--,o&&f[n]<o.length?(L=!0,"break"):(c.splice(e,1),u[t.source].degree--,u[t.target].degree--,u[t.source].outDegree--,u[t.target].inDegree--,"continue"))};for(v=m-1;v>=0&&"break"!==N(v);v--);if(L)return H.splice(n,1),"continue";o.edges=c;var w=k(o,o.nodes[0].id,!1).length;if(Object.keys(w).reverse().forEach((function(e){if(e!==o.nodes[0].id&&!L){if(w[e]===1/0){var t=u[e].node[i];if(s[t]--,s[t]<E[t].length)return void(L=!0);var r=o.nodes.indexOf(u[e].node);return o.nodes.splice(r,1),void(u[e]=void 0)}var n=p[e].node[i];if(!$[n]||!$[n].length||w[e]>$[n][$[n].length-1]){if(t=u[e].node[i],s[t]--,s[t]<E[t].length)return void(L=!0);r=o.nodes.indexOf(u[e].node),o.nodes.splice(r,1),u[e]=void 0}}})),L)return H.splice(n,1),"continue";for(var M=!0,I=0;M&&!L;){if(M=!1,r?u[d.id].degree<b[T.id].degree||u[d.id].inDegree<b[T.id].inDegree||u[d.id].outDegree<b[T.id].outDegree:u[d.id].degree<b[T.id].degree){L=!0;break}if(s[d[i]]<E[d[i]].length){L=!0;break}for(var j=o.nodes.length-1;j>=0;j--){var x=o.nodes[j],O=u[x.id].degree,D=u[x.id].inDegree,S=u[x.id].outDegree,P=x[i],C=fe(R,P,b,E),q=C.minPatternNodeLabelDegree,F=C.minPatternNodeLabelInDegree,A=C.minPatternNodeLabelOutDegree;if(r?O<q||D<F||S<A:O<q){if(s[x[i]]--,s[x[i]]<E[x[i]].length){L=!0;break}o.nodes.splice(j,1),u[x.id]=void 0,M=!0}}if(L||!M&&0!==I)break;for(var U=(m=c.length)-1;U>=0;U--){var G=c[U];if(!u[G.source]||!u[G.target]){c.splice(U,1);var z=G[a];if(f[z]--,u[G.source]&&(u[G.source].degree--,u[G.source].outDegree--),u[G.target]&&(u[G.target].degree--,u[G.target].inDegree--),y[z]&&f[z]<y[z].length){L=!0;break}M=!0}}I++}return L||L||o.nodes.length<t.nodes.length||c.length<t.edges.length?(H.splice(n,1),"continue"):void 0},V=H.length-1;V>=0&&"break"!==K(V);V--);var J=H.length,Q=function(e){var t=H[e],r={};t.edges.forEach((function(e){var t="".concat(e.source,"-").concat(e.target,"-").concat(e.label);r[t]?r[t]++:r[t]=1}));for(var n=function(e){var t=H[e],n={};t.edges.forEach((function(e){var t="".concat(e.source,"-").concat(e.target,"-").concat(e.label);n[t]?n[t]++:n[t]=1}));var o=!0;Object.keys(n).length!==Object.keys(r).length?o=!1:Object.keys(r).forEach((function(e){n[e]!==r[e]&&(o=!1)})),o&&H.splice(e,1)},o=J-1;o>e;o--)n(o);J=H.length};for(V=0;V<=J-1;V++)Q(V);return H}}};var le="undefined"!=typeof self?self:{};le.onmessage=function(e){var r=e.data,n=r._algorithmType,o=r.data;if(n)if("function"!=typeof t[n])le.postMessage({_algorithmType:"FAILURE"});else{var i=t[n].apply(t,o);le.postMessage({_algorithmType:"SUCCESS",data:i})}}})();\n//# sourceMappingURL=index.worker.js.map',"Worker",void 0,r.p+"index.worker.js")}const a=function(t){return function(){for(var r=[],n=0;n<arguments.length;n++)r[n]=arguments[n];return new Promise((function(n,o){var a=new i;a.postMessage({_algorithmType:t,data:r}),a.onmessage=function(t){var r=t.data,i=r.data,d=r._algorithmType;e===d?n(i):o(),a.terminate()}}))}};var d=function(e){return a("detectCycle")(e)};const s={getAdjMatrixAsync:function(e,t){return a("getAdjMatrix").apply(void 0,[e,t])},connectedComponentAsync:function(e,t){return a("connectedComponent").apply(void 0,[e,t])},getDegreeAsync:function(e){return a("getDegree")(e)},getInDegreeAsync:function(e,t){return a("getInDegree")(e,t)},getOutDegreeAsync:function(e,t){return a("getOutDegree")(e,t)},detectCycleAsync:d,detectDirectedCycleAsync:d,detectAllCyclesAsync:function(e){return a("detectAllCycles")(e)},detectAllDirectedCycleAsync:function(e){return a("detectAllDirectedCycle")(e)},detectAllUndirectedCycleAsync:function(e){return a("detectAllUndirectedCycle")(e)},dijkstraAsync:function(e,t,r,n){return a("dijkstra").apply(void 0,[e,t,r,n])},findAllPathAsync:function(e,t,r,n){return a("findAllPath").apply(void 0,[e,t,r,n])},findShortestPathAsync:function(e,t,r,n,o){return a("findShortestPath").apply(void 0,[e,t,r,n,o])},floydWarshallAsync:function(e,t){return a("floydWarshall").apply(void 0,[e,t])},labelPropagationAsync:function(e,t,r,n){return void 0===n&&(n=1e3),a("labelPropagation")(e,t,r,n)},louvainAsync:function(e,t,r,n){return a("louvain")(e,t,r,n)},minimumSpanningTreeAsync:function(e,t,r){return a("minimumSpanningTree").apply(void 0,[e,t,r])},pageRankAsync:function(e,t,r){return a("pageRank").apply(void 0,[e,t,r])},getNeighborsAsync:function(e,t,r){return a("getNeighbors").apply(void 0,[e,t,r])},GADDIAsync:function(e,t,r,n,o,i,d){return void 0===r&&(r=!1),void 0===i&&(i="cluster"),void 0===d&&(d="cluster"),a("GADDI").apply(void 0,[e,t,r,n,o,i,d])}}})(),n.default})()})); | ||
//# sourceMappingURL=async.min.js.map |
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Algorithm=t():e.Algorithm=t()}(this,(function(){return(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{default:()=>de});const r=function(e,t){var r=e.nodes,n=e.edges,o=[],i={};if(!r)throw new Error("invalid nodes data!");return r&&r.forEach((function(e,t){i[e.id]=t,o.push([])})),n&&n.forEach((function(e){var r=e.source,n=e.target,a=i[r],d=i[n];!a&&0!==a||!d&&0!==d||(o[a][d]=1,t||(o[d][a]=1))})),o};var n=function(e,t){return e===t},o=function(){function e(e,t){void 0===t&&(t=null),this.value=e,this.next=t}return e.prototype.toString=function(e){return e?e(this.value):"".concat(this.value)},e}();const i=function(){function e(e){void 0===e&&(e=n),this.head=null,this.tail=null,this.compare=e}return e.prototype.prepend=function(e){var t=new o(e,this.head);return this.head=t,this.tail||(this.tail=t),this},e.prototype.append=function(e){var t=new o(e);return this.head?(this.tail.next=t,this.tail=t,this):(this.head=t,this.tail=t,this)},e.prototype.delete=function(e){if(!this.head)return null;for(var t=null;this.head&&this.compare(this.head.value,e);)t=this.head,this.head=this.head.next;var r=this.head;if(null!==r)for(;r.next;)this.compare(r.next.value,e)?(t=r.next,r.next=r.next.next):r=r.next;return this.compare(this.tail.value,e)&&(this.tail=r),t},e.prototype.find=function(e){var t=e.value,r=void 0===t?void 0:t,n=e.callback,o=void 0===n?void 0:n;if(!this.head)return null;for(var i=this.head;i;){if(o&&o(i.value))return i;if(void 0!==r&&this.compare(i.value,r))return i;i=i.next}return null},e.prototype.deleteTail=function(){var e=this.tail;if(this.head===this.tail)return this.head=null,this.tail=null,e;for(var t=this.head;t.next;)t.next.next?t=t.next:t.next=null;return this.tail=t,e},e.prototype.deleteHead=function(){if(!this.head)return null;var e=this.head;return this.head.next?this.head=this.head.next:(this.head=null,this.tail=null),e},e.prototype.fromArray=function(e){var t=this;return e.forEach((function(e){return t.append(e)})),this},e.prototype.toArray=function(){for(var e=[],t=this.head;t;)e.push(t),t=t.next;return e},e.prototype.reverse=function(){for(var e=this.head,t=null,r=null;e;)r=e.next,e.next=t,t=e,e=r;this.tail=this.head,this.head=t},e.prototype.toString=function(e){return void 0===e&&(e=void 0),this.toArray().map((function(t){return t.toString(e)})).toString()},e}(),a=function(){function e(){this.linkedList=new i}return e.prototype.isEmpty=function(){return!this.linkedList.head},e.prototype.peek=function(){return this.linkedList.head?this.linkedList.head.value:null},e.prototype.enqueue=function(e){this.linkedList.append(e)},e.prototype.dequeue=function(){var e=this.linkedList.deleteHead();return e?e.value:null},e.prototype.toString=function(e){return this.linkedList.toString(e)},e}();var d=function(e,t,r){void 0===t&&(t=[]);var n=t.filter((function(t){return t.source===e||t.target===e}));return"target"===r?n.filter((function(t){return t.source===e})).map((function(e){return e.target})):"source"===r?n.filter((function(t){return t.target===e})).map((function(e){return e.source})):n.map((function(t){return t.source===e?t.target:t.source}))},s=function(e,t){return t.filter((function(t){return t.source===e||t.target===e}))},u=function(e){void 0===e&&(e=0);var t="".concat(Math.random()).split(".")[1].substr(0,5),r="".concat(Math.random()).split(".")[1].substr(0,5);return"".concat(e,"-").concat(t).concat(r)};var c=function(e){for(var t=e.nodes,r=void 0===t?[]:t,n=e.edges,o=void 0===n?[]:n,i=[],a={},s={},u={},c=[],f=0,h=function(e){s[e.id]=f,u[e.id]=f,f+=1,i.push(e),a[e.id]=!0;for(var t=d(e.id,o,"target").filter((function(e){return r.map((function(e){return e.id})).indexOf(e)>-1})),n=function(n){var o=t[n];if(s[o]||0===s[o])a[o]&&(u[e.id]=Math.min(u[e.id],s[o]));else{var i=r.filter((function(e){return e.id===o}));i.length>0&&h(i[0]),u[e.id]=Math.min(u[e.id],u[o])}},l=0;l<t.length;l++)n(l);if(u[e.id]===s[e.id]){for(var p=[];i.length>0;){var v=i.pop();if(a[v.id]=!1,p.push(v),v===e)break}p.length>0&&c.push(p)}},l=0,p=r;l<p.length;l++){var v=p[l];s[v.id]||0===s[v.id]||h(v)}return c};function f(e,t){return t?c(e):function(e){for(var t=e.nodes,r=void 0===t?[]:t,n=e.edges,o=void 0===n?[]:n,i=[],a={},s=[],u=function(e){s.push(e),a[e.id]=!0;for(var t=d(e.id,o),n=function(e){var n=t[e];if(!a[n]){var o=r.filter((function(e){return e.id===n}));o.length>0&&u(o[0])}},i=0;i<t.length;++i)n(i)},c=0;c<r.length;c++){var f=r[c];if(!a[f.id]){u(f);for(var h=[];s.length>0;)h.push(s.pop());i.push(h)}}return i}(e)}var h=function(e){var t={},r=e.nodes,n=void 0===r?[]:r,o=e.edges,i=void 0===o?[]:o;return n.forEach((function(e){t[e.id]={degree:0,inDegree:0,outDegree:0}})),i.forEach((function(e){t[e.source].degree++,t[e.source].outDegree++,t[e.target].degree++,t[e.target].inDegree++})),t};const l=h;function p(e,t,r,n){n.enter({current:t,previous:r});var o=e.edges;d(t,void 0===o?[]:o,"target").forEach((function(o){n.allowTraversal({previous:r,current:t,next:o})&&p(e,o,t,n)})),n.leave({current:t,previous:r})}function v(e,t,r){p(e,t,"",function(e){void 0===e&&(e={});var t,r=e,n=function(){},o=(t={},function(e){var r=e.next;return!t[r]&&(t[r]=!0,!0)});return r.allowTraversal=e.allowTraversal||o,r.enter=e.enter||n,r.leave=e.leave||n,r}(r))}var g=function(e,t,r){var n,o;void 0===r&&(r=!0);for(var i=[],a=0,s=f(e,!1);a<s.length;a++){var u=s[a];if(u.length)for(var c=u[0],h=c.id,l=[c],p=((n={})[h]=c,n),v=((o={})[h]=new Set,o);l.length>0;)for(var g=l.pop(),b=g.id,E=d(b,e.edges),m=function(n){var o,a=E[n],d=e.nodes.find((function(e){return e.id===a}));if(a===b)i.push(((o={})[a]=g,o));else if(a in v){if(!v[b].has(d)){for(var s=!0,u=[d,g],c=p[b];v[a].size&&!v[a].has(c)&&(u.push(c),c!==p[c.id]);)c=p[c.id];if(u.push(c),t&&r?(s=!1,u.findIndex((function(e){return t.indexOf(e.id)>-1}))>-1&&(s=!0)):t&&!r&&u.findIndex((function(e){return t.indexOf(e.id)>-1}))>-1&&(s=!1),s){for(var f={},h=1;h<u.length;h+=1)f[u[h-1].id]=u[h];u.length&&(f[u[u.length-1].id]=u[0]),i.push(f)}v[a].add(g)}}else p[a]=g,l.push(d),v[a]=new Set([g])},y=0;y<E.length;y+=1)m(y)}return i},b=function(e,t,r){void 0===r&&(r=!0);for(var n=[],o=new Set,i=[],a=[],s={},u={},f=function(e,d,u){var c=!1;if(t&&!1===r&&t.indexOf(e.id)>-1)return c;n.push(e),o.add(e);for(var h=u[e.id],l=0;l<h.length;l+=1)if((g=s[h[l]])===d){for(var p={},v=1;v<n.length;v+=1)p[n[v-1].id]=n[v];n.length&&(p[n[n.length-1].id]=n[0]),a.push(p),c=!0}else o.has(g)||f(g,d,u)&&(c=!0);if(c)!function(e){for(var t=[e];t.length>0;){var r=t.pop();o.has(r)&&(o.delete(r),i[r.id].forEach((function(e){t.push(e)})),i[r.id].clear())}}(e);else for(l=0;l<h.length;l+=1){var g=s[h[l]];i[g.id].has(e)||i[g.id].add(e)}return n.pop(),c},h=e.nodes,l=void 0===h?[]:h,p=0;p<l.length;p+=1){var v=l[p],g=v.id;u[g]=p,s[p]=v}if(t&&r){var b=function(e){var r=t[e];u[l[e].id]=u[r],u[r]=0,s[0]=l.find((function(e){return e.id===r})),s[u[l[e].id]]=l[e]};for(p=0;p<t.length;p++)b(p)}for(var E=function(n){for(var o,i,s=1/0,c=0;c<n.length;c+=1)for(var f=n[c],h=0;h<f.length;h++){var l=u[f[h].id];l<s&&(s=l,i=c)}var p=n[i],v=[];for(c=0;c<p.length;c+=1){var g=p[c];v[g.id]=[];for(var b=0,E=d(g.id,e.edges,"target").filter((function(e){return p.map((function(e){return e.id})).indexOf(e)>-1}));b<E.length;b++){var m=E[b];m!==g.id||!1===r&&t.indexOf(g.id)>-1?v[g.id].push(u[m]):a.push(((o={})[g.id]=g,o))}}return{component:p,adjList:v,minIdx:s}},m=0;m<l.length;){var y=l.filter((function(e){return u[e.id]>=m})),L=c({nodes:y,edges:e.edges}).filter((function(e){return e.length>1}));if(0===L.length)break;var N=E(L),w=N.minIdx,k=N.adjList,x=N.component;if(!(x.length>1))break;x.forEach((function(e){i[e.id]=new Set}));var I=s[w];if(t&&r&&-1===t.indexOf(I.id))return a;f(I,I,k),m=w+1}return a};const E=function(e){var t=null,r=e.nodes,n={},o={},i={},a={};(void 0===r?[]:r).forEach((function(e){o[e.id]=e}));for(var d={enter:function(e){var r=e.current,a=e.previous;if(i[r]){t={};for(var d=r,s=a;s!==r;)t[d]=s,d=s,s=n[s];t[d]=s}else i[r]=r,delete o[r],n[r]=a},leave:function(e){var t=e.current;a[t]=t,delete i[t]},allowTraversal:function(e){var r=e.next;return!t&&!a[r]}};Object.keys(o).length;)v(e,Object.keys(o)[0],d);return t};function m(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))}Object.create,Object.create;var y={}.toString;const L=function(e,t){return y.call(e)==="[object "+t+"]"},N=function(e){return L(e,"Function")},w=function(e){return Array.isArray?Array.isArray(e):L(e,"Array")};Object.keys;var k=Array.prototype;k.splice,k.indexOf,Array.prototype.splice,Object.prototype.hasOwnProperty;Number.isInteger&&Number.isInteger,Math.PI,parseInt,Math.PI;Object.values;Object.prototype;const x=function e(t){if("object"!=typeof t||null===t)return t;var r;if(w(t)){r=[];for(var n=0,o=t.length;n<o;n++)"object"==typeof t[n]&&null!=t[n]?r[n]=e(t[n]):r[n]=t[n]}else for(var i in r={},t)"object"==typeof t[i]&&null!=t[i]?r[i]=e(t[i]):r[i]=t[i];return r};var I;Object.prototype.hasOwnProperty,Object.prototype.hasOwnProperty,function(e,t){if(!N(e))throw new TypeError("Expected a function");new Map}((function(e,t){void 0===t&&(t={});var r,n=t.fontSize,o=t.fontFamily,i=t.fontWeight,a=t.fontStyle,d=t.fontVariant;return I||(I=document.createElement("canvas").getContext("2d")),I.font=[a,d,i,n+"px",o].join(" "),I.measureText((r=e,L(r,"String")?e:"")).width})),function(){function e(){this.map={}}e.prototype.has=function(e){return void 0!==this.map[e]},e.prototype.get=function(e,t){var r=this.map[e];return void 0===r?t:r},e.prototype.set=function(e,t){this.map[e]=t},e.prototype.clear=function(){this.map={}},e.prototype.delete=function(e){delete this.map[e]},e.prototype.size=function(){return Object.keys(this.map).length}}();const j=function(e,t,r,n){var o=e.nodes,i=void 0===o?[]:o,a=e.edges,d=void 0===a?[]:a,u=[],c={},f={},h={};i.forEach((function(e,r){var n=e.id;u.push(n),f[n]=1/0,n===t&&(f[n]=0)}));for(var l=i.length,p=function(e){var t=function(e,t,r){for(var n,o=1/0,i=0;i<t.length;i++){var a=t[i].id;!r[a]&&e[a]<=o&&(o=e[a],n=t[i])}return n}(f,i,c),o=t.id;if(c[o]=!0,f[o]===1/0)return"continue";var a=[];a=r?function(e,t){return t.filter((function(t){return t.source===e}))}(o,d):s(o,d),a.forEach((function(e){var r=e.target,i=e.source,a=r===o?i:r,d=n&&e[n]?e[n]:1;f[a]>f[t.id]+d?(f[a]=f[t.id]+d,h[a]=[t.id]):f[a]===f[t.id]+d&&h[a].push(t.id)}))},v=0;v<l;v++)p();h[t]=[t];var g={};for(var b in f)f[b]!==1/0&&M(t,b,h,g);var E={};for(var b in g)E[b]=g[b][0];return{length:f,path:E,allPath:g}};function M(e,t,r,n){if(e===t)return[e];if(n[t])return n[t];for(var o=[],i=0,a=r[t];i<a.length;i++){var d=M(e,a[i],r,n);if(!d)return;for(var s=0,u=d;s<u.length;s++){var c=u[s];w(c)?o.push(m(m([],c,!0),[t],!1)):o.push([c,t])}}return n[t]=o,n[t]}const O=function(e,t){for(var n=r(e,t),o=[],i=n.length,a=0;a<i;a+=1){o[a]=[];for(var d=0;d<i;d+=1)a===d?o[a][d]=0:0!==n[a][d]&&n[a][d]?o[a][d]=n[a][d]:o[a][d]=1/0}for(var s=0;s<i;s+=1)for(a=0;a<i;a+=1)for(d=0;d<i;d+=1)o[a][d]>o[a][s]+o[s][d]&&(o[a][d]=o[a][s]+o[s][d]);return o};const D=function(){function e(e){this.arr=e}return e.prototype.add=function(t){var r,n=t.arr;if(!(null===(r=this.arr)||void 0===r?void 0:r.length))return new e(n);if(!(null==n?void 0:n.length))return new e(this.arr);if(this.arr.length===n.length){var o=[];for(var i in this.arr)o[i]=this.arr[i]+n[i];return new e(o)}},e.prototype.subtract=function(t){var r,n=t.arr;if(!(null===(r=this.arr)||void 0===r?void 0:r.length))return new e(n);if(!(null==n?void 0:n.length))return new e(this.arr);if(this.arr.length===n.length){var o=[];for(var i in this.arr)o[i]=this.arr[i]-n[i];return new e(o)}},e.prototype.avg=function(t){var r=[];for(var n in this.arr)r[n]=this.arr[n]/t;return new e(r)},e.prototype.negate=function(){var t=[];for(var r in this.arr)t[r]=-this.arr[r];return new e(t)},e.prototype.squareEuclideanDistance=function(e){var t,r=e.arr;if(!(null===(t=this.arr)||void 0===t?void 0:t.length)||!(null==r?void 0:r.length))return 0;if(this.arr.length===r.length){var n=0;for(var o in this.arr)n+=Math.pow(this.arr[o]-e.arr[o],2);return n}},e.prototype.normalize=function(){var t=[],r=x(this.arr);r.sort((function(e,t){return e-t}));var n=r[r.length-1],o=r[0];for(var i in this.arr)t[i]=(this.arr[i]-o)/(n-o);return new e(t)},e}();var S=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/,P=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/,C=function(e,t,r,n){for(var o=t.length,i=2*n,a=0,d=0;d<o;d++)for(var s=e[d].clusterId,u=0;u<o;u++)s===e[u].clusterId&&(a+=(t[d][u]||0)-(r[d]||0)*(r[u]||0)/i);return a*(1/i)},A=function(e,t){return t.map((function(t){if(e.hasOwnProperty(t)){if(!isNaN(Number(e[t])))return Number(e[t]);if(e[t].match(S)||e[t].match(P))return Number(Date.parse(new Date(e[t])))/1e3}return 0}))},T=function(e,t){void 0===e&&(e=[]);for(var r=e.length,n=new D([]),o=0;o<r;o++)n=n.add(new D(t[o]));var i=n.avg(r);i.normalize();var a=0;for(o=0;o<r;o++)a+=(s=new D(t[o])).squareEuclideanDistance(i);var d=[];for(e.forEach((function(){d.push([])})),o=0;o<r;o++){var s=new D(t[o]);e[o].clusterInertial=0;for(var u=0;u<r;u++)if(o!==u){var c=new D(t[u]);d[o][u]=s.squareEuclideanDistance(c),e[o].clusterInertial+=d[o][u]}else d[o][u]=0}var f=0,h=2*r*a;for(o=0;o<r;o++){var l=e[o].clusterId;for(u=0;u<r;u++){var p=e[u].clusterId;o!==u&&l===p&&(f+=e[o].clusterInertial*e[u].clusterInertial/Math.pow(h,2)-d[o][u]/h)}}return Number(f.toFixed(4))};const q=function(e,t,n,o,i,a){void 0===t&&(t=!1),void 0===n&&(n="weight"),void 0===o&&(o=1e-4),void 0===i&&(i=!1),void 0===a&&(a=1);var d=e.nodes,s=void 0===d?[]:d,u=e.edges,c=void 0===u?[]:u,f=[];if(i){s.forEach((function(e,t){e.properties=e.properties||{},e.originIndex=t}));var h=[];s.every((function(e){return e.hasOwnProperty("nodeType")}))&&(h=Array.from(new Set(s.map((function(e){return e.nodeType})))),s.forEach((function(e){e.properties.nodeType=h.findIndex((function(t){return t===e.nodeType}))})));var l=function(e){void 0===e&&(e=[]);var t={};e.forEach((function(e){Object.keys(e.properties).forEach((function(r){!"".concat(e.properties[r]).match(S)&&!"".concat(e.properties[r]).match(P)&&isNaN(Number(e.properties[r]))||"id"===r?t.hasOwnProperty(r)&&delete t[r]:t.hasOwnProperty(r)?t[r]+=1:t[r]=1}))}));var r=Object.keys(t).sort((function(e,r){return t[r]-t[e]}));return r.length<100?r:r.slice(0,100)}(s);f=function(e,t){for(var r=[],n=0;n<t.length;n++)r[n]=A(t[n].properties,e);return r}(l,s)}var p=1,v={},g={};s.forEach((function(e,t){var r=String(p++);e.clusterId=r,v[r]={id:r,nodes:[e]},g[e.id]={node:e,idx:t}}));var b=r(e,t),E=[],m={},y=0;b.forEach((function(e,t){var r=0,n=s[t].id;m[n]={},e.forEach((function(e,t){if(e){r+=e;var o=s[t].id;m[n][o]=e,y+=e}})),E.push(r)})),y/=2;for(var L=1/0,N=1/0,w=0,k=[],I={};;){L=i&&s.every((function(e){return e.hasOwnProperty("properties")}))?C(s,b,E,y)+T(s,f)*a:C(s,b,E,y),0===w&&(N=L,k=s,I=v);var j=L>0&&L>N&&L-N<o;if(L>N&&(k=s.map((function(e){return{node:e,clusterId:e.clusterId}})),I=x(v),N=L),j||w>100)break;w++,Object.keys(v).forEach((function(e){var t=0;c.forEach((function(r){var o=r.source,i=r.target,a=g[o].node.clusterId,d=g[i].node.clusterId;(a===e&&d!==e||d===e&&a!==e)&&(t+=r[n]||1)})),v[e].sumTot=t})),s.forEach((function(e,t){var r,o=v[e.clusterId],d=0,s=E[t]/(2*y),u=0,h=o.nodes;h.forEach((function(e){var r=g[e.id].idx;u+=b[t][r]||0}));var l=u-o.sumTot*s,p=h.filter((function(t){return t.id!==e.id})),L=[];p.forEach((function(e,t){L[t]=f[e.originIndex]}));var N=T(p,f)*a,w=m[e.id];if(Object.keys(w).forEach((function(n){var o=g[n].node.clusterId;if(o!==e.clusterId){var u=v[o],c=u.nodes;if(c&&c.length){var h=0;c.forEach((function(e){var r=g[e.id].idx;h+=b[t][r]||0}));var p=h-u.sumTot*s,E=c.concat([e]),m=[];E.forEach((function(e,t){m[t]=f[e.originIndex]}));var y=T(E,f)*a,L=p-l;i&&(L=p+y-(l+N)),L>d&&(d=L,r=u)}}})),d>0){r.nodes.push(e);var k=e.clusterId;e.clusterId=r.id;var x=o.nodes.indexOf(e);o.nodes.splice(x,1);var I=0,j=0;c.forEach((function(e){var t=e.source,o=e.target,i=g[t].node.clusterId,a=g[o].node.clusterId;(i===r.id&&a!==r.id||a===r.id&&i!==r.id)&&(I+=e[n]||1),(i===k&&a!==k||a===k&&i!==k)&&(j+=e[n]||1)})),r.sumTot=I,o.sumTot=j}}))}var M={},O=0;Object.keys(I).forEach((function(e){var t=I[e];if(t.nodes&&t.nodes.length){var r=String(O+1);r!==e&&(t.id=r,t.nodes=t.nodes.map((function(e){return{id:e.id,clusterId:r}})),I[r]=t,M[e]=r,delete I[e],O++)}else delete I[e]})),k.forEach((function(e){var t=e.node,r=e.clusterId;t.clusterId=r,t.clusterId&&M[t.clusterId]&&(t.clusterId=M[t.clusterId])}));var D=[],q={};c.forEach((function(e){var t=e.source,r=e.target,o=e[n]||1,i=g[t].node.clusterId,a=g[r].node.clusterId,d="".concat(i,"---").concat(a);if(q[d])q[d].weight+=o,q[d].count++;else{var s={source:i,target:a,weight:o,count:1};q[d]=s,D.push(s)}}));var F=[];return Object.keys(I).forEach((function(e){F.push(I[e])})),{clusters:F,clusterEdges:D}},F=function(){function e(e){this.count=e.length,this.parent={};for(var t=0,r=e;t<r.length;t++){var n=r[t];this.parent[n]=n}}return e.prototype.find=function(e){for(;this.parent[e]!==e;)e=this.parent[e];return e},e.prototype.union=function(e,t){var r=this.find(e),n=this.find(t);r!==n&&(r<n?(this.parent[t]!==t&&this.union(this.parent[t],e),this.parent[t]=this.parent[e]):(this.parent[e]!==e&&this.union(this.parent[e],t),this.parent[e]=this.parent[t]))},e.prototype.connected=function(e,t){return this.find(e)===this.find(t)},e}();var R=function(e,t){return e-t};const G=function(){function e(e){void 0===e&&(e=R),this.compareFn=e,this.list=[]}return e.prototype.getLeft=function(e){return 2*e+1},e.prototype.getRight=function(e){return 2*e+2},e.prototype.getParent=function(e){return 0===e?null:Math.floor((e-1)/2)},e.prototype.isEmpty=function(){return this.list.length<=0},e.prototype.top=function(){return this.isEmpty()?void 0:this.list[0]},e.prototype.delMin=function(){var e=this.top(),t=this.list.pop();return this.list.length>0&&(this.list[0]=t,this.moveDown(0)),e},e.prototype.insert=function(e){if(null!==e){this.list.push(e);var t=this.list.length-1;return this.moveUp(t),!0}return!1},e.prototype.moveUp=function(e){for(var t=this.getParent(e);e&&e>0&&this.compareFn(this.list[t],this.list[e])>0;){var r=this.list[t];this.list[t]=this.list[e],this.list[e]=r,e=t,t=this.getParent(e)}},e.prototype.moveDown=function(e){var t,r=e,n=this.getLeft(e),o=this.getRight(e),i=this.list.length;null!==n&&n<i&&this.compareFn(this.list[r],this.list[n])>0?r=n:null!==o&&o<i&&this.compareFn(this.list[r],this.list[o])>0&&(r=o),e!==r&&(t=[this.list[r],this.list[e]],this.list[e]=t[0],this.list[r]=t[1],this.moveDown(r))},e}();var U=function(e,t){var r=[],n=e.nodes,o=void 0===n?[]:n,i=e.edges,a=void 0===i?[]:i;if(0===o.length)return r;var d=o[0],u=new Set;u.add(d);var c=new G((function(e,r){return t?e.weight-r.weight:0}));for(s(d.id,a).forEach((function(e){c.insert(e)}));!c.isEmpty();){var f=c.delMin(),h=f.source,l=f.target;u.has(h)&&u.has(l)||(r.push(f),u.has(h)||(u.add(h),s(h,a).forEach((function(e){c.insert(e)}))),u.has(l)||(u.add(l),s(l,a).forEach((function(e){c.insert(e)}))))}return r},z=function(e,t){var r=[],n=e.nodes,o=void 0===n?[]:n,i=e.edges,a=void 0===i?[]:i;if(0===o.length)return r;var d=a.map((function(e){return e}));t&&d.sort((function(e,t){return e.weight-t.weight}));for(var s=new F(o.map((function(e){return e.id})));d.length>0;){var u=d.shift(),c=u.source,f=u.target;s.connected(c,f)||(r.push(u),s.union(c,f))}return r};var B="-1",H=function(e,t,r,n){void 0===e&&(e=-1),void 0===t&&(t=-1),void 0===r&&(r=-1),void 0===n&&(n="-1"),this.id=e,this.from=t,this.to=r,this.label=n},W=function(){function e(e,t){void 0===e&&(e=-1),void 0===t&&(t=B),this.id=e,this.label=t,this.edges=[],this.edgeMap={}}return e.prototype.addEdge=function(e){this.edges.push(e),this.edgeMap[e.id]=e},e}(),$=function(){function e(e,t,r){void 0===e&&(e=-1),void 0===t&&(t=!0),void 0===r&&(r=!1),this.id=e,this.edgeIdAutoIncrease=t,this.edges=[],this.nodes=[],this.nodeMap={},this.edgeMap={},this.nodeLabelMap={},this.edgeLabelMap={},this.counter=0,this.directed=r}return e.prototype.getNodeNum=function(){return this.nodes.length},e.prototype.addNode=function(e,t){if(!this.nodeMap[e]){var r=new W(e,t);this.nodes.push(r),this.nodeMap[e]=r,this.nodeLabelMap[t]||(this.nodeLabelMap[t]=[]),this.nodeLabelMap[t].push(e)}},e.prototype.addEdge=function(e,t,r,n){if((this.edgeIdAutoIncrease||void 0===e)&&(e=this.counter++),!(this.nodeMap[t]&&this.nodeMap[r]&&this.nodeMap[r].edgeMap[e])){var o=new H(e,t,r,n);if(this.edges.push(o),this.edgeMap[e]=o,this.nodeMap[t].addEdge(o),this.edgeLabelMap[n]||(this.edgeLabelMap[n]=[]),this.edgeLabelMap[n].push(o),!this.directed){var i=new H(e,r,t,n);this.nodeMap[r].addEdge(i),this.edgeLabelMap[n].push(i)}}},e}(),K=function(){function e(e,t,r,n,o){this.fromNode=e,this.toNode=t,this.nodeEdgeNodeLabel={nodeLabel1:r||B,edgeLabel:n||"-1",nodeLabel2:o||B}}return e.prototype.equalTo=function(e){return this.fromNode===e.formNode&&this.toNode===e.toNode&&this.nodeEdgeNodeLabel===e.nodeEdgeNodeLabel},e.prototype.notEqualTo=function(e){return!this.equalTo(e)},e}(),V=function(){function e(){this.rmpath=[],this.dfsEdgeList=[]}return e.prototype.equalTo=function(e){var t=this.dfsEdgeList.length;if(t!==e.length)return!1;for(var r=0;r<t;r++)if(this.dfsEdgeList[r]!==e[r])return!1;return!0},e.prototype.notEqualTo=function(e){return!this.equalTo(e)},e.prototype.pushBack=function(e,t,r,n,o){return this.dfsEdgeList.push(new K(e,t,r,n,o)),this.dfsEdgeList},e.prototype.toGraph=function(e,t){void 0===e&&(e=-1),void 0===t&&(t=!1);var r=new $(e,!0,t);return this.dfsEdgeList.forEach((function(e){var t=e.fromNode,n=e.toNode,o=e.nodeEdgeNodeLabel,i=o.nodeLabel1,a=o.edgeLabel,d=o.nodeLabel2;i!==B&&r.addNode(t,i),d!==B&&r.addNode(n,d),i!==B&&d!==i&&r.addEdge(void 0,t,n,a)})),r},e.prototype.buildRmpath=function(){this.rmpath=[];for(var e=void 0,t=this.dfsEdgeList.length-1;t>=0;t--){var r=this.dfsEdgeList[t],n=r.fromNode,o=r.toNode;n<o&&(void 0===e||o===e)&&(this.rmpath.push(t),e=n)}return this.rmpath},e.prototype.getNodeNum=function(){var e={};return this.dfsEdgeList.forEach((function(t){e[t.fromNode]||(e[t.fromNode]=!0),e[t.toNode]||(e[t.toNode]=!0)})),Object.keys(e).length},e}(),J=function(){function e(e){if(this.his={},this.nodesUsed={},this.edgesUsed={},this.edges=[],e){for(;e;){var t=e.edge;this.edges.push(t),this.nodesUsed[t.from]=1,this.nodesUsed[t.to]=1,this.edgesUsed[t.id]=1,e=e.preNode}this.edges=this.edges.reverse()}}return e.prototype.hasNode=function(e){return 1===this.nodesUsed[e.id]},e.prototype.hasEdge=function(e){return 1===this.edgesUsed[e.id]},e}(),Q=function(){function e(e){var t=e.graphs,r=e.minSupport,n=void 0===r?2:r,o=e.minNodeNum,i=void 0===o?1:o,a=e.maxNodeNum,d=void 0===a?4:a,s=e.top,u=void 0===s?10:s,c=e.directed,f=void 0!==c&&c,h=e.verbose,l=void 0!==h&&h;this.graphs=t,this.dfsCode=new V,this.support=0,this.frequentSize1Subgraphs=[],this.frequentSubgraphs=[],this.minSupport=n,this.top=u,this.directed=f,this.counter=0,this.maxNodeNum=d,this.minNodeNum=i,this.verbose=l,this.maxNodeNum<this.minNodeNum&&(this.maxNodeNum=this.minNodeNum),this.reportDF=[]}return e.prototype.findForwardRootEdges=function(e,t){var r=this,n=[],o=e.nodeMap;return t.edges.forEach((function(e){(r.directed||t.label<=o[e.to].label)&&n.push(e)})),n},e.prototype.findBackwardEdge=function(e,t,r,n){if(!this.directed&&t===r)return null;for(var o=e.nodeMap,i=o[r.to].edges,a=i.length,d=0;d<a;d++){var s=i[d];if(!n.hasEdge(s)&&s.to===t.from)if(this.directed){if(o[t.from].label<o[r.to].label||o[t.from].label===o[r.to].label&&t.label<=s.label)return s}else if(t.label<s.label||t.label===s.label&&o[t.to].label<=o[r.to].label)return s}return null},e.prototype.findForwardPureEdges=function(e,t,r,n){for(var o=[],i=t.to,a=e.nodeMap[i].edges,d=a.length,s=0;s<d;s++){var u=a[s],c=e.nodeMap[u.to];r<=c.label&&!n.hasNode(c)&&o.push(u)}return o},e.prototype.findForwardRmpathEdges=function(e,t,r,n){for(var o=[],i=e.nodeMap,a=i[t.to].label,d=i[t.from].edges,s=d.length,u=0;u<s;u++){var c=d[u],f=i[c.to].label;t.to===c.to||r>f||n.hasNode(i[c.to])||(t.label<c.label||t.label===c.label&&a<=f)&&o.push(c)}return o},e.prototype.getSupport=function(e){var t={};return e.forEach((function(e){t[e.graphId]||(t[e.graphId]=!0)})),Object.keys(t).length},e.prototype.findMinLabel=function(e){var t=void 0;return Object.keys(e).forEach((function(r){var n=e[r],o=n.nodeLabel1,i=n.edgeLabel,a=n.nodeLabel2;t?(o<t.nodeLabel1||o===t.nodeLabel1&&i<t.edgeLabel||o===t.nodeLabel1&&i===t.edgeLabel&&a<t.nodeLabel2)&&(t={nodeLabel1:o,edgeLabel:i,nodeLabel2:a}):t={nodeLabel1:o,edgeLabel:i,nodeLabel2:a}})),t},e.prototype.isMin=function(){var e=this,t=this.dfsCode;if(this.verbose&&console.log("isMin checking",t),1===t.dfsEdgeList.length)return!0;var r=this.directed,n=t.toGraph(-1,r),o=n.nodeMap,i=new V,a={};n.nodes.forEach((function(t){e.findForwardRootEdges(n,t).forEach((function(e){var r=o[e.to],i="".concat(t.label,"-").concat(e.label,"-").concat(r.label);a[i]||(a[i]={projected:[],nodeLabel1:t.label,edgeLabel:e.label,nodeLabel2:r.label});var d={graphId:n.id,edge:e,preNode:null};a[i].projected.push(d)}))}));var d=this.findMinLabel(a);if(d){i.dfsEdgeList.push(new K(0,1,d.nodeLabel1,d.edgeLabel,d.nodeLabel2));var s=function(a){for(var d=i.buildRmpath(),u=i.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1,c=i.dfsEdgeList[d[0]].toNode,f={},h=!1,l=0,p=r?-1:0,v=function(t){if(h)return"break";a.forEach((function(r){var o=new J(r),a=e.findBackwardEdge(n,o.edges[d[t]],o.edges[d[0]],o);a&&(f[a.label]||(f[a.label]={projected:[],edgeLabel:a.label}),f[a.label].projected.push({graphId:n.id,edge:f,preNode:r}),l=i.dfsEdgeList[d[t]].fromNode,h=!0)}))},g=d.length-1;g>p&&"break"!==v(g);g--);if(h){var b=e.findMinLabel(f);i.dfsEdgeList.push(new K(c,l,B,b.edgeLabel,B));var E=i.dfsEdgeList.length-1;return e.dfsCode.dfsEdgeList[E]===i.dfsEdgeList[E]&&s(f[b.edgeLabel].projected)}var m={};h=!1;var y=0;a.forEach((function(t){var r=new J(t),i=e.findForwardPureEdges(n,r.edges[d[0]],u,r);i.length>0&&(h=!0,y=c,i.forEach((function(e){var r="".concat(e.label,"-").concat(o[e.to].label);m[r]||(m[r]={projected:[],edgeLabel:e.label,nodeLabel2:o[e.to].label}),m[r].projected.push({graphId:n.id,edge:e,preNode:t})})))}));var L=d.length,N=function(t){if(h)return"break";var r=d[t];a.forEach((function(t){var a=new J(t),d=e.findForwardRmpathEdges(n,a.edges[r],u,a);d.length>0&&(h=!0,y=i.dfsEdgeList[r].fromNode,d.forEach((function(e){var r="".concat(e.label,"-").concat(o[e.to].label);m[r]||(m[r]={projected:[],edgeLabel:e.label,nodeLabel2:o[e.to].label}),m[r].projected.push({graphId:n.id,edge:e,preNode:t})})))}))};for(g=0;g<L&&"break"!==N(g);g++);if(!h)return!0;var w=e.findMinLabel(m);i.dfsEdgeList.push(new K(y,c+1,B,w.edgeLabel,w.nodeLabel2));var k=i.dfsEdgeList.length-1;return t.dfsEdgeList[k]===i.dfsEdgeList[k]&&s(m["".concat(w.edgeLabel,"-").concat(w.nodeLabel2)].projected)},u="".concat(d.nodeLabel1,"-").concat(d.edgeLabel,"-").concat(d.nodeLabel2);return s(a[u].projected)}},e.prototype.report=function(){if(!(this.dfsCode.getNodeNum()<this.minNodeNum)){this.counter++;var e=this.dfsCode.toGraph(this.counter,this.directed);this.frequentSubgraphs.push(x(e))}},e.prototype.subGraphMining=function(e){var t=this;if(!(this.getSupport(e)<this.minSupport)&&this.isMin()){this.report();var r=this.dfsCode.getNodeNum(),n=this.dfsCode.buildRmpath(),o=this.dfsCode.dfsEdgeList[n[0]].toNode,i=this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1,a={},d={};e.forEach((function(e){for(var s=t.graphs[e.graphId],u=s.nodeMap,c=new J(e),f=n.length-1;f>=0;f--){var h=t.findBackwardEdge(s,c.edges[n[f]],c.edges[n[0]],c);if(h){var l="".concat(t.dfsCode.dfsEdgeList[n[f]].fromNode,"-").concat(h.label);d[l]||(d[l]={projected:[],toNodeId:t.dfsCode.dfsEdgeList[n[f]].fromNode,edgeLabel:h.label}),d[l].projected.push({graphId:e.graphId,edge:h,preNode:e})}}if(!(r>=t.maxNodeNum)){t.findForwardPureEdges(s,c.edges[n[0]],i,c).forEach((function(t){var r="".concat(o,"-").concat(t.label,"-").concat(u[t.to].label);a[r]||(a[r]={projected:[],fromNodeId:o,edgeLabel:t.label,nodeLabel2:u[t.to].label}),a[r].projected.push({graphId:e.graphId,edge:t,preNode:e})}));var p=function(r){t.findForwardRmpathEdges(s,c.edges[n[r]],i,c).forEach((function(o){var i="".concat(t.dfsCode.dfsEdgeList[n[r]].fromNode,"-").concat(o.label,"-").concat(u[o.to].label);a[i]||(a[i]={projected:[],fromNodeId:t.dfsCode.dfsEdgeList[n[r]].fromNode,edgeLabel:o.label,nodeLabel2:u[o.to].label}),a[i].projected.push({graphId:e.graphId,edge:o,preNode:e})}))};for(f=0;f<n.length;f++)p(f)}})),Object.keys(d).forEach((function(e){var r=d[e],n=r.toNodeId,i=r.edgeLabel;t.dfsCode.dfsEdgeList.push(new K(o,n,"-1",i,"-1")),t.subGraphMining(d[e].projected),t.dfsCode.dfsEdgeList.pop()})),Object.keys(a).forEach((function(e){var r=a[e],n=r.fromNodeId,i=r.edgeLabel,d=r.nodeLabel2;t.dfsCode.dfsEdgeList.push(new K(n,o+1,B,i,d)),t.subGraphMining(a[e].projected),t.dfsCode.dfsEdgeList.pop()}))}},e.prototype.generate1EdgeFrequentSubGraphs=function(){var e=this.graphs,t=this.directed,r=this.minSupport,n=this.frequentSize1Subgraphs,o={},i={},a={},d={};return Object.keys(e).forEach((function(r){var n=e[r],s=n.nodeMap;n.nodes.forEach((function(e,n){var u=e.label,c="".concat(r,"-").concat(u);if(!a[c]){var f=o[u]||0;f++,o[u]=f}a[c]={graphKey:r,label:u},e.edges.forEach((function(e){var n=u,o=s[e.to].label;if(!t&&n>o){var a=o;o=n,n=a}var c=e.label,f="".concat(r,"-").concat(n,"-").concat(c,"-").concat(o),h="".concat(n,"-").concat(c,"-").concat(o);if(!i[h]){var l=i[h]||0;l++,i[h]=l}d[f]={graphId:r,nodeLabel1:n,edgeLabel:c,nodeLabel2:o}}))}))})),Object.keys(o).forEach((function(e){if(!(o[e]<r)){var t={nodes:[],edges:[]};t.nodes.push({id:"0",label:e}),n.push(t)}})),n},e.prototype.run=function(){var e=this;if(this.frequentSize1Subgraphs=this.generate1EdgeFrequentSubGraphs(),!(this.maxNodeNum<2)){var t=this.graphs,r=(this.directed,{});Object.keys(t).forEach((function(n){var o=t[n],i=o.nodeMap;o.nodes.forEach((function(t){e.findForwardRootEdges(o,t).forEach((function(e){var o=i[e.to],a="".concat(t.label,"-").concat(e.label,"-").concat(o.label);r[a]||(r[a]={projected:[],nodeLabel1:t.label,edgeLabel:e.label,nodeLabel2:o.label});var d={graphId:n,edge:e,preNode:null};r[a].projected.push(d)}))}))})),Object.keys(r).forEach((function(t){var n=r[t],o=n.projected,i=n.nodeLabel1,a=n.edgeLabel,d=n.nodeLabel2;e.dfsCode.dfsEdgeList.push(new K(0,1,i,a,d)),e.subGraphMining(o),e.dfsCode.dfsEdgeList.pop()}))}},e}(),X="cluster";var Y=function(e,t,r,n){void 0===r&&(r="cluster"),void 0===n&&(n=2);var o=[],i=e.nodes;return t.forEach((function(e,t){o.push(Z(i,e,t,r,n))})),o},Z=function(e,t,r,n,o){var i=[r],a=[],d={};return t.forEach((function(t,s){if(t<=o&&r!==s){i.push(s),a.push(e[s]);var u=e[s][n];d[u]?(d[u].count++,d[u].dists.push(t)):d[u]={count:1,dists:[t]}}})),Object.keys(d).forEach((function(e){d[e].dists=d[e].dists.sort((function(e,t){return e-t}))})),{nodeIdx:r,nodeId:e[r].id,nodeIdxs:i,neighbors:a,neighborNum:i.length-1,nodeLabelCountMap:d}},_=function(e,t,r,n){var o=r.nodes;return n||(n={}),Object.keys(e).forEach((function(i){var a,d;if(!n||!n[i]){n[i]={nodes:[],edges:[]};var s=e[i],u=null===(a=t[s.start])||void 0===a?void 0:a.nodeIdxs,c=null===(d=t[s.end])||void 0===d?void 0:d.nodeIdxs;if(u&&c){var f=new Set(c),h=u.filter((function(e){return f.has(e)}));if(h&&h.length){for(var l={},p=h.length,v=0;v<p;v++){var g=o[h[v]];n[i].nodes.push(g),l[g.id]=!0}r.edges.forEach((function(e){l[e.source]&&l[e.target]&&n[i].edges.push(e)}))}}}})),n},ee=function(e,t,r,n){var o,i,a={};e.nodes.forEach((function(e){a[e.id]=e}));var d=0;return!(null===(o=null==t?void 0:t.edges)||void 0===o?void 0:o.length)||(null===(i=null==t?void 0:t.nodes)||void 0===i?void 0:i.length)<2?0:(e.edges.forEach((function(e){var o=a[e.source][r],i=a[e.target][r],s=null==t?void 0:t.nodes[0][r],u=null==t?void 0:t.nodes[1][r],c=null==t?void 0:t.edges[0][n];e[n]===c&&(o===s&&i===u||o===u&&i===s)&&d++})),d)},te=function(e,t){var r={},n={};return e.forEach((function(e,o){r[e.id]={idx:o,node:e,degree:0,inDegree:0,outDegree:0};var i=e[t];n[i]||(n[i]=[]),n[i].push(e)})),{nodeMap:r,nodeLabelMap:n}},re=function(e,t,r){var n={},o={};return e.forEach((function(e,i){n["".concat(u)]={idx:i,edge:e};var a=e[t];o[a]||(o[a]=[]),o[a].push(e);var d=r[e.source];d&&(d.degree++,d.outDegree++);var s=r[e.target];s&&(s.degree++,s.inDegree++)})),{edgeMap:n,edgeLabelMap:o}},ne=function(e,t,r){var n=t.length,o={};return t.forEach((function(t,i){for(var a=r?0:i+1,d=e[i].id,s=a;s<n;s++)if(i!==s){var u=e[s].id,c=t[s];o["".concat(d,"-").concat(u)]=c,r||(o["".concat(u,"-").concat(d)]=c)}})),o},oe=function(e,t,r,n,o,i,a,d,s,u,c){var f,h="".concat(t.id,"-").concat(r.id);if(u&&u[h])return u[h];var l=c?c[h]:void 0;if(!l){var p=((f={})[h]={start:n[t.id].idx,end:n[r.id].idx,distance:o},f);l=(c=_(p,i,e,c))[h]}return ee(l,a,d,s)},ie=function(e,t,r,n){var o,i,a,d=null===(o=e[t])||void 0===o?void 0:o.degree,s=null===(i=e[t])||void 0===i?void 0:i.inDegree,u=null===(a=e[t])||void 0===a?void 0:a.outDegree;return void 0===e[t]&&(d=1/0,s=1/0,u=1/0,n[t].forEach((function(e){var t=r[e.id].degree;d>t&&(d=t);var n=r[e.id].inDegree;s>n&&(s=n);var o=r[e.id].outDegree;u>o&&(u=o)})),e[t]={degree:d,inDegree:s,outDegree:u}),{minPatternNodeLabelDegree:d,minPatternNodeLabelInDegree:s,minPatternNodeLabelOutDegree:u}};var ae=function(){function e(e){void 0===e&&(e=10),this.linkedList=new i,this.maxStep=e}return Object.defineProperty(e.prototype,"length",{get:function(){return this.linkedList.toArray().length},enumerable:!1,configurable:!0}),e.prototype.isEmpty=function(){return!this.linkedList.head},e.prototype.isMaxStack=function(){return this.toArray().length>=this.maxStep},e.prototype.peek=function(){return this.isEmpty()?null:this.linkedList.head.value},e.prototype.push=function(e){this.linkedList.prepend(e),this.length>this.maxStep&&this.linkedList.deleteTail()},e.prototype.pop=function(){var e=this.linkedList.deleteHead();return e?e.value:null},e.prototype.toArray=function(){return this.linkedList.toArray().map((function(e){return e.value}))},e.prototype.clear=function(){for(;!this.isEmpty();)this.pop()},e}();const de={getAdjMatrix:r,breadthFirstSearch:function(e,t,r,n){void 0===n&&(n=!0);var o=function(e){void 0===e&&(e={});var t,r=e,n=function(){},o=(t={},function(e){var r=e.next;return!t[r]&&(t[r]=!0,!0)});return r.allowTraversal=e.allowTraversal||o,r.enter=e.enter||n,r.leave=e.leave||n,r}(r),i=new a,s=e.edges,u=void 0===s?[]:s;i.enqueue(t);for(var c="",f=function(){var e=i.dequeue();o.enter({current:e,previous:c}),d(e,u,n?"target":void 0).forEach((function(t){o.allowTraversal({previous:c,current:e,next:t})&&i.enqueue(t)})),o.leave({current:e,previous:c}),c=e};!i.isEmpty();)f()},connectedComponent:f,getDegree:l,getInDegree:function(e,t){return h(e)[t]?h(e)[t].inDegree:0},getOutDegree:function(e,t){return h(e)[t]?h(e)[t].outDegree:0},detectCycle:E,detectDirectedCycle:E,detectAllCycles:function(e,t,r,n){return void 0===n&&(n=!0),t?b(e,r,n):g(e,r,n)},detectAllDirectedCycle:b,detectAllUndirectedCycle:g,depthFirstSearch:v,dijkstra:j,findAllPath:function(e,t,r,n){var o;if(t===r)return[[t]];var i=e.edges,a=void 0===i?[]:i,s=[t],u=((o={})[t]=!0,o),c=[],f=[],h=n?d(t,a,"target"):d(t,a);for(c.push(h);s.length>0&&c.length>0;){var l=c[c.length-1];if(l.length){var p=l.shift();if(p&&(s.push(p),u[p]=!0,h=n?d(p,a,"target"):d(p,a),c.push(h.filter((function(e){return!u[e]})))),s[s.length-1]===r){var v=s.map((function(e){return e}));f.push(v),g=s.pop(),u[g]=!1,c.pop()}}else{var g=s.pop();u[g]=!1,c.pop()}}return f},findShortestPath:function(e,t,r,n,o){var i=j(e,t,n,o),a=i.length,d=i.path,s=i.allPath;return{length:a[r],path:d[r],allPath:s[r]}},floydWarshall:O,labelPropagation:function(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n="weight"),void 0===o&&(o=1e3);var i=e.nodes,a=void 0===i?[]:i,d=e.edges,s=void 0===d?[]:d,c={},f={};a.forEach((function(e,t){var r=u();e.clusterId=r,c[r]={id:r,nodes:[e]},f[e.id]={node:e,idx:t}}));var h=r(e,t),l=[],p={};h.forEach((function(e,t){var r=0,n=a[t].id;p[n]={},e.forEach((function(e,t){if(e){r+=e;var o=a[t].id;p[n][o]=e}})),l.push(r)}));for(var v=0,g=function(){var e=!1;if(a.forEach((function(t){var r={};Object.keys(p[t.id]).forEach((function(e){var n=p[t.id][e],o=f[e].node.clusterId;r[o]||(r[o]=0),r[o]+=n}));var n=-1/0,o=[];if(Object.keys(r).forEach((function(e){n<r[e]?(n=r[e],o=[e]):n===r[e]&&o.push(e)})),1!==o.length||o[0]!==t.clusterId){var i=o.indexOf(t.clusterId);if(i>=0&&o.splice(i,1),o&&o.length){e=!0;var a=c[t.clusterId],d=a.nodes.indexOf(t);a.nodes.splice(d,1);var s=Math.floor(Math.random()*o.length),u=c[o[s]];u.nodes.push(t),t.clusterId=u.id}}})),!e)return"break";v++};v<o&&"break"!==g(););Object.keys(c).forEach((function(e){var t=c[e];t.nodes&&t.nodes.length||delete c[e]}));var b=[],E={};s.forEach((function(e){var t=e.source,r=e.target,o=e[n]||1,i=f[t].node.clusterId,a=f[r].node.clusterId,d="".concat(i,"---").concat(a);if(E[d])E[d].weight+=o,E[d].count++;else{var s={source:i,target:a,weight:o,count:1};E[d]=s,b.push(s)}}));var m=[];return Object.keys(c).forEach((function(e){m.push(c[e])})),{clusters:m,clusterEdges:b}},louvain:q,iLouvain:function(e,t,r,n,o){return void 0===t&&(t=!1),void 0===r&&(r="weight"),void 0===n&&(n=1e-4),void 0===o&&(o=1),q(e,t,r,n,!0,o)},kCore:function(e,t){var r;void 0===t&&(t=1);for(var n=x(e),o=n.nodes,i=void 0===o?[]:o,a=n.edges,d=void 0===a?[]:a,s=function(){var e=l({nodes:i,edges:d}),n=Object.keys(e);n.sort((function(t,r){var n,o;return(null===(n=e[t])||void 0===n?void 0:n.degree)-(null===(o=e[r])||void 0===o?void 0:o.degree)}));var o=n[0];if(!i.length||(null===(r=e[o])||void 0===r?void 0:r.degree)>=t)return"break";var a=i.findIndex((function(e){return e.id===o}));i.splice(a,1),d=d.filter((function(e){return!(e.source===o||e.target===o)}))};"break"!==s(););return{nodes:i,edges:d}},minimumSpanningTree:function(e,t,r){return r?{prim:U,kruskal:z}[r](e,t):z(e,t)},pageRank:function(e,t,r){"number"!=typeof t&&(t=1e-6),"number"!=typeof r&&(r=.85);for(var n,o=1,i=0,a=1e3,s=e.nodes,u=void 0===s?[]:s,c=e.edges,f=void 0===c?[]:c,h=u.length,p={},v={},g=0;g<h;++g)p[E=(w=u[g]).id]=1/h,v[E]=1/h;for(var b=l(e);a>0&&o>t;){for(i=0,g=0;g<h;++g){var E=(w=u[g]).id;if(n=0,0===b[w.id].inDegree)p[E]=0;else{for(var m=d(E,f,"source"),y=0;y<m.length;++y){var L=m[y],N=b[L].outDegree;N>0&&(n+=v[L]/N)}p[E]=r*n,i+=p[E]}}for(i=(1-i)/h,o=0,g=0;g<h;++g){var w;n=p[E=(w=u[g]).id]+i,o+=Math.abs(n-v[E]),v[E]=n}a-=1}return v},getNeighbors:d,Stack:ae,GADDI:function(e,t,r,n,o,i,a){var d;if(void 0===r&&(r=!1),void 0===i&&(i="cluster"),void 0===a&&(a="cluster"),e&&e.nodes){var s=e.nodes.length;if(s){var u=O(e,r),c=O(t,r),f=ne(e.nodes,u,r),h=ne(t.nodes,c,r),l=te(e.nodes,i),p=l.nodeMap,v=l.nodeLabelMap,g=te(t.nodes,i),b=g.nodeMap,E=g.nodeLabelMap;re(e.edges,a,p);var y=re(t.edges,a,b).edgeLabelMap,L=[];null==c||c.forEach((function(e){L=L.concat(e)})),o||(o=Math.max.apply(Math,m(m([],L,!1),[2],!1))),n||(n=o);var N=Y(e,u,i,n),w=Y(t,c,i,n),k=function(e,t,r,n,o){var i=Math.ceil(r/t),a={},d=0;return n.forEach((function(e,n){for(var s=0,u=0,c=e.nodeIdxs,f=e.neighborNum-1;s<i;){for(var h=c[1+Math.floor(Math.random()*f)],l=0;(a["".concat(n,"-").concat(h)]||a["".concat(h,"-").concat(n)])&&(h=Math.floor(Math.random()*t),!(++l>2*t)););if(l<2*t&&(a["".concat(n,"-").concat(h)]={start:n,end:h,distance:o[n][h]},s++,++d>=r))return a;if(++u>2*t)break}s<i&&(i=(i+(i-s))/(t-n-1))})),a}(0,s,Math.min(100,s*(s-1)/2),w,u),x=_(k,N,e),I=function(e){var t=e.graphs,r=e.directed,n=void 0!==r&&r,o=e.nodeLabelProp,i=void 0===o?X:o,a=e.edgeLabelProp,d=void 0===a?X:a,s=function(e,t,r,n){var o={};return Object.keys(e).forEach((function(i,a){var d=e[i],s=new $(a,!0,t),u={};d.nodes.forEach((function(e,t){s.addNode(t,e[r]),u[e.id]=t})),d.edges.forEach((function(e,t){var r=u[e.source],o=u[e.target];s.addEdge(-1,r,o,e[n])})),s&&s.getNodeNum()&&(o[s.id]=s)})),o}(t,n,i,d),u=e.minSupport,c=e.maxNodeNum,f=e.minNodeNum,h=e.verbose,l=e.top,p=new Q({graphs:s,minSupport:u,maxNodeNum:c,minNodeNum:f,top:l,verbose:h,directed:n});p.run();var v=function(e,t,r){var n=[];return e.forEach((function(e){var o={nodes:[],edges:[]};e.nodes.forEach((function(e){var r;o.nodes.push(((r={id:"".concat(e.id)})[t]=e.label,r))})),e.edges.forEach((function(e){var t;o.edges.push(((t={source:"".concat(e.from),target:"".concat(e.to)})[r]=e.label,t))})),n.push(o)})),n}(p.frequentSubgraphs,i,d);return v}({graphs:x,nodeLabelProp:i,edgeLabelProp:a,minSupport:1,minNodeNum:1,maxNodeNum:4,directed:r}).slice(0,10),M=I.length,D=[];I.forEach((function(e,t){D[t]={},Object.keys(x).forEach((function(r){var n=x[r],o=ee(n,e,i,a);D[t][r]=o}))}));var S=function(e,t,r){for(var n=1/0,o=0,i=function(t){var r=e[t],i=Object.keys(r).sort((function(e,t){return r[e]-r[t]})),a=[];i.forEach((function(e,t){a[t%10]||(a[t%10]={graphs:[],totalCount:0,aveCount:0}),a[t%10].graphs.push(e),a[t%10].totalCount+=r[e]}));var d=0,s=[];a.forEach((function(e){var t=e.totalCount/e.graphs.length;e.aveCount=t,s.push(t);var n=0,o=e.length;e.graphs.forEach((function(t,o){var i=r[t];e.graphs.forEach((function(e,t){o!==t&&(n+=Math.abs(i-r[e]))}))})),d+=n/=o*(o-1)/2})),d/=a.length;var u=0;s.forEach((function(e,t){s.forEach((function(r,n){t!==n&&(u+=Math.abs(e-r))})),u/=s.length*(s.length-1)/2}));var c=u-d;n<c&&(n=c,o=t)},a=0;a<t;a++)i(a);return{structure:r[o],structureCountMap:e[o]}}(D,M,I),P=S.structure,C=S.structureCountMap,A=t.nodes[0],T=[],q=null===(d=t.nodes[0])||void 0===d?void 0:d[i],F=-1/0;t.nodes.forEach((function(e){var t=e[i],r=v[t];(null==r?void 0:r.length)>F&&(F=r.length,T=r,q=t,A=e)}));var R={},G={},U={},z={},B={},H={};Object.keys(E).forEach((function(n,o){B[n]=[],r&&(H[n]=[]);var d=-1/0,s=E[n],u={};s.forEach((function(e){var t=h["".concat(A.id,"-").concat(e.id)];if(t&&B[n].push(t),d<t&&(d=t),u["".concat(A.id,"-").concat(e.id)]={start:0,end:b[e.id].idx,distance:t},r){var o=h["".concat(e.id,"-").concat(A.id)];o&&H[n].push(o)}})),B[n]=B[n].sort((function(e,t){return e-t})),r&&(H[n]=H[n].sort((function(e,t){return e-t}))),G=_(u,w,t,G);var c=[];if(Object.keys(u).forEach((function(e){if(U[e])c.push(U[e]);else{var t=G[e];U[e]=ee(t,P,i,a),c.push(U[e])}})),c=c.sort((function(e,t){return t-e})),z["".concat(A.id,"-").concat(n)]=c,n!==q)for(var l=function(t){var r=T[t],o=N[p[r.id].idx],d=o.nodeLabelCountMap[n],s=E[n].length;if(!d||d.count<s)return T.splice(t,1),"continue";for(var u=!1,h=0;h<s;h++)if(d.dists[h]>B[n][h]){u=!0;break}if(u)return T.splice(t,1),"continue";var l={};o.neighbors.forEach((function(e){var t=f["".concat(r.id,"-").concat(e.id)];l["".concat(r.id,"-").concat(e.id)]={start:p[r.id].idx,end:p[e.id].idx,distance:t}})),x=_(l,N,e,x);var v=[];Object.keys(l).forEach((function(e){if(C[e])v.push(C[e]);else{var t=x[e];C[e]=ee(t,P,i,a),v.push(C[e])}})),v=v.sort((function(e,t){return t-e}));var g=!1;for(h=0;h<s;h++)if(v[h]<c[h]){g=!0;break}return g?(T.splice(t,1),"continue"):void 0},v=((null==T?void 0:T.length)||0)-1;v>=0;v--)l(v)}));var W=[];null==T||T.forEach((function(n){for(var d=p[n.id].idx,s=Z(e.nodes,u[d],d,i,o).neighbors,c=!1,h=s.length-1;h>=0;h--){if(s.length+1<t.nodes.length)return void(c=!0);var l=s[h],v=l[i];if(E[v]&&E[v].length)if(B[v]&&B[v].length){var g="".concat(n.id,"-").concat(l.id),m=f[g],y=B[v].length-1;if(m>B[v][y])s.splice(h,1);else{if(r){var L="".concat(l.id,"-").concat(n.id),w=f[L];if(y=H[v].length-1,w>H[v][y]){s.splice(h,1);continue}}var k=C[g]?C[g]:oe(e,n,l,p,m,N,P,i,a,C,x),I="".concat(A.id,"-").concat(v);if(k<z[I][z[I].length-1])s.splice(h,1);else{var j=ie(R,v,b,E),M=j.minPatternNodeLabelDegree;j.minPatternNodeLabelInDegree,j.minPatternNodeLabelOutDegree,p[l.id].degree<M&&s.splice(h,1)}}}else s.splice(h,1);else s.splice(h,1)}c||W.push({nodes:[n].concat(s)})}));var K=j(t,A.id,!1).length,V={};r?(Object.keys(K).forEach((function(e){var t=b[e].node[i];V[t]?V[t].push(K[e]):V[t]=[K[e]]})),Object.keys(V).forEach((function(e){V[e].sort((function(e,t){return e-t}))}))):V=B;for(var J=function(n){var o=W[n],d=o.nodes[0],s={},u={};o.nodes.forEach((function(e,t){u[e.id]={idx:t,node:e,degree:0,inDegree:0,outDegree:0};var r=e[i];s[r]?s[r]++:s[r]=1}));var c=[],f={};e.edges.forEach((function(e){u[e.source]&&u[e.target]&&(c.push(e),f[e[a]]?f[e[a]]++:f[e[a]]=1,u[e.source].degree++,u[e.target].degree++,u[e.source].outDegree++,u[e.target].inDegree++)}));for(var h=Object.keys(y).length,l=!1,v=0;v<h;v++){var g=Object.keys(y)[v];if(!f[g]||f[g]<y[g].length){l=!0;break}}if(l)return W.splice(n,1),"continue";var m=c.length;if(m<t.edges.length)return W.splice(n,1),"break";var L=!1,N=function(e){var t=c[e],n=t[a],o=y[n];if(!o||!o.length)return f[n]--,o&&f[n]<o.length?(L=!0,"break"):(c.splice(e,1),u[t.source].degree--,u[t.target].degree--,u[t.source].outDegree--,u[t.target].inDegree--,"continue");var d=u[t.source].node[i],s=u[t.target].node[i],h=!1;return o.forEach((function(e){var t=b[e.source].node,n=b[e.target].node;t[i]===d&&n[i]===s&&(h=!0),r||t[i]!==s||n[i]!==d||(h=!0)})),h?void 0:(f[n]--,o&&f[n]<o.length?(L=!0,"break"):(c.splice(e,1),u[t.source].degree--,u[t.target].degree--,u[t.source].outDegree--,u[t.target].inDegree--,"continue"))};for(v=m-1;v>=0&&"break"!==N(v);v--);if(L)return W.splice(n,1),"continue";o.edges=c;var w=j(o,o.nodes[0].id,!1).length;if(Object.keys(w).reverse().forEach((function(e){if(e!==o.nodes[0].id&&!L){if(w[e]===1/0){var t=u[e].node[i];if(s[t]--,s[t]<E[t].length)return void(L=!0);var r=o.nodes.indexOf(u[e].node);return o.nodes.splice(r,1),void(u[e]=void 0)}var n=p[e].node[i];if(!V[n]||!V[n].length||w[e]>V[n][V[n].length-1]){if(t=u[e].node[i],s[t]--,s[t]<E[t].length)return void(L=!0);r=o.nodes.indexOf(u[e].node),o.nodes.splice(r,1),u[e]=void 0}}})),L)return W.splice(n,1),"continue";for(var k=!0,x=0;k&&!L;){if(k=!1,r?u[d.id].degree<b[A.id].degree||u[d.id].inDegree<b[A.id].inDegree||u[d.id].outDegree<b[A.id].outDegree:u[d.id].degree<b[A.id].degree){L=!0;break}if(s[d[i]]<E[d[i]].length){L=!0;break}for(var I=o.nodes.length-1;I>=0;I--){var M=o.nodes[I],O=u[M.id].degree,D=u[M.id].inDegree,S=u[M.id].outDegree,P=M[i],C=ie(R,P,b,E),T=C.minPatternNodeLabelDegree,q=C.minPatternNodeLabelInDegree,F=C.minPatternNodeLabelOutDegree;if(r?O<T||D<q||S<F:O<T){if(s[M[i]]--,s[M[i]]<E[M[i]].length){L=!0;break}o.nodes.splice(I,1),u[M.id]=void 0,k=!0}}if(L||!k&&0!==x)break;for(var G=(m=c.length)-1;G>=0;G--){var U=c[G];if(!u[U.source]||!u[U.target]){c.splice(G,1);var z=U[a];if(f[z]--,u[U.source]&&(u[U.source].degree--,u[U.source].outDegree--),u[U.target]&&(u[U.target].degree--,u[U.target].inDegree--),y[z]&&f[z]<y[z].length){L=!0;break}k=!0}}x++}return L||L||o.nodes.length<t.nodes.length||c.length<t.edges.length?(W.splice(n,1),"continue"):void 0},ae=W.length-1;ae>=0&&"break"!==J(ae);ae--);var de=W.length,se=function(e){var t=W[e],r={};t.edges.forEach((function(e){var t="".concat(e.source,"-").concat(e.target,"-").concat(e.label);r[t]?r[t]++:r[t]=1}));for(var n=function(e){var t=W[e],n={};t.edges.forEach((function(e){var t="".concat(e.source,"-").concat(e.target,"-").concat(e.label);n[t]?n[t]++:n[t]=1}));var o=!0;Object.keys(n).length!==Object.keys(r).length?o=!1:Object.keys(r).forEach((function(e){n[e]!==r[e]&&(o=!1)})),o&&W.splice(e,1)},o=de-1;o>e;o--)n(o);de=W.length};for(ae=0;ae<=de-1;ae++)se(ae);return W}}}};return t.default})()})); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Algorithm=t():e.Algorithm=t()}(this,(function(){return(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{default:()=>ue});const r=function(e,t){var r=e.nodes,n=e.edges,o=[],i={};if(!r)throw new Error("invalid nodes data!");return r&&r.forEach((function(e,t){i[e.id]=t,o.push([])})),n&&n.forEach((function(e){var r=e.source,n=e.target,a=i[r],d=i[n];!a&&0!==a||!d&&0!==d||(o[a][d]=1,t||(o[d][a]=1))})),o};var n=function(e,t){return e===t},o=function(){function e(e,t){void 0===t&&(t=null),this.value=e,this.next=t}return e.prototype.toString=function(e){return e?e(this.value):"".concat(this.value)},e}();const i=function(){function e(e){void 0===e&&(e=n),this.head=null,this.tail=null,this.compare=e}return e.prototype.prepend=function(e){var t=new o(e,this.head);return this.head=t,this.tail||(this.tail=t),this},e.prototype.append=function(e){var t=new o(e);return this.head?(this.tail.next=t,this.tail=t,this):(this.head=t,this.tail=t,this)},e.prototype.delete=function(e){if(!this.head)return null;for(var t=null;this.head&&this.compare(this.head.value,e);)t=this.head,this.head=this.head.next;var r=this.head;if(null!==r)for(;r.next;)this.compare(r.next.value,e)?(t=r.next,r.next=r.next.next):r=r.next;return this.compare(this.tail.value,e)&&(this.tail=r),t},e.prototype.find=function(e){var t=e.value,r=void 0===t?void 0:t,n=e.callback,o=void 0===n?void 0:n;if(!this.head)return null;for(var i=this.head;i;){if(o&&o(i.value))return i;if(void 0!==r&&this.compare(i.value,r))return i;i=i.next}return null},e.prototype.deleteTail=function(){var e=this.tail;if(this.head===this.tail)return this.head=null,this.tail=null,e;for(var t=this.head;t.next;)t.next.next?t=t.next:t.next=null;return this.tail=t,e},e.prototype.deleteHead=function(){if(!this.head)return null;var e=this.head;return this.head.next?this.head=this.head.next:(this.head=null,this.tail=null),e},e.prototype.fromArray=function(e){var t=this;return e.forEach((function(e){return t.append(e)})),this},e.prototype.toArray=function(){for(var e=[],t=this.head;t;)e.push(t),t=t.next;return e},e.prototype.reverse=function(){for(var e=this.head,t=null,r=null;e;)r=e.next,e.next=t,t=e,e=r;this.tail=this.head,this.head=t},e.prototype.toString=function(e){return void 0===e&&(e=void 0),this.toArray().map((function(t){return t.toString(e)})).toString()},e}(),a=function(){function e(){this.linkedList=new i}return e.prototype.isEmpty=function(){return!this.linkedList.head},e.prototype.peek=function(){return this.linkedList.head?this.linkedList.head.value:null},e.prototype.enqueue=function(e){this.linkedList.append(e)},e.prototype.dequeue=function(){var e=this.linkedList.deleteHead();return e?e.value:null},e.prototype.toString=function(e){return this.linkedList.toString(e)},e}();var d=function(e,t,r){void 0===t&&(t=[]);var n=t.filter((function(t){return t.source===e||t.target===e}));return"target"===r?n.filter((function(t){return t.source===e})).map((function(e){return e.target})):"source"===r?n.filter((function(t){return t.target===e})).map((function(e){return e.source})):n.map((function(t){return t.source===e?t.target:t.source}))},s=function(e,t){return t.filter((function(t){return t.source===e||t.target===e}))},u=function(e){void 0===e&&(e=0);var t="".concat(Math.random()).split(".")[1].substr(0,5),r="".concat(Math.random()).split(".")[1].substr(0,5);return"".concat(e,"-").concat(t).concat(r)};var c=function(e){for(var t=e.nodes,r=void 0===t?[]:t,n=e.edges,o=void 0===n?[]:n,i=[],a={},s={},u={},c=[],f=0,h=function(e){s[e.id]=f,u[e.id]=f,f+=1,i.push(e),a[e.id]=!0;for(var t=d(e.id,o,"target").filter((function(e){return r.map((function(e){return e.id})).indexOf(e)>-1})),n=function(n){var o=t[n];if(s[o]||0===s[o])a[o]&&(u[e.id]=Math.min(u[e.id],s[o]));else{var i=r.filter((function(e){return e.id===o}));i.length>0&&h(i[0]),u[e.id]=Math.min(u[e.id],u[o])}},l=0;l<t.length;l++)n(l);if(u[e.id]===s[e.id]){for(var v=[];i.length>0;){var p=i.pop();if(a[p.id]=!1,v.push(p),p===e)break}v.length>0&&c.push(v)}},l=0,v=r;l<v.length;l++){var p=v[l];s[p.id]||0===s[p.id]||h(p)}return c};function f(e,t){return t?c(e):function(e){for(var t=e.nodes,r=void 0===t?[]:t,n=e.edges,o=void 0===n?[]:n,i=[],a={},s=[],u=function(e){s.push(e),a[e.id]=!0;for(var t=d(e.id,o),n=function(e){var n=t[e];if(!a[n]){var o=r.filter((function(e){return e.id===n}));o.length>0&&u(o[0])}},i=0;i<t.length;++i)n(i)},c=0;c<r.length;c++){var f=r[c];if(!a[f.id]){u(f);for(var h=[];s.length>0;)h.push(s.pop());i.push(h)}}return i}(e)}var h=function(e){var t={},r=e.nodes,n=void 0===r?[]:r,o=e.edges,i=void 0===o?[]:o;return n.forEach((function(e){t[e.id]={degree:0,inDegree:0,outDegree:0}})),i.forEach((function(e){t[e.source].degree++,t[e.source].outDegree++,t[e.target].degree++,t[e.target].inDegree++})),t};const l=h;function v(e,t,r,n){n.enter({current:t,previous:r});var o=e.edges;d(t,void 0===o?[]:o,"target").forEach((function(o){n.allowTraversal({previous:r,current:t,next:o})&&v(e,o,t,n)})),n.leave({current:t,previous:r})}function p(e,t,r){v(e,t,"",function(e){void 0===e&&(e={});var t,r=e,n=function(){},o=(t={},function(e){var r=e.next;return!t[r]&&(t[r]=!0,!0)});return r.allowTraversal=e.allowTraversal||o,r.enter=e.enter||n,r.leave=e.leave||n,r}(r))}var g=function(e,t,r){var n,o;void 0===r&&(r=!0);for(var i=[],a=0,s=f(e,!1);a<s.length;a++){var u=s[a];if(u.length)for(var c=u[0],h=c.id,l=[c],v=((n={})[h]=c,n),p=((o={})[h]=new Set,o);l.length>0;)for(var g=l.pop(),b=g.id,m=d(b,e.edges),E=function(n){var o,a=m[n],d=e.nodes.find((function(e){return e.id===a}));if(a===b)i.push(((o={})[a]=g,o));else if(a in p){if(!p[b].has(d)){for(var s=!0,u=[d,g],c=v[b];p[a].size&&!p[a].has(c)&&(u.push(c),c!==v[c.id]);)c=v[c.id];if(u.push(c),t&&r?(s=!1,u.findIndex((function(e){return t.indexOf(e.id)>-1}))>-1&&(s=!0)):t&&!r&&u.findIndex((function(e){return t.indexOf(e.id)>-1}))>-1&&(s=!1),s){for(var f={},h=1;h<u.length;h+=1)f[u[h-1].id]=u[h];u.length&&(f[u[u.length-1].id]=u[0]),i.push(f)}p[a].add(g)}}else v[a]=g,l.push(d),p[a]=new Set([g])},y=0;y<m.length;y+=1)E(y)}return i},b=function(e,t,r){void 0===r&&(r=!0);for(var n=[],o=new Set,i=[],a=[],s={},u={},f=function(e,d,u){var c=!1;if(t&&!1===r&&t.indexOf(e.id)>-1)return c;n.push(e),o.add(e);for(var h=u[e.id],l=0;l<h.length;l+=1)if((g=s[h[l]])===d){for(var v={},p=1;p<n.length;p+=1)v[n[p-1].id]=n[p];n.length&&(v[n[n.length-1].id]=n[0]),a.push(v),c=!0}else o.has(g)||f(g,d,u)&&(c=!0);if(c)!function(e){for(var t=[e];t.length>0;){var r=t.pop();o.has(r)&&(o.delete(r),i[r.id].forEach((function(e){t.push(e)})),i[r.id].clear())}}(e);else for(l=0;l<h.length;l+=1){var g=s[h[l]];i[g.id].has(e)||i[g.id].add(e)}return n.pop(),c},h=e.nodes,l=void 0===h?[]:h,v=0;v<l.length;v+=1){var p=l[v],g=p.id;u[g]=v,s[v]=p}if(t&&r){var b=function(e){var r=t[e];u[l[e].id]=u[r],u[r]=0,s[0]=l.find((function(e){return e.id===r})),s[u[l[e].id]]=l[e]};for(v=0;v<t.length;v++)b(v)}for(var m=function(n){for(var o,i,s=1/0,c=0;c<n.length;c+=1)for(var f=n[c],h=0;h<f.length;h++){var l=u[f[h].id];l<s&&(s=l,i=c)}var v=n[i],p=[];for(c=0;c<v.length;c+=1){var g=v[c];p[g.id]=[];for(var b=0,m=d(g.id,e.edges,"target").filter((function(e){return v.map((function(e){return e.id})).indexOf(e)>-1}));b<m.length;b++){var E=m[b];E!==g.id||!1===r&&t.indexOf(g.id)>-1?p[g.id].push(u[E]):a.push(((o={})[g.id]=g,o))}}return{component:v,adjList:p,minIdx:s}},E=0;E<l.length;){var y=l.filter((function(e){return u[e.id]>=E})),L=c({nodes:y,edges:e.edges}).filter((function(e){return e.length>1}));if(0===L.length)break;var N=m(L),w=N.minIdx,k=N.adjList,x=N.component;if(!(x.length>1))break;x.forEach((function(e){i[e.id]=new Set}));var I=s[w];if(t&&r&&-1===t.indexOf(I.id))return a;f(I,I,k),E=w+1}return a};const m=function(e){var t=null,r=e.nodes,n={},o={},i={},a={};(void 0===r?[]:r).forEach((function(e){o[e.id]=e}));for(var d={enter:function(e){var r=e.current,a=e.previous;if(i[r]){t={};for(var d=r,s=a;s!==r;)t[d]=s,d=s,s=n[s];t[d]=s}else i[r]=r,delete o[r],n[r]=a},leave:function(e){var t=e.current;a[t]=t,delete i[t]},allowTraversal:function(e){var r=e.next;return!t&&!a[r]}};Object.keys(o).length;)p(e,Object.keys(o)[0],d);return t};function E(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))}Object.create,Object.create;var y={}.toString;const L=function(e,t){return y.call(e)==="[object "+t+"]"},N=function(e){return L(e,"Function")},w=function(e){return Array.isArray?Array.isArray(e):L(e,"Array")};Object.keys;var k=Array.prototype;k.splice,k.indexOf,Array.prototype.splice,Object.prototype.hasOwnProperty;Number.isInteger&&Number.isInteger,Math.PI,parseInt,Math.PI;Object.values;Object.prototype;const x=function e(t){if("object"!=typeof t||null===t)return t;var r;if(w(t)){r=[];for(var n=0,o=t.length;n<o;n++)"object"==typeof t[n]&&null!=t[n]?r[n]=e(t[n]):r[n]=t[n]}else for(var i in r={},t)"object"==typeof t[i]&&null!=t[i]?r[i]=e(t[i]):r[i]=t[i];return r};var I;Object.prototype.hasOwnProperty,Object.prototype.hasOwnProperty,function(e,t){if(!N(e))throw new TypeError("Expected a function");new Map}((function(e,t){void 0===t&&(t={});var r,n=t.fontSize,o=t.fontFamily,i=t.fontWeight,a=t.fontStyle,d=t.fontVariant;return I||(I=document.createElement("canvas").getContext("2d")),I.font=[a,d,i,n+"px",o].join(" "),I.measureText((r=e,L(r,"String")?e:"")).width})),function(){function e(){this.map={}}e.prototype.has=function(e){return void 0!==this.map[e]},e.prototype.get=function(e,t){var r=this.map[e];return void 0===r?t:r},e.prototype.set=function(e,t){this.map[e]=t},e.prototype.clear=function(){this.map={}},e.prototype.delete=function(e){delete this.map[e]},e.prototype.size=function(){return Object.keys(this.map).length}}();const j=function(e,t,r,n){var o=e.nodes,i=void 0===o?[]:o,a=e.edges,d=void 0===a?[]:a,u=[],c={},f={},h={};i.forEach((function(e,r){var n=e.id;u.push(n),f[n]=1/0,n===t&&(f[n]=0)}));for(var l=i.length,v=function(e){var t=function(e,t,r){for(var n,o=1/0,i=0;i<t.length;i++){var a=t[i].id;!r[a]&&e[a]<=o&&(o=e[a],n=t[i])}return n}(f,i,c),o=t.id;if(c[o]=!0,f[o]===1/0)return"continue";var a=[];a=r?function(e,t){return t.filter((function(t){return t.source===e}))}(o,d):s(o,d),a.forEach((function(e){var r=e.target,i=e.source,a=r===o?i:r,d=n&&e[n]?e[n]:1;f[a]>f[t.id]+d?(f[a]=f[t.id]+d,h[a]=[t.id]):f[a]===f[t.id]+d&&h[a].push(t.id)}))},p=0;p<l;p++)v();h[t]=[t];var g={};for(var b in f)f[b]!==1/0&&M(t,b,h,g);var m={};for(var b in g)m[b]=g[b][0];return{length:f,path:m,allPath:g}};function M(e,t,r,n){if(e===t)return[e];if(n[t])return n[t];for(var o=[],i=0,a=r[t];i<a.length;i++){var d=M(e,a[i],r,n);if(!d)return;for(var s=0,u=d;s<u.length;s++){var c=u[s];w(c)?o.push(E(E([],c,!0),[t],!1)):o.push([c,t])}}return n[t]=o,n[t]}const O=function(e,t){for(var n=r(e,t),o=[],i=n.length,a=0;a<i;a+=1){o[a]=[];for(var d=0;d<i;d+=1)a===d?o[a][d]=0:0!==n[a][d]&&n[a][d]?o[a][d]=n[a][d]:o[a][d]=1/0}for(var s=0;s<i;s+=1)for(a=0;a<i;a+=1)for(d=0;d<i;d+=1)o[a][d]>o[a][s]+o[s][d]&&(o[a][d]=o[a][s]+o[s][d]);return o};const D=function(){function e(e){this.arr=e}return e.prototype.add=function(t){var r,n=t.arr;if(!(null===(r=this.arr)||void 0===r?void 0:r.length))return new e(n);if(!(null==n?void 0:n.length))return new e(this.arr);if(this.arr.length===n.length){var o=[];for(var i in this.arr)o[i]=this.arr[i]+n[i];return new e(o)}},e.prototype.subtract=function(t){var r,n=t.arr;if(!(null===(r=this.arr)||void 0===r?void 0:r.length))return new e(n);if(!(null==n?void 0:n.length))return new e(this.arr);if(this.arr.length===n.length){var o=[];for(var i in this.arr)o[i]=this.arr[i]-n[i];return new e(o)}},e.prototype.avg=function(t){var r=[];for(var n in this.arr)r[n]=this.arr[n]/t;return new e(r)},e.prototype.negate=function(){var t=[];for(var r in this.arr)t[r]=-this.arr[r];return new e(t)},e.prototype.squareEuclideanDistance=function(e){var t,r=e.arr;if(!(null===(t=this.arr)||void 0===t?void 0:t.length)||!(null==r?void 0:r.length))return 0;if(this.arr.length===r.length){var n=0;for(var o in this.arr)n+=Math.pow(this.arr[o]-e.arr[o],2);return n}},e.prototype.normalize=function(){var t=[],r=x(this.arr);r.sort((function(e,t){return e-t}));var n=r[r.length-1],o=r[0];for(var i in this.arr)t[i]=(this.arr[i]-o)/(n-o);return new e(t)},e.prototype.norm2=function(){var e;if(!(null===(e=this.arr)||void 0===e?void 0:e.length))return 0;var t=0;for(var r in this.arr)t+=Math.pow(this.arr[r],2);return Math.sqrt(t)},e.prototype.dot=function(e){var t,r=e.arr;if(!(null===(t=this.arr)||void 0===t?void 0:t.length)||!(null==r?void 0:r.length))return 0;if(this.arr.length===r.length){var n=0;for(var o in this.arr)n+=this.arr[o]*e.arr[o];return n}},e}();var S=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/,C=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/,P=function(e,t){return t.map((function(t){if(e.hasOwnProperty(t)){if(!isNaN(Number(e[t])))return Number(e[t]);if(e[t].match(S)||e[t].match(C))return Number(Date.parse(new Date(e[t])))/1e3}return 0}))},A=function(e){for(var t=function(e,t){void 0===e&&(e=[]),void 0===t&&(t=100);var r={};e.forEach((function(e){e.properties&&Object.keys(e.properties).forEach((function(t){"id"===t||!"".concat(e.properties[t]).match(S)&&!"".concat(e.properties[t]).match(C)&&isNaN(Number(e.properties[t]))?r.hasOwnProperty(t)&&delete r[t]:r.hasOwnProperty(t)?r[t]+=1:r[t]=1}))}));var n=Object.keys(r).sort((function(e,t){return r[t]-r[e]}));return n.length<t?n:n.slice(0,t)}(e),r=[],n=0;n<e.length;n++)r[n]=P(e[n].properties,t);return r},T=function(e,t,r,n){for(var o=t.length,i=2*n,a=0,d=0;d<o;d++)for(var s=e[d].clusterId,u=0;u<o;u++)s===e[u].clusterId&&(a+=(t[d][u]||0)-(r[d]||0)*(r[u]||0)/i);return a*(1/i)},q=function(e,t){void 0===e&&(e=[]);for(var r=e.length,n=new D([]),o=0;o<r;o++)n=n.add(new D(t[o]));var i=n.avg(r);i.normalize();var a=0;for(o=0;o<r;o++)a+=(s=new D(t[o])).squareEuclideanDistance(i);var d=[];for(e.forEach((function(){d.push([])})),o=0;o<r;o++){var s=new D(t[o]);e[o].clusterInertial=0;for(var u=0;u<r;u++)if(o!==u){var c=new D(t[u]);d[o][u]=s.squareEuclideanDistance(c),e[o].clusterInertial+=d[o][u]}else d[o][u]=0}var f=0,h=2*r*a;for(o=0;o<r;o++){var l=e[o].clusterId;for(u=0;u<r;u++){var v=e[u].clusterId;o!==u&&l===v&&(f+=e[o].clusterInertial*e[u].clusterInertial/Math.pow(h,2)-d[o][u]/h)}}return Number(f.toFixed(4))};const F=function(e,t,n,o,i,a){void 0===t&&(t=!1),void 0===n&&(n="weight"),void 0===o&&(o=1e-4),void 0===i&&(i=!1),void 0===a&&(a=1);var d=e.nodes,s=void 0===d?[]:d,u=e.edges,c=void 0===u?[]:u,f=[];if(i){s.forEach((function(e,t){e.properties=e.properties||{},e.originIndex=t}));var h=[];s.every((function(e){return e.hasOwnProperty("nodeType")}))&&(h=Array.from(new Set(s.map((function(e){return e.nodeType})))),s.forEach((function(e){e.properties.nodeType=h.findIndex((function(t){return t===e.nodeType}))}))),f=A(s)}var l=1,v={},p={};s.forEach((function(e,t){var r=String(l++);e.clusterId=r,v[r]={id:r,nodes:[e]},p[e.id]={node:e,idx:t}}));var g=r(e,t),b=[],m={},E=0;g.forEach((function(e,t){var r=0,n=s[t].id;m[n]={},e.forEach((function(e,t){if(e){r+=e;var o=s[t].id;m[n][o]=e,E+=e}})),b.push(r)})),E/=2;for(var y=1/0,L=1/0,N=0,w=[],k={};;){y=i&&s.every((function(e){return e.hasOwnProperty("properties")}))?T(s,g,b,E)+q(s,f)*a:T(s,g,b,E),0===N&&(L=y,w=s,k=v);var I=y>0&&y>L&&y-L<o;if(y>L&&(w=s.map((function(e){return{node:e,clusterId:e.clusterId}})),k=x(v),L=y),I||N>100)break;N++,Object.keys(v).forEach((function(e){var t=0;c.forEach((function(r){var o=r.source,i=r.target,a=p[o].node.clusterId,d=p[i].node.clusterId;(a===e&&d!==e||d===e&&a!==e)&&(t+=r[n]||1)})),v[e].sumTot=t})),s.forEach((function(e,t){var r,o=v[e.clusterId],d=0,s=b[t]/(2*E),u=0,h=o.nodes;h.forEach((function(e){var r=p[e.id].idx;u+=g[t][r]||0}));var l=u-o.sumTot*s,y=h.filter((function(t){return t.id!==e.id})),L=[];y.forEach((function(e,t){L[t]=f[e.originIndex]}));var N=q(y,f)*a,w=m[e.id];if(Object.keys(w).forEach((function(n){var o=p[n].node.clusterId;if(o!==e.clusterId){var u=v[o],c=u.nodes;if(c&&c.length){var h=0;c.forEach((function(e){var r=p[e.id].idx;h+=g[t][r]||0}));var b=h-u.sumTot*s,m=c.concat([e]),E=[];m.forEach((function(e,t){E[t]=f[e.originIndex]}));var y=q(m,f)*a,L=b-l;i&&(L=b+y-(l+N)),L>d&&(d=L,r=u)}}})),d>0){r.nodes.push(e);var k=e.clusterId;e.clusterId=r.id;var x=o.nodes.indexOf(e);o.nodes.splice(x,1);var I=0,j=0;c.forEach((function(e){var t=e.source,o=e.target,i=p[t].node.clusterId,a=p[o].node.clusterId;(i===r.id&&a!==r.id||a===r.id&&i!==r.id)&&(I+=e[n]||1),(i===k&&a!==k||a===k&&i!==k)&&(j+=e[n]||1)})),r.sumTot=I,o.sumTot=j}}))}var j={},M=0;Object.keys(k).forEach((function(e){var t=k[e];if(t.nodes&&t.nodes.length){var r=String(M+1);r!==e&&(t.id=r,t.nodes=t.nodes.map((function(e){return{id:e.id,clusterId:r}})),k[r]=t,j[e]=r,delete k[e],M++)}else delete k[e]})),w.forEach((function(e){var t=e.node,r=e.clusterId;t.clusterId=r,t.clusterId&&j[t.clusterId]&&(t.clusterId=j[t.clusterId])}));var O=[],D={};c.forEach((function(e){var t=e.source,r=e.target,o=e[n]||1,i=p[t].node.clusterId,a=p[r].node.clusterId,d="".concat(i,"---").concat(a);if(D[d])D[d].weight+=o,D[d].count++;else{var s={source:i,target:a,weight:o,count:1};D[d]=s,O.push(s)}}));var S=[];return Object.keys(k).forEach((function(e){S.push(k[e])})),{clusters:S,clusterEdges:O}},R=function(e,t){var r=new D(t),n=r.norm2(),o=new D(e),i=o.norm2(),a=r.dot(o),d=n*i;return d?a/d:0},G=function(){function e(e){this.count=e.length,this.parent={};for(var t=0,r=e;t<r.length;t++){var n=r[t];this.parent[n]=n}}return e.prototype.find=function(e){for(;this.parent[e]!==e;)e=this.parent[e];return e},e.prototype.union=function(e,t){var r=this.find(e),n=this.find(t);r!==n&&(r<n?(this.parent[t]!==t&&this.union(this.parent[t],e),this.parent[t]=this.parent[e]):(this.parent[e]!==e&&this.union(this.parent[e],t),this.parent[e]=this.parent[t]))},e.prototype.connected=function(e,t){return this.find(e)===this.find(t)},e}();var U=function(e,t){return e-t};const z=function(){function e(e){void 0===e&&(e=U),this.compareFn=e,this.list=[]}return e.prototype.getLeft=function(e){return 2*e+1},e.prototype.getRight=function(e){return 2*e+2},e.prototype.getParent=function(e){return 0===e?null:Math.floor((e-1)/2)},e.prototype.isEmpty=function(){return this.list.length<=0},e.prototype.top=function(){return this.isEmpty()?void 0:this.list[0]},e.prototype.delMin=function(){var e=this.top(),t=this.list.pop();return this.list.length>0&&(this.list[0]=t,this.moveDown(0)),e},e.prototype.insert=function(e){if(null!==e){this.list.push(e);var t=this.list.length-1;return this.moveUp(t),!0}return!1},e.prototype.moveUp=function(e){for(var t=this.getParent(e);e&&e>0&&this.compareFn(this.list[t],this.list[e])>0;){var r=this.list[t];this.list[t]=this.list[e],this.list[e]=r,e=t,t=this.getParent(e)}},e.prototype.moveDown=function(e){var t,r=e,n=this.getLeft(e),o=this.getRight(e),i=this.list.length;null!==n&&n<i&&this.compareFn(this.list[r],this.list[n])>0?r=n:null!==o&&o<i&&this.compareFn(this.list[r],this.list[o])>0&&(r=o),e!==r&&(t=[this.list[r],this.list[e]],this.list[e]=t[0],this.list[r]=t[1],this.moveDown(r))},e}();var B=function(e,t){var r=[],n=e.nodes,o=void 0===n?[]:n,i=e.edges,a=void 0===i?[]:i;if(0===o.length)return r;var d=o[0],u=new Set;u.add(d);var c=new z((function(e,r){return t?e.weight-r.weight:0}));for(s(d.id,a).forEach((function(e){c.insert(e)}));!c.isEmpty();){var f=c.delMin(),h=f.source,l=f.target;u.has(h)&&u.has(l)||(r.push(f),u.has(h)||(u.add(h),s(h,a).forEach((function(e){c.insert(e)}))),u.has(l)||(u.add(l),s(l,a).forEach((function(e){c.insert(e)}))))}return r},H=function(e,t){var r=[],n=e.nodes,o=void 0===n?[]:n,i=e.edges,a=void 0===i?[]:i;if(0===o.length)return r;var d=a.map((function(e){return e}));t&&d.sort((function(e,t){return e.weight-t.weight}));for(var s=new G(o.map((function(e){return e.id})));d.length>0;){var u=d.shift(),c=u.source,f=u.target;s.connected(c,f)||(r.push(u),s.union(c,f))}return r};var W="-1",$=function(e,t,r,n){void 0===e&&(e=-1),void 0===t&&(t=-1),void 0===r&&(r=-1),void 0===n&&(n="-1"),this.id=e,this.from=t,this.to=r,this.label=n},K=function(){function e(e,t){void 0===e&&(e=-1),void 0===t&&(t=W),this.id=e,this.label=t,this.edges=[],this.edgeMap={}}return e.prototype.addEdge=function(e){this.edges.push(e),this.edgeMap[e.id]=e},e}(),V=function(){function e(e,t,r){void 0===e&&(e=-1),void 0===t&&(t=!0),void 0===r&&(r=!1),this.id=e,this.edgeIdAutoIncrease=t,this.edges=[],this.nodes=[],this.nodeMap={},this.edgeMap={},this.nodeLabelMap={},this.edgeLabelMap={},this.counter=0,this.directed=r}return e.prototype.getNodeNum=function(){return this.nodes.length},e.prototype.addNode=function(e,t){if(!this.nodeMap[e]){var r=new K(e,t);this.nodes.push(r),this.nodeMap[e]=r,this.nodeLabelMap[t]||(this.nodeLabelMap[t]=[]),this.nodeLabelMap[t].push(e)}},e.prototype.addEdge=function(e,t,r,n){if((this.edgeIdAutoIncrease||void 0===e)&&(e=this.counter++),!(this.nodeMap[t]&&this.nodeMap[r]&&this.nodeMap[r].edgeMap[e])){var o=new $(e,t,r,n);if(this.edges.push(o),this.edgeMap[e]=o,this.nodeMap[t].addEdge(o),this.edgeLabelMap[n]||(this.edgeLabelMap[n]=[]),this.edgeLabelMap[n].push(o),!this.directed){var i=new $(e,r,t,n);this.nodeMap[r].addEdge(i),this.edgeLabelMap[n].push(i)}}},e}(),J=function(){function e(e,t,r,n,o){this.fromNode=e,this.toNode=t,this.nodeEdgeNodeLabel={nodeLabel1:r||W,edgeLabel:n||"-1",nodeLabel2:o||W}}return e.prototype.equalTo=function(e){return this.fromNode===e.formNode&&this.toNode===e.toNode&&this.nodeEdgeNodeLabel===e.nodeEdgeNodeLabel},e.prototype.notEqualTo=function(e){return!this.equalTo(e)},e}(),Q=function(){function e(){this.rmpath=[],this.dfsEdgeList=[]}return e.prototype.equalTo=function(e){var t=this.dfsEdgeList.length;if(t!==e.length)return!1;for(var r=0;r<t;r++)if(this.dfsEdgeList[r]!==e[r])return!1;return!0},e.prototype.notEqualTo=function(e){return!this.equalTo(e)},e.prototype.pushBack=function(e,t,r,n,o){return this.dfsEdgeList.push(new J(e,t,r,n,o)),this.dfsEdgeList},e.prototype.toGraph=function(e,t){void 0===e&&(e=-1),void 0===t&&(t=!1);var r=new V(e,!0,t);return this.dfsEdgeList.forEach((function(e){var t=e.fromNode,n=e.toNode,o=e.nodeEdgeNodeLabel,i=o.nodeLabel1,a=o.edgeLabel,d=o.nodeLabel2;i!==W&&r.addNode(t,i),d!==W&&r.addNode(n,d),i!==W&&d!==i&&r.addEdge(void 0,t,n,a)})),r},e.prototype.buildRmpath=function(){this.rmpath=[];for(var e=void 0,t=this.dfsEdgeList.length-1;t>=0;t--){var r=this.dfsEdgeList[t],n=r.fromNode,o=r.toNode;n<o&&(void 0===e||o===e)&&(this.rmpath.push(t),e=n)}return this.rmpath},e.prototype.getNodeNum=function(){var e={};return this.dfsEdgeList.forEach((function(t){e[t.fromNode]||(e[t.fromNode]=!0),e[t.toNode]||(e[t.toNode]=!0)})),Object.keys(e).length},e}(),X=function(){function e(e){if(this.his={},this.nodesUsed={},this.edgesUsed={},this.edges=[],e){for(;e;){var t=e.edge;this.edges.push(t),this.nodesUsed[t.from]=1,this.nodesUsed[t.to]=1,this.edgesUsed[t.id]=1,e=e.preNode}this.edges=this.edges.reverse()}}return e.prototype.hasNode=function(e){return 1===this.nodesUsed[e.id]},e.prototype.hasEdge=function(e){return 1===this.edgesUsed[e.id]},e}(),Y=function(){function e(e){var t=e.graphs,r=e.minSupport,n=void 0===r?2:r,o=e.minNodeNum,i=void 0===o?1:o,a=e.maxNodeNum,d=void 0===a?4:a,s=e.top,u=void 0===s?10:s,c=e.directed,f=void 0!==c&&c,h=e.verbose,l=void 0!==h&&h;this.graphs=t,this.dfsCode=new Q,this.support=0,this.frequentSize1Subgraphs=[],this.frequentSubgraphs=[],this.minSupport=n,this.top=u,this.directed=f,this.counter=0,this.maxNodeNum=d,this.minNodeNum=i,this.verbose=l,this.maxNodeNum<this.minNodeNum&&(this.maxNodeNum=this.minNodeNum),this.reportDF=[]}return e.prototype.findForwardRootEdges=function(e,t){var r=this,n=[],o=e.nodeMap;return t.edges.forEach((function(e){(r.directed||t.label<=o[e.to].label)&&n.push(e)})),n},e.prototype.findBackwardEdge=function(e,t,r,n){if(!this.directed&&t===r)return null;for(var o=e.nodeMap,i=o[r.to].edges,a=i.length,d=0;d<a;d++){var s=i[d];if(!n.hasEdge(s)&&s.to===t.from)if(this.directed){if(o[t.from].label<o[r.to].label||o[t.from].label===o[r.to].label&&t.label<=s.label)return s}else if(t.label<s.label||t.label===s.label&&o[t.to].label<=o[r.to].label)return s}return null},e.prototype.findForwardPureEdges=function(e,t,r,n){for(var o=[],i=t.to,a=e.nodeMap[i].edges,d=a.length,s=0;s<d;s++){var u=a[s],c=e.nodeMap[u.to];r<=c.label&&!n.hasNode(c)&&o.push(u)}return o},e.prototype.findForwardRmpathEdges=function(e,t,r,n){for(var o=[],i=e.nodeMap,a=i[t.to].label,d=i[t.from].edges,s=d.length,u=0;u<s;u++){var c=d[u],f=i[c.to].label;t.to===c.to||r>f||n.hasNode(i[c.to])||(t.label<c.label||t.label===c.label&&a<=f)&&o.push(c)}return o},e.prototype.getSupport=function(e){var t={};return e.forEach((function(e){t[e.graphId]||(t[e.graphId]=!0)})),Object.keys(t).length},e.prototype.findMinLabel=function(e){var t=void 0;return Object.keys(e).forEach((function(r){var n=e[r],o=n.nodeLabel1,i=n.edgeLabel,a=n.nodeLabel2;t?(o<t.nodeLabel1||o===t.nodeLabel1&&i<t.edgeLabel||o===t.nodeLabel1&&i===t.edgeLabel&&a<t.nodeLabel2)&&(t={nodeLabel1:o,edgeLabel:i,nodeLabel2:a}):t={nodeLabel1:o,edgeLabel:i,nodeLabel2:a}})),t},e.prototype.isMin=function(){var e=this,t=this.dfsCode;if(this.verbose&&console.log("isMin checking",t),1===t.dfsEdgeList.length)return!0;var r=this.directed,n=t.toGraph(-1,r),o=n.nodeMap,i=new Q,a={};n.nodes.forEach((function(t){e.findForwardRootEdges(n,t).forEach((function(e){var r=o[e.to],i="".concat(t.label,"-").concat(e.label,"-").concat(r.label);a[i]||(a[i]={projected:[],nodeLabel1:t.label,edgeLabel:e.label,nodeLabel2:r.label});var d={graphId:n.id,edge:e,preNode:null};a[i].projected.push(d)}))}));var d=this.findMinLabel(a);if(d){i.dfsEdgeList.push(new J(0,1,d.nodeLabel1,d.edgeLabel,d.nodeLabel2));var s=function(a){for(var d=i.buildRmpath(),u=i.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1,c=i.dfsEdgeList[d[0]].toNode,f={},h=!1,l=0,v=r?-1:0,p=function(t){if(h)return"break";a.forEach((function(r){var o=new X(r),a=e.findBackwardEdge(n,o.edges[d[t]],o.edges[d[0]],o);a&&(f[a.label]||(f[a.label]={projected:[],edgeLabel:a.label}),f[a.label].projected.push({graphId:n.id,edge:f,preNode:r}),l=i.dfsEdgeList[d[t]].fromNode,h=!0)}))},g=d.length-1;g>v&&"break"!==p(g);g--);if(h){var b=e.findMinLabel(f);i.dfsEdgeList.push(new J(c,l,W,b.edgeLabel,W));var m=i.dfsEdgeList.length-1;return e.dfsCode.dfsEdgeList[m]===i.dfsEdgeList[m]&&s(f[b.edgeLabel].projected)}var E={};h=!1;var y=0;a.forEach((function(t){var r=new X(t),i=e.findForwardPureEdges(n,r.edges[d[0]],u,r);i.length>0&&(h=!0,y=c,i.forEach((function(e){var r="".concat(e.label,"-").concat(o[e.to].label);E[r]||(E[r]={projected:[],edgeLabel:e.label,nodeLabel2:o[e.to].label}),E[r].projected.push({graphId:n.id,edge:e,preNode:t})})))}));var L=d.length,N=function(t){if(h)return"break";var r=d[t];a.forEach((function(t){var a=new X(t),d=e.findForwardRmpathEdges(n,a.edges[r],u,a);d.length>0&&(h=!0,y=i.dfsEdgeList[r].fromNode,d.forEach((function(e){var r="".concat(e.label,"-").concat(o[e.to].label);E[r]||(E[r]={projected:[],edgeLabel:e.label,nodeLabel2:o[e.to].label}),E[r].projected.push({graphId:n.id,edge:e,preNode:t})})))}))};for(g=0;g<L&&"break"!==N(g);g++);if(!h)return!0;var w=e.findMinLabel(E);i.dfsEdgeList.push(new J(y,c+1,W,w.edgeLabel,w.nodeLabel2));var k=i.dfsEdgeList.length-1;return t.dfsEdgeList[k]===i.dfsEdgeList[k]&&s(E["".concat(w.edgeLabel,"-").concat(w.nodeLabel2)].projected)},u="".concat(d.nodeLabel1,"-").concat(d.edgeLabel,"-").concat(d.nodeLabel2);return s(a[u].projected)}},e.prototype.report=function(){if(!(this.dfsCode.getNodeNum()<this.minNodeNum)){this.counter++;var e=this.dfsCode.toGraph(this.counter,this.directed);this.frequentSubgraphs.push(x(e))}},e.prototype.subGraphMining=function(e){var t=this;if(!(this.getSupport(e)<this.minSupport)&&this.isMin()){this.report();var r=this.dfsCode.getNodeNum(),n=this.dfsCode.buildRmpath(),o=this.dfsCode.dfsEdgeList[n[0]].toNode,i=this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1,a={},d={};e.forEach((function(e){for(var s=t.graphs[e.graphId],u=s.nodeMap,c=new X(e),f=n.length-1;f>=0;f--){var h=t.findBackwardEdge(s,c.edges[n[f]],c.edges[n[0]],c);if(h){var l="".concat(t.dfsCode.dfsEdgeList[n[f]].fromNode,"-").concat(h.label);d[l]||(d[l]={projected:[],toNodeId:t.dfsCode.dfsEdgeList[n[f]].fromNode,edgeLabel:h.label}),d[l].projected.push({graphId:e.graphId,edge:h,preNode:e})}}if(!(r>=t.maxNodeNum)){t.findForwardPureEdges(s,c.edges[n[0]],i,c).forEach((function(t){var r="".concat(o,"-").concat(t.label,"-").concat(u[t.to].label);a[r]||(a[r]={projected:[],fromNodeId:o,edgeLabel:t.label,nodeLabel2:u[t.to].label}),a[r].projected.push({graphId:e.graphId,edge:t,preNode:e})}));var v=function(r){t.findForwardRmpathEdges(s,c.edges[n[r]],i,c).forEach((function(o){var i="".concat(t.dfsCode.dfsEdgeList[n[r]].fromNode,"-").concat(o.label,"-").concat(u[o.to].label);a[i]||(a[i]={projected:[],fromNodeId:t.dfsCode.dfsEdgeList[n[r]].fromNode,edgeLabel:o.label,nodeLabel2:u[o.to].label}),a[i].projected.push({graphId:e.graphId,edge:o,preNode:e})}))};for(f=0;f<n.length;f++)v(f)}})),Object.keys(d).forEach((function(e){var r=d[e],n=r.toNodeId,i=r.edgeLabel;t.dfsCode.dfsEdgeList.push(new J(o,n,"-1",i,"-1")),t.subGraphMining(d[e].projected),t.dfsCode.dfsEdgeList.pop()})),Object.keys(a).forEach((function(e){var r=a[e],n=r.fromNodeId,i=r.edgeLabel,d=r.nodeLabel2;t.dfsCode.dfsEdgeList.push(new J(n,o+1,W,i,d)),t.subGraphMining(a[e].projected),t.dfsCode.dfsEdgeList.pop()}))}},e.prototype.generate1EdgeFrequentSubGraphs=function(){var e=this.graphs,t=this.directed,r=this.minSupport,n=this.frequentSize1Subgraphs,o={},i={},a={},d={};return Object.keys(e).forEach((function(r){var n=e[r],s=n.nodeMap;n.nodes.forEach((function(e,n){var u=e.label,c="".concat(r,"-").concat(u);if(!a[c]){var f=o[u]||0;f++,o[u]=f}a[c]={graphKey:r,label:u},e.edges.forEach((function(e){var n=u,o=s[e.to].label;if(!t&&n>o){var a=o;o=n,n=a}var c=e.label,f="".concat(r,"-").concat(n,"-").concat(c,"-").concat(o),h="".concat(n,"-").concat(c,"-").concat(o);if(!i[h]){var l=i[h]||0;l++,i[h]=l}d[f]={graphId:r,nodeLabel1:n,edgeLabel:c,nodeLabel2:o}}))}))})),Object.keys(o).forEach((function(e){if(!(o[e]<r)){var t={nodes:[],edges:[]};t.nodes.push({id:"0",label:e}),n.push(t)}})),n},e.prototype.run=function(){var e=this;if(this.frequentSize1Subgraphs=this.generate1EdgeFrequentSubGraphs(),!(this.maxNodeNum<2)){var t=this.graphs,r=(this.directed,{});Object.keys(t).forEach((function(n){var o=t[n],i=o.nodeMap;o.nodes.forEach((function(t){e.findForwardRootEdges(o,t).forEach((function(e){var o=i[e.to],a="".concat(t.label,"-").concat(e.label,"-").concat(o.label);r[a]||(r[a]={projected:[],nodeLabel1:t.label,edgeLabel:e.label,nodeLabel2:o.label});var d={graphId:n,edge:e,preNode:null};r[a].projected.push(d)}))}))})),Object.keys(r).forEach((function(t){var n=r[t],o=n.projected,i=n.nodeLabel1,a=n.edgeLabel,d=n.nodeLabel2;e.dfsCode.dfsEdgeList.push(new J(0,1,i,a,d)),e.subGraphMining(o),e.dfsCode.dfsEdgeList.pop()}))}},e}(),Z="cluster";var _=function(e,t,r,n){void 0===r&&(r="cluster"),void 0===n&&(n=2);var o=[],i=e.nodes;return t.forEach((function(e,t){o.push(ee(i,e,t,r,n))})),o},ee=function(e,t,r,n,o){var i=[r],a=[],d={};return t.forEach((function(t,s){if(t<=o&&r!==s){i.push(s),a.push(e[s]);var u=e[s][n];d[u]?(d[u].count++,d[u].dists.push(t)):d[u]={count:1,dists:[t]}}})),Object.keys(d).forEach((function(e){d[e].dists=d[e].dists.sort((function(e,t){return e-t}))})),{nodeIdx:r,nodeId:e[r].id,nodeIdxs:i,neighbors:a,neighborNum:i.length-1,nodeLabelCountMap:d}},te=function(e,t,r,n){var o=r.nodes;return n||(n={}),Object.keys(e).forEach((function(i){var a,d;if(!n||!n[i]){n[i]={nodes:[],edges:[]};var s=e[i],u=null===(a=t[s.start])||void 0===a?void 0:a.nodeIdxs,c=null===(d=t[s.end])||void 0===d?void 0:d.nodeIdxs;if(u&&c){var f=new Set(c),h=u.filter((function(e){return f.has(e)}));if(h&&h.length){for(var l={},v=h.length,p=0;p<v;p++){var g=o[h[p]];n[i].nodes.push(g),l[g.id]=!0}r.edges.forEach((function(e){l[e.source]&&l[e.target]&&n[i].edges.push(e)}))}}}})),n},re=function(e,t,r,n){var o,i,a={};e.nodes.forEach((function(e){a[e.id]=e}));var d=0;return!(null===(o=null==t?void 0:t.edges)||void 0===o?void 0:o.length)||(null===(i=null==t?void 0:t.nodes)||void 0===i?void 0:i.length)<2?0:(e.edges.forEach((function(e){var o=a[e.source][r],i=a[e.target][r],s=null==t?void 0:t.nodes[0][r],u=null==t?void 0:t.nodes[1][r],c=null==t?void 0:t.edges[0][n];e[n]===c&&(o===s&&i===u||o===u&&i===s)&&d++})),d)},ne=function(e,t){var r={},n={};return e.forEach((function(e,o){r[e.id]={idx:o,node:e,degree:0,inDegree:0,outDegree:0};var i=e[t];n[i]||(n[i]=[]),n[i].push(e)})),{nodeMap:r,nodeLabelMap:n}},oe=function(e,t,r){var n={},o={};return e.forEach((function(e,i){n["".concat(u)]={idx:i,edge:e};var a=e[t];o[a]||(o[a]=[]),o[a].push(e);var d=r[e.source];d&&(d.degree++,d.outDegree++);var s=r[e.target];s&&(s.degree++,s.inDegree++)})),{edgeMap:n,edgeLabelMap:o}},ie=function(e,t,r){var n=t.length,o={};return t.forEach((function(t,i){for(var a=r?0:i+1,d=e[i].id,s=a;s<n;s++)if(i!==s){var u=e[s].id,c=t[s];o["".concat(d,"-").concat(u)]=c,r||(o["".concat(u,"-").concat(d)]=c)}})),o},ae=function(e,t,r,n,o,i,a,d,s,u,c){var f,h="".concat(t.id,"-").concat(r.id);if(u&&u[h])return u[h];var l=c?c[h]:void 0;if(!l){var v=((f={})[h]={start:n[t.id].idx,end:n[r.id].idx,distance:o},f);l=(c=te(v,i,e,c))[h]}return re(l,a,d,s)},de=function(e,t,r,n){var o,i,a,d=null===(o=e[t])||void 0===o?void 0:o.degree,s=null===(i=e[t])||void 0===i?void 0:i.inDegree,u=null===(a=e[t])||void 0===a?void 0:a.outDegree;return void 0===e[t]&&(d=1/0,s=1/0,u=1/0,n[t].forEach((function(e){var t=r[e.id].degree;d>t&&(d=t);var n=r[e.id].inDegree;s>n&&(s=n);var o=r[e.id].outDegree;u>o&&(u=o)})),e[t]={degree:d,inDegree:s,outDegree:u}),{minPatternNodeLabelDegree:d,minPatternNodeLabelInDegree:s,minPatternNodeLabelOutDegree:u}};var se=function(){function e(e){void 0===e&&(e=10),this.linkedList=new i,this.maxStep=e}return Object.defineProperty(e.prototype,"length",{get:function(){return this.linkedList.toArray().length},enumerable:!1,configurable:!0}),e.prototype.isEmpty=function(){return!this.linkedList.head},e.prototype.isMaxStack=function(){return this.toArray().length>=this.maxStep},e.prototype.peek=function(){return this.isEmpty()?null:this.linkedList.head.value},e.prototype.push=function(e){this.linkedList.prepend(e),this.length>this.maxStep&&this.linkedList.deleteTail()},e.prototype.pop=function(){var e=this.linkedList.deleteHead();return e?e.value:null},e.prototype.toArray=function(){return this.linkedList.toArray().map((function(e){return e.value}))},e.prototype.clear=function(){for(;!this.isEmpty();)this.pop()},e}();const ue={getAdjMatrix:r,breadthFirstSearch:function(e,t,r,n){void 0===n&&(n=!0);var o=function(e){void 0===e&&(e={});var t,r=e,n=function(){},o=(t={},function(e){var r=e.next;return!t[r]&&(t[r]=!0,!0)});return r.allowTraversal=e.allowTraversal||o,r.enter=e.enter||n,r.leave=e.leave||n,r}(r),i=new a,s=e.edges,u=void 0===s?[]:s;i.enqueue(t);for(var c="",f=function(){var e=i.dequeue();o.enter({current:e,previous:c}),d(e,u,n?"target":void 0).forEach((function(t){o.allowTraversal({previous:c,current:e,next:t})&&i.enqueue(t)})),o.leave({current:e,previous:c}),c=e};!i.isEmpty();)f()},connectedComponent:f,getDegree:l,getInDegree:function(e,t){return h(e)[t]?h(e)[t].inDegree:0},getOutDegree:function(e,t){return h(e)[t]?h(e)[t].outDegree:0},detectCycle:m,detectDirectedCycle:m,detectAllCycles:function(e,t,r,n){return void 0===n&&(n=!0),t?b(e,r,n):g(e,r,n)},detectAllDirectedCycle:b,detectAllUndirectedCycle:g,depthFirstSearch:p,dijkstra:j,findAllPath:function(e,t,r,n){var o;if(t===r)return[[t]];var i=e.edges,a=void 0===i?[]:i,s=[t],u=((o={})[t]=!0,o),c=[],f=[],h=n?d(t,a,"target"):d(t,a);for(c.push(h);s.length>0&&c.length>0;){var l=c[c.length-1];if(l.length){var v=l.shift();if(v&&(s.push(v),u[v]=!0,h=n?d(v,a,"target"):d(v,a),c.push(h.filter((function(e){return!u[e]})))),s[s.length-1]===r){var p=s.map((function(e){return e}));f.push(p),g=s.pop(),u[g]=!1,c.pop()}}else{var g=s.pop();u[g]=!1,c.pop()}}return f},findShortestPath:function(e,t,r,n,o){var i=j(e,t,n,o),a=i.length,d=i.path,s=i.allPath;return{length:a[r],path:d[r],allPath:s[r]}},floydWarshall:O,labelPropagation:function(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n="weight"),void 0===o&&(o=1e3);var i=e.nodes,a=void 0===i?[]:i,d=e.edges,s=void 0===d?[]:d,c={},f={};a.forEach((function(e,t){var r=u();e.clusterId=r,c[r]={id:r,nodes:[e]},f[e.id]={node:e,idx:t}}));var h=r(e,t),l=[],v={};h.forEach((function(e,t){var r=0,n=a[t].id;v[n]={},e.forEach((function(e,t){if(e){r+=e;var o=a[t].id;v[n][o]=e}})),l.push(r)}));for(var p=0,g=function(){var e=!1;if(a.forEach((function(t){var r={};Object.keys(v[t.id]).forEach((function(e){var n=v[t.id][e],o=f[e].node.clusterId;r[o]||(r[o]=0),r[o]+=n}));var n=-1/0,o=[];if(Object.keys(r).forEach((function(e){n<r[e]?(n=r[e],o=[e]):n===r[e]&&o.push(e)})),1!==o.length||o[0]!==t.clusterId){var i=o.indexOf(t.clusterId);if(i>=0&&o.splice(i,1),o&&o.length){e=!0;var a=c[t.clusterId],d=a.nodes.indexOf(t);a.nodes.splice(d,1);var s=Math.floor(Math.random()*o.length),u=c[o[s]];u.nodes.push(t),t.clusterId=u.id}}})),!e)return"break";p++};p<o&&"break"!==g(););Object.keys(c).forEach((function(e){var t=c[e];t.nodes&&t.nodes.length||delete c[e]}));var b=[],m={};s.forEach((function(e){var t=e.source,r=e.target,o=e[n]||1,i=f[t].node.clusterId,a=f[r].node.clusterId,d="".concat(i,"---").concat(a);if(m[d])m[d].weight+=o,m[d].count++;else{var s={source:i,target:a,weight:o,count:1};m[d]=s,b.push(s)}}));var E=[];return Object.keys(c).forEach((function(e){E.push(c[e])})),{clusters:E,clusterEdges:b}},louvain:F,iLouvain:function(e,t,r,n,o){return void 0===t&&(t=!1),void 0===r&&(r="weight"),void 0===n&&(n=1e-4),void 0===o&&(o=1),F(e,t,r,n,!0,o)},kCore:function(e,t){var r;void 0===t&&(t=1);for(var n=x(e),o=n.nodes,i=void 0===o?[]:o,a=n.edges,d=void 0===a?[]:a,s=function(){var e=l({nodes:i,edges:d}),n=Object.keys(e);n.sort((function(t,r){var n,o;return(null===(n=e[t])||void 0===n?void 0:n.degree)-(null===(o=e[r])||void 0===o?void 0:o.degree)}));var o=n[0];if(!i.length||(null===(r=e[o])||void 0===r?void 0:r.degree)>=t)return"break";var a=i.findIndex((function(e){return e.id===o}));i.splice(a,1),d=d.filter((function(e){return!(e.source===o||e.target===o)}))};"break"!==s(););return{nodes:i,edges:d}},cosineSimilarity:R,nodesCosineSimilarity:function(e,t){void 0===e&&(e=[]);var r=x(e.filter((function(e){return e.id!==t.id}))),n=e.findIndex((function(e){return e.id===t.id})),o=A(e),i=o[n],a=[];return r.forEach((function(e,r){if(e.id!==t.id){var n=o[r],d=R(n,i);a.push(d),e.cosineSimilarity=d}})),r.sort((function(e,t){return t.cosineSimilarity-e.cosineSimilarity})),{allCosineSimilarity:a,similarNodes:r}},minimumSpanningTree:function(e,t,r){return r?{prim:B,kruskal:H}[r](e,t):H(e,t)},pageRank:function(e,t,r){"number"!=typeof t&&(t=1e-6),"number"!=typeof r&&(r=.85);for(var n,o=1,i=0,a=1e3,s=e.nodes,u=void 0===s?[]:s,c=e.edges,f=void 0===c?[]:c,h=u.length,v={},p={},g=0;g<h;++g)v[m=(w=u[g]).id]=1/h,p[m]=1/h;for(var b=l(e);a>0&&o>t;){for(i=0,g=0;g<h;++g){var m=(w=u[g]).id;if(n=0,0===b[w.id].inDegree)v[m]=0;else{for(var E=d(m,f,"source"),y=0;y<E.length;++y){var L=E[y],N=b[L].outDegree;N>0&&(n+=p[L]/N)}v[m]=r*n,i+=v[m]}}for(i=(1-i)/h,o=0,g=0;g<h;++g){var w;n=v[m=(w=u[g]).id]+i,o+=Math.abs(n-p[m]),p[m]=n}a-=1}return p},getNeighbors:d,Stack:se,GADDI:function(e,t,r,n,o,i,a){var d;if(void 0===r&&(r=!1),void 0===i&&(i="cluster"),void 0===a&&(a="cluster"),e&&e.nodes){var s=e.nodes.length;if(s){var u=O(e,r),c=O(t,r),f=ie(e.nodes,u,r),h=ie(t.nodes,c,r),l=ne(e.nodes,i),v=l.nodeMap,p=l.nodeLabelMap,g=ne(t.nodes,i),b=g.nodeMap,m=g.nodeLabelMap;oe(e.edges,a,v);var y=oe(t.edges,a,b).edgeLabelMap,L=[];null==c||c.forEach((function(e){L=L.concat(e)})),o||(o=Math.max.apply(Math,E(E([],L,!1),[2],!1))),n||(n=o);var N=_(e,u,i,n),w=_(t,c,i,n),k=function(e,t,r,n,o){var i=Math.ceil(r/t),a={},d=0;return n.forEach((function(e,n){for(var s=0,u=0,c=e.nodeIdxs,f=e.neighborNum-1;s<i;){for(var h=c[1+Math.floor(Math.random()*f)],l=0;(a["".concat(n,"-").concat(h)]||a["".concat(h,"-").concat(n)])&&(h=Math.floor(Math.random()*t),!(++l>2*t)););if(l<2*t&&(a["".concat(n,"-").concat(h)]={start:n,end:h,distance:o[n][h]},s++,++d>=r))return a;if(++u>2*t)break}s<i&&(i=(i+(i-s))/(t-n-1))})),a}(0,s,Math.min(100,s*(s-1)/2),w,u),x=te(k,N,e),I=function(e){var t=e.graphs,r=e.directed,n=void 0!==r&&r,o=e.nodeLabelProp,i=void 0===o?Z:o,a=e.edgeLabelProp,d=void 0===a?Z:a,s=function(e,t,r,n){var o={};return Object.keys(e).forEach((function(i,a){var d=e[i],s=new V(a,!0,t),u={};d.nodes.forEach((function(e,t){s.addNode(t,e[r]),u[e.id]=t})),d.edges.forEach((function(e,t){var r=u[e.source],o=u[e.target];s.addEdge(-1,r,o,e[n])})),s&&s.getNodeNum()&&(o[s.id]=s)})),o}(t,n,i,d),u=e.minSupport,c=e.maxNodeNum,f=e.minNodeNum,h=e.verbose,l=e.top,v=new Y({graphs:s,minSupport:u,maxNodeNum:c,minNodeNum:f,top:l,verbose:h,directed:n});v.run();var p=function(e,t,r){var n=[];return e.forEach((function(e){var o={nodes:[],edges:[]};e.nodes.forEach((function(e){var r;o.nodes.push(((r={id:"".concat(e.id)})[t]=e.label,r))})),e.edges.forEach((function(e){var t;o.edges.push(((t={source:"".concat(e.from),target:"".concat(e.to)})[r]=e.label,t))})),n.push(o)})),n}(v.frequentSubgraphs,i,d);return p}({graphs:x,nodeLabelProp:i,edgeLabelProp:a,minSupport:1,minNodeNum:1,maxNodeNum:4,directed:r}).slice(0,10),M=I.length,D=[];I.forEach((function(e,t){D[t]={},Object.keys(x).forEach((function(r){var n=x[r],o=re(n,e,i,a);D[t][r]=o}))}));var S=function(e,t,r){for(var n=1/0,o=0,i=function(t){var r=e[t],i=Object.keys(r).sort((function(e,t){return r[e]-r[t]})),a=[];i.forEach((function(e,t){a[t%10]||(a[t%10]={graphs:[],totalCount:0,aveCount:0}),a[t%10].graphs.push(e),a[t%10].totalCount+=r[e]}));var d=0,s=[];a.forEach((function(e){var t=e.totalCount/e.graphs.length;e.aveCount=t,s.push(t);var n=0,o=e.length;e.graphs.forEach((function(t,o){var i=r[t];e.graphs.forEach((function(e,t){o!==t&&(n+=Math.abs(i-r[e]))}))})),d+=n/=o*(o-1)/2})),d/=a.length;var u=0;s.forEach((function(e,t){s.forEach((function(r,n){t!==n&&(u+=Math.abs(e-r))})),u/=s.length*(s.length-1)/2}));var c=u-d;n<c&&(n=c,o=t)},a=0;a<t;a++)i(a);return{structure:r[o],structureCountMap:e[o]}}(D,M,I),C=S.structure,P=S.structureCountMap,A=t.nodes[0],T=[],q=null===(d=t.nodes[0])||void 0===d?void 0:d[i],F=-1/0;t.nodes.forEach((function(e){var t=e[i],r=p[t];(null==r?void 0:r.length)>F&&(F=r.length,T=r,q=t,A=e)}));var R={},G={},U={},z={},B={},H={};Object.keys(m).forEach((function(n,o){B[n]=[],r&&(H[n]=[]);var d=-1/0,s=m[n],u={};s.forEach((function(e){var t=h["".concat(A.id,"-").concat(e.id)];if(t&&B[n].push(t),d<t&&(d=t),u["".concat(A.id,"-").concat(e.id)]={start:0,end:b[e.id].idx,distance:t},r){var o=h["".concat(e.id,"-").concat(A.id)];o&&H[n].push(o)}})),B[n]=B[n].sort((function(e,t){return e-t})),r&&(H[n]=H[n].sort((function(e,t){return e-t}))),G=te(u,w,t,G);var c=[];if(Object.keys(u).forEach((function(e){if(U[e])c.push(U[e]);else{var t=G[e];U[e]=re(t,C,i,a),c.push(U[e])}})),c=c.sort((function(e,t){return t-e})),z["".concat(A.id,"-").concat(n)]=c,n!==q)for(var l=function(t){var r=T[t],o=N[v[r.id].idx],d=o.nodeLabelCountMap[n],s=m[n].length;if(!d||d.count<s)return T.splice(t,1),"continue";for(var u=!1,h=0;h<s;h++)if(d.dists[h]>B[n][h]){u=!0;break}if(u)return T.splice(t,1),"continue";var l={};o.neighbors.forEach((function(e){var t=f["".concat(r.id,"-").concat(e.id)];l["".concat(r.id,"-").concat(e.id)]={start:v[r.id].idx,end:v[e.id].idx,distance:t}})),x=te(l,N,e,x);var p=[];Object.keys(l).forEach((function(e){if(P[e])p.push(P[e]);else{var t=x[e];P[e]=re(t,C,i,a),p.push(P[e])}})),p=p.sort((function(e,t){return t-e}));var g=!1;for(h=0;h<s;h++)if(p[h]<c[h]){g=!0;break}return g?(T.splice(t,1),"continue"):void 0},p=((null==T?void 0:T.length)||0)-1;p>=0;p--)l(p)}));var W=[];null==T||T.forEach((function(n){for(var d=v[n.id].idx,s=ee(e.nodes,u[d],d,i,o).neighbors,c=!1,h=s.length-1;h>=0;h--){if(s.length+1<t.nodes.length)return void(c=!0);var l=s[h],p=l[i];if(m[p]&&m[p].length)if(B[p]&&B[p].length){var g="".concat(n.id,"-").concat(l.id),E=f[g],y=B[p].length-1;if(E>B[p][y])s.splice(h,1);else{if(r){var L="".concat(l.id,"-").concat(n.id),w=f[L];if(y=H[p].length-1,w>H[p][y]){s.splice(h,1);continue}}var k=P[g]?P[g]:ae(e,n,l,v,E,N,C,i,a,P,x),I="".concat(A.id,"-").concat(p);if(k<z[I][z[I].length-1])s.splice(h,1);else{var j=de(R,p,b,m),M=j.minPatternNodeLabelDegree;j.minPatternNodeLabelInDegree,j.minPatternNodeLabelOutDegree,v[l.id].degree<M&&s.splice(h,1)}}}else s.splice(h,1);else s.splice(h,1)}c||W.push({nodes:[n].concat(s)})}));var $=j(t,A.id,!1).length,K={};r?(Object.keys($).forEach((function(e){var t=b[e].node[i];K[t]?K[t].push($[e]):K[t]=[$[e]]})),Object.keys(K).forEach((function(e){K[e].sort((function(e,t){return e-t}))}))):K=B;for(var J=function(n){var o=W[n],d=o.nodes[0],s={},u={};o.nodes.forEach((function(e,t){u[e.id]={idx:t,node:e,degree:0,inDegree:0,outDegree:0};var r=e[i];s[r]?s[r]++:s[r]=1}));var c=[],f={};e.edges.forEach((function(e){u[e.source]&&u[e.target]&&(c.push(e),f[e[a]]?f[e[a]]++:f[e[a]]=1,u[e.source].degree++,u[e.target].degree++,u[e.source].outDegree++,u[e.target].inDegree++)}));for(var h=Object.keys(y).length,l=!1,p=0;p<h;p++){var g=Object.keys(y)[p];if(!f[g]||f[g]<y[g].length){l=!0;break}}if(l)return W.splice(n,1),"continue";var E=c.length;if(E<t.edges.length)return W.splice(n,1),"break";var L=!1,N=function(e){var t=c[e],n=t[a],o=y[n];if(!o||!o.length)return f[n]--,o&&f[n]<o.length?(L=!0,"break"):(c.splice(e,1),u[t.source].degree--,u[t.target].degree--,u[t.source].outDegree--,u[t.target].inDegree--,"continue");var d=u[t.source].node[i],s=u[t.target].node[i],h=!1;return o.forEach((function(e){var t=b[e.source].node,n=b[e.target].node;t[i]===d&&n[i]===s&&(h=!0),r||t[i]!==s||n[i]!==d||(h=!0)})),h?void 0:(f[n]--,o&&f[n]<o.length?(L=!0,"break"):(c.splice(e,1),u[t.source].degree--,u[t.target].degree--,u[t.source].outDegree--,u[t.target].inDegree--,"continue"))};for(p=E-1;p>=0&&"break"!==N(p);p--);if(L)return W.splice(n,1),"continue";o.edges=c;var w=j(o,o.nodes[0].id,!1).length;if(Object.keys(w).reverse().forEach((function(e){if(e!==o.nodes[0].id&&!L){if(w[e]===1/0){var t=u[e].node[i];if(s[t]--,s[t]<m[t].length)return void(L=!0);var r=o.nodes.indexOf(u[e].node);return o.nodes.splice(r,1),void(u[e]=void 0)}var n=v[e].node[i];if(!K[n]||!K[n].length||w[e]>K[n][K[n].length-1]){if(t=u[e].node[i],s[t]--,s[t]<m[t].length)return void(L=!0);r=o.nodes.indexOf(u[e].node),o.nodes.splice(r,1),u[e]=void 0}}})),L)return W.splice(n,1),"continue";for(var k=!0,x=0;k&&!L;){if(k=!1,r?u[d.id].degree<b[A.id].degree||u[d.id].inDegree<b[A.id].inDegree||u[d.id].outDegree<b[A.id].outDegree:u[d.id].degree<b[A.id].degree){L=!0;break}if(s[d[i]]<m[d[i]].length){L=!0;break}for(var I=o.nodes.length-1;I>=0;I--){var M=o.nodes[I],O=u[M.id].degree,D=u[M.id].inDegree,S=u[M.id].outDegree,C=M[i],P=de(R,C,b,m),T=P.minPatternNodeLabelDegree,q=P.minPatternNodeLabelInDegree,F=P.minPatternNodeLabelOutDegree;if(r?O<T||D<q||S<F:O<T){if(s[M[i]]--,s[M[i]]<m[M[i]].length){L=!0;break}o.nodes.splice(I,1),u[M.id]=void 0,k=!0}}if(L||!k&&0!==x)break;for(var G=(E=c.length)-1;G>=0;G--){var U=c[G];if(!u[U.source]||!u[U.target]){c.splice(G,1);var z=U[a];if(f[z]--,u[U.source]&&(u[U.source].degree--,u[U.source].outDegree--),u[U.target]&&(u[U.target].degree--,u[U.target].inDegree--),y[z]&&f[z]<y[z].length){L=!0;break}k=!0}}x++}return L||L||o.nodes.length<t.nodes.length||c.length<t.edges.length?(W.splice(n,1),"continue"):void 0},Q=W.length-1;Q>=0&&"break"!==J(Q);Q--);var X=W.length,se=function(e){var t=W[e],r={};t.edges.forEach((function(e){var t="".concat(e.source,"-").concat(e.target,"-").concat(e.label);r[t]?r[t]++:r[t]=1}));for(var n=function(e){var t=W[e],n={};t.edges.forEach((function(e){var t="".concat(e.source,"-").concat(e.target,"-").concat(e.label);n[t]?n[t]++:n[t]=1}));var o=!0;Object.keys(n).length!==Object.keys(r).length?o=!1:Object.keys(r).forEach((function(e){n[e]!==r[e]&&(o=!1)})),o&&W.splice(e,1)},o=X-1;o>e;o--)n(o);X=W.length};for(Q=0;Q<=X-1;Q++)se(Q);return W}}}};return t.default})()})); | ||
//# sourceMappingURL=index.min.js.map |
@@ -1,2 +0,2 @@ | ||
(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{GADDI:()=>fe,breadthFirstSearch:()=>c,connectedComponent:()=>f,depthFirstSearch:()=>b,detectCycle:()=>E,dijkstra:()=>k,findAllPath:()=>D,findShortestPath:()=>O,floydWarshall:()=>S,getAdjMatrix:()=>r,getDegree:()=>l,getInDegree:()=>p,getNeighbors:()=>d,getOutDegree:()=>v,labelPropagation:()=>P,louvain:()=>U,minimumSpanningTree:()=>W,pageRank:()=>$});const r=function(e,t){var r=e.nodes,n=e.edges,o=[],i={};if(!r)throw new Error("invalid nodes data!");return r&&r.forEach((function(e,t){i[e.id]=t,o.push([])})),n&&n.forEach((function(e){var r=e.source,n=e.target,a=i[r],d=i[n];!a&&0!==a||!d&&0!==d||(o[a][d]=1,t||(o[d][a]=1))})),o};var n=function(e,t){return e===t},o=function(){function e(e,t){void 0===t&&(t=null),this.value=e,this.next=t}return e.prototype.toString=function(e){return e?e(this.value):"".concat(this.value)},e}();const i=function(){function e(e){void 0===e&&(e=n),this.head=null,this.tail=null,this.compare=e}return e.prototype.prepend=function(e){var t=new o(e,this.head);return this.head=t,this.tail||(this.tail=t),this},e.prototype.append=function(e){var t=new o(e);return this.head?(this.tail.next=t,this.tail=t,this):(this.head=t,this.tail=t,this)},e.prototype.delete=function(e){if(!this.head)return null;for(var t=null;this.head&&this.compare(this.head.value,e);)t=this.head,this.head=this.head.next;var r=this.head;if(null!==r)for(;r.next;)this.compare(r.next.value,e)?(t=r.next,r.next=r.next.next):r=r.next;return this.compare(this.tail.value,e)&&(this.tail=r),t},e.prototype.find=function(e){var t=e.value,r=void 0===t?void 0:t,n=e.callback,o=void 0===n?void 0:n;if(!this.head)return null;for(var i=this.head;i;){if(o&&o(i.value))return i;if(void 0!==r&&this.compare(i.value,r))return i;i=i.next}return null},e.prototype.deleteTail=function(){var e=this.tail;if(this.head===this.tail)return this.head=null,this.tail=null,e;for(var t=this.head;t.next;)t.next.next?t=t.next:t.next=null;return this.tail=t,e},e.prototype.deleteHead=function(){if(!this.head)return null;var e=this.head;return this.head.next?this.head=this.head.next:(this.head=null,this.tail=null),e},e.prototype.fromArray=function(e){var t=this;return e.forEach((function(e){return t.append(e)})),this},e.prototype.toArray=function(){for(var e=[],t=this.head;t;)e.push(t),t=t.next;return e},e.prototype.reverse=function(){for(var e=this.head,t=null,r=null;e;)r=e.next,e.next=t,t=e,e=r;this.tail=this.head,this.head=t},e.prototype.toString=function(e){return void 0===e&&(e=void 0),this.toArray().map((function(t){return t.toString(e)})).toString()},e}(),a=function(){function e(){this.linkedList=new i}return e.prototype.isEmpty=function(){return!this.linkedList.head},e.prototype.peek=function(){return this.linkedList.head?this.linkedList.head.value:null},e.prototype.enqueue=function(e){this.linkedList.append(e)},e.prototype.dequeue=function(){var e=this.linkedList.deleteHead();return e?e.value:null},e.prototype.toString=function(e){return this.linkedList.toString(e)},e}();var d=function(e,t,r){void 0===t&&(t=[]);var n=t.filter((function(t){return t.source===e||t.target===e}));return"target"===r?n.filter((function(t){return t.source===e})).map((function(e){return e.target})):"source"===r?n.filter((function(t){return t.target===e})).map((function(e){return e.source})):n.map((function(t){return t.source===e?t.target:t.source}))},s=function(e,t){return t.filter((function(t){return t.source===e||t.target===e}))},u=function(e){void 0===e&&(e=0);var t="".concat(Math.random()).split(".")[1].substr(0,5),r="".concat(Math.random()).split(".")[1].substr(0,5);return"".concat(e,"-").concat(t).concat(r)};const c=function(e,t,r,n){void 0===n&&(n=!0);var o=function(e){void 0===e&&(e={});var t,r=e,n=function(){},o=(t={},function(e){var r=e.next;return!t[r]&&(t[r]=!0,!0)});return r.allowTraversal=e.allowTraversal||o,r.enter=e.enter||n,r.leave=e.leave||n,r}(r),i=new a,s=e.edges,u=void 0===s?[]:s;i.enqueue(t);for(var c="",f=function(){var e=i.dequeue();o.enter({current:e,previous:c}),d(e,u,n?"target":void 0).forEach((function(t){o.allowTraversal({previous:c,current:e,next:t})&&i.enqueue(t)})),o.leave({current:e,previous:c}),c=e};!i.isEmpty();)f()};function f(e,t){return t?function(e){for(var t=e.nodes,r=void 0===t?[]:t,n=e.edges,o=void 0===n?[]:n,i=[],a={},s={},u={},c=[],f=0,h=function(e){s[e.id]=f,u[e.id]=f,f+=1,i.push(e),a[e.id]=!0;for(var t=d(e.id,o,"target").filter((function(e){return r.map((function(e){return e.id})).indexOf(e)>-1})),n=function(n){var o=t[n];if(s[o]||0===s[o])a[o]&&(u[e.id]=Math.min(u[e.id],s[o]));else{var i=r.filter((function(e){return e.id===o}));i.length>0&&h(i[0]),u[e.id]=Math.min(u[e.id],u[o])}},l=0;l<t.length;l++)n(l);if(u[e.id]===s[e.id]){for(var p=[];i.length>0;){var v=i.pop();if(a[v.id]=!1,p.push(v),v===e)break}p.length>0&&c.push(p)}},l=0,p=r;l<p.length;l++){var v=p[l];s[v.id]||0===s[v.id]||h(v)}return c}(e):function(e){for(var t=e.nodes,r=void 0===t?[]:t,n=e.edges,o=void 0===n?[]:n,i=[],a={},s=[],u=function(e){s.push(e),a[e.id]=!0;for(var t=d(e.id,o),n=function(e){var n=t[e];if(!a[n]){var o=r.filter((function(e){return e.id===n}));o.length>0&&u(o[0])}},i=0;i<t.length;++i)n(i)},c=0;c<r.length;c++){var f=r[c];if(!a[f.id]){u(f);for(var h=[];s.length>0;)h.push(s.pop());i.push(h)}}return i}(e)}var h=function(e){var t={},r=e.nodes,n=void 0===r?[]:r,o=e.edges,i=void 0===o?[]:o;return n.forEach((function(e){t[e.id]={degree:0,inDegree:0,outDegree:0}})),i.forEach((function(e){t[e.source].degree++,t[e.source].outDegree++,t[e.target].degree++,t[e.target].inDegree++})),t};const l=h;var p=function(e,t){return h(e)[t]?h(e)[t].inDegree:0},v=function(e,t){return h(e)[t]?h(e)[t].outDegree:0};function g(e,t,r,n){n.enter({current:t,previous:r});var o=e.edges;d(t,void 0===o?[]:o,"target").forEach((function(o){n.allowTraversal({previous:r,current:t,next:o})&&g(e,o,t,n)})),n.leave({current:t,previous:r})}function b(e,t,r){g(e,t,"",function(e){void 0===e&&(e={});var t,r=e,n=function(){},o=(t={},function(e){var r=e.next;return!t[r]&&(t[r]=!0,!0)});return r.allowTraversal=e.allowTraversal||o,r.enter=e.enter||n,r.leave=e.leave||n,r}(r))}const E=function(e){var t=null,r=e.nodes,n={},o={},i={},a={};(void 0===r?[]:r).forEach((function(e){o[e.id]=e}));for(var d={enter:function(e){var r=e.current,a=e.previous;if(i[r]){t={};for(var d=r,s=a;s!==r;)t[d]=s,d=s,s=n[s];t[d]=s}else i[r]=r,delete o[r],n[r]=a},leave:function(e){var t=e.current;a[t]=t,delete i[t]},allowTraversal:function(e){var r=e.next;return!t&&!a[r]}};Object.keys(o).length;)b(e,Object.keys(o)[0],d);return t};function m(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))}Object.create,Object.create;var y={}.toString;const L=function(e,t){return y.call(e)==="[object "+t+"]"},N=function(e){return L(e,"Function")},w=function(e){return Array.isArray?Array.isArray(e):L(e,"Array")};Object.keys;var M=Array.prototype;M.splice,M.indexOf,Array.prototype.splice,Object.prototype.hasOwnProperty;Number.isInteger&&Number.isInteger,Math.PI,parseInt,Math.PI;Object.values;Object.prototype;const I=function e(t){if("object"!=typeof t||null===t)return t;var r;if(w(t)){r=[];for(var n=0,o=t.length;n<o;n++)"object"==typeof t[n]&&null!=t[n]?r[n]=e(t[n]):r[n]=t[n]}else for(var i in r={},t)"object"==typeof t[i]&&null!=t[i]?r[i]=e(t[i]):r[i]=t[i];return r};var j;Object.prototype.hasOwnProperty,Object.prototype.hasOwnProperty,function(e,t){if(!N(e))throw new TypeError("Expected a function");new Map}((function(e,t){void 0===t&&(t={});var r,n=t.fontSize,o=t.fontFamily,i=t.fontWeight,a=t.fontStyle,d=t.fontVariant;return j||(j=document.createElement("canvas").getContext("2d")),j.font=[a,d,i,n+"px",o].join(" "),j.measureText((r=e,L(r,"String")?e:"")).width})),function(){function e(){this.map={}}e.prototype.has=function(e){return void 0!==this.map[e]},e.prototype.get=function(e,t){var r=this.map[e];return void 0===r?t:r},e.prototype.set=function(e,t){this.map[e]=t},e.prototype.clear=function(){this.map={}},e.prototype.delete=function(e){delete this.map[e]},e.prototype.size=function(){return Object.keys(this.map).length}}();const k=function(e,t,r,n){var o=e.nodes,i=void 0===o?[]:o,a=e.edges,d=void 0===a?[]:a,u=[],c={},f={},h={};i.forEach((function(e,r){var n=e.id;u.push(n),f[n]=1/0,n===t&&(f[n]=0)}));for(var l=i.length,p=function(e){var t=function(e,t,r){for(var n,o=1/0,i=0;i<t.length;i++){var a=t[i].id;!r[a]&&e[a]<=o&&(o=e[a],n=t[i])}return n}(f,i,c),o=t.id;if(c[o]=!0,f[o]===1/0)return"continue";var a=[];a=r?function(e,t){return t.filter((function(t){return t.source===e}))}(o,d):s(o,d),a.forEach((function(e){var r=e.target,i=e.source,a=r===o?i:r,d=n&&e[n]?e[n]:1;f[a]>f[t.id]+d?(f[a]=f[t.id]+d,h[a]=[t.id]):f[a]===f[t.id]+d&&h[a].push(t.id)}))},v=0;v<l;v++)p();h[t]=[t];var g={};for(var b in f)f[b]!==1/0&&x(t,b,h,g);var E={};for(var b in g)E[b]=g[b][0];return{length:f,path:E,allPath:g}};function x(e,t,r,n){if(e===t)return[e];if(n[t])return n[t];for(var o=[],i=0,a=r[t];i<a.length;i++){var d=x(e,a[i],r,n);if(!d)return;for(var s=0,u=d;s<u.length;s++){var c=u[s];w(c)?o.push(m(m([],c,!0),[t],!1)):o.push([c,t])}}return n[t]=o,n[t]}var O=function(e,t,r,n,o){var i=k(e,t,n,o),a=i.length,d=i.path,s=i.allPath;return{length:a[r],path:d[r],allPath:s[r]}},D=function(e,t,r,n){var o;if(t===r)return[[t]];var i=e.edges,a=void 0===i?[]:i,s=[t],u=((o={})[t]=!0,o),c=[],f=[],h=n?d(t,a,"target"):d(t,a);for(c.push(h);s.length>0&&c.length>0;){var l=c[c.length-1];if(l.length){var p=l.shift();if(p&&(s.push(p),u[p]=!0,h=n?d(p,a,"target"):d(p,a),c.push(h.filter((function(e){return!u[e]})))),s[s.length-1]===r){var v=s.map((function(e){return e}));f.push(v),g=s.pop(),u[g]=!1,c.pop()}}else{var g=s.pop();u[g]=!1,c.pop()}}return f};const S=function(e,t){for(var n=r(e,t),o=[],i=n.length,a=0;a<i;a+=1){o[a]=[];for(var d=0;d<i;d+=1)a===d?o[a][d]=0:0!==n[a][d]&&n[a][d]?o[a][d]=n[a][d]:o[a][d]=1/0}for(var s=0;s<i;s+=1)for(a=0;a<i;a+=1)for(d=0;d<i;d+=1)o[a][d]>o[a][s]+o[s][d]&&(o[a][d]=o[a][s]+o[s][d]);return o},P=function(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n="weight"),void 0===o&&(o=1e3);var i=e.nodes,a=void 0===i?[]:i,d=e.edges,s=void 0===d?[]:d,c={},f={};a.forEach((function(e,t){var r=u();e.clusterId=r,c[r]={id:r,nodes:[e]},f[e.id]={node:e,idx:t}}));var h=r(e,t),l=[],p={};h.forEach((function(e,t){var r=0,n=a[t].id;p[n]={},e.forEach((function(e,t){if(e){r+=e;var o=a[t].id;p[n][o]=e}})),l.push(r)}));for(var v=0,g=function(){var e=!1;if(a.forEach((function(t){var r={};Object.keys(p[t.id]).forEach((function(e){var n=p[t.id][e],o=f[e].node.clusterId;r[o]||(r[o]=0),r[o]+=n}));var n=-1/0,o=[];if(Object.keys(r).forEach((function(e){n<r[e]?(n=r[e],o=[e]):n===r[e]&&o.push(e)})),1!==o.length||o[0]!==t.clusterId){var i=o.indexOf(t.clusterId);if(i>=0&&o.splice(i,1),o&&o.length){e=!0;var a=c[t.clusterId],d=a.nodes.indexOf(t);a.nodes.splice(d,1);var s=Math.floor(Math.random()*o.length),u=c[o[s]];u.nodes.push(t),t.clusterId=u.id}}})),!e)return"break";v++};v<o&&"break"!==g(););Object.keys(c).forEach((function(e){var t=c[e];t.nodes&&t.nodes.length||delete c[e]}));var b=[],E={};s.forEach((function(e){var t=e.source,r=e.target,o=e[n]||1,i=f[t].node.clusterId,a=f[r].node.clusterId,d="".concat(i,"---").concat(a);if(E[d])E[d].weight+=o,E[d].count++;else{var s={source:i,target:a,weight:o,count:1};E[d]=s,b.push(s)}}));var m=[];return Object.keys(c).forEach((function(e){m.push(c[e])})),{clusters:m,clusterEdges:b}};const C=function(){function e(e){this.arr=e}return e.prototype.add=function(t){var r,n=t.arr;if(!(null===(r=this.arr)||void 0===r?void 0:r.length))return new e(n);if(!(null==n?void 0:n.length))return new e(this.arr);if(this.arr.length===n.length){var o=[];for(var i in this.arr)o[i]=this.arr[i]+n[i];return new e(o)}},e.prototype.subtract=function(t){var r,n=t.arr;if(!(null===(r=this.arr)||void 0===r?void 0:r.length))return new e(n);if(!(null==n?void 0:n.length))return new e(this.arr);if(this.arr.length===n.length){var o=[];for(var i in this.arr)o[i]=this.arr[i]-n[i];return new e(o)}},e.prototype.avg=function(t){var r=[];for(var n in this.arr)r[n]=this.arr[n]/t;return new e(r)},e.prototype.negate=function(){var t=[];for(var r in this.arr)t[r]=-this.arr[r];return new e(t)},e.prototype.squareEuclideanDistance=function(e){var t,r=e.arr;if(!(null===(t=this.arr)||void 0===t?void 0:t.length)||!(null==r?void 0:r.length))return 0;if(this.arr.length===r.length){var n=0;for(var o in this.arr)n+=Math.pow(this.arr[o]-e.arr[o],2);return n}},e.prototype.normalize=function(){var t=[],r=I(this.arr);r.sort((function(e,t){return e-t}));var n=r[r.length-1],o=r[0];for(var i in this.arr)t[i]=(this.arr[i]-o)/(n-o);return new e(t)},e}();var T=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/,q=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/,F=function(e,t,r,n){for(var o=t.length,i=2*n,a=0,d=0;d<o;d++)for(var s=e[d].clusterId,u=0;u<o;u++)s===e[u].clusterId&&(a+=(t[d][u]||0)-(r[d]||0)*(r[u]||0)/i);return a*(1/i)},A=function(e,t){return t.map((function(t){if(e.hasOwnProperty(t)){if(!isNaN(Number(e[t])))return Number(e[t]);if(e[t].match(T)||e[t].match(q))return Number(Date.parse(new Date(e[t])))/1e3}return 0}))},R=function(e,t){void 0===e&&(e=[]);for(var r=e.length,n=new C([]),o=0;o<r;o++)n=n.add(new C(t[o]));var i=n.avg(r);i.normalize();var a=0;for(o=0;o<r;o++)a+=(s=new C(t[o])).squareEuclideanDistance(i);var d=[];for(e.forEach((function(){d.push([])})),o=0;o<r;o++){var s=new C(t[o]);e[o].clusterInertial=0;for(var u=0;u<r;u++)if(o!==u){var c=new C(t[u]);d[o][u]=s.squareEuclideanDistance(c),e[o].clusterInertial+=d[o][u]}else d[o][u]=0}var f=0,h=2*r*a;for(o=0;o<r;o++){var l=e[o].clusterId;for(u=0;u<r;u++){var p=e[u].clusterId;o!==u&&l===p&&(f+=e[o].clusterInertial*e[u].clusterInertial/Math.pow(h,2)-d[o][u]/h)}}return Number(f.toFixed(4))};const U=function(e,t,n,o,i,a){void 0===t&&(t=!1),void 0===n&&(n="weight"),void 0===o&&(o=1e-4),void 0===i&&(i=!1),void 0===a&&(a=1);var d=e.nodes,s=void 0===d?[]:d,u=e.edges,c=void 0===u?[]:u,f=[];if(i){s.forEach((function(e,t){e.properties=e.properties||{},e.originIndex=t}));var h=[];s.every((function(e){return e.hasOwnProperty("nodeType")}))&&(h=Array.from(new Set(s.map((function(e){return e.nodeType})))),s.forEach((function(e){e.properties.nodeType=h.findIndex((function(t){return t===e.nodeType}))})));var l=function(e){void 0===e&&(e=[]);var t={};e.forEach((function(e){Object.keys(e.properties).forEach((function(r){!"".concat(e.properties[r]).match(T)&&!"".concat(e.properties[r]).match(q)&&isNaN(Number(e.properties[r]))||"id"===r?t.hasOwnProperty(r)&&delete t[r]:t.hasOwnProperty(r)?t[r]+=1:t[r]=1}))}));var r=Object.keys(t).sort((function(e,r){return t[r]-t[e]}));return r.length<100?r:r.slice(0,100)}(s);f=function(e,t){for(var r=[],n=0;n<t.length;n++)r[n]=A(t[n].properties,e);return r}(l,s)}var p=1,v={},g={};s.forEach((function(e,t){var r=String(p++);e.clusterId=r,v[r]={id:r,nodes:[e]},g[e.id]={node:e,idx:t}}));var b=r(e,t),E=[],m={},y=0;b.forEach((function(e,t){var r=0,n=s[t].id;m[n]={},e.forEach((function(e,t){if(e){r+=e;var o=s[t].id;m[n][o]=e,y+=e}})),E.push(r)})),y/=2;for(var L=1/0,N=1/0,w=0,M=[],j={};;){L=i&&s.every((function(e){return e.hasOwnProperty("properties")}))?F(s,b,E,y)+R(s,f)*a:F(s,b,E,y),0===w&&(N=L,M=s,j=v);var k=L>0&&L>N&&L-N<o;if(L>N&&(M=s.map((function(e){return{node:e,clusterId:e.clusterId}})),j=I(v),N=L),k||w>100)break;w++,Object.keys(v).forEach((function(e){var t=0;c.forEach((function(r){var o=r.source,i=r.target,a=g[o].node.clusterId,d=g[i].node.clusterId;(a===e&&d!==e||d===e&&a!==e)&&(t+=r[n]||1)})),v[e].sumTot=t})),s.forEach((function(e,t){var r,o=v[e.clusterId],d=0,s=E[t]/(2*y),u=0,h=o.nodes;h.forEach((function(e){var r=g[e.id].idx;u+=b[t][r]||0}));var l=u-o.sumTot*s,p=h.filter((function(t){return t.id!==e.id})),L=[];p.forEach((function(e,t){L[t]=f[e.originIndex]}));var N=R(p,f)*a,w=m[e.id];if(Object.keys(w).forEach((function(n){var o=g[n].node.clusterId;if(o!==e.clusterId){var u=v[o],c=u.nodes;if(c&&c.length){var h=0;c.forEach((function(e){var r=g[e.id].idx;h+=b[t][r]||0}));var p=h-u.sumTot*s,E=c.concat([e]),m=[];E.forEach((function(e,t){m[t]=f[e.originIndex]}));var y=R(E,f)*a,L=p-l;i&&(L=p+y-(l+N)),L>d&&(d=L,r=u)}}})),d>0){r.nodes.push(e);var M=e.clusterId;e.clusterId=r.id;var I=o.nodes.indexOf(e);o.nodes.splice(I,1);var j=0,k=0;c.forEach((function(e){var t=e.source,o=e.target,i=g[t].node.clusterId,a=g[o].node.clusterId;(i===r.id&&a!==r.id||a===r.id&&i!==r.id)&&(j+=e[n]||1),(i===M&&a!==M||a===M&&i!==M)&&(k+=e[n]||1)})),r.sumTot=j,o.sumTot=k}}))}var x={},O=0;Object.keys(j).forEach((function(e){var t=j[e];if(t.nodes&&t.nodes.length){var r=String(O+1);r!==e&&(t.id=r,t.nodes=t.nodes.map((function(e){return{id:e.id,clusterId:r}})),j[r]=t,x[e]=r,delete j[e],O++)}else delete j[e]})),M.forEach((function(e){var t=e.node,r=e.clusterId;t.clusterId=r,t.clusterId&&x[t.clusterId]&&(t.clusterId=x[t.clusterId])}));var D=[],S={};c.forEach((function(e){var t=e.source,r=e.target,o=e[n]||1,i=g[t].node.clusterId,a=g[r].node.clusterId,d="".concat(i,"---").concat(a);if(S[d])S[d].weight+=o,S[d].count++;else{var s={source:i,target:a,weight:o,count:1};S[d]=s,D.push(s)}}));var P=[];return Object.keys(j).forEach((function(e){P.push(j[e])})),{clusters:P,clusterEdges:D}},G=function(){function e(e){this.count=e.length,this.parent={};for(var t=0,r=e;t<r.length;t++){var n=r[t];this.parent[n]=n}}return e.prototype.find=function(e){for(;this.parent[e]!==e;)e=this.parent[e];return e},e.prototype.union=function(e,t){var r=this.find(e),n=this.find(t);r!==n&&(r<n?(this.parent[t]!==t&&this.union(this.parent[t],e),this.parent[t]=this.parent[e]):(this.parent[e]!==e&&this.union(this.parent[e],t),this.parent[e]=this.parent[t]))},e.prototype.connected=function(e,t){return this.find(e)===this.find(t)},e}();var z=function(e,t){return e-t};const _=function(){function e(e){void 0===e&&(e=z),this.compareFn=e,this.list=[]}return e.prototype.getLeft=function(e){return 2*e+1},e.prototype.getRight=function(e){return 2*e+2},e.prototype.getParent=function(e){return 0===e?null:Math.floor((e-1)/2)},e.prototype.isEmpty=function(){return this.list.length<=0},e.prototype.top=function(){return this.isEmpty()?void 0:this.list[0]},e.prototype.delMin=function(){var e=this.top(),t=this.list.pop();return this.list.length>0&&(this.list[0]=t,this.moveDown(0)),e},e.prototype.insert=function(e){if(null!==e){this.list.push(e);var t=this.list.length-1;return this.moveUp(t),!0}return!1},e.prototype.moveUp=function(e){for(var t=this.getParent(e);e&&e>0&&this.compareFn(this.list[t],this.list[e])>0;){var r=this.list[t];this.list[t]=this.list[e],this.list[e]=r,e=t,t=this.getParent(e)}},e.prototype.moveDown=function(e){var t,r=e,n=this.getLeft(e),o=this.getRight(e),i=this.list.length;null!==n&&n<i&&this.compareFn(this.list[r],this.list[n])>0?r=n:null!==o&&o<i&&this.compareFn(this.list[r],this.list[o])>0&&(r=o),e!==r&&(t=[this.list[r],this.list[e]],this.list[e]=t[0],this.list[r]=t[1],this.moveDown(r))},e}();var B=function(e,t){var r=[],n=e.nodes,o=void 0===n?[]:n,i=e.edges,a=void 0===i?[]:i;if(0===o.length)return r;var d=o[0],u=new Set;u.add(d);var c=new _((function(e,r){return t?e.weight-r.weight:0}));for(s(d.id,a).forEach((function(e){c.insert(e)}));!c.isEmpty();){var f=c.delMin(),h=f.source,l=f.target;u.has(h)&&u.has(l)||(r.push(f),u.has(h)||(u.add(h),s(h,a).forEach((function(e){c.insert(e)}))),u.has(l)||(u.add(l),s(l,a).forEach((function(e){c.insert(e)}))))}return r},H=function(e,t){var r=[],n=e.nodes,o=void 0===n?[]:n,i=e.edges,a=void 0===i?[]:i;if(0===o.length)return r;var d=a.map((function(e){return e}));t&&d.sort((function(e,t){return e.weight-t.weight}));for(var s=new G(o.map((function(e){return e.id})));d.length>0;){var u=d.shift(),c=u.source,f=u.target;s.connected(c,f)||(r.push(u),s.union(c,f))}return r};const W=function(e,t,r){return r?{prim:B,kruskal:H}[r](e,t):H(e,t)},$=function(e,t,r){"number"!=typeof t&&(t=1e-6),"number"!=typeof r&&(r=.85);for(var n,o=1,i=0,a=1e3,s=e.nodes,u=void 0===s?[]:s,c=e.edges,f=void 0===c?[]:c,h=u.length,p={},v={},g=0;g<h;++g)p[E=(w=u[g]).id]=1/h,v[E]=1/h;for(var b=l(e);a>0&&o>t;){for(i=0,g=0;g<h;++g){var E=(w=u[g]).id;if(n=0,0===b[w.id].inDegree)p[E]=0;else{for(var m=d(E,f,"source"),y=0;y<m.length;++y){var L=m[y],N=b[L].outDegree;N>0&&(n+=v[L]/N)}p[E]=r*n,i+=p[E]}}for(i=(1-i)/h,o=0,g=0;g<h;++g){var w;n=p[E=(w=u[g]).id]+i,o+=Math.abs(n-v[E]),v[E]=n}a-=1}return v};var K="-1",V=function(e,t,r,n){void 0===e&&(e=-1),void 0===t&&(t=-1),void 0===r&&(r=-1),void 0===n&&(n="-1"),this.id=e,this.from=t,this.to=r,this.label=n},J=function(){function e(e,t){void 0===e&&(e=-1),void 0===t&&(t=K),this.id=e,this.label=t,this.edges=[],this.edgeMap={}}return e.prototype.addEdge=function(e){this.edges.push(e),this.edgeMap[e.id]=e},e}(),Q=function(){function e(e,t,r){void 0===e&&(e=-1),void 0===t&&(t=!0),void 0===r&&(r=!1),this.id=e,this.edgeIdAutoIncrease=t,this.edges=[],this.nodes=[],this.nodeMap={},this.edgeMap={},this.nodeLabelMap={},this.edgeLabelMap={},this.counter=0,this.directed=r}return e.prototype.getNodeNum=function(){return this.nodes.length},e.prototype.addNode=function(e,t){if(!this.nodeMap[e]){var r=new J(e,t);this.nodes.push(r),this.nodeMap[e]=r,this.nodeLabelMap[t]||(this.nodeLabelMap[t]=[]),this.nodeLabelMap[t].push(e)}},e.prototype.addEdge=function(e,t,r,n){if((this.edgeIdAutoIncrease||void 0===e)&&(e=this.counter++),!(this.nodeMap[t]&&this.nodeMap[r]&&this.nodeMap[r].edgeMap[e])){var o=new V(e,t,r,n);if(this.edges.push(o),this.edgeMap[e]=o,this.nodeMap[t].addEdge(o),this.edgeLabelMap[n]||(this.edgeLabelMap[n]=[]),this.edgeLabelMap[n].push(o),!this.directed){var i=new V(e,r,t,n);this.nodeMap[r].addEdge(i),this.edgeLabelMap[n].push(i)}}},e}(),X=function(){function e(e,t,r,n,o){this.fromNode=e,this.toNode=t,this.nodeEdgeNodeLabel={nodeLabel1:r||K,edgeLabel:n||"-1",nodeLabel2:o||K}}return e.prototype.equalTo=function(e){return this.fromNode===e.formNode&&this.toNode===e.toNode&&this.nodeEdgeNodeLabel===e.nodeEdgeNodeLabel},e.prototype.notEqualTo=function(e){return!this.equalTo(e)},e}(),Y=function(){function e(){this.rmpath=[],this.dfsEdgeList=[]}return e.prototype.equalTo=function(e){var t=this.dfsEdgeList.length;if(t!==e.length)return!1;for(var r=0;r<t;r++)if(this.dfsEdgeList[r]!==e[r])return!1;return!0},e.prototype.notEqualTo=function(e){return!this.equalTo(e)},e.prototype.pushBack=function(e,t,r,n,o){return this.dfsEdgeList.push(new X(e,t,r,n,o)),this.dfsEdgeList},e.prototype.toGraph=function(e,t){void 0===e&&(e=-1),void 0===t&&(t=!1);var r=new Q(e,!0,t);return this.dfsEdgeList.forEach((function(e){var t=e.fromNode,n=e.toNode,o=e.nodeEdgeNodeLabel,i=o.nodeLabel1,a=o.edgeLabel,d=o.nodeLabel2;i!==K&&r.addNode(t,i),d!==K&&r.addNode(n,d),i!==K&&d!==i&&r.addEdge(void 0,t,n,a)})),r},e.prototype.buildRmpath=function(){this.rmpath=[];for(var e=void 0,t=this.dfsEdgeList.length-1;t>=0;t--){var r=this.dfsEdgeList[t],n=r.fromNode,o=r.toNode;n<o&&(void 0===e||o===e)&&(this.rmpath.push(t),e=n)}return this.rmpath},e.prototype.getNodeNum=function(){var e={};return this.dfsEdgeList.forEach((function(t){e[t.fromNode]||(e[t.fromNode]=!0),e[t.toNode]||(e[t.toNode]=!0)})),Object.keys(e).length},e}(),Z=function(){function e(e){if(this.his={},this.nodesUsed={},this.edgesUsed={},this.edges=[],e){for(;e;){var t=e.edge;this.edges.push(t),this.nodesUsed[t.from]=1,this.nodesUsed[t.to]=1,this.edgesUsed[t.id]=1,e=e.preNode}this.edges=this.edges.reverse()}}return e.prototype.hasNode=function(e){return 1===this.nodesUsed[e.id]},e.prototype.hasEdge=function(e){return 1===this.edgesUsed[e.id]},e}(),ee=function(){function e(e){var t=e.graphs,r=e.minSupport,n=void 0===r?2:r,o=e.minNodeNum,i=void 0===o?1:o,a=e.maxNodeNum,d=void 0===a?4:a,s=e.top,u=void 0===s?10:s,c=e.directed,f=void 0!==c&&c,h=e.verbose,l=void 0!==h&&h;this.graphs=t,this.dfsCode=new Y,this.support=0,this.frequentSize1Subgraphs=[],this.frequentSubgraphs=[],this.minSupport=n,this.top=u,this.directed=f,this.counter=0,this.maxNodeNum=d,this.minNodeNum=i,this.verbose=l,this.maxNodeNum<this.minNodeNum&&(this.maxNodeNum=this.minNodeNum),this.reportDF=[]}return e.prototype.findForwardRootEdges=function(e,t){var r=this,n=[],o=e.nodeMap;return t.edges.forEach((function(e){(r.directed||t.label<=o[e.to].label)&&n.push(e)})),n},e.prototype.findBackwardEdge=function(e,t,r,n){if(!this.directed&&t===r)return null;for(var o=e.nodeMap,i=o[r.to].edges,a=i.length,d=0;d<a;d++){var s=i[d];if(!n.hasEdge(s)&&s.to===t.from)if(this.directed){if(o[t.from].label<o[r.to].label||o[t.from].label===o[r.to].label&&t.label<=s.label)return s}else if(t.label<s.label||t.label===s.label&&o[t.to].label<=o[r.to].label)return s}return null},e.prototype.findForwardPureEdges=function(e,t,r,n){for(var o=[],i=t.to,a=e.nodeMap[i].edges,d=a.length,s=0;s<d;s++){var u=a[s],c=e.nodeMap[u.to];r<=c.label&&!n.hasNode(c)&&o.push(u)}return o},e.prototype.findForwardRmpathEdges=function(e,t,r,n){for(var o=[],i=e.nodeMap,a=i[t.to].label,d=i[t.from].edges,s=d.length,u=0;u<s;u++){var c=d[u],f=i[c.to].label;t.to===c.to||r>f||n.hasNode(i[c.to])||(t.label<c.label||t.label===c.label&&a<=f)&&o.push(c)}return o},e.prototype.getSupport=function(e){var t={};return e.forEach((function(e){t[e.graphId]||(t[e.graphId]=!0)})),Object.keys(t).length},e.prototype.findMinLabel=function(e){var t=void 0;return Object.keys(e).forEach((function(r){var n=e[r],o=n.nodeLabel1,i=n.edgeLabel,a=n.nodeLabel2;t?(o<t.nodeLabel1||o===t.nodeLabel1&&i<t.edgeLabel||o===t.nodeLabel1&&i===t.edgeLabel&&a<t.nodeLabel2)&&(t={nodeLabel1:o,edgeLabel:i,nodeLabel2:a}):t={nodeLabel1:o,edgeLabel:i,nodeLabel2:a}})),t},e.prototype.isMin=function(){var e=this,t=this.dfsCode;if(this.verbose&&console.log("isMin checking",t),1===t.dfsEdgeList.length)return!0;var r=this.directed,n=t.toGraph(-1,r),o=n.nodeMap,i=new Y,a={};n.nodes.forEach((function(t){e.findForwardRootEdges(n,t).forEach((function(e){var r=o[e.to],i="".concat(t.label,"-").concat(e.label,"-").concat(r.label);a[i]||(a[i]={projected:[],nodeLabel1:t.label,edgeLabel:e.label,nodeLabel2:r.label});var d={graphId:n.id,edge:e,preNode:null};a[i].projected.push(d)}))}));var d=this.findMinLabel(a);if(d){i.dfsEdgeList.push(new X(0,1,d.nodeLabel1,d.edgeLabel,d.nodeLabel2));var s=function(a){for(var d=i.buildRmpath(),u=i.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1,c=i.dfsEdgeList[d[0]].toNode,f={},h=!1,l=0,p=r?-1:0,v=function(t){if(h)return"break";a.forEach((function(r){var o=new Z(r),a=e.findBackwardEdge(n,o.edges[d[t]],o.edges[d[0]],o);a&&(f[a.label]||(f[a.label]={projected:[],edgeLabel:a.label}),f[a.label].projected.push({graphId:n.id,edge:f,preNode:r}),l=i.dfsEdgeList[d[t]].fromNode,h=!0)}))},g=d.length-1;g>p&&"break"!==v(g);g--);if(h){var b=e.findMinLabel(f);i.dfsEdgeList.push(new X(c,l,K,b.edgeLabel,K));var E=i.dfsEdgeList.length-1;return e.dfsCode.dfsEdgeList[E]===i.dfsEdgeList[E]&&s(f[b.edgeLabel].projected)}var m={};h=!1;var y=0;a.forEach((function(t){var r=new Z(t),i=e.findForwardPureEdges(n,r.edges[d[0]],u,r);i.length>0&&(h=!0,y=c,i.forEach((function(e){var r="".concat(e.label,"-").concat(o[e.to].label);m[r]||(m[r]={projected:[],edgeLabel:e.label,nodeLabel2:o[e.to].label}),m[r].projected.push({graphId:n.id,edge:e,preNode:t})})))}));var L=d.length,N=function(t){if(h)return"break";var r=d[t];a.forEach((function(t){var a=new Z(t),d=e.findForwardRmpathEdges(n,a.edges[r],u,a);d.length>0&&(h=!0,y=i.dfsEdgeList[r].fromNode,d.forEach((function(e){var r="".concat(e.label,"-").concat(o[e.to].label);m[r]||(m[r]={projected:[],edgeLabel:e.label,nodeLabel2:o[e.to].label}),m[r].projected.push({graphId:n.id,edge:e,preNode:t})})))}))};for(g=0;g<L&&"break"!==N(g);g++);if(!h)return!0;var w=e.findMinLabel(m);i.dfsEdgeList.push(new X(y,c+1,K,w.edgeLabel,w.nodeLabel2));var M=i.dfsEdgeList.length-1;return t.dfsEdgeList[M]===i.dfsEdgeList[M]&&s(m["".concat(w.edgeLabel,"-").concat(w.nodeLabel2)].projected)},u="".concat(d.nodeLabel1,"-").concat(d.edgeLabel,"-").concat(d.nodeLabel2);return s(a[u].projected)}},e.prototype.report=function(){if(!(this.dfsCode.getNodeNum()<this.minNodeNum)){this.counter++;var e=this.dfsCode.toGraph(this.counter,this.directed);this.frequentSubgraphs.push(I(e))}},e.prototype.subGraphMining=function(e){var t=this;if(!(this.getSupport(e)<this.minSupport)&&this.isMin()){this.report();var r=this.dfsCode.getNodeNum(),n=this.dfsCode.buildRmpath(),o=this.dfsCode.dfsEdgeList[n[0]].toNode,i=this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1,a={},d={};e.forEach((function(e){for(var s=t.graphs[e.graphId],u=s.nodeMap,c=new Z(e),f=n.length-1;f>=0;f--){var h=t.findBackwardEdge(s,c.edges[n[f]],c.edges[n[0]],c);if(h){var l="".concat(t.dfsCode.dfsEdgeList[n[f]].fromNode,"-").concat(h.label);d[l]||(d[l]={projected:[],toNodeId:t.dfsCode.dfsEdgeList[n[f]].fromNode,edgeLabel:h.label}),d[l].projected.push({graphId:e.graphId,edge:h,preNode:e})}}if(!(r>=t.maxNodeNum)){t.findForwardPureEdges(s,c.edges[n[0]],i,c).forEach((function(t){var r="".concat(o,"-").concat(t.label,"-").concat(u[t.to].label);a[r]||(a[r]={projected:[],fromNodeId:o,edgeLabel:t.label,nodeLabel2:u[t.to].label}),a[r].projected.push({graphId:e.graphId,edge:t,preNode:e})}));var p=function(r){t.findForwardRmpathEdges(s,c.edges[n[r]],i,c).forEach((function(o){var i="".concat(t.dfsCode.dfsEdgeList[n[r]].fromNode,"-").concat(o.label,"-").concat(u[o.to].label);a[i]||(a[i]={projected:[],fromNodeId:t.dfsCode.dfsEdgeList[n[r]].fromNode,edgeLabel:o.label,nodeLabel2:u[o.to].label}),a[i].projected.push({graphId:e.graphId,edge:o,preNode:e})}))};for(f=0;f<n.length;f++)p(f)}})),Object.keys(d).forEach((function(e){var r=d[e],n=r.toNodeId,i=r.edgeLabel;t.dfsCode.dfsEdgeList.push(new X(o,n,"-1",i,"-1")),t.subGraphMining(d[e].projected),t.dfsCode.dfsEdgeList.pop()})),Object.keys(a).forEach((function(e){var r=a[e],n=r.fromNodeId,i=r.edgeLabel,d=r.nodeLabel2;t.dfsCode.dfsEdgeList.push(new X(n,o+1,K,i,d)),t.subGraphMining(a[e].projected),t.dfsCode.dfsEdgeList.pop()}))}},e.prototype.generate1EdgeFrequentSubGraphs=function(){var e=this.graphs,t=this.directed,r=this.minSupport,n=this.frequentSize1Subgraphs,o={},i={},a={},d={};return Object.keys(e).forEach((function(r){var n=e[r],s=n.nodeMap;n.nodes.forEach((function(e,n){var u=e.label,c="".concat(r,"-").concat(u);if(!a[c]){var f=o[u]||0;f++,o[u]=f}a[c]={graphKey:r,label:u},e.edges.forEach((function(e){var n=u,o=s[e.to].label;if(!t&&n>o){var a=o;o=n,n=a}var c=e.label,f="".concat(r,"-").concat(n,"-").concat(c,"-").concat(o),h="".concat(n,"-").concat(c,"-").concat(o);if(!i[h]){var l=i[h]||0;l++,i[h]=l}d[f]={graphId:r,nodeLabel1:n,edgeLabel:c,nodeLabel2:o}}))}))})),Object.keys(o).forEach((function(e){if(!(o[e]<r)){var t={nodes:[],edges:[]};t.nodes.push({id:"0",label:e}),n.push(t)}})),n},e.prototype.run=function(){var e=this;if(this.frequentSize1Subgraphs=this.generate1EdgeFrequentSubGraphs(),!(this.maxNodeNum<2)){var t=this.graphs,r=(this.directed,{});Object.keys(t).forEach((function(n){var o=t[n],i=o.nodeMap;o.nodes.forEach((function(t){e.findForwardRootEdges(o,t).forEach((function(e){var o=i[e.to],a="".concat(t.label,"-").concat(e.label,"-").concat(o.label);r[a]||(r[a]={projected:[],nodeLabel1:t.label,edgeLabel:e.label,nodeLabel2:o.label});var d={graphId:n,edge:e,preNode:null};r[a].projected.push(d)}))}))})),Object.keys(r).forEach((function(t){var n=r[t],o=n.projected,i=n.nodeLabel1,a=n.edgeLabel,d=n.nodeLabel2;e.dfsCode.dfsEdgeList.push(new X(0,1,i,a,d)),e.subGraphMining(o),e.dfsCode.dfsEdgeList.pop()}))}},e}(),te="cluster";var re=function(e,t,r,n){void 0===r&&(r="cluster"),void 0===n&&(n=2);var o=[],i=e.nodes;return t.forEach((function(e,t){o.push(ne(i,e,t,r,n))})),o},ne=function(e,t,r,n,o){var i=[r],a=[],d={};return t.forEach((function(t,s){if(t<=o&&r!==s){i.push(s),a.push(e[s]);var u=e[s][n];d[u]?(d[u].count++,d[u].dists.push(t)):d[u]={count:1,dists:[t]}}})),Object.keys(d).forEach((function(e){d[e].dists=d[e].dists.sort((function(e,t){return e-t}))})),{nodeIdx:r,nodeId:e[r].id,nodeIdxs:i,neighbors:a,neighborNum:i.length-1,nodeLabelCountMap:d}},oe=function(e,t,r,n){var o=r.nodes;return n||(n={}),Object.keys(e).forEach((function(i){var a,d;if(!n||!n[i]){n[i]={nodes:[],edges:[]};var s=e[i],u=null===(a=t[s.start])||void 0===a?void 0:a.nodeIdxs,c=null===(d=t[s.end])||void 0===d?void 0:d.nodeIdxs;if(u&&c){var f=new Set(c),h=u.filter((function(e){return f.has(e)}));if(h&&h.length){for(var l={},p=h.length,v=0;v<p;v++){var g=o[h[v]];n[i].nodes.push(g),l[g.id]=!0}r.edges.forEach((function(e){l[e.source]&&l[e.target]&&n[i].edges.push(e)}))}}}})),n},ie=function(e,t,r,n){var o,i,a={};e.nodes.forEach((function(e){a[e.id]=e}));var d=0;return!(null===(o=null==t?void 0:t.edges)||void 0===o?void 0:o.length)||(null===(i=null==t?void 0:t.nodes)||void 0===i?void 0:i.length)<2?0:(e.edges.forEach((function(e){var o=a[e.source][r],i=a[e.target][r],s=null==t?void 0:t.nodes[0][r],u=null==t?void 0:t.nodes[1][r],c=null==t?void 0:t.edges[0][n];e[n]===c&&(o===s&&i===u||o===u&&i===s)&&d++})),d)},ae=function(e,t){var r={},n={};return e.forEach((function(e,o){r[e.id]={idx:o,node:e,degree:0,inDegree:0,outDegree:0};var i=e[t];n[i]||(n[i]=[]),n[i].push(e)})),{nodeMap:r,nodeLabelMap:n}},de=function(e,t,r){var n={},o={};return e.forEach((function(e,i){n["".concat(u)]={idx:i,edge:e};var a=e[t];o[a]||(o[a]=[]),o[a].push(e);var d=r[e.source];d&&(d.degree++,d.outDegree++);var s=r[e.target];s&&(s.degree++,s.inDegree++)})),{edgeMap:n,edgeLabelMap:o}},se=function(e,t,r){var n=t.length,o={};return t.forEach((function(t,i){for(var a=r?0:i+1,d=e[i].id,s=a;s<n;s++)if(i!==s){var u=e[s].id,c=t[s];o["".concat(d,"-").concat(u)]=c,r||(o["".concat(u,"-").concat(d)]=c)}})),o},ue=function(e,t,r,n,o,i,a,d,s,u,c){var f,h="".concat(t.id,"-").concat(r.id);if(u&&u[h])return u[h];var l=c?c[h]:void 0;if(!l){var p=((f={})[h]={start:n[t.id].idx,end:n[r.id].idx,distance:o},f);l=(c=oe(p,i,e,c))[h]}return ie(l,a,d,s)},ce=function(e,t,r,n){var o,i,a,d=null===(o=e[t])||void 0===o?void 0:o.degree,s=null===(i=e[t])||void 0===i?void 0:i.inDegree,u=null===(a=e[t])||void 0===a?void 0:a.outDegree;return void 0===e[t]&&(d=1/0,s=1/0,u=1/0,n[t].forEach((function(e){var t=r[e.id].degree;d>t&&(d=t);var n=r[e.id].inDegree;s>n&&(s=n);var o=r[e.id].outDegree;u>o&&(u=o)})),e[t]={degree:d,inDegree:s,outDegree:u}),{minPatternNodeLabelDegree:d,minPatternNodeLabelInDegree:s,minPatternNodeLabelOutDegree:u}};const fe=function(e,t,r,n,o,i,a){var d;if(void 0===r&&(r=!1),void 0===i&&(i="cluster"),void 0===a&&(a="cluster"),e&&e.nodes){var s=e.nodes.length;if(s){var u=S(e,r),c=S(t,r),f=se(e.nodes,u,r),h=se(t.nodes,c,r),l=ae(e.nodes,i),p=l.nodeMap,v=l.nodeLabelMap,g=ae(t.nodes,i),b=g.nodeMap,E=g.nodeLabelMap;de(e.edges,a,p);var y=de(t.edges,a,b).edgeLabelMap,L=[];null==c||c.forEach((function(e){L=L.concat(e)})),o||(o=Math.max.apply(Math,m(m([],L,!1),[2],!1))),n||(n=o);var N=re(e,u,i,n),w=re(t,c,i,n),M=function(e,t,r,n,o){var i=Math.ceil(r/t),a={},d=0;return n.forEach((function(e,n){for(var s=0,u=0,c=e.nodeIdxs,f=e.neighborNum-1;s<i;){for(var h=c[1+Math.floor(Math.random()*f)],l=0;(a["".concat(n,"-").concat(h)]||a["".concat(h,"-").concat(n)])&&(h=Math.floor(Math.random()*t),!(++l>2*t)););if(l<2*t&&(a["".concat(n,"-").concat(h)]={start:n,end:h,distance:o[n][h]},s++,++d>=r))return a;if(++u>2*t)break}s<i&&(i=(i+(i-s))/(t-n-1))})),a}(0,s,Math.min(100,s*(s-1)/2),w,u),I=oe(M,N,e),j=function(e){var t=e.graphs,r=e.directed,n=void 0!==r&&r,o=e.nodeLabelProp,i=void 0===o?te:o,a=e.edgeLabelProp,d=void 0===a?te:a,s=function(e,t,r,n){var o={};return Object.keys(e).forEach((function(i,a){var d=e[i],s=new Q(a,!0,t),u={};d.nodes.forEach((function(e,t){s.addNode(t,e[r]),u[e.id]=t})),d.edges.forEach((function(e,t){var r=u[e.source],o=u[e.target];s.addEdge(-1,r,o,e[n])})),s&&s.getNodeNum()&&(o[s.id]=s)})),o}(t,n,i,d),u=e.minSupport,c=e.maxNodeNum,f=e.minNodeNum,h=e.verbose,l=e.top,p=new ee({graphs:s,minSupport:u,maxNodeNum:c,minNodeNum:f,top:l,verbose:h,directed:n});p.run();var v=function(e,t,r){var n=[];return e.forEach((function(e){var o={nodes:[],edges:[]};e.nodes.forEach((function(e){var r;o.nodes.push(((r={id:"".concat(e.id)})[t]=e.label,r))})),e.edges.forEach((function(e){var t;o.edges.push(((t={source:"".concat(e.from),target:"".concat(e.to)})[r]=e.label,t))})),n.push(o)})),n}(p.frequentSubgraphs,i,d);return v}({graphs:I,nodeLabelProp:i,edgeLabelProp:a,minSupport:1,minNodeNum:1,maxNodeNum:4,directed:r}).slice(0,10),x=j.length,O=[];j.forEach((function(e,t){O[t]={},Object.keys(I).forEach((function(r){var n=I[r],o=ie(n,e,i,a);O[t][r]=o}))}));var D=function(e,t,r){for(var n=1/0,o=0,i=function(t){var r=e[t],i=Object.keys(r).sort((function(e,t){return r[e]-r[t]})),a=[];i.forEach((function(e,t){a[t%10]||(a[t%10]={graphs:[],totalCount:0,aveCount:0}),a[t%10].graphs.push(e),a[t%10].totalCount+=r[e]}));var d=0,s=[];a.forEach((function(e){var t=e.totalCount/e.graphs.length;e.aveCount=t,s.push(t);var n=0,o=e.length;e.graphs.forEach((function(t,o){var i=r[t];e.graphs.forEach((function(e,t){o!==t&&(n+=Math.abs(i-r[e]))}))})),d+=n/=o*(o-1)/2})),d/=a.length;var u=0;s.forEach((function(e,t){s.forEach((function(r,n){t!==n&&(u+=Math.abs(e-r))})),u/=s.length*(s.length-1)/2}));var c=u-d;n<c&&(n=c,o=t)},a=0;a<t;a++)i(a);return{structure:r[o],structureCountMap:e[o]}}(O,x,j),P=D.structure,C=D.structureCountMap,T=t.nodes[0],q=[],F=null===(d=t.nodes[0])||void 0===d?void 0:d[i],A=-1/0;t.nodes.forEach((function(e){var t=e[i],r=v[t];(null==r?void 0:r.length)>A&&(A=r.length,q=r,F=t,T=e)}));var R={},U={},G={},z={},_={},B={};Object.keys(E).forEach((function(n,o){_[n]=[],r&&(B[n]=[]);var d=-1/0,s=E[n],u={};s.forEach((function(e){var t=h["".concat(T.id,"-").concat(e.id)];if(t&&_[n].push(t),d<t&&(d=t),u["".concat(T.id,"-").concat(e.id)]={start:0,end:b[e.id].idx,distance:t},r){var o=h["".concat(e.id,"-").concat(T.id)];o&&B[n].push(o)}})),_[n]=_[n].sort((function(e,t){return e-t})),r&&(B[n]=B[n].sort((function(e,t){return e-t}))),U=oe(u,w,t,U);var c=[];if(Object.keys(u).forEach((function(e){if(G[e])c.push(G[e]);else{var t=U[e];G[e]=ie(t,P,i,a),c.push(G[e])}})),c=c.sort((function(e,t){return t-e})),z["".concat(T.id,"-").concat(n)]=c,n!==F)for(var l=function(t){var r=q[t],o=N[p[r.id].idx],d=o.nodeLabelCountMap[n],s=E[n].length;if(!d||d.count<s)return q.splice(t,1),"continue";for(var u=!1,h=0;h<s;h++)if(d.dists[h]>_[n][h]){u=!0;break}if(u)return q.splice(t,1),"continue";var l={};o.neighbors.forEach((function(e){var t=f["".concat(r.id,"-").concat(e.id)];l["".concat(r.id,"-").concat(e.id)]={start:p[r.id].idx,end:p[e.id].idx,distance:t}})),I=oe(l,N,e,I);var v=[];Object.keys(l).forEach((function(e){if(C[e])v.push(C[e]);else{var t=I[e];C[e]=ie(t,P,i,a),v.push(C[e])}})),v=v.sort((function(e,t){return t-e}));var g=!1;for(h=0;h<s;h++)if(v[h]<c[h]){g=!0;break}return g?(q.splice(t,1),"continue"):void 0},v=((null==q?void 0:q.length)||0)-1;v>=0;v--)l(v)}));var H=[];null==q||q.forEach((function(n){for(var d=p[n.id].idx,s=ne(e.nodes,u[d],d,i,o).neighbors,c=!1,h=s.length-1;h>=0;h--){if(s.length+1<t.nodes.length)return void(c=!0);var l=s[h],v=l[i];if(E[v]&&E[v].length)if(_[v]&&_[v].length){var g="".concat(n.id,"-").concat(l.id),m=f[g],y=_[v].length-1;if(m>_[v][y])s.splice(h,1);else{if(r){var L="".concat(l.id,"-").concat(n.id),w=f[L];if(y=B[v].length-1,w>B[v][y]){s.splice(h,1);continue}}var M=C[g]?C[g]:ue(e,n,l,p,m,N,P,i,a,C,I),j="".concat(T.id,"-").concat(v);if(M<z[j][z[j].length-1])s.splice(h,1);else{var k=ce(R,v,b,E),x=k.minPatternNodeLabelDegree;k.minPatternNodeLabelInDegree,k.minPatternNodeLabelOutDegree,p[l.id].degree<x&&s.splice(h,1)}}}else s.splice(h,1);else s.splice(h,1)}c||H.push({nodes:[n].concat(s)})}));var W=k(t,T.id,!1).length,$={};r?(Object.keys(W).forEach((function(e){var t=b[e].node[i];$[t]?$[t].push(W[e]):$[t]=[W[e]]})),Object.keys($).forEach((function(e){$[e].sort((function(e,t){return e-t}))}))):$=_;for(var K=function(n){var o=H[n],d=o.nodes[0],s={},u={};o.nodes.forEach((function(e,t){u[e.id]={idx:t,node:e,degree:0,inDegree:0,outDegree:0};var r=e[i];s[r]?s[r]++:s[r]=1}));var c=[],f={};e.edges.forEach((function(e){u[e.source]&&u[e.target]&&(c.push(e),f[e[a]]?f[e[a]]++:f[e[a]]=1,u[e.source].degree++,u[e.target].degree++,u[e.source].outDegree++,u[e.target].inDegree++)}));for(var h=Object.keys(y).length,l=!1,v=0;v<h;v++){var g=Object.keys(y)[v];if(!f[g]||f[g]<y[g].length){l=!0;break}}if(l)return H.splice(n,1),"continue";var m=c.length;if(m<t.edges.length)return H.splice(n,1),"break";var L=!1,N=function(e){var t=c[e],n=t[a],o=y[n];if(!o||!o.length)return f[n]--,o&&f[n]<o.length?(L=!0,"break"):(c.splice(e,1),u[t.source].degree--,u[t.target].degree--,u[t.source].outDegree--,u[t.target].inDegree--,"continue");var d=u[t.source].node[i],s=u[t.target].node[i],h=!1;return o.forEach((function(e){var t=b[e.source].node,n=b[e.target].node;t[i]===d&&n[i]===s&&(h=!0),r||t[i]!==s||n[i]!==d||(h=!0)})),h?void 0:(f[n]--,o&&f[n]<o.length?(L=!0,"break"):(c.splice(e,1),u[t.source].degree--,u[t.target].degree--,u[t.source].outDegree--,u[t.target].inDegree--,"continue"))};for(v=m-1;v>=0&&"break"!==N(v);v--);if(L)return H.splice(n,1),"continue";o.edges=c;var w=k(o,o.nodes[0].id,!1).length;if(Object.keys(w).reverse().forEach((function(e){if(e!==o.nodes[0].id&&!L){if(w[e]===1/0){var t=u[e].node[i];if(s[t]--,s[t]<E[t].length)return void(L=!0);var r=o.nodes.indexOf(u[e].node);return o.nodes.splice(r,1),void(u[e]=void 0)}var n=p[e].node[i];if(!$[n]||!$[n].length||w[e]>$[n][$[n].length-1]){if(t=u[e].node[i],s[t]--,s[t]<E[t].length)return void(L=!0);r=o.nodes.indexOf(u[e].node),o.nodes.splice(r,1),u[e]=void 0}}})),L)return H.splice(n,1),"continue";for(var M=!0,I=0;M&&!L;){if(M=!1,r?u[d.id].degree<b[T.id].degree||u[d.id].inDegree<b[T.id].inDegree||u[d.id].outDegree<b[T.id].outDegree:u[d.id].degree<b[T.id].degree){L=!0;break}if(s[d[i]]<E[d[i]].length){L=!0;break}for(var j=o.nodes.length-1;j>=0;j--){var x=o.nodes[j],O=u[x.id].degree,D=u[x.id].inDegree,S=u[x.id].outDegree,P=x[i],C=ce(R,P,b,E),q=C.minPatternNodeLabelDegree,F=C.minPatternNodeLabelInDegree,A=C.minPatternNodeLabelOutDegree;if(r?O<q||D<F||S<A:O<q){if(s[x[i]]--,s[x[i]]<E[x[i]].length){L=!0;break}o.nodes.splice(j,1),u[x.id]=void 0,M=!0}}if(L||!M&&0!==I)break;for(var U=(m=c.length)-1;U>=0;U--){var G=c[U];if(!u[G.source]||!u[G.target]){c.splice(U,1);var z=G[a];if(f[z]--,u[G.source]&&(u[G.source].degree--,u[G.source].outDegree--),u[G.target]&&(u[G.target].degree--,u[G.target].inDegree--),y[z]&&f[z]<y[z].length){L=!0;break}M=!0}}I++}return L||L||o.nodes.length<t.nodes.length||c.length<t.edges.length?(H.splice(n,1),"continue"):void 0},V=H.length-1;V>=0&&"break"!==K(V);V--);var J=H.length,X=function(e){var t=H[e],r={};t.edges.forEach((function(e){var t="".concat(e.source,"-").concat(e.target,"-").concat(e.label);r[t]?r[t]++:r[t]=1}));for(var n=function(e){var t=H[e],n={};t.edges.forEach((function(e){var t="".concat(e.source,"-").concat(e.target,"-").concat(e.label);n[t]?n[t]++:n[t]=1}));var o=!0;Object.keys(n).length!==Object.keys(r).length?o=!1:Object.keys(r).forEach((function(e){n[e]!==r[e]&&(o=!1)})),o&&H.splice(e,1)},o=J-1;o>e;o--)n(o);J=H.length};for(V=0;V<=J-1;V++)X(V);return H}}};var he="undefined"!=typeof self?self:{};he.onmessage=function(e){var r=e.data,n=r._algorithmType,o=r.data;if(n)if("function"!=typeof t[n])he.postMessage({_algorithmType:"FAILURE"});else{var i=t[n].apply(t,o);he.postMessage({_algorithmType:"SUCCESS",data:i})}}})(); | ||
(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{GADDI:()=>he,breadthFirstSearch:()=>c,connectedComponent:()=>f,depthFirstSearch:()=>b,detectCycle:()=>E,dijkstra:()=>k,findAllPath:()=>D,findShortestPath:()=>O,floydWarshall:()=>S,getAdjMatrix:()=>r,getDegree:()=>l,getInDegree:()=>p,getNeighbors:()=>d,getOutDegree:()=>v,labelPropagation:()=>P,louvain:()=>G,minimumSpanningTree:()=>$,pageRank:()=>K});const r=function(e,t){var r=e.nodes,n=e.edges,o=[],i={};if(!r)throw new Error("invalid nodes data!");return r&&r.forEach((function(e,t){i[e.id]=t,o.push([])})),n&&n.forEach((function(e){var r=e.source,n=e.target,a=i[r],d=i[n];!a&&0!==a||!d&&0!==d||(o[a][d]=1,t||(o[d][a]=1))})),o};var n=function(e,t){return e===t},o=function(){function e(e,t){void 0===t&&(t=null),this.value=e,this.next=t}return e.prototype.toString=function(e){return e?e(this.value):"".concat(this.value)},e}();const i=function(){function e(e){void 0===e&&(e=n),this.head=null,this.tail=null,this.compare=e}return e.prototype.prepend=function(e){var t=new o(e,this.head);return this.head=t,this.tail||(this.tail=t),this},e.prototype.append=function(e){var t=new o(e);return this.head?(this.tail.next=t,this.tail=t,this):(this.head=t,this.tail=t,this)},e.prototype.delete=function(e){if(!this.head)return null;for(var t=null;this.head&&this.compare(this.head.value,e);)t=this.head,this.head=this.head.next;var r=this.head;if(null!==r)for(;r.next;)this.compare(r.next.value,e)?(t=r.next,r.next=r.next.next):r=r.next;return this.compare(this.tail.value,e)&&(this.tail=r),t},e.prototype.find=function(e){var t=e.value,r=void 0===t?void 0:t,n=e.callback,o=void 0===n?void 0:n;if(!this.head)return null;for(var i=this.head;i;){if(o&&o(i.value))return i;if(void 0!==r&&this.compare(i.value,r))return i;i=i.next}return null},e.prototype.deleteTail=function(){var e=this.tail;if(this.head===this.tail)return this.head=null,this.tail=null,e;for(var t=this.head;t.next;)t.next.next?t=t.next:t.next=null;return this.tail=t,e},e.prototype.deleteHead=function(){if(!this.head)return null;var e=this.head;return this.head.next?this.head=this.head.next:(this.head=null,this.tail=null),e},e.prototype.fromArray=function(e){var t=this;return e.forEach((function(e){return t.append(e)})),this},e.prototype.toArray=function(){for(var e=[],t=this.head;t;)e.push(t),t=t.next;return e},e.prototype.reverse=function(){for(var e=this.head,t=null,r=null;e;)r=e.next,e.next=t,t=e,e=r;this.tail=this.head,this.head=t},e.prototype.toString=function(e){return void 0===e&&(e=void 0),this.toArray().map((function(t){return t.toString(e)})).toString()},e}(),a=function(){function e(){this.linkedList=new i}return e.prototype.isEmpty=function(){return!this.linkedList.head},e.prototype.peek=function(){return this.linkedList.head?this.linkedList.head.value:null},e.prototype.enqueue=function(e){this.linkedList.append(e)},e.prototype.dequeue=function(){var e=this.linkedList.deleteHead();return e?e.value:null},e.prototype.toString=function(e){return this.linkedList.toString(e)},e}();var d=function(e,t,r){void 0===t&&(t=[]);var n=t.filter((function(t){return t.source===e||t.target===e}));return"target"===r?n.filter((function(t){return t.source===e})).map((function(e){return e.target})):"source"===r?n.filter((function(t){return t.target===e})).map((function(e){return e.source})):n.map((function(t){return t.source===e?t.target:t.source}))},s=function(e,t){return t.filter((function(t){return t.source===e||t.target===e}))},u=function(e){void 0===e&&(e=0);var t="".concat(Math.random()).split(".")[1].substr(0,5),r="".concat(Math.random()).split(".")[1].substr(0,5);return"".concat(e,"-").concat(t).concat(r)};const c=function(e,t,r,n){void 0===n&&(n=!0);var o=function(e){void 0===e&&(e={});var t,r=e,n=function(){},o=(t={},function(e){var r=e.next;return!t[r]&&(t[r]=!0,!0)});return r.allowTraversal=e.allowTraversal||o,r.enter=e.enter||n,r.leave=e.leave||n,r}(r),i=new a,s=e.edges,u=void 0===s?[]:s;i.enqueue(t);for(var c="",f=function(){var e=i.dequeue();o.enter({current:e,previous:c}),d(e,u,n?"target":void 0).forEach((function(t){o.allowTraversal({previous:c,current:e,next:t})&&i.enqueue(t)})),o.leave({current:e,previous:c}),c=e};!i.isEmpty();)f()};function f(e,t){return t?function(e){for(var t=e.nodes,r=void 0===t?[]:t,n=e.edges,o=void 0===n?[]:n,i=[],a={},s={},u={},c=[],f=0,h=function(e){s[e.id]=f,u[e.id]=f,f+=1,i.push(e),a[e.id]=!0;for(var t=d(e.id,o,"target").filter((function(e){return r.map((function(e){return e.id})).indexOf(e)>-1})),n=function(n){var o=t[n];if(s[o]||0===s[o])a[o]&&(u[e.id]=Math.min(u[e.id],s[o]));else{var i=r.filter((function(e){return e.id===o}));i.length>0&&h(i[0]),u[e.id]=Math.min(u[e.id],u[o])}},l=0;l<t.length;l++)n(l);if(u[e.id]===s[e.id]){for(var p=[];i.length>0;){var v=i.pop();if(a[v.id]=!1,p.push(v),v===e)break}p.length>0&&c.push(p)}},l=0,p=r;l<p.length;l++){var v=p[l];s[v.id]||0===s[v.id]||h(v)}return c}(e):function(e){for(var t=e.nodes,r=void 0===t?[]:t,n=e.edges,o=void 0===n?[]:n,i=[],a={},s=[],u=function(e){s.push(e),a[e.id]=!0;for(var t=d(e.id,o),n=function(e){var n=t[e];if(!a[n]){var o=r.filter((function(e){return e.id===n}));o.length>0&&u(o[0])}},i=0;i<t.length;++i)n(i)},c=0;c<r.length;c++){var f=r[c];if(!a[f.id]){u(f);for(var h=[];s.length>0;)h.push(s.pop());i.push(h)}}return i}(e)}var h=function(e){var t={},r=e.nodes,n=void 0===r?[]:r,o=e.edges,i=void 0===o?[]:o;return n.forEach((function(e){t[e.id]={degree:0,inDegree:0,outDegree:0}})),i.forEach((function(e){t[e.source].degree++,t[e.source].outDegree++,t[e.target].degree++,t[e.target].inDegree++})),t};const l=h;var p=function(e,t){return h(e)[t]?h(e)[t].inDegree:0},v=function(e,t){return h(e)[t]?h(e)[t].outDegree:0};function g(e,t,r,n){n.enter({current:t,previous:r});var o=e.edges;d(t,void 0===o?[]:o,"target").forEach((function(o){n.allowTraversal({previous:r,current:t,next:o})&&g(e,o,t,n)})),n.leave({current:t,previous:r})}function b(e,t,r){g(e,t,"",function(e){void 0===e&&(e={});var t,r=e,n=function(){},o=(t={},function(e){var r=e.next;return!t[r]&&(t[r]=!0,!0)});return r.allowTraversal=e.allowTraversal||o,r.enter=e.enter||n,r.leave=e.leave||n,r}(r))}const E=function(e){var t=null,r=e.nodes,n={},o={},i={},a={};(void 0===r?[]:r).forEach((function(e){o[e.id]=e}));for(var d={enter:function(e){var r=e.current,a=e.previous;if(i[r]){t={};for(var d=r,s=a;s!==r;)t[d]=s,d=s,s=n[s];t[d]=s}else i[r]=r,delete o[r],n[r]=a},leave:function(e){var t=e.current;a[t]=t,delete i[t]},allowTraversal:function(e){var r=e.next;return!t&&!a[r]}};Object.keys(o).length;)b(e,Object.keys(o)[0],d);return t};function m(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))}Object.create,Object.create;var y={}.toString;const L=function(e,t){return y.call(e)==="[object "+t+"]"},N=function(e){return L(e,"Function")},w=function(e){return Array.isArray?Array.isArray(e):L(e,"Array")};Object.keys;var M=Array.prototype;M.splice,M.indexOf,Array.prototype.splice,Object.prototype.hasOwnProperty;Number.isInteger&&Number.isInteger,Math.PI,parseInt,Math.PI;Object.values;Object.prototype;const I=function e(t){if("object"!=typeof t||null===t)return t;var r;if(w(t)){r=[];for(var n=0,o=t.length;n<o;n++)"object"==typeof t[n]&&null!=t[n]?r[n]=e(t[n]):r[n]=t[n]}else for(var i in r={},t)"object"==typeof t[i]&&null!=t[i]?r[i]=e(t[i]):r[i]=t[i];return r};var j;Object.prototype.hasOwnProperty,Object.prototype.hasOwnProperty,function(e,t){if(!N(e))throw new TypeError("Expected a function");new Map}((function(e,t){void 0===t&&(t={});var r,n=t.fontSize,o=t.fontFamily,i=t.fontWeight,a=t.fontStyle,d=t.fontVariant;return j||(j=document.createElement("canvas").getContext("2d")),j.font=[a,d,i,n+"px",o].join(" "),j.measureText((r=e,L(r,"String")?e:"")).width})),function(){function e(){this.map={}}e.prototype.has=function(e){return void 0!==this.map[e]},e.prototype.get=function(e,t){var r=this.map[e];return void 0===r?t:r},e.prototype.set=function(e,t){this.map[e]=t},e.prototype.clear=function(){this.map={}},e.prototype.delete=function(e){delete this.map[e]},e.prototype.size=function(){return Object.keys(this.map).length}}();const k=function(e,t,r,n){var o=e.nodes,i=void 0===o?[]:o,a=e.edges,d=void 0===a?[]:a,u=[],c={},f={},h={};i.forEach((function(e,r){var n=e.id;u.push(n),f[n]=1/0,n===t&&(f[n]=0)}));for(var l=i.length,p=function(e){var t=function(e,t,r){for(var n,o=1/0,i=0;i<t.length;i++){var a=t[i].id;!r[a]&&e[a]<=o&&(o=e[a],n=t[i])}return n}(f,i,c),o=t.id;if(c[o]=!0,f[o]===1/0)return"continue";var a=[];a=r?function(e,t){return t.filter((function(t){return t.source===e}))}(o,d):s(o,d),a.forEach((function(e){var r=e.target,i=e.source,a=r===o?i:r,d=n&&e[n]?e[n]:1;f[a]>f[t.id]+d?(f[a]=f[t.id]+d,h[a]=[t.id]):f[a]===f[t.id]+d&&h[a].push(t.id)}))},v=0;v<l;v++)p();h[t]=[t];var g={};for(var b in f)f[b]!==1/0&&x(t,b,h,g);var E={};for(var b in g)E[b]=g[b][0];return{length:f,path:E,allPath:g}};function x(e,t,r,n){if(e===t)return[e];if(n[t])return n[t];for(var o=[],i=0,a=r[t];i<a.length;i++){var d=x(e,a[i],r,n);if(!d)return;for(var s=0,u=d;s<u.length;s++){var c=u[s];w(c)?o.push(m(m([],c,!0),[t],!1)):o.push([c,t])}}return n[t]=o,n[t]}var O=function(e,t,r,n,o){var i=k(e,t,n,o),a=i.length,d=i.path,s=i.allPath;return{length:a[r],path:d[r],allPath:s[r]}},D=function(e,t,r,n){var o;if(t===r)return[[t]];var i=e.edges,a=void 0===i?[]:i,s=[t],u=((o={})[t]=!0,o),c=[],f=[],h=n?d(t,a,"target"):d(t,a);for(c.push(h);s.length>0&&c.length>0;){var l=c[c.length-1];if(l.length){var p=l.shift();if(p&&(s.push(p),u[p]=!0,h=n?d(p,a,"target"):d(p,a),c.push(h.filter((function(e){return!u[e]})))),s[s.length-1]===r){var v=s.map((function(e){return e}));f.push(v),g=s.pop(),u[g]=!1,c.pop()}}else{var g=s.pop();u[g]=!1,c.pop()}}return f};const S=function(e,t){for(var n=r(e,t),o=[],i=n.length,a=0;a<i;a+=1){o[a]=[];for(var d=0;d<i;d+=1)a===d?o[a][d]=0:0!==n[a][d]&&n[a][d]?o[a][d]=n[a][d]:o[a][d]=1/0}for(var s=0;s<i;s+=1)for(a=0;a<i;a+=1)for(d=0;d<i;d+=1)o[a][d]>o[a][s]+o[s][d]&&(o[a][d]=o[a][s]+o[s][d]);return o},P=function(e,t,n,o){void 0===t&&(t=!1),void 0===n&&(n="weight"),void 0===o&&(o=1e3);var i=e.nodes,a=void 0===i?[]:i,d=e.edges,s=void 0===d?[]:d,c={},f={};a.forEach((function(e,t){var r=u();e.clusterId=r,c[r]={id:r,nodes:[e]},f[e.id]={node:e,idx:t}}));var h=r(e,t),l=[],p={};h.forEach((function(e,t){var r=0,n=a[t].id;p[n]={},e.forEach((function(e,t){if(e){r+=e;var o=a[t].id;p[n][o]=e}})),l.push(r)}));for(var v=0,g=function(){var e=!1;if(a.forEach((function(t){var r={};Object.keys(p[t.id]).forEach((function(e){var n=p[t.id][e],o=f[e].node.clusterId;r[o]||(r[o]=0),r[o]+=n}));var n=-1/0,o=[];if(Object.keys(r).forEach((function(e){n<r[e]?(n=r[e],o=[e]):n===r[e]&&o.push(e)})),1!==o.length||o[0]!==t.clusterId){var i=o.indexOf(t.clusterId);if(i>=0&&o.splice(i,1),o&&o.length){e=!0;var a=c[t.clusterId],d=a.nodes.indexOf(t);a.nodes.splice(d,1);var s=Math.floor(Math.random()*o.length),u=c[o[s]];u.nodes.push(t),t.clusterId=u.id}}})),!e)return"break";v++};v<o&&"break"!==g(););Object.keys(c).forEach((function(e){var t=c[e];t.nodes&&t.nodes.length||delete c[e]}));var b=[],E={};s.forEach((function(e){var t=e.source,r=e.target,o=e[n]||1,i=f[t].node.clusterId,a=f[r].node.clusterId,d="".concat(i,"---").concat(a);if(E[d])E[d].weight+=o,E[d].count++;else{var s={source:i,target:a,weight:o,count:1};E[d]=s,b.push(s)}}));var m=[];return Object.keys(c).forEach((function(e){m.push(c[e])})),{clusters:m,clusterEdges:b}};const C=function(){function e(e){this.arr=e}return e.prototype.add=function(t){var r,n=t.arr;if(!(null===(r=this.arr)||void 0===r?void 0:r.length))return new e(n);if(!(null==n?void 0:n.length))return new e(this.arr);if(this.arr.length===n.length){var o=[];for(var i in this.arr)o[i]=this.arr[i]+n[i];return new e(o)}},e.prototype.subtract=function(t){var r,n=t.arr;if(!(null===(r=this.arr)||void 0===r?void 0:r.length))return new e(n);if(!(null==n?void 0:n.length))return new e(this.arr);if(this.arr.length===n.length){var o=[];for(var i in this.arr)o[i]=this.arr[i]-n[i];return new e(o)}},e.prototype.avg=function(t){var r=[];for(var n in this.arr)r[n]=this.arr[n]/t;return new e(r)},e.prototype.negate=function(){var t=[];for(var r in this.arr)t[r]=-this.arr[r];return new e(t)},e.prototype.squareEuclideanDistance=function(e){var t,r=e.arr;if(!(null===(t=this.arr)||void 0===t?void 0:t.length)||!(null==r?void 0:r.length))return 0;if(this.arr.length===r.length){var n=0;for(var o in this.arr)n+=Math.pow(this.arr[o]-e.arr[o],2);return n}},e.prototype.normalize=function(){var t=[],r=I(this.arr);r.sort((function(e,t){return e-t}));var n=r[r.length-1],o=r[0];for(var i in this.arr)t[i]=(this.arr[i]-o)/(n-o);return new e(t)},e.prototype.norm2=function(){var e;if(!(null===(e=this.arr)||void 0===e?void 0:e.length))return 0;var t=0;for(var r in this.arr)t+=Math.pow(this.arr[r],2);return Math.sqrt(t)},e.prototype.dot=function(e){var t,r=e.arr;if(!(null===(t=this.arr)||void 0===t?void 0:t.length)||!(null==r?void 0:r.length))return 0;if(this.arr.length===r.length){var n=0;for(var o in this.arr)n+=this.arr[o]*e.arr[o];return n}},e}();var T=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/,q=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/,F=function(e,t){return t.map((function(t){if(e.hasOwnProperty(t)){if(!isNaN(Number(e[t])))return Number(e[t]);if(e[t].match(T)||e[t].match(q))return Number(Date.parse(new Date(e[t])))/1e3}return 0}))},A=function(e){for(var t=function(e,t){void 0===e&&(e=[]),void 0===t&&(t=100);var r={};e.forEach((function(e){e.properties&&Object.keys(e.properties).forEach((function(t){"id"===t||!"".concat(e.properties[t]).match(T)&&!"".concat(e.properties[t]).match(q)&&isNaN(Number(e.properties[t]))?r.hasOwnProperty(t)&&delete r[t]:r.hasOwnProperty(t)?r[t]+=1:r[t]=1}))}));var n=Object.keys(r).sort((function(e,t){return r[t]-r[e]}));return n.length<t?n:n.slice(0,t)}(e),r=[],n=0;n<e.length;n++)r[n]=F(e[n].properties,t);return r},R=function(e,t,r,n){for(var o=t.length,i=2*n,a=0,d=0;d<o;d++)for(var s=e[d].clusterId,u=0;u<o;u++)s===e[u].clusterId&&(a+=(t[d][u]||0)-(r[d]||0)*(r[u]||0)/i);return a*(1/i)},U=function(e,t){void 0===e&&(e=[]);for(var r=e.length,n=new C([]),o=0;o<r;o++)n=n.add(new C(t[o]));var i=n.avg(r);i.normalize();var a=0;for(o=0;o<r;o++)a+=(s=new C(t[o])).squareEuclideanDistance(i);var d=[];for(e.forEach((function(){d.push([])})),o=0;o<r;o++){var s=new C(t[o]);e[o].clusterInertial=0;for(var u=0;u<r;u++)if(o!==u){var c=new C(t[u]);d[o][u]=s.squareEuclideanDistance(c),e[o].clusterInertial+=d[o][u]}else d[o][u]=0}var f=0,h=2*r*a;for(o=0;o<r;o++){var l=e[o].clusterId;for(u=0;u<r;u++){var p=e[u].clusterId;o!==u&&l===p&&(f+=e[o].clusterInertial*e[u].clusterInertial/Math.pow(h,2)-d[o][u]/h)}}return Number(f.toFixed(4))};const G=function(e,t,n,o,i,a){void 0===t&&(t=!1),void 0===n&&(n="weight"),void 0===o&&(o=1e-4),void 0===i&&(i=!1),void 0===a&&(a=1);var d=e.nodes,s=void 0===d?[]:d,u=e.edges,c=void 0===u?[]:u,f=[];if(i){s.forEach((function(e,t){e.properties=e.properties||{},e.originIndex=t}));var h=[];s.every((function(e){return e.hasOwnProperty("nodeType")}))&&(h=Array.from(new Set(s.map((function(e){return e.nodeType})))),s.forEach((function(e){e.properties.nodeType=h.findIndex((function(t){return t===e.nodeType}))}))),f=A(s)}var l=1,p={},v={};s.forEach((function(e,t){var r=String(l++);e.clusterId=r,p[r]={id:r,nodes:[e]},v[e.id]={node:e,idx:t}}));var g=r(e,t),b=[],E={},m=0;g.forEach((function(e,t){var r=0,n=s[t].id;E[n]={},e.forEach((function(e,t){if(e){r+=e;var o=s[t].id;E[n][o]=e,m+=e}})),b.push(r)})),m/=2;for(var y=1/0,L=1/0,N=0,w=[],M={};;){y=i&&s.every((function(e){return e.hasOwnProperty("properties")}))?R(s,g,b,m)+U(s,f)*a:R(s,g,b,m),0===N&&(L=y,w=s,M=p);var j=y>0&&y>L&&y-L<o;if(y>L&&(w=s.map((function(e){return{node:e,clusterId:e.clusterId}})),M=I(p),L=y),j||N>100)break;N++,Object.keys(p).forEach((function(e){var t=0;c.forEach((function(r){var o=r.source,i=r.target,a=v[o].node.clusterId,d=v[i].node.clusterId;(a===e&&d!==e||d===e&&a!==e)&&(t+=r[n]||1)})),p[e].sumTot=t})),s.forEach((function(e,t){var r,o=p[e.clusterId],d=0,s=b[t]/(2*m),u=0,h=o.nodes;h.forEach((function(e){var r=v[e.id].idx;u+=g[t][r]||0}));var l=u-o.sumTot*s,y=h.filter((function(t){return t.id!==e.id})),L=[];y.forEach((function(e,t){L[t]=f[e.originIndex]}));var N=U(y,f)*a,w=E[e.id];if(Object.keys(w).forEach((function(n){var o=v[n].node.clusterId;if(o!==e.clusterId){var u=p[o],c=u.nodes;if(c&&c.length){var h=0;c.forEach((function(e){var r=v[e.id].idx;h+=g[t][r]||0}));var b=h-u.sumTot*s,E=c.concat([e]),m=[];E.forEach((function(e,t){m[t]=f[e.originIndex]}));var y=U(E,f)*a,L=b-l;i&&(L=b+y-(l+N)),L>d&&(d=L,r=u)}}})),d>0){r.nodes.push(e);var M=e.clusterId;e.clusterId=r.id;var I=o.nodes.indexOf(e);o.nodes.splice(I,1);var j=0,k=0;c.forEach((function(e){var t=e.source,o=e.target,i=v[t].node.clusterId,a=v[o].node.clusterId;(i===r.id&&a!==r.id||a===r.id&&i!==r.id)&&(j+=e[n]||1),(i===M&&a!==M||a===M&&i!==M)&&(k+=e[n]||1)})),r.sumTot=j,o.sumTot=k}}))}var k={},x=0;Object.keys(M).forEach((function(e){var t=M[e];if(t.nodes&&t.nodes.length){var r=String(x+1);r!==e&&(t.id=r,t.nodes=t.nodes.map((function(e){return{id:e.id,clusterId:r}})),M[r]=t,k[e]=r,delete M[e],x++)}else delete M[e]})),w.forEach((function(e){var t=e.node,r=e.clusterId;t.clusterId=r,t.clusterId&&k[t.clusterId]&&(t.clusterId=k[t.clusterId])}));var O=[],D={};c.forEach((function(e){var t=e.source,r=e.target,o=e[n]||1,i=v[t].node.clusterId,a=v[r].node.clusterId,d="".concat(i,"---").concat(a);if(D[d])D[d].weight+=o,D[d].count++;else{var s={source:i,target:a,weight:o,count:1};D[d]=s,O.push(s)}}));var S=[];return Object.keys(M).forEach((function(e){S.push(M[e])})),{clusters:S,clusterEdges:O}},z=function(){function e(e){this.count=e.length,this.parent={};for(var t=0,r=e;t<r.length;t++){var n=r[t];this.parent[n]=n}}return e.prototype.find=function(e){for(;this.parent[e]!==e;)e=this.parent[e];return e},e.prototype.union=function(e,t){var r=this.find(e),n=this.find(t);r!==n&&(r<n?(this.parent[t]!==t&&this.union(this.parent[t],e),this.parent[t]=this.parent[e]):(this.parent[e]!==e&&this.union(this.parent[e],t),this.parent[e]=this.parent[t]))},e.prototype.connected=function(e,t){return this.find(e)===this.find(t)},e}();var _=function(e,t){return e-t};const B=function(){function e(e){void 0===e&&(e=_),this.compareFn=e,this.list=[]}return e.prototype.getLeft=function(e){return 2*e+1},e.prototype.getRight=function(e){return 2*e+2},e.prototype.getParent=function(e){return 0===e?null:Math.floor((e-1)/2)},e.prototype.isEmpty=function(){return this.list.length<=0},e.prototype.top=function(){return this.isEmpty()?void 0:this.list[0]},e.prototype.delMin=function(){var e=this.top(),t=this.list.pop();return this.list.length>0&&(this.list[0]=t,this.moveDown(0)),e},e.prototype.insert=function(e){if(null!==e){this.list.push(e);var t=this.list.length-1;return this.moveUp(t),!0}return!1},e.prototype.moveUp=function(e){for(var t=this.getParent(e);e&&e>0&&this.compareFn(this.list[t],this.list[e])>0;){var r=this.list[t];this.list[t]=this.list[e],this.list[e]=r,e=t,t=this.getParent(e)}},e.prototype.moveDown=function(e){var t,r=e,n=this.getLeft(e),o=this.getRight(e),i=this.list.length;null!==n&&n<i&&this.compareFn(this.list[r],this.list[n])>0?r=n:null!==o&&o<i&&this.compareFn(this.list[r],this.list[o])>0&&(r=o),e!==r&&(t=[this.list[r],this.list[e]],this.list[e]=t[0],this.list[r]=t[1],this.moveDown(r))},e}();var H=function(e,t){var r=[],n=e.nodes,o=void 0===n?[]:n,i=e.edges,a=void 0===i?[]:i;if(0===o.length)return r;var d=o[0],u=new Set;u.add(d);var c=new B((function(e,r){return t?e.weight-r.weight:0}));for(s(d.id,a).forEach((function(e){c.insert(e)}));!c.isEmpty();){var f=c.delMin(),h=f.source,l=f.target;u.has(h)&&u.has(l)||(r.push(f),u.has(h)||(u.add(h),s(h,a).forEach((function(e){c.insert(e)}))),u.has(l)||(u.add(l),s(l,a).forEach((function(e){c.insert(e)}))))}return r},W=function(e,t){var r=[],n=e.nodes,o=void 0===n?[]:n,i=e.edges,a=void 0===i?[]:i;if(0===o.length)return r;var d=a.map((function(e){return e}));t&&d.sort((function(e,t){return e.weight-t.weight}));for(var s=new z(o.map((function(e){return e.id})));d.length>0;){var u=d.shift(),c=u.source,f=u.target;s.connected(c,f)||(r.push(u),s.union(c,f))}return r};const $=function(e,t,r){return r?{prim:H,kruskal:W}[r](e,t):W(e,t)},K=function(e,t,r){"number"!=typeof t&&(t=1e-6),"number"!=typeof r&&(r=.85);for(var n,o=1,i=0,a=1e3,s=e.nodes,u=void 0===s?[]:s,c=e.edges,f=void 0===c?[]:c,h=u.length,p={},v={},g=0;g<h;++g)p[E=(w=u[g]).id]=1/h,v[E]=1/h;for(var b=l(e);a>0&&o>t;){for(i=0,g=0;g<h;++g){var E=(w=u[g]).id;if(n=0,0===b[w.id].inDegree)p[E]=0;else{for(var m=d(E,f,"source"),y=0;y<m.length;++y){var L=m[y],N=b[L].outDegree;N>0&&(n+=v[L]/N)}p[E]=r*n,i+=p[E]}}for(i=(1-i)/h,o=0,g=0;g<h;++g){var w;n=p[E=(w=u[g]).id]+i,o+=Math.abs(n-v[E]),v[E]=n}a-=1}return v};var V="-1",J=function(e,t,r,n){void 0===e&&(e=-1),void 0===t&&(t=-1),void 0===r&&(r=-1),void 0===n&&(n="-1"),this.id=e,this.from=t,this.to=r,this.label=n},Q=function(){function e(e,t){void 0===e&&(e=-1),void 0===t&&(t=V),this.id=e,this.label=t,this.edges=[],this.edgeMap={}}return e.prototype.addEdge=function(e){this.edges.push(e),this.edgeMap[e.id]=e},e}(),X=function(){function e(e,t,r){void 0===e&&(e=-1),void 0===t&&(t=!0),void 0===r&&(r=!1),this.id=e,this.edgeIdAutoIncrease=t,this.edges=[],this.nodes=[],this.nodeMap={},this.edgeMap={},this.nodeLabelMap={},this.edgeLabelMap={},this.counter=0,this.directed=r}return e.prototype.getNodeNum=function(){return this.nodes.length},e.prototype.addNode=function(e,t){if(!this.nodeMap[e]){var r=new Q(e,t);this.nodes.push(r),this.nodeMap[e]=r,this.nodeLabelMap[t]||(this.nodeLabelMap[t]=[]),this.nodeLabelMap[t].push(e)}},e.prototype.addEdge=function(e,t,r,n){if((this.edgeIdAutoIncrease||void 0===e)&&(e=this.counter++),!(this.nodeMap[t]&&this.nodeMap[r]&&this.nodeMap[r].edgeMap[e])){var o=new J(e,t,r,n);if(this.edges.push(o),this.edgeMap[e]=o,this.nodeMap[t].addEdge(o),this.edgeLabelMap[n]||(this.edgeLabelMap[n]=[]),this.edgeLabelMap[n].push(o),!this.directed){var i=new J(e,r,t,n);this.nodeMap[r].addEdge(i),this.edgeLabelMap[n].push(i)}}},e}(),Y=function(){function e(e,t,r,n,o){this.fromNode=e,this.toNode=t,this.nodeEdgeNodeLabel={nodeLabel1:r||V,edgeLabel:n||"-1",nodeLabel2:o||V}}return e.prototype.equalTo=function(e){return this.fromNode===e.formNode&&this.toNode===e.toNode&&this.nodeEdgeNodeLabel===e.nodeEdgeNodeLabel},e.prototype.notEqualTo=function(e){return!this.equalTo(e)},e}(),Z=function(){function e(){this.rmpath=[],this.dfsEdgeList=[]}return e.prototype.equalTo=function(e){var t=this.dfsEdgeList.length;if(t!==e.length)return!1;for(var r=0;r<t;r++)if(this.dfsEdgeList[r]!==e[r])return!1;return!0},e.prototype.notEqualTo=function(e){return!this.equalTo(e)},e.prototype.pushBack=function(e,t,r,n,o){return this.dfsEdgeList.push(new Y(e,t,r,n,o)),this.dfsEdgeList},e.prototype.toGraph=function(e,t){void 0===e&&(e=-1),void 0===t&&(t=!1);var r=new X(e,!0,t);return this.dfsEdgeList.forEach((function(e){var t=e.fromNode,n=e.toNode,o=e.nodeEdgeNodeLabel,i=o.nodeLabel1,a=o.edgeLabel,d=o.nodeLabel2;i!==V&&r.addNode(t,i),d!==V&&r.addNode(n,d),i!==V&&d!==i&&r.addEdge(void 0,t,n,a)})),r},e.prototype.buildRmpath=function(){this.rmpath=[];for(var e=void 0,t=this.dfsEdgeList.length-1;t>=0;t--){var r=this.dfsEdgeList[t],n=r.fromNode,o=r.toNode;n<o&&(void 0===e||o===e)&&(this.rmpath.push(t),e=n)}return this.rmpath},e.prototype.getNodeNum=function(){var e={};return this.dfsEdgeList.forEach((function(t){e[t.fromNode]||(e[t.fromNode]=!0),e[t.toNode]||(e[t.toNode]=!0)})),Object.keys(e).length},e}(),ee=function(){function e(e){if(this.his={},this.nodesUsed={},this.edgesUsed={},this.edges=[],e){for(;e;){var t=e.edge;this.edges.push(t),this.nodesUsed[t.from]=1,this.nodesUsed[t.to]=1,this.edgesUsed[t.id]=1,e=e.preNode}this.edges=this.edges.reverse()}}return e.prototype.hasNode=function(e){return 1===this.nodesUsed[e.id]},e.prototype.hasEdge=function(e){return 1===this.edgesUsed[e.id]},e}(),te=function(){function e(e){var t=e.graphs,r=e.minSupport,n=void 0===r?2:r,o=e.minNodeNum,i=void 0===o?1:o,a=e.maxNodeNum,d=void 0===a?4:a,s=e.top,u=void 0===s?10:s,c=e.directed,f=void 0!==c&&c,h=e.verbose,l=void 0!==h&&h;this.graphs=t,this.dfsCode=new Z,this.support=0,this.frequentSize1Subgraphs=[],this.frequentSubgraphs=[],this.minSupport=n,this.top=u,this.directed=f,this.counter=0,this.maxNodeNum=d,this.minNodeNum=i,this.verbose=l,this.maxNodeNum<this.minNodeNum&&(this.maxNodeNum=this.minNodeNum),this.reportDF=[]}return e.prototype.findForwardRootEdges=function(e,t){var r=this,n=[],o=e.nodeMap;return t.edges.forEach((function(e){(r.directed||t.label<=o[e.to].label)&&n.push(e)})),n},e.prototype.findBackwardEdge=function(e,t,r,n){if(!this.directed&&t===r)return null;for(var o=e.nodeMap,i=o[r.to].edges,a=i.length,d=0;d<a;d++){var s=i[d];if(!n.hasEdge(s)&&s.to===t.from)if(this.directed){if(o[t.from].label<o[r.to].label||o[t.from].label===o[r.to].label&&t.label<=s.label)return s}else if(t.label<s.label||t.label===s.label&&o[t.to].label<=o[r.to].label)return s}return null},e.prototype.findForwardPureEdges=function(e,t,r,n){for(var o=[],i=t.to,a=e.nodeMap[i].edges,d=a.length,s=0;s<d;s++){var u=a[s],c=e.nodeMap[u.to];r<=c.label&&!n.hasNode(c)&&o.push(u)}return o},e.prototype.findForwardRmpathEdges=function(e,t,r,n){for(var o=[],i=e.nodeMap,a=i[t.to].label,d=i[t.from].edges,s=d.length,u=0;u<s;u++){var c=d[u],f=i[c.to].label;t.to===c.to||r>f||n.hasNode(i[c.to])||(t.label<c.label||t.label===c.label&&a<=f)&&o.push(c)}return o},e.prototype.getSupport=function(e){var t={};return e.forEach((function(e){t[e.graphId]||(t[e.graphId]=!0)})),Object.keys(t).length},e.prototype.findMinLabel=function(e){var t=void 0;return Object.keys(e).forEach((function(r){var n=e[r],o=n.nodeLabel1,i=n.edgeLabel,a=n.nodeLabel2;t?(o<t.nodeLabel1||o===t.nodeLabel1&&i<t.edgeLabel||o===t.nodeLabel1&&i===t.edgeLabel&&a<t.nodeLabel2)&&(t={nodeLabel1:o,edgeLabel:i,nodeLabel2:a}):t={nodeLabel1:o,edgeLabel:i,nodeLabel2:a}})),t},e.prototype.isMin=function(){var e=this,t=this.dfsCode;if(this.verbose&&console.log("isMin checking",t),1===t.dfsEdgeList.length)return!0;var r=this.directed,n=t.toGraph(-1,r),o=n.nodeMap,i=new Z,a={};n.nodes.forEach((function(t){e.findForwardRootEdges(n,t).forEach((function(e){var r=o[e.to],i="".concat(t.label,"-").concat(e.label,"-").concat(r.label);a[i]||(a[i]={projected:[],nodeLabel1:t.label,edgeLabel:e.label,nodeLabel2:r.label});var d={graphId:n.id,edge:e,preNode:null};a[i].projected.push(d)}))}));var d=this.findMinLabel(a);if(d){i.dfsEdgeList.push(new Y(0,1,d.nodeLabel1,d.edgeLabel,d.nodeLabel2));var s=function(a){for(var d=i.buildRmpath(),u=i.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1,c=i.dfsEdgeList[d[0]].toNode,f={},h=!1,l=0,p=r?-1:0,v=function(t){if(h)return"break";a.forEach((function(r){var o=new ee(r),a=e.findBackwardEdge(n,o.edges[d[t]],o.edges[d[0]],o);a&&(f[a.label]||(f[a.label]={projected:[],edgeLabel:a.label}),f[a.label].projected.push({graphId:n.id,edge:f,preNode:r}),l=i.dfsEdgeList[d[t]].fromNode,h=!0)}))},g=d.length-1;g>p&&"break"!==v(g);g--);if(h){var b=e.findMinLabel(f);i.dfsEdgeList.push(new Y(c,l,V,b.edgeLabel,V));var E=i.dfsEdgeList.length-1;return e.dfsCode.dfsEdgeList[E]===i.dfsEdgeList[E]&&s(f[b.edgeLabel].projected)}var m={};h=!1;var y=0;a.forEach((function(t){var r=new ee(t),i=e.findForwardPureEdges(n,r.edges[d[0]],u,r);i.length>0&&(h=!0,y=c,i.forEach((function(e){var r="".concat(e.label,"-").concat(o[e.to].label);m[r]||(m[r]={projected:[],edgeLabel:e.label,nodeLabel2:o[e.to].label}),m[r].projected.push({graphId:n.id,edge:e,preNode:t})})))}));var L=d.length,N=function(t){if(h)return"break";var r=d[t];a.forEach((function(t){var a=new ee(t),d=e.findForwardRmpathEdges(n,a.edges[r],u,a);d.length>0&&(h=!0,y=i.dfsEdgeList[r].fromNode,d.forEach((function(e){var r="".concat(e.label,"-").concat(o[e.to].label);m[r]||(m[r]={projected:[],edgeLabel:e.label,nodeLabel2:o[e.to].label}),m[r].projected.push({graphId:n.id,edge:e,preNode:t})})))}))};for(g=0;g<L&&"break"!==N(g);g++);if(!h)return!0;var w=e.findMinLabel(m);i.dfsEdgeList.push(new Y(y,c+1,V,w.edgeLabel,w.nodeLabel2));var M=i.dfsEdgeList.length-1;return t.dfsEdgeList[M]===i.dfsEdgeList[M]&&s(m["".concat(w.edgeLabel,"-").concat(w.nodeLabel2)].projected)},u="".concat(d.nodeLabel1,"-").concat(d.edgeLabel,"-").concat(d.nodeLabel2);return s(a[u].projected)}},e.prototype.report=function(){if(!(this.dfsCode.getNodeNum()<this.minNodeNum)){this.counter++;var e=this.dfsCode.toGraph(this.counter,this.directed);this.frequentSubgraphs.push(I(e))}},e.prototype.subGraphMining=function(e){var t=this;if(!(this.getSupport(e)<this.minSupport)&&this.isMin()){this.report();var r=this.dfsCode.getNodeNum(),n=this.dfsCode.buildRmpath(),o=this.dfsCode.dfsEdgeList[n[0]].toNode,i=this.dfsCode.dfsEdgeList[0].nodeEdgeNodeLabel.nodeLabel1,a={},d={};e.forEach((function(e){for(var s=t.graphs[e.graphId],u=s.nodeMap,c=new ee(e),f=n.length-1;f>=0;f--){var h=t.findBackwardEdge(s,c.edges[n[f]],c.edges[n[0]],c);if(h){var l="".concat(t.dfsCode.dfsEdgeList[n[f]].fromNode,"-").concat(h.label);d[l]||(d[l]={projected:[],toNodeId:t.dfsCode.dfsEdgeList[n[f]].fromNode,edgeLabel:h.label}),d[l].projected.push({graphId:e.graphId,edge:h,preNode:e})}}if(!(r>=t.maxNodeNum)){t.findForwardPureEdges(s,c.edges[n[0]],i,c).forEach((function(t){var r="".concat(o,"-").concat(t.label,"-").concat(u[t.to].label);a[r]||(a[r]={projected:[],fromNodeId:o,edgeLabel:t.label,nodeLabel2:u[t.to].label}),a[r].projected.push({graphId:e.graphId,edge:t,preNode:e})}));var p=function(r){t.findForwardRmpathEdges(s,c.edges[n[r]],i,c).forEach((function(o){var i="".concat(t.dfsCode.dfsEdgeList[n[r]].fromNode,"-").concat(o.label,"-").concat(u[o.to].label);a[i]||(a[i]={projected:[],fromNodeId:t.dfsCode.dfsEdgeList[n[r]].fromNode,edgeLabel:o.label,nodeLabel2:u[o.to].label}),a[i].projected.push({graphId:e.graphId,edge:o,preNode:e})}))};for(f=0;f<n.length;f++)p(f)}})),Object.keys(d).forEach((function(e){var r=d[e],n=r.toNodeId,i=r.edgeLabel;t.dfsCode.dfsEdgeList.push(new Y(o,n,"-1",i,"-1")),t.subGraphMining(d[e].projected),t.dfsCode.dfsEdgeList.pop()})),Object.keys(a).forEach((function(e){var r=a[e],n=r.fromNodeId,i=r.edgeLabel,d=r.nodeLabel2;t.dfsCode.dfsEdgeList.push(new Y(n,o+1,V,i,d)),t.subGraphMining(a[e].projected),t.dfsCode.dfsEdgeList.pop()}))}},e.prototype.generate1EdgeFrequentSubGraphs=function(){var e=this.graphs,t=this.directed,r=this.minSupport,n=this.frequentSize1Subgraphs,o={},i={},a={},d={};return Object.keys(e).forEach((function(r){var n=e[r],s=n.nodeMap;n.nodes.forEach((function(e,n){var u=e.label,c="".concat(r,"-").concat(u);if(!a[c]){var f=o[u]||0;f++,o[u]=f}a[c]={graphKey:r,label:u},e.edges.forEach((function(e){var n=u,o=s[e.to].label;if(!t&&n>o){var a=o;o=n,n=a}var c=e.label,f="".concat(r,"-").concat(n,"-").concat(c,"-").concat(o),h="".concat(n,"-").concat(c,"-").concat(o);if(!i[h]){var l=i[h]||0;l++,i[h]=l}d[f]={graphId:r,nodeLabel1:n,edgeLabel:c,nodeLabel2:o}}))}))})),Object.keys(o).forEach((function(e){if(!(o[e]<r)){var t={nodes:[],edges:[]};t.nodes.push({id:"0",label:e}),n.push(t)}})),n},e.prototype.run=function(){var e=this;if(this.frequentSize1Subgraphs=this.generate1EdgeFrequentSubGraphs(),!(this.maxNodeNum<2)){var t=this.graphs,r=(this.directed,{});Object.keys(t).forEach((function(n){var o=t[n],i=o.nodeMap;o.nodes.forEach((function(t){e.findForwardRootEdges(o,t).forEach((function(e){var o=i[e.to],a="".concat(t.label,"-").concat(e.label,"-").concat(o.label);r[a]||(r[a]={projected:[],nodeLabel1:t.label,edgeLabel:e.label,nodeLabel2:o.label});var d={graphId:n,edge:e,preNode:null};r[a].projected.push(d)}))}))})),Object.keys(r).forEach((function(t){var n=r[t],o=n.projected,i=n.nodeLabel1,a=n.edgeLabel,d=n.nodeLabel2;e.dfsCode.dfsEdgeList.push(new Y(0,1,i,a,d)),e.subGraphMining(o),e.dfsCode.dfsEdgeList.pop()}))}},e}(),re="cluster";var ne=function(e,t,r,n){void 0===r&&(r="cluster"),void 0===n&&(n=2);var o=[],i=e.nodes;return t.forEach((function(e,t){o.push(oe(i,e,t,r,n))})),o},oe=function(e,t,r,n,o){var i=[r],a=[],d={};return t.forEach((function(t,s){if(t<=o&&r!==s){i.push(s),a.push(e[s]);var u=e[s][n];d[u]?(d[u].count++,d[u].dists.push(t)):d[u]={count:1,dists:[t]}}})),Object.keys(d).forEach((function(e){d[e].dists=d[e].dists.sort((function(e,t){return e-t}))})),{nodeIdx:r,nodeId:e[r].id,nodeIdxs:i,neighbors:a,neighborNum:i.length-1,nodeLabelCountMap:d}},ie=function(e,t,r,n){var o=r.nodes;return n||(n={}),Object.keys(e).forEach((function(i){var a,d;if(!n||!n[i]){n[i]={nodes:[],edges:[]};var s=e[i],u=null===(a=t[s.start])||void 0===a?void 0:a.nodeIdxs,c=null===(d=t[s.end])||void 0===d?void 0:d.nodeIdxs;if(u&&c){var f=new Set(c),h=u.filter((function(e){return f.has(e)}));if(h&&h.length){for(var l={},p=h.length,v=0;v<p;v++){var g=o[h[v]];n[i].nodes.push(g),l[g.id]=!0}r.edges.forEach((function(e){l[e.source]&&l[e.target]&&n[i].edges.push(e)}))}}}})),n},ae=function(e,t,r,n){var o,i,a={};e.nodes.forEach((function(e){a[e.id]=e}));var d=0;return!(null===(o=null==t?void 0:t.edges)||void 0===o?void 0:o.length)||(null===(i=null==t?void 0:t.nodes)||void 0===i?void 0:i.length)<2?0:(e.edges.forEach((function(e){var o=a[e.source][r],i=a[e.target][r],s=null==t?void 0:t.nodes[0][r],u=null==t?void 0:t.nodes[1][r],c=null==t?void 0:t.edges[0][n];e[n]===c&&(o===s&&i===u||o===u&&i===s)&&d++})),d)},de=function(e,t){var r={},n={};return e.forEach((function(e,o){r[e.id]={idx:o,node:e,degree:0,inDegree:0,outDegree:0};var i=e[t];n[i]||(n[i]=[]),n[i].push(e)})),{nodeMap:r,nodeLabelMap:n}},se=function(e,t,r){var n={},o={};return e.forEach((function(e,i){n["".concat(u)]={idx:i,edge:e};var a=e[t];o[a]||(o[a]=[]),o[a].push(e);var d=r[e.source];d&&(d.degree++,d.outDegree++);var s=r[e.target];s&&(s.degree++,s.inDegree++)})),{edgeMap:n,edgeLabelMap:o}},ue=function(e,t,r){var n=t.length,o={};return t.forEach((function(t,i){for(var a=r?0:i+1,d=e[i].id,s=a;s<n;s++)if(i!==s){var u=e[s].id,c=t[s];o["".concat(d,"-").concat(u)]=c,r||(o["".concat(u,"-").concat(d)]=c)}})),o},ce=function(e,t,r,n,o,i,a,d,s,u,c){var f,h="".concat(t.id,"-").concat(r.id);if(u&&u[h])return u[h];var l=c?c[h]:void 0;if(!l){var p=((f={})[h]={start:n[t.id].idx,end:n[r.id].idx,distance:o},f);l=(c=ie(p,i,e,c))[h]}return ae(l,a,d,s)},fe=function(e,t,r,n){var o,i,a,d=null===(o=e[t])||void 0===o?void 0:o.degree,s=null===(i=e[t])||void 0===i?void 0:i.inDegree,u=null===(a=e[t])||void 0===a?void 0:a.outDegree;return void 0===e[t]&&(d=1/0,s=1/0,u=1/0,n[t].forEach((function(e){var t=r[e.id].degree;d>t&&(d=t);var n=r[e.id].inDegree;s>n&&(s=n);var o=r[e.id].outDegree;u>o&&(u=o)})),e[t]={degree:d,inDegree:s,outDegree:u}),{minPatternNodeLabelDegree:d,minPatternNodeLabelInDegree:s,minPatternNodeLabelOutDegree:u}};const he=function(e,t,r,n,o,i,a){var d;if(void 0===r&&(r=!1),void 0===i&&(i="cluster"),void 0===a&&(a="cluster"),e&&e.nodes){var s=e.nodes.length;if(s){var u=S(e,r),c=S(t,r),f=ue(e.nodes,u,r),h=ue(t.nodes,c,r),l=de(e.nodes,i),p=l.nodeMap,v=l.nodeLabelMap,g=de(t.nodes,i),b=g.nodeMap,E=g.nodeLabelMap;se(e.edges,a,p);var y=se(t.edges,a,b).edgeLabelMap,L=[];null==c||c.forEach((function(e){L=L.concat(e)})),o||(o=Math.max.apply(Math,m(m([],L,!1),[2],!1))),n||(n=o);var N=ne(e,u,i,n),w=ne(t,c,i,n),M=function(e,t,r,n,o){var i=Math.ceil(r/t),a={},d=0;return n.forEach((function(e,n){for(var s=0,u=0,c=e.nodeIdxs,f=e.neighborNum-1;s<i;){for(var h=c[1+Math.floor(Math.random()*f)],l=0;(a["".concat(n,"-").concat(h)]||a["".concat(h,"-").concat(n)])&&(h=Math.floor(Math.random()*t),!(++l>2*t)););if(l<2*t&&(a["".concat(n,"-").concat(h)]={start:n,end:h,distance:o[n][h]},s++,++d>=r))return a;if(++u>2*t)break}s<i&&(i=(i+(i-s))/(t-n-1))})),a}(0,s,Math.min(100,s*(s-1)/2),w,u),I=ie(M,N,e),j=function(e){var t=e.graphs,r=e.directed,n=void 0!==r&&r,o=e.nodeLabelProp,i=void 0===o?re:o,a=e.edgeLabelProp,d=void 0===a?re:a,s=function(e,t,r,n){var o={};return Object.keys(e).forEach((function(i,a){var d=e[i],s=new X(a,!0,t),u={};d.nodes.forEach((function(e,t){s.addNode(t,e[r]),u[e.id]=t})),d.edges.forEach((function(e,t){var r=u[e.source],o=u[e.target];s.addEdge(-1,r,o,e[n])})),s&&s.getNodeNum()&&(o[s.id]=s)})),o}(t,n,i,d),u=e.minSupport,c=e.maxNodeNum,f=e.minNodeNum,h=e.verbose,l=e.top,p=new te({graphs:s,minSupport:u,maxNodeNum:c,minNodeNum:f,top:l,verbose:h,directed:n});p.run();var v=function(e,t,r){var n=[];return e.forEach((function(e){var o={nodes:[],edges:[]};e.nodes.forEach((function(e){var r;o.nodes.push(((r={id:"".concat(e.id)})[t]=e.label,r))})),e.edges.forEach((function(e){var t;o.edges.push(((t={source:"".concat(e.from),target:"".concat(e.to)})[r]=e.label,t))})),n.push(o)})),n}(p.frequentSubgraphs,i,d);return v}({graphs:I,nodeLabelProp:i,edgeLabelProp:a,minSupport:1,minNodeNum:1,maxNodeNum:4,directed:r}).slice(0,10),x=j.length,O=[];j.forEach((function(e,t){O[t]={},Object.keys(I).forEach((function(r){var n=I[r],o=ae(n,e,i,a);O[t][r]=o}))}));var D=function(e,t,r){for(var n=1/0,o=0,i=function(t){var r=e[t],i=Object.keys(r).sort((function(e,t){return r[e]-r[t]})),a=[];i.forEach((function(e,t){a[t%10]||(a[t%10]={graphs:[],totalCount:0,aveCount:0}),a[t%10].graphs.push(e),a[t%10].totalCount+=r[e]}));var d=0,s=[];a.forEach((function(e){var t=e.totalCount/e.graphs.length;e.aveCount=t,s.push(t);var n=0,o=e.length;e.graphs.forEach((function(t,o){var i=r[t];e.graphs.forEach((function(e,t){o!==t&&(n+=Math.abs(i-r[e]))}))})),d+=n/=o*(o-1)/2})),d/=a.length;var u=0;s.forEach((function(e,t){s.forEach((function(r,n){t!==n&&(u+=Math.abs(e-r))})),u/=s.length*(s.length-1)/2}));var c=u-d;n<c&&(n=c,o=t)},a=0;a<t;a++)i(a);return{structure:r[o],structureCountMap:e[o]}}(O,x,j),P=D.structure,C=D.structureCountMap,T=t.nodes[0],q=[],F=null===(d=t.nodes[0])||void 0===d?void 0:d[i],A=-1/0;t.nodes.forEach((function(e){var t=e[i],r=v[t];(null==r?void 0:r.length)>A&&(A=r.length,q=r,F=t,T=e)}));var R={},U={},G={},z={},_={},B={};Object.keys(E).forEach((function(n,o){_[n]=[],r&&(B[n]=[]);var d=-1/0,s=E[n],u={};s.forEach((function(e){var t=h["".concat(T.id,"-").concat(e.id)];if(t&&_[n].push(t),d<t&&(d=t),u["".concat(T.id,"-").concat(e.id)]={start:0,end:b[e.id].idx,distance:t},r){var o=h["".concat(e.id,"-").concat(T.id)];o&&B[n].push(o)}})),_[n]=_[n].sort((function(e,t){return e-t})),r&&(B[n]=B[n].sort((function(e,t){return e-t}))),U=ie(u,w,t,U);var c=[];if(Object.keys(u).forEach((function(e){if(G[e])c.push(G[e]);else{var t=U[e];G[e]=ae(t,P,i,a),c.push(G[e])}})),c=c.sort((function(e,t){return t-e})),z["".concat(T.id,"-").concat(n)]=c,n!==F)for(var l=function(t){var r=q[t],o=N[p[r.id].idx],d=o.nodeLabelCountMap[n],s=E[n].length;if(!d||d.count<s)return q.splice(t,1),"continue";for(var u=!1,h=0;h<s;h++)if(d.dists[h]>_[n][h]){u=!0;break}if(u)return q.splice(t,1),"continue";var l={};o.neighbors.forEach((function(e){var t=f["".concat(r.id,"-").concat(e.id)];l["".concat(r.id,"-").concat(e.id)]={start:p[r.id].idx,end:p[e.id].idx,distance:t}})),I=ie(l,N,e,I);var v=[];Object.keys(l).forEach((function(e){if(C[e])v.push(C[e]);else{var t=I[e];C[e]=ae(t,P,i,a),v.push(C[e])}})),v=v.sort((function(e,t){return t-e}));var g=!1;for(h=0;h<s;h++)if(v[h]<c[h]){g=!0;break}return g?(q.splice(t,1),"continue"):void 0},v=((null==q?void 0:q.length)||0)-1;v>=0;v--)l(v)}));var H=[];null==q||q.forEach((function(n){for(var d=p[n.id].idx,s=oe(e.nodes,u[d],d,i,o).neighbors,c=!1,h=s.length-1;h>=0;h--){if(s.length+1<t.nodes.length)return void(c=!0);var l=s[h],v=l[i];if(E[v]&&E[v].length)if(_[v]&&_[v].length){var g="".concat(n.id,"-").concat(l.id),m=f[g],y=_[v].length-1;if(m>_[v][y])s.splice(h,1);else{if(r){var L="".concat(l.id,"-").concat(n.id),w=f[L];if(y=B[v].length-1,w>B[v][y]){s.splice(h,1);continue}}var M=C[g]?C[g]:ce(e,n,l,p,m,N,P,i,a,C,I),j="".concat(T.id,"-").concat(v);if(M<z[j][z[j].length-1])s.splice(h,1);else{var k=fe(R,v,b,E),x=k.minPatternNodeLabelDegree;k.minPatternNodeLabelInDegree,k.minPatternNodeLabelOutDegree,p[l.id].degree<x&&s.splice(h,1)}}}else s.splice(h,1);else s.splice(h,1)}c||H.push({nodes:[n].concat(s)})}));var W=k(t,T.id,!1).length,$={};r?(Object.keys(W).forEach((function(e){var t=b[e].node[i];$[t]?$[t].push(W[e]):$[t]=[W[e]]})),Object.keys($).forEach((function(e){$[e].sort((function(e,t){return e-t}))}))):$=_;for(var K=function(n){var o=H[n],d=o.nodes[0],s={},u={};o.nodes.forEach((function(e,t){u[e.id]={idx:t,node:e,degree:0,inDegree:0,outDegree:0};var r=e[i];s[r]?s[r]++:s[r]=1}));var c=[],f={};e.edges.forEach((function(e){u[e.source]&&u[e.target]&&(c.push(e),f[e[a]]?f[e[a]]++:f[e[a]]=1,u[e.source].degree++,u[e.target].degree++,u[e.source].outDegree++,u[e.target].inDegree++)}));for(var h=Object.keys(y).length,l=!1,v=0;v<h;v++){var g=Object.keys(y)[v];if(!f[g]||f[g]<y[g].length){l=!0;break}}if(l)return H.splice(n,1),"continue";var m=c.length;if(m<t.edges.length)return H.splice(n,1),"break";var L=!1,N=function(e){var t=c[e],n=t[a],o=y[n];if(!o||!o.length)return f[n]--,o&&f[n]<o.length?(L=!0,"break"):(c.splice(e,1),u[t.source].degree--,u[t.target].degree--,u[t.source].outDegree--,u[t.target].inDegree--,"continue");var d=u[t.source].node[i],s=u[t.target].node[i],h=!1;return o.forEach((function(e){var t=b[e.source].node,n=b[e.target].node;t[i]===d&&n[i]===s&&(h=!0),r||t[i]!==s||n[i]!==d||(h=!0)})),h?void 0:(f[n]--,o&&f[n]<o.length?(L=!0,"break"):(c.splice(e,1),u[t.source].degree--,u[t.target].degree--,u[t.source].outDegree--,u[t.target].inDegree--,"continue"))};for(v=m-1;v>=0&&"break"!==N(v);v--);if(L)return H.splice(n,1),"continue";o.edges=c;var w=k(o,o.nodes[0].id,!1).length;if(Object.keys(w).reverse().forEach((function(e){if(e!==o.nodes[0].id&&!L){if(w[e]===1/0){var t=u[e].node[i];if(s[t]--,s[t]<E[t].length)return void(L=!0);var r=o.nodes.indexOf(u[e].node);return o.nodes.splice(r,1),void(u[e]=void 0)}var n=p[e].node[i];if(!$[n]||!$[n].length||w[e]>$[n][$[n].length-1]){if(t=u[e].node[i],s[t]--,s[t]<E[t].length)return void(L=!0);r=o.nodes.indexOf(u[e].node),o.nodes.splice(r,1),u[e]=void 0}}})),L)return H.splice(n,1),"continue";for(var M=!0,I=0;M&&!L;){if(M=!1,r?u[d.id].degree<b[T.id].degree||u[d.id].inDegree<b[T.id].inDegree||u[d.id].outDegree<b[T.id].outDegree:u[d.id].degree<b[T.id].degree){L=!0;break}if(s[d[i]]<E[d[i]].length){L=!0;break}for(var j=o.nodes.length-1;j>=0;j--){var x=o.nodes[j],O=u[x.id].degree,D=u[x.id].inDegree,S=u[x.id].outDegree,P=x[i],C=fe(R,P,b,E),q=C.minPatternNodeLabelDegree,F=C.minPatternNodeLabelInDegree,A=C.minPatternNodeLabelOutDegree;if(r?O<q||D<F||S<A:O<q){if(s[x[i]]--,s[x[i]]<E[x[i]].length){L=!0;break}o.nodes.splice(j,1),u[x.id]=void 0,M=!0}}if(L||!M&&0!==I)break;for(var U=(m=c.length)-1;U>=0;U--){var G=c[U];if(!u[G.source]||!u[G.target]){c.splice(U,1);var z=G[a];if(f[z]--,u[G.source]&&(u[G.source].degree--,u[G.source].outDegree--),u[G.target]&&(u[G.target].degree--,u[G.target].inDegree--),y[z]&&f[z]<y[z].length){L=!0;break}M=!0}}I++}return L||L||o.nodes.length<t.nodes.length||c.length<t.edges.length?(H.splice(n,1),"continue"):void 0},V=H.length-1;V>=0&&"break"!==K(V);V--);var J=H.length,Q=function(e){var t=H[e],r={};t.edges.forEach((function(e){var t="".concat(e.source,"-").concat(e.target,"-").concat(e.label);r[t]?r[t]++:r[t]=1}));for(var n=function(e){var t=H[e],n={};t.edges.forEach((function(e){var t="".concat(e.source,"-").concat(e.target,"-").concat(e.label);n[t]?n[t]++:n[t]=1}));var o=!0;Object.keys(n).length!==Object.keys(r).length?o=!1:Object.keys(r).forEach((function(e){n[e]!==r[e]&&(o=!1)})),o&&H.splice(e,1)},o=J-1;o>e;o--)n(o);J=H.length};for(V=0;V<=J-1;V++)Q(V);return H}}};var le="undefined"!=typeof self?self:{};le.onmessage=function(e){var r=e.data,n=r._algorithmType,o=r.data;if(n)if("function"!=typeof t[n])le.postMessage({_algorithmType:"FAILURE"});else{var i=t[n].apply(t,o);le.postMessage({_algorithmType:"SUCCESS",data:i})}}})(); | ||
//# sourceMappingURL=index.worker.js.map |
@@ -15,2 +15,4 @@ import getAdjMatrix from './adjacent-matrix'; | ||
import kCore from './k-core'; | ||
import cosineSimilarity from './cosine-similarity'; | ||
import nodesCosineSimilarity from './nodes-cosine-similarity'; | ||
import minimumSpanningTree from './mts'; | ||
@@ -25,3 +27,3 @@ import pageRank from './pageRank'; | ||
}; | ||
export { getAdjMatrix, breadthFirstSearch, connectedComponent, getDegree, getInDegree, getOutDegree, detectCycle, detectDirectedCycle, detectAllCycles, detectAllDirectedCycle, detectAllUndirectedCycle, depthFirstSearch, dijkstra, findAllPath, findShortestPath, floydWarshall, labelPropagation, louvain, iLouvain, kCore, minimumSpanningTree, pageRank, getNeighbors, Stack, GADDI, IAlgorithm }; | ||
export { getAdjMatrix, breadthFirstSearch, connectedComponent, getDegree, getInDegree, getOutDegree, detectCycle, detectDirectedCycle, detectAllCycles, detectAllDirectedCycle, detectAllUndirectedCycle, depthFirstSearch, dijkstra, findAllPath, findShortestPath, floydWarshall, labelPropagation, louvain, iLouvain, kCore, cosineSimilarity, nodesCosineSimilarity, minimumSpanningTree, pageRank, getNeighbors, Stack, GADDI, IAlgorithm }; | ||
declare const _default: { | ||
@@ -60,2 +62,7 @@ getAdjMatrix: (graphData: import("./types").GraphData, directed?: boolean) => import("./types").Matrix[]; | ||
kCore: (graphData: import("./types").GraphData, k?: number) => import("./types").GraphData; | ||
cosineSimilarity: (item: number[], targetItem: number[]) => number; | ||
nodesCosineSimilarity: (nodes: import("./types").NodeConfig[], seedNode: import("./types").NodeConfig) => { | ||
allCosineSimilarity: number[]; | ||
similarNodes: import("./types").NodeConfig[]; | ||
}; | ||
minimumSpanningTree: (graphData: import("./types").GraphData, weight?: string, algo?: string) => import("./types").EdgeConfig[]; | ||
@@ -62,0 +69,0 @@ pageRank: (graphData: import("./types").GraphData, epsilon?: number, linkProb?: number) => { |
@@ -15,2 +15,4 @@ import getAdjMatrix from './adjacent-matrix'; | ||
import kCore from './k-core'; | ||
import cosineSimilarity from './cosine-similarity'; | ||
import nodesCosineSimilarity from './nodes-cosine-similarity'; | ||
import minimumSpanningTree from './mts'; | ||
@@ -22,3 +24,3 @@ import pageRank from './pageRank'; | ||
var detectDirectedCycle = detectCycle; | ||
export { getAdjMatrix, breadthFirstSearch, connectedComponent, getDegree, getInDegree, getOutDegree, detectCycle, detectDirectedCycle, detectAllCycles, detectAllDirectedCycle, detectAllUndirectedCycle, depthFirstSearch, dijkstra, findAllPath, findShortestPath, floydWarshall, labelPropagation, louvain, iLouvain, kCore, minimumSpanningTree, pageRank, getNeighbors, Stack, GADDI }; | ||
export { getAdjMatrix, breadthFirstSearch, connectedComponent, getDegree, getInDegree, getOutDegree, detectCycle, detectDirectedCycle, detectAllCycles, detectAllDirectedCycle, detectAllUndirectedCycle, depthFirstSearch, dijkstra, findAllPath, findShortestPath, floydWarshall, labelPropagation, louvain, iLouvain, kCore, cosineSimilarity, nodesCosineSimilarity, minimumSpanningTree, pageRank, getNeighbors, Stack, GADDI }; | ||
export default { | ||
@@ -45,2 +47,4 @@ getAdjMatrix: getAdjMatrix, | ||
kCore: kCore, | ||
cosineSimilarity: cosineSimilarity, | ||
nodesCosineSimilarity: nodesCosineSimilarity, | ||
minimumSpanningTree: minimumSpanningTree, | ||
@@ -47,0 +51,0 @@ pageRank: pageRank, |
import { clone } from '@antv/util'; | ||
import getAdjMatrix from './adjacent-matrix'; | ||
import Vector from './utils/vector'; | ||
import { secondReg, dateReg } from './constants/time'; | ||
import { getPropertyWeight } from './utils/node-properties'; | ||
@@ -26,64 +26,2 @@ var getModularity = function getModularity(nodes, adjMatrix, ks, m) { | ||
return modularity; | ||
}; // 获取所有属性并排序 | ||
var getAllSortProperties = function getAllSortProperties(nodes) { | ||
if (nodes === void 0) { | ||
nodes = []; | ||
} | ||
var propertyKeyInfo = {}; | ||
nodes.forEach(function (node) { | ||
Object.keys(node.properties).forEach(function (propertyKey) { | ||
// 目前过滤只保留可以转成数值型的或日期型的, todo: 统一转成one-hot特征向量 | ||
if (!"".concat(node.properties[propertyKey]).match(secondReg) && !"".concat(node.properties[propertyKey]).match(dateReg) && isNaN(Number(node.properties[propertyKey])) || propertyKey === 'id') { | ||
if (propertyKeyInfo.hasOwnProperty(propertyKey)) { | ||
delete propertyKeyInfo[propertyKey]; | ||
} | ||
return; | ||
} | ||
if (propertyKeyInfo.hasOwnProperty(propertyKey)) { | ||
propertyKeyInfo[propertyKey] += 1; | ||
} else { | ||
propertyKeyInfo[propertyKey] = 1; | ||
} | ||
}); | ||
}); // 取top50的属性 | ||
var sortKeys = Object.keys(propertyKeyInfo).sort(function (a, b) { | ||
return propertyKeyInfo[b] - propertyKeyInfo[a]; | ||
}); | ||
return sortKeys.length < 100 ? sortKeys : sortKeys.slice(0, 100); | ||
}; | ||
var processProperty = function processProperty(properties, propertyKeys) { | ||
return propertyKeys.map(function (key) { | ||
if (properties.hasOwnProperty(key)) { | ||
// 可以转成数值的直接转成数值 | ||
if (!isNaN(Number(properties[key]))) { | ||
return Number(properties[key]); | ||
} // 时间型的转成时间戳 | ||
if (properties[key].match(secondReg) || properties[key].match(dateReg)) { | ||
// @ts-ignore | ||
return Number(Date.parse(new Date(properties[key]))) / 1000; | ||
} | ||
} | ||
return 0; | ||
}); | ||
}; // 获取属性特征权重 | ||
var getPropertyWeight = function getPropertyWeight(propertyKeys, nodes) { | ||
var allPropertiesWeight = []; | ||
for (var i = 0; i < nodes.length; i++) { | ||
allPropertiesWeight[i] = processProperty(nodes[i].properties, propertyKeys); | ||
} | ||
return allPropertiesWeight; | ||
}; // 模块惯性度,衡量属性相似度 | ||
@@ -211,7 +149,6 @@ | ||
}); | ||
} | ||
} // 所有节点属性特征向量集合 | ||
var propertyKeys = getAllSortProperties(nodes); // 所有节点属性特征向量集合 | ||
allPropertiesWeight = getPropertyWeight(propertyKeys, nodes); | ||
allPropertiesWeight = getPropertyWeight(nodes); | ||
} | ||
@@ -218,0 +155,0 @@ |
@@ -10,3 +10,5 @@ declare class Vector { | ||
normalize(): Vector; | ||
norm2(): number; | ||
dot(otherVector: any): number; | ||
} | ||
export default Vector; |
@@ -117,2 +117,40 @@ /** | ||
return new Vector(res); | ||
}; // 2范数 or 模长 | ||
Vector.prototype.norm2 = function () { | ||
var _a; | ||
if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) { | ||
return 0; | ||
} | ||
var res = 0; | ||
for (var key in this.arr) { | ||
res += Math.pow(this.arr[key], 2); | ||
} | ||
return Math.sqrt(res); | ||
}; // 两个向量的点积 | ||
Vector.prototype.dot = function (otherVector) { | ||
var _a; | ||
var otherArr = otherVector.arr; | ||
if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) { | ||
return 0; | ||
} | ||
if (this.arr.length === otherArr.length) { | ||
var res = 0; | ||
for (var key in this.arr) { | ||
res += this.arr[key] * otherVector.arr[key]; | ||
} | ||
return res; | ||
} | ||
}; | ||
@@ -119,0 +157,0 @@ |
@@ -15,2 +15,4 @@ import getAdjMatrix from './adjacent-matrix'; | ||
import kCore from './k-core'; | ||
import cosineSimilarity from './cosine-similarity'; | ||
import nodesCosineSimilarity from './nodes-cosine-similarity'; | ||
import minimumSpanningTree from './mts'; | ||
@@ -25,3 +27,3 @@ import pageRank from './pageRank'; | ||
}; | ||
export { getAdjMatrix, breadthFirstSearch, connectedComponent, getDegree, getInDegree, getOutDegree, detectCycle, detectDirectedCycle, detectAllCycles, detectAllDirectedCycle, detectAllUndirectedCycle, depthFirstSearch, dijkstra, findAllPath, findShortestPath, floydWarshall, labelPropagation, louvain, iLouvain, kCore, minimumSpanningTree, pageRank, getNeighbors, Stack, GADDI, IAlgorithm }; | ||
export { getAdjMatrix, breadthFirstSearch, connectedComponent, getDegree, getInDegree, getOutDegree, detectCycle, detectDirectedCycle, detectAllCycles, detectAllDirectedCycle, detectAllUndirectedCycle, depthFirstSearch, dijkstra, findAllPath, findShortestPath, floydWarshall, labelPropagation, louvain, iLouvain, kCore, cosineSimilarity, nodesCosineSimilarity, minimumSpanningTree, pageRank, getNeighbors, Stack, GADDI, IAlgorithm }; | ||
declare const _default: { | ||
@@ -60,2 +62,7 @@ getAdjMatrix: (graphData: import("./types").GraphData, directed?: boolean) => import("./types").Matrix[]; | ||
kCore: (graphData: import("./types").GraphData, k?: number) => import("./types").GraphData; | ||
cosineSimilarity: (item: number[], targetItem: number[]) => number; | ||
nodesCosineSimilarity: (nodes: import("./types").NodeConfig[], seedNode: import("./types").NodeConfig) => { | ||
allCosineSimilarity: number[]; | ||
similarNodes: import("./types").NodeConfig[]; | ||
}; | ||
minimumSpanningTree: (graphData: import("./types").GraphData, weight?: string, algo?: string) => import("./types").EdgeConfig[]; | ||
@@ -62,0 +69,0 @@ pageRank: (graphData: import("./types").GraphData, epsilon?: number, linkProb?: number) => { |
@@ -32,2 +32,8 @@ "use strict"; | ||
}); | ||
Object.defineProperty(exports, "cosineSimilarity", { | ||
enumerable: true, | ||
get: function get() { | ||
return _cosineSimilarity.default; | ||
} | ||
}); | ||
exports.default = void 0; | ||
@@ -149,2 +155,8 @@ Object.defineProperty(exports, "depthFirstSearch", { | ||
}); | ||
Object.defineProperty(exports, "nodesCosineSimilarity", { | ||
enumerable: true, | ||
get: function get() { | ||
return _nodesCosineSimilarity.default; | ||
} | ||
}); | ||
Object.defineProperty(exports, "pageRank", { | ||
@@ -183,2 +195,6 @@ enumerable: true, | ||
var _cosineSimilarity = _interopRequireDefault(require("./cosine-similarity")); | ||
var _nodesCosineSimilarity = _interopRequireDefault(require("./nodes-cosine-similarity")); | ||
var _mts = _interopRequireDefault(require("./mts")); | ||
@@ -223,2 +239,4 @@ | ||
kCore: _kCore.default, | ||
cosineSimilarity: _cosineSimilarity.default, | ||
nodesCosineSimilarity: _nodesCosineSimilarity.default, | ||
minimumSpanningTree: _mts.default, | ||
@@ -225,0 +243,0 @@ pageRank: _pageRank.default, |
@@ -14,3 +14,3 @@ "use strict"; | ||
var _time = require("./constants/time"); | ||
var _nodeProperties = require("./utils/node-properties"); | ||
@@ -39,64 +39,2 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
return modularity; | ||
}; // 获取所有属性并排序 | ||
var getAllSortProperties = function getAllSortProperties(nodes) { | ||
if (nodes === void 0) { | ||
nodes = []; | ||
} | ||
var propertyKeyInfo = {}; | ||
nodes.forEach(function (node) { | ||
Object.keys(node.properties).forEach(function (propertyKey) { | ||
// 目前过滤只保留可以转成数值型的或日期型的, todo: 统一转成one-hot特征向量 | ||
if (!"".concat(node.properties[propertyKey]).match(_time.secondReg) && !"".concat(node.properties[propertyKey]).match(_time.dateReg) && isNaN(Number(node.properties[propertyKey])) || propertyKey === 'id') { | ||
if (propertyKeyInfo.hasOwnProperty(propertyKey)) { | ||
delete propertyKeyInfo[propertyKey]; | ||
} | ||
return; | ||
} | ||
if (propertyKeyInfo.hasOwnProperty(propertyKey)) { | ||
propertyKeyInfo[propertyKey] += 1; | ||
} else { | ||
propertyKeyInfo[propertyKey] = 1; | ||
} | ||
}); | ||
}); // 取top50的属性 | ||
var sortKeys = Object.keys(propertyKeyInfo).sort(function (a, b) { | ||
return propertyKeyInfo[b] - propertyKeyInfo[a]; | ||
}); | ||
return sortKeys.length < 100 ? sortKeys : sortKeys.slice(0, 100); | ||
}; | ||
var processProperty = function processProperty(properties, propertyKeys) { | ||
return propertyKeys.map(function (key) { | ||
if (properties.hasOwnProperty(key)) { | ||
// 可以转成数值的直接转成数值 | ||
if (!isNaN(Number(properties[key]))) { | ||
return Number(properties[key]); | ||
} // 时间型的转成时间戳 | ||
if (properties[key].match(_time.secondReg) || properties[key].match(_time.dateReg)) { | ||
// @ts-ignore | ||
return Number(Date.parse(new Date(properties[key]))) / 1000; | ||
} | ||
} | ||
return 0; | ||
}); | ||
}; // 获取属性特征权重 | ||
var getPropertyWeight = function getPropertyWeight(propertyKeys, nodes) { | ||
var allPropertiesWeight = []; | ||
for (var i = 0; i < nodes.length; i++) { | ||
allPropertiesWeight[i] = processProperty(nodes[i].properties, propertyKeys); | ||
} | ||
return allPropertiesWeight; | ||
}; // 模块惯性度,衡量属性相似度 | ||
@@ -224,7 +162,6 @@ | ||
}); | ||
} | ||
} // 所有节点属性特征向量集合 | ||
var propertyKeys = getAllSortProperties(nodes); // 所有节点属性特征向量集合 | ||
allPropertiesWeight = getPropertyWeight(propertyKeys, nodes); | ||
allPropertiesWeight = (0, _nodeProperties.getPropertyWeight)(nodes); | ||
} | ||
@@ -231,0 +168,0 @@ |
@@ -10,3 +10,5 @@ declare class Vector { | ||
normalize(): Vector; | ||
norm2(): number; | ||
dot(otherVector: any): number; | ||
} | ||
export default Vector; |
@@ -124,2 +124,40 @@ "use strict"; | ||
return new Vector(res); | ||
}; // 2范数 or 模长 | ||
Vector.prototype.norm2 = function () { | ||
var _a; | ||
if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length)) { | ||
return 0; | ||
} | ||
var res = 0; | ||
for (var key in this.arr) { | ||
res += Math.pow(this.arr[key], 2); | ||
} | ||
return Math.sqrt(res); | ||
}; // 两个向量的点积 | ||
Vector.prototype.dot = function (otherVector) { | ||
var _a; | ||
var otherArr = otherVector.arr; | ||
if (!((_a = this.arr) === null || _a === void 0 ? void 0 : _a.length) || !(otherArr === null || otherArr === void 0 ? void 0 : otherArr.length)) { | ||
return 0; | ||
} | ||
if (this.arr.length === otherArr.length) { | ||
var res = 0; | ||
for (var key in this.arr) { | ||
res += this.arr[key] * otherVector.arr[key]; | ||
} | ||
return res; | ||
} | ||
}; | ||
@@ -126,0 +164,0 @@ |
{ | ||
"name": "@antv/algorithm", | ||
"version": "0.1.16", | ||
"version": "0.1.17", | ||
"description": "graph algorithm", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1152620
156
11636