Merge branch 'master' of github.com:OPENNETWORKINGLAB/ONOS
diff --git a/build.xml b/build.xml
index 65bf9c8..c7b6449 100644
--- a/build.xml
+++ b/build.xml
@@ -66,10 +66,13 @@
         <include name="concurrentlinkedhashmap-lru-1.3.jar"/>
         <include name="jython-2.5.2.jar"/>
         <include name="libthrift-0.7.0.jar"/>
-	<include name="curator-client-1.3.4-SNAPSHOT.jar"/>
-	<include name="curator-framework-1.3.4-SNAPSHOT.jar"/>
-	<include name="curator-recipes-1.3.4-SNAPSHOT.jar"/>
+	<include name="curator-client-1.3.5-SNAPSHOT.jar"/>
+	<include name="curator-framework-1.3.5-SNAPSHOT.jar"/>
+	<include name="curator-recipes-1.3.5-SNAPSHOT.jar"/>
+	<include name="curator-x-discovery-1.3.5-SNAPSHOT.jar"/>
 	<include name="zookeeper-3.4.5.jar"/>
+	<include name="ezmorph-1.0.6.jar"/>	
+ 	<include name="json-lib-2.4-jdk15.jar"/>
     </patternset>
 
     <patternset id="titanlib">
diff --git a/mastership-test.sh b/mastership-test.sh
deleted file mode 100755
index 209ffb7..0000000
--- a/mastership-test.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#java -Dlogback.configurationFile=logback.xml -cp target/floodlight-only.jar:lib/*:lib/titan/* net.onrc.onos.registry.controller.RegistryRunner $1
-java -Dlogback.configurationFile=logback.xml -cp target/floodlight-only.jar:lib/*:lib/titan/* net.floodlightcontroller.core.Main -cf onos.properties
diff --git a/onos.sh b/onos.sh
deleted file mode 100755
index 5667114..0000000
--- a/onos.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/sh
-
-# Set paths
-FL_HOME=`dirname $0`
-FL_JAR="${FL_HOME}/target/floodlight.jar"
-FL_LOGBACK="${FL_HOME}/logback.xml"
-
-# Set JVM options
-JVM_OPTS=""
-#JVM_OPTS="$JVM_OPTS -server -d64"
-#JVM_OPTS="$JVM_OPTS -Xmx2g -Xms2g -Xmn800m"
-#JVM_OPTS="$JVM_OPTS -XX:+UseParallelGC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods"
-#JVM_OPTS="$JVM_OPTS -XX:MaxInlineSize=8192 -XX:FreqInlineSize=8192"
-#JVM_OPTS="$JVM_OPTS -XX:CompileThreshold=1500 -XX:PreBlockSpin=8"
-#JVM_OPTS="$JVM_OPTS -Dpython.security.respectJavaAccessibility=false"
-
-# Set classpath to include titan libs
-CLASSPATH=`echo ${FL_HOME}/lib/*.jar ${FL_HOME}/lib/titan/*.jar | sed 's/ /:/g'`
-
-
-# Create a logback file if required
-cat <<EOF_LOGBACK >${FL_LOGBACK}
-<configuration scan="true" debug="true">
-  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%level [%logger:%thread] %msg%n</pattern>
-    </encoder>
-  </appender>
-
-  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
-    <file>onos.log</file>
-    <encoder>
-      <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
-    </encoder>
-  </appender>
-
-  <logger name="org" level="WARN"/>
-  <logger name="LogService" level="WARN"/> <!-- Restlet access logging -->
-  <logger name="net.floodlightcontroller.logging" level="WARN"/>
-
-  <root level="DEBUG">
-    <appender-ref ref="STDOUT" />
-    <appender-ref ref="FILE" />
-  </root>
-</configuration>
-EOF_LOGBACK
-
-# Delete and recreate /tmp/netmap
-#rm -rf /tmp/cassandra.titan
-#mkdir /tmp/cassandra.titan
-
-# Clear logs
-rm onos.log
-
-# Run floodlight
-echo "Starting ONOS controller ..."
-echo 
-#java ${JVM_OPTS} -Dlogback.configurationFile=${FL_LOGBACK} -Xbootclasspath/a:$CLASSPATH -jar ${FL_JAR} -cf ./onos.properties
-java ${JVM_OPTS} -Dlogback.configurationFile=${FL_LOGBACK} -jar ${FL_JAR} -cf ./onos.properties
diff --git a/scripts/run-onos-simple.sh b/scripts/run-onos-simple.sh
new file mode 100755
index 0000000..41b2cc6
--- /dev/null
+++ b/scripts/run-onos-simple.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+basedir=`dirname $0`
+onosdir="${basedir}/.."
+
+logfile="${onosdir}/logback.xml"
+jarfile="${onosdir}/target/floodlight-only.jar"
+classpath="${jarfile}:${onosdir}/lib/*:${onosdir}/lib/titan/*"
+mainclass="net.floodlightcontroller.core.Main"
+propfile="${onosdir}/onos.properties"
+
+#java -Dlogback.configurationFile=logback.xml -cp target/floodlight-only.jar:lib/*:lib/titan/* net.floodlightcontroller.core.Main -cf onos.properties
+java -Dlogback.configurationFile=${logfile} -cp ${classpath} ${mainclass} -cf ${propfile}
diff --git a/src/main/java/net/floodlightcontroller/bgproute/BgpRoute.java b/src/main/java/net/floodlightcontroller/bgproute/BgpRoute.java
index 2819253..47f3d1a 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/BgpRoute.java
+++ b/src/main/java/net/floodlightcontroller/bgproute/BgpRoute.java
@@ -1,5 +1,13 @@
 package net.floodlightcontroller.bgproute;
 
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.Collection;
 import java.util.Map;
 import java.util.ArrayList;
@@ -18,6 +26,9 @@
 import net.floodlightcontroller.restclient.RestClient;
 
 import net.floodlightcontroller.linkdiscovery.ILinkDiscovery;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import net.sf.json.JSONSerializer;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -30,6 +41,10 @@
 	protected ITopologyService topology;
 	
 	protected static Ptree ptree;
+	protected static String BGPdRestIp;
+	protected static String RouterId;
+	
+	
 	
 	@Override
 	public Collection<Class<? extends IFloodlightService>> getModuleServices() {
@@ -41,7 +56,7 @@
 	@Override
 	public Map<Class<? extends IFloodlightService>, IFloodlightService> getServiceImpls() {
 		Map<Class<? extends IFloodlightService>, IFloodlightService> m = new HashMap<Class<? extends IFloodlightService>, IFloodlightService>();
-		m.put(IBgpRouteService.class, this); 
+		m.put(IBgpRouteService.class, this);
 		return m;
 	}
 
@@ -69,11 +84,23 @@
 		
 		// Test.
 		//test();
+		  
 	}
 
 	public Ptree getPtree() {
 		return ptree;
 	}
+	public void  clearPtree() {
+		ptree = null;
+		ptree = new Ptree(32);
+		
+	}
+	public String getBGPdRestIp() {
+		return BGPdRestIp;
+	}
+	public String getRouterId() {
+		return RouterId;
+	}
 	
 	// Return nexthop address as byte array.
 	public Rib lookupRib(byte[] dest) {
@@ -154,8 +181,113 @@
 	
 	@Override
 	public void startUp(FloodlightModuleContext context) {
-		restApi.addRestletRoutable(new BgpRouteWebRoutable()); 
+		restApi.addRestletRoutable(new BgpRouteWebRoutable());
 		topology.addListener((ITopologyListener) this);
+		
+		 // get the BGPdRestIp and RouterId from transit-route-pusher.py
+  		File file = new File("/home/ubuntu/sdn/transit-route-pusher.py");  
+       
+        
+    try{  
+        BufferedReader input = new BufferedReader (new FileReader(file));  
+        String text; 
+        int is_BGPdRestIp=0;
+        int is_RouterId=0;
+        								                         
+        while((text = input.readLine()) != null && (is_BGPdRestIp == 0) || (is_RouterId == 0) ){  
+        					  
+        		if(is_BGPdRestIp == 1 && is_RouterId ==1)
+        		{break;}
+        		
+        				if(is_BGPdRestIp == 0 && text.contains("BGPdRestIp") ){
+		        				String[] temp =	text.split("\"");
+		        				BGPdRestIp = temp[1];
+		        				is_BGPdRestIp = 1;
+		        				
+        				
+            	}else if (is_RouterId == 0 && text.contains("RouterId") ){
+												
+		            	String[] temp =	text.split("\"");
+		    							RouterId = temp[1];
+		    							is_RouterId = 1;
+		    							
+    							
+									}
+        						
+        					}
+    
+                   
+    }  catch(Exception e){  
+       e.printStackTrace();
+           }  
+      
+		        
+			// automatically get the rib from bgpd at the ONOS initiation process.
+    String dest=RouterId;
+    String str="http://"+BGPdRestIp+"/wm/bgp/"+dest;
+	 		
+	          
+	try {
+	       	 
+				URL url = new URL(str);
+				HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+				conn.setRequestMethod("GET");
+				conn.setRequestProperty("Accept", "application/json");
+		 
+				if (conn.getResponseCode() != 200) {
+					throw new RuntimeException("Failed : HTTP error code : "
+							+ conn.getResponseCode());
+				}
+	
+			 BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); 
+			 StringBuffer res = new StringBuffer();
+			 String line;
+			 while ((line = br.readLine()) != null) {
+				 	res.append(line);
+			 	}	   
+			 
+			 String res2=res.toString().replaceAll("\"", "'");
+			 JSONObject jsonObj = (JSONObject) JSONSerializer.toJSON(res2);  
+			 JSONArray rib_json_array = jsonObj.getJSONArray("rib");
+			 String router_id = jsonObj.getString("router-id");
+			       
+			 int size = rib_json_array.size();
+			 System.out.print("size:"+size+"\n");
+			 for (int j = 0; j < size; j++) {
+	        JSONObject second_json_object = rib_json_array.getJSONObject(j);
+	        String prefix = second_json_object.getString("prefix");
+	        String nexthop = second_json_object.getString("nexthop");
+	        
+	        //insert each rib entry into the local rib;
+	        String[] substring= prefix.split("/");
+	        String prefix1=substring[0];
+	        String mask1=substring[1];
+	        			
+						Prefix p = new Prefix(prefix1, Integer.valueOf(mask1));
+						PtreeNode node = ptree.acquire(p.getAddress(), p.masklen);
+						Rib rib = new Rib(router_id, nexthop, p.masklen);
+			
+						if (node.rib != null) {
+							node.rib = null;
+							ptree.delReference(node);
+						}
+						node.rib = rib;
+      
+			 }  
+			 br.close();
+			 conn.disconnect();
+
+			} catch (MalformedURLException e) {
+
+				e.printStackTrace();
+
+			} catch (IOException e) {
+
+				e.printStackTrace();
+
+			}
+	
+
 	}
 
 	@Override
diff --git a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResource.java b/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResource.java
index d5abb5a..28d9621 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResource.java
+++ b/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResource.java
@@ -7,6 +7,8 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import net.floodlightcontroller.restclient.RestClient;
+import java.io.UnsupportedEncodingException;  
+import java.nio.ByteBuffer;  
 
 public class BgpRouteResource extends ServerResource {
     
@@ -27,60 +29,85 @@
 	}
 	
 	@SuppressWarnings("unused")
-    @Get
-	public String get(String fmJson) {
-		String dest = (String) getRequestAttributes().get("dest");
-		String output = "";
-		IBgpRouteService bgpRoute = (IBgpRouteService)getContext().getAttributes().
-                get(IBgpRouteService.class.getCanonicalName());
-		
-		if (dest != null) {
-			Prefix p = new Prefix(dest, 32);
-			if (p == null) {
-				return "[GET]: dest address format is wrong";
-			}
-			byte [] nexthop = bgpRoute.lookupRib(p.getAddress()).nextHop.getAddress();
-			if (nexthop != null) {
-				output += "{\"result\": \"" + addrToString(nexthop) + "\"}\n";
+	@Get
+		public String get(String fmJson) {		
+		String linpp=fmJson;
+			String dest = (String) getRequestAttributes().get("dest");
+			String output = "";
+			IBgpRouteService bgpRoute = (IBgpRouteService)getContext().getAttributes().
+	                get(IBgpRouteService.class.getCanonicalName());
+			
+			if (dest != null) {
+				Prefix p = new Prefix(dest, 32);
+				if (p == null) {
+					return "[GET]: dest address format is wrong";
+				}
+							
+				// the dest here refers to router-id
+				//BGPdRestIp includes port number, such as 1.1.1.1:8080
+				String BGPdRestIp = bgpRoute.getBGPdRestIp();
+				String url="http://"+BGPdRestIp+"/wm/bgp/"+dest;
+				
+							
+				
+				RestClient.get(url);
+				output="Get rib from bgpd finished!\n";
+				return output;
+			
 			} else {
-				output += "{\"result\": \"Nexthop does not exist\"}\n";
-			}
-		} else {
-			Ptree ptree = bgpRoute.getPtree();
-			output += "{\n  \"rib\": [\n";
-			boolean printed = false;
-			for (PtreeNode node = ptree.begin(); node != null; node = ptree.next(node)) {
-				if (node.rib == null) {
-					continue;
+				Ptree ptree = bgpRoute.getPtree();
+				output += "{\n  \"rib\": [\n";
+				boolean printed = false;
+				for (PtreeNode node = ptree.begin(); node != null; node = ptree.next(node)) {
+					if (node.rib == null) {
+						continue;
+					}
+					if (printed == true) {
+						output += ",\n";
+					}
+					output += "    {\"prefix\": \"" + addrToString(node.key) + "/" + node.keyBits +"\", ";
+					output += "\"nexthop\": \"" + addrToString(node.rib.nextHop.getAddress()) +"\"}";
+					printed = true;
 				}
-				if (printed == true) {
-					output += ",\n";
-				}
-				output += "    {\"prefix\": \"" + addrToString(node.key) + "/" + node.keyBits +"\", ";
-				output += "\"nexthop\": \"" + addrToString(node.rib.nextHop.getAddress()) +"\"}";
-				printed = true;
+				//output += "{\"router_id\": \"" + addrToString(node.rib.routerId.getAddress()) +"\"}\n";
+				output += "\n  ]\n}\n";
+	   
 			}
-			//output += "{\"router_id\": \"" + addrToString(node.rib.routerId.getAddress()) +"\"}\n";
-			output += "\n  ]\n}\n";
+			return output;
 		}
-		
-		return output;
-	}
+
+	public static ByteBuffer toByteBuffer(String value) throws UnsupportedEncodingException
+	  {
+	  return ByteBuffer.wrap(value.getBytes("UTF-8"));
+	  }
+
+public static String toString(ByteBuffer buffer) throws UnsupportedEncodingException
+	 {
+	    byte[] bytes = new byte[buffer.remaining()];
+	    buffer.get(bytes);
+	    return new String(bytes, "UTF-8");
+	    
+	   }
+
+	
 	@Post
 	public String store(String fmJson) {
         IBgpRouteService bgpRoute = (IBgpRouteService)getContext().getAttributes().
                 get(IBgpRouteService.class.getCanonicalName());
-
-	    Ptree ptree = bgpRoute.getPtree();
-
+ 	
+	  Ptree ptree = bgpRoute.getPtree();
+	
 		String router_id = (String) getRequestAttributes().get("routerid");
 		String prefix = (String) getRequestAttributes().get("prefix");
 		String mask = (String) getRequestAttributes().get("mask");
 		String nexthop = (String) getRequestAttributes().get("nexthop");
 		String capability = (String) getRequestAttributes().get("capability");
-		String reply = null;
+		
+	
+		String reply = "";
 		
 		if (capability == null) {
+		
 			// this is a prefix add
 			Prefix p = new Prefix(prefix, Integer.valueOf(mask));
 			PtreeNode node = ptree.acquire(p.getAddress(), p.masklen);
@@ -94,46 +121,73 @@
 			
 			reply = "[POST: " + prefix + "/" + mask + ":" + nexthop + "]";
 			log.info(reply);
+	
 			
-			RestClient.get("http://localhost:5000/bgp_update");
+		}else if(capability.equals("1")){
+			reply = "[POST-capability: " + capability + "]\n";
+			log.info(reply);
+			// to store the number in the top node of the Ptree	
+			
+		}else{			
+			reply = "[POST-capability: " + capability + "]\n";
+			log.info(reply);
+			// to store the number in the top node of the Ptree	
+	
 		}
 		
+		
 		return reply + "\n";
+		
+	
 	}
 	
 	@Delete
 	public String delete(String fmJson) {
-        IBgpRouteService bgpRoute = (IBgpRouteService)getContext().getAttributes().
+		IBgpRouteService bgpRoute = (IBgpRouteService)getContext().getAttributes().
                 get(IBgpRouteService.class.getCanonicalName());
 
-        Ptree ptree = bgpRoute.getPtree();
-		
+   Ptree ptree = bgpRoute.getPtree();
+      	
 		String routerId = (String) getRequestAttributes().get("routerid");
 		String prefix = (String) getRequestAttributes().get("prefix");
 		String mask = (String) getRequestAttributes().get("mask");
 		String nextHop = (String) getRequestAttributes().get("nexthop");
 		String capability = (String) getRequestAttributes().get("capability");
-		String reply = null;
+		
+		String reply = "";
 		
 		if (capability == null) {
-			// this is a prefix delete
-			Prefix p = new Prefix(prefix, Integer.valueOf(mask));
-			PtreeNode node = ptree.lookup(p.getAddress(), p.masklen);
-			Rib r = new Rib(routerId, nextHop, p.masklen);
-
-			if (node != null && node.rib != null) {
-				if (r.equals(node.rib)) {
-					node.rib = null;
-					ptree.delReference(node);
-				}
-			}
+					// this is a prefix delete
+					Prefix p = new Prefix(prefix, Integer.valueOf(mask));
+										
+					PtreeNode node = ptree.lookup(p.getAddress(), p.masklen);
+									
+					Rib r = new Rib(routerId, nextHop, p.masklen);
+					
+					if (node != null && node.rib != null) {
+						
+						if (r.equals(node.rib)) {
+							
+							node.rib = null;
+							ptree.delReference(node);					
+						}
+					}
+					
+							
+					reply =reply + "[DELE: " + prefix + "/" + mask + ":" + nextHop + "]";
+					
+		}else {
 			
-			reply = "[DELE: " + prefix + "/" + mask + ":" + nextHop + "]";
-			log.info(reply);
+			// clear the local rib: Ptree			
+			bgpRoute.clearPtree();
+			reply = "[DELE-capability: " + capability + "; The local Rib is cleared!]\n";
 			
-			RestClient.get("http://localhost:5000/bgp_update");
-		}
-
+			
+			// to store the number in the top node of the Ptree	
+				
+		}	
+		log.info(reply);
+	
 		return reply + "\n";
 	}
 }
diff --git a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResourceSynch.java b/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResourceSynch.java
new file mode 100644
index 0000000..d0c337a
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResourceSynch.java
@@ -0,0 +1,72 @@
+package net.floodlightcontroller.bgproute;
+
+
+import org.restlet.resource.Post;
+import org.restlet.resource.Delete;
+import org.restlet.resource.ServerResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import net.floodlightcontroller.restclient.RestClient;
+
+
+public class BgpRouteResourceSynch extends ServerResource {
+    
+	protected static Logger log = LoggerFactory
+            .getLogger(BgpRouteResource.class);
+	
+	@Post
+	public String store(String fmJson) {
+		
+		IBgpRouteService bgpRoute = (IBgpRouteService)getContext().getAttributes().
+                get(IBgpRouteService.class.getCanonicalName());
+	  
+		String router_id = (String) getRequestAttributes().get("routerid");
+		String prefix = (String) getRequestAttributes().get("prefix");
+		String mask = (String) getRequestAttributes().get("mask");
+		String nexthop = (String) getRequestAttributes().get("nexthop");
+				
+			try{		
+				
+			String BGPdRestIp = bgpRoute.getBGPdRestIp();	
+				
+			//BGPdRestIp includes port number, such as 1.1.1.1:8080
+			RestClient.post("http://"+BGPdRestIp+"/wm/bgp/"+router_id+"/"+prefix+"/"+mask+"/"+nexthop);
+			}catch(Exception e)
+			{e.printStackTrace();}
+			
+			String reply = "";
+			reply = "[POST: " + prefix + "/" + mask + ":" + nexthop + "/synch]";
+			log.info(reply);
+			
+    return reply + "\n";
+		
+	
+	}
+	
+	@Delete
+	public String delete(String fmJson) {
+		IBgpRouteService bgpRoute = (IBgpRouteService)getContext().getAttributes().
+                get(IBgpRouteService.class.getCanonicalName());
+        
+		String routerId = (String) getRequestAttributes().get("routerid");
+		String prefix = (String) getRequestAttributes().get("prefix");
+		String mask = (String) getRequestAttributes().get("mask");
+		String nextHop = (String) getRequestAttributes().get("nexthop");
+		
+		String reply = "";
+		try{
+					String BGPdRestIp = bgpRoute.getBGPdRestIp();	
+						
+					RestClient.delete("http://"+BGPdRestIp+"/wm/bgp/"+routerId+"/"+prefix+"/"+mask+"/"+nextHop);	
+														
+		}catch(Exception e)
+		{e.printStackTrace();}
+		
+		reply =reply + "[DELE: " + prefix + "/" + mask + ":" + nextHop + "/synch]";
+					
+		log.info(reply);		
+
+
+		return reply + "\n";
+	}
+}
diff --git a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteWebRoutable.java b/src/main/java/net/floodlightcontroller/bgproute/BgpRouteWebRoutable.java
index 37d5696..a18c550 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteWebRoutable.java
+++ b/src/main/java/net/floodlightcontroller/bgproute/BgpRouteWebRoutable.java
@@ -12,7 +12,8 @@
 		Router router = new Router(context);
 		router.attach("/json", BgpRouteResource.class);
 		router.attach("/rib/{dest}", BgpRouteResource.class);
-		router.attach("/{routerid}/{prefix}/{mask}/{nexthop}", BgpRouteResource.class);
+		router.attach("/{routerid}/{prefix}/{mask}/{nexthop}", BgpRouteResource.class);		
+		router.attach("/{routerid}/{prefix}/{mask}/{nexthop}/synch", BgpRouteResourceSynch.class);
 		router.attach("/{routerid}/{capability}", BgpRouteResource.class);
 		return router;
 	}
diff --git a/src/main/java/net/floodlightcontroller/bgproute/IBgpRouteService.java b/src/main/java/net/floodlightcontroller/bgproute/IBgpRouteService.java
index 62bdf5e..a6025ef 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/IBgpRouteService.java
+++ b/src/main/java/net/floodlightcontroller/bgproute/IBgpRouteService.java
@@ -8,4 +8,11 @@
     
     public Ptree getPtree();
     
+    public String getBGPdRestIp();
+    
+    public String getRouterId();
+    
+	  public void  clearPtree() ;
+       
+    
 }
diff --git a/src/main/java/net/floodlightcontroller/bgproute/Ptree.java b/src/main/java/net/floodlightcontroller/bgproute/Ptree.java
index d53789e..dcb6e83 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/Ptree.java
+++ b/src/main/java/net/floodlightcontroller/bgproute/Ptree.java
@@ -13,7 +13,7 @@
 		maxKeyOctets = bit_to_octet(max_key_bits); 
 		refCount = 0;
 	}
-
+	
 	public PtreeNode acquire(byte [] key) {
 		return acquire(key, maxKeyBits);
 	}
@@ -278,6 +278,10 @@
 		
 		return add;
 	}
+	//add by linpp
+	private void clear() {
+	
+	}
 	
 	private void node_remove(PtreeNode node) {
 		PtreeNode child;
diff --git a/src/main/java/net/floodlightcontroller/bgproute/Rib.java b/src/main/java/net/floodlightcontroller/bgproute/Rib.java
index 71868ff..574e820 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/Rib.java
+++ b/src/main/java/net/floodlightcontroller/bgproute/Rib.java
@@ -40,6 +40,7 @@
 	
 	public boolean equals(Rib r) {
 				
-		return this.routerId == r.routerId && this.nextHop == r.nextHop && this.masklen == r.masklen;
+		return this.routerId.equals(r.routerId) && this.nextHop.equals(r.nextHop)  && this.masklen == r.masklen;
+		
 	}
 }
diff --git a/src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java b/src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java
index 36cde95..964eff1 100644
--- a/src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java
+++ b/src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java
@@ -102,7 +102,7 @@
 				// TODO Auto-generated catch block
 				e.printStackTrace();
 			} catch (RegistryException e) {
-				// TODO Auto-generated catch block
+				log.debug("Caught RegistryException trying to requestControl in cleanup thread");
 				e.printStackTrace();
 			}			
 		}
diff --git a/src/main/java/net/floodlightcontroller/restclient/RestClient.java b/src/main/java/net/floodlightcontroller/restclient/RestClient.java
index 07eab45..541b42d 100644
--- a/src/main/java/net/floodlightcontroller/restclient/RestClient.java
+++ b/src/main/java/net/floodlightcontroller/restclient/RestClient.java
@@ -1,10 +1,17 @@
 package net.floodlightcontroller.restclient;
 
+import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.URL;
 
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import net.sf.json.JSONSerializer;
+
+
 public class RestClient {
 
 	public static void get (String str) {
@@ -16,7 +23,7 @@
 	 
 			URL url = new URL(str);
 			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
-			conn.setRequestMethod("GET"); 
+			conn.setRequestMethod("GET");
 			conn.setRequestProperty("Accept", "application/json");
 	 
 			if (conn.getResponseCode() != 200) {
@@ -24,18 +31,68 @@
 						+ conn.getResponseCode());
 			}
 	 
-			/* Disable reading the output from the server for now
-			 * 
-			BufferedReader br = new BufferedReader(new InputStreamReader(
-					(conn.getInputStream())));
-	 
-			String output;
-			System.out.println("Output from Server .... \n");
-			while ((output = br.readLine()) != null) {
-				System.out.println(output);
-			}
-			 */
+			if (conn.getContentType().equals("application/json")) 
+			{	}else{
+				System.out.print("The content received is not json format!");				
+			}		
 			
+		 BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); 
+		 StringBuffer res = new StringBuffer();
+		 String line;
+		 while ((line = br.readLine()) != null) {
+			 	res.append(line);
+		 	}	   
+		 
+		 String res2=res.toString().replaceAll("\"", "'");
+		 JSONObject jsonObj = (JSONObject) JSONSerializer.toJSON(res2);  
+		 JSONArray rib_json_array = jsonObj.getJSONArray("rib");
+		 String router_id = jsonObj.getString("router-id");
+		       
+		 int size = rib_json_array.size();
+		 System.out.print("size:"+size+"\n");
+		 for (int j = 0; j < size; j++) {
+        JSONObject second_json_object = rib_json_array.getJSONObject(j);
+        String prefix = second_json_object.getString("prefix");
+        String nexthop = second_json_object.getString("nexthop");
+              			
+     		//insert each rib entry into the local rib;
+        RestClient.post("http://127.0.0.1:8090/wm/bgp/"+router_id+"/"+prefix+"/"+nexthop);
+          
+        
+        
+		 }
+		 br.close();
+		 conn.disconnect();
+
+		} catch (MalformedURLException e) {
+
+			e.printStackTrace();
+
+		} catch (IOException e) {
+
+			e.printStackTrace();
+
+		}
+	}
+	
+public static void post (String str) {
+		
+		if (str == null)
+			return;
+	
+		try {
+	 
+			URL url = new URL(str);
+			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+			conn.setDoOutput(true);
+			conn.setRequestMethod("POST");
+			conn.setRequestProperty("Content-Type", "application/json");		
+	 
+			if (conn.getResponseCode() != 200) {
+				throw new RuntimeException("Failed : HTTP error code : "
+						+ conn.getResponseCode());
+			}
+					
 			conn.disconnect();
 
 		} catch (MalformedURLException e) {
@@ -48,4 +105,38 @@
 
 		}
 	}
+	
+
+public static void delete (String str) {
+	
+	if (str == null)
+		return;
+
+	try {
+ 
+		URL url = new URL(str);
+		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+		conn.setRequestMethod("DELETE");
+		conn.setRequestProperty("Accept", "application/json");
+		
+ 
+		if (conn.getResponseCode() != 200) {
+			throw new RuntimeException("Failed : HTTP error code : "
+					+ conn.getResponseCode());
+		}
+ 
+		conn.disconnect();
+
+	} catch (MalformedURLException e) {
+
+		e.printStackTrace();
+
+	} catch (IOException e) {
+
+		e.printStackTrace();
+
+	}
+}
+	
+	
 }
diff --git a/src/main/java/net/onrc/onos/registry/controller/ControllerService.java b/src/main/java/net/onrc/onos/registry/controller/ControllerService.java
new file mode 100644
index 0000000..c74e85d
--- /dev/null
+++ b/src/main/java/net/onrc/onos/registry/controller/ControllerService.java
@@ -0,0 +1,26 @@
+package net.onrc.onos.registry.controller;
+
+
+
+//@JsonRootName("controller")
+public class ControllerService {
+
+	private String controllerId;
+	
+	public ControllerService(){
+		this("");
+	}
+	
+	public ControllerService(String controllerId) {
+		this.controllerId = controllerId;
+	}
+
+    public void setControllerId(String controllerId) {
+        this.controllerId = controllerId;
+    }
+
+    public String getControllerId() {
+        return controllerId;
+    }
+
+}
diff --git a/src/main/java/net/onrc/onos/registry/controller/RegistryRunner.java b/src/main/java/net/onrc/onos/registry/controller/RegistryRunner.java
deleted file mode 100644
index 164f328..0000000
--- a/src/main/java/net/onrc/onos/registry/controller/RegistryRunner.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package net.onrc.onos.registry.controller;
-
-import net.floodlightcontroller.core.module.FloodlightModuleContext;
-import net.floodlightcontroller.core.module.FloodlightModuleException;
-import net.onrc.onos.registry.controller.IControllerRegistryService.ControlChangeCallback;
-
-import org.openflow.util.HexString;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Used for lightweight testing of the mastership module without having
- * to load up the entire ONOS.
- * @author jono
- *
- */
-public class RegistryRunner {
-	protected static Logger log = LoggerFactory.getLogger(RegistryRunner.class);
-
-	public static void main(String args[]){
-		FloodlightModuleContext fmc = new FloodlightModuleContext();
-		ZookeeperRegistry rm = new ZookeeperRegistry();
-		
-		fmc.addConfigParam(rm, "enableZookeeper", "true");
-		
-		String id = null;
-		if (args.length > 0){
-			id = args[0];
-			log.info("Using unique id: {}", id);
-		}
-		
-		try {
-			rm.init(fmc);
-			rm.startUp(fmc);
-			
-			if (id == null){
-				log.error("No unique ID supplied");
-				System.exit(1);
-			}
-			
-			rm.registerController(id);
-			//rm.setMastershipId(id);
-				
-			rm.requestControl(1L, 
-				new ControlChangeCallback(){
-					@Override
-					public void controlChanged(long dpid, boolean isMaster) {
-						if (isMaster){
-							log.debug("Callback for becoming master for {}", HexString.toHexString(dpid));
-						}
-						else {
-							log.debug("Callback for losing mastership for {}", HexString.toHexString(dpid));
-						}
-					}
-				});
-			
-			Thread.sleep(1000);
-			
-			/*
-			Map<String, List<ControllerRegistryEntry>> switches = rm.getAllSwitches();
-			for (List<ControllerRegistryEntry> ls : switches.values()){
-				for (ControllerRegistryEntry cre : ls){
-					log.debug("ctrlr: {}", cre.getControllerId());
-				}
-			}
-			*/
-			//"Server" loop
-			while (true) {
-				Thread.sleep(60000);
-			}
-			
-		} catch (FloodlightModuleException e) {
-			e.printStackTrace();
-		} catch (InterruptedException e) {
-			e.printStackTrace();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		
-		log.debug("is master: {}", rm.hasControl(1L));
-	}
-}
diff --git a/src/main/java/net/onrc/onos/registry/controller/SwitchRegistryResource.java b/src/main/java/net/onrc/onos/registry/controller/SwitchRegistryResource.java
index 0a7ac5d..599a1af 100644
--- a/src/main/java/net/onrc/onos/registry/controller/SwitchRegistryResource.java
+++ b/src/main/java/net/onrc/onos/registry/controller/SwitchRegistryResource.java
@@ -6,12 +6,8 @@
 
 import org.restlet.resource.Get;
 import org.restlet.resource.ServerResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class SwitchRegistryResource extends ServerResource {
-
-	protected static Logger log = LoggerFactory.getLogger(SwitchRegistryResource.class);
 	
 	@Get("json")
 	public Map<String, List<ControllerRegistryEntry>> getAllControllers(){
@@ -26,12 +22,6 @@
 			switches = new HashMap<String, List<ControllerRegistryEntry>>();
 		}
 		
-		/*for (List<ControllerRegistryEntry> list: switches.values()){
-			for (ControllerRegistryEntry en : list) {
-				log.debug("Controller id {}", en.getControllerId());
-			}
-		}*/
-		
 		return switches;
 	}
 }
diff --git a/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java b/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java
index b666db7..b9d04d4 100644
--- a/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java
+++ b/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java
@@ -1,10 +1,10 @@
 package net.onrc.onos.registry.controller;
 
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -16,9 +16,6 @@
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.restserver.IRestApiService;
 
-import org.apache.zookeeper.CreateMode;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
 import org.openflow.util.HexString;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,9 +32,11 @@
 import com.netflix.curator.framework.recipes.leader.LeaderLatch;
 import com.netflix.curator.framework.recipes.leader.LeaderLatchEvent;
 import com.netflix.curator.framework.recipes.leader.LeaderLatchListener;
-import com.netflix.curator.framework.recipes.leader.Participant;
 import com.netflix.curator.retry.ExponentialBackoffRetry;
-import com.netflix.curator.utils.ZKPaths;
+import com.netflix.curator.x.discovery.ServiceCache;
+import com.netflix.curator.x.discovery.ServiceDiscovery;
+import com.netflix.curator.x.discovery.ServiceDiscoveryBuilder;
+import com.netflix.curator.x.discovery.ServiceInstance;
 
 /**
  * A registry service that uses Zookeeper. All data is stored in Zookeeper,
@@ -57,11 +56,12 @@
 	
 	private final String namespace = "onos";
 	private final String switchLatchesPath = "/switches";
-	private final String controllerPath = "/controllers";
+
+	private final String SERVICES_PATH = "/"; //i.e. the root of our namespace
+	private final String CONTROLLER_SERVICE_NAME = "controllers";
 	
 	protected CuratorFramework client;
 	
-	protected PathChildrenCache controllerCache;
 	protected PathChildrenCache switchCache;
 
 	protected ConcurrentHashMap<String, SwitchLeadershipData> switches;
@@ -96,7 +96,8 @@
 						HexString.toLong(dpid), latch.hasLeadership());
 			}
 			else {
-				log.debug("Latch for {} has changed", dpid);
+				log.debug("Latch for {} has changed: old latch {} - new latch {}", 
+						new Object[]{dpid, latch, swData.getLatch()});
 			}
 		}
 	}
@@ -123,26 +124,35 @@
 			case CHILD_ADDED:
 			case CHILD_UPDATED:
 				//Check we have a PathChildrenCache for this child, add one if not
-				if (switchPathCaches.get(strSwitch) == null){
-					PathChildrenCache pc = new PathChildrenCache(client, 
-							event.getData().getPath(), true);
-					pc.start(StartMode.NORMAL);
-					switchPathCaches.put(strSwitch, pc);
+				synchronized (switchPathCaches){
+					if (switchPathCaches.get(strSwitch) == null){
+						PathChildrenCache pc = new PathChildrenCache(client, 
+								event.getData().getPath(), true);
+						pc.start(StartMode.NORMAL);
+						switchPathCaches.put(strSwitch, pc);
+					}
 				}
 				break;
 			case CHILD_REMOVED:
 				//Remove our PathChildrenCache for this child
-				PathChildrenCache pc = switchPathCaches.remove(strSwitch);
-				pc.close();
+				PathChildrenCache pc = null;
+				synchronized(switchPathCaches){
+					pc = switchPathCaches.remove(strSwitch);
+				}
+				if (pc != null){
+					pc.close();
+				}
 				break;
 			default:
-				//All other events are connection status events. We need to do anything
-				//as the path cache handles these on its own.
+				//All other events are connection status events. We don't need to 
+				//do anything as the path cache handles these on its own.
 				break;
 			}
 			
 		}
 	};
+	protected ServiceDiscovery<ControllerService> serviceDiscovery;
+	protected ServiceCache<ControllerService> serviceCache;
 
 	
 	@Override
@@ -206,6 +216,8 @@
 
 		LeaderLatch latch = swData.getLatch();
 		
+		latch.removeAllListeners();
+		
 		try {
 			latch.close();
 		} catch (IOException e) {
@@ -238,17 +250,13 @@
 		log.debug("Getting all controllers");
 		
 		List<String> controllers = new ArrayList<String>();
-		for (ChildData data : controllerCache.getCurrentData()){
-
-			String d = null;
-			try {
-				d = new String(data.getData(), "UTF-8");
-			} catch (UnsupportedEncodingException e) {
-				throw new RegistryException("Error encoding string", e);
+		for (ServiceInstance<ControllerService> instance : serviceCache.getInstances()){
+			String id = instance.getPayload().getControllerId();
+			if (!controllers.contains(id)){
+				controllers.add(id);
 			}
-
-			controllers.add(d);
 		}
+
 		return controllers;
 	}
 
@@ -261,78 +269,54 @@
 		
 		controllerId = id;
 		
-		byte bytes[] = id.getBytes(Charsets.UTF_8);
-		String path = ZKPaths.makePath(controllerPath, controllerId);
-		
-		log.info("Registering controller with id {}", id);
-		
 		try {
-			//We need to set a watch to recreate the node in the controller
-			//registry if it gets deleted - e.g. on Zookeeper connection loss.
-			Watcher watcher = new Watcher(){
-				@Override
-				public void process(WatchedEvent event) {
-					log.debug("got any watch event {} ", event);
-					
-					String path = ZKPaths.makePath(controllerPath, controllerId);
-					byte bytes[] = controllerId.getBytes(Charsets.UTF_8);
-					
-					try {
-						if (event.getType() == Event.EventType.NodeDeleted){
-							log.debug("got a node deleted event");
-							
-							
-							client.create().withMode(CreateMode.EPHEMERAL)
-								.forPath(path, bytes);
-						}
-					} catch (Exception e) {
-						log.warn("Error recreating controller node for {}: {}",
-								controllerId, e.getMessage());
-					} finally {
-						try {
-							client.checkExists().usingWatcher(this).forPath(path);
-						} catch (Exception e2){
-							log.warn("Error resetting watch for {}: {}", 
-									controllerId, e2.getMessage());
-						}
-					}
-				}
-			};
+			ServiceInstance<ControllerService> thisInstance = ServiceInstance.<ControllerService>builder()
+			        .name(CONTROLLER_SERVICE_NAME)
+			        .payload(new ControllerService(controllerId))
+			        //.port((int)(65535 * Math.random())) // in a real application, you'd use a common port
+			        //.uriSpec(uriSpec)
+			        .build();
 			
-			//Create ephemeral node in controller registry
-			//TODO Use protection
-			client.create().withMode(CreateMode.EPHEMERAL)
-					.forPath(path, bytes);
-			client.checkExists().usingWatcher(watcher).forPath(path);
+			serviceDiscovery.registerService(thisInstance);
 		} catch (Exception e) {
-			throw new RegistryException("Error contacting the Zookeeper service", e);
+			// TODO Auto-generated catch block
+			e.printStackTrace();
 		}
+		
 	}
 	
 	@Override
 	public String getControllerForSwitch(long dpid) throws RegistryException {
-		// TODO work out synchronization
-		
 		String dpidStr = HexString.toHexString(dpid);
-
-		SwitchLeadershipData swData = switches.get(dpidStr);
-		//LeaderLatch latch = (switches.get(dpidStr) != null)?switches.get(dpidStr).getLatch():null;
 		
-		if (swData == null){
+		PathChildrenCache switchCache = switchPathCaches.get(dpidStr);
+		
+		if (switchCache == null){
 			log.warn("Tried to get controller for non-existent switch");
 			return null;
 		}
 		
-		LeaderLatch latch = swData.getLatch();
+		List<ChildData> sortedData = new ArrayList<ChildData>(switchCache.getCurrentData()); 
 		
-		Participant leader = null;
-		try {
-			leader = latch.getLeader();
-		} catch (Exception e) {
-			throw new RegistryException("Error contacting the Zookeeper service", e);
+		Collections.sort(
+				sortedData,
+				new Comparator<ChildData>(){
+					private String getSequenceNumber(String path){
+						return path.substring(path.lastIndexOf('-') + 1);
+					}
+					@Override
+					public int compare(ChildData lhs, ChildData rhs) {
+						return getSequenceNumber(lhs.getPath()).
+								compareTo(getSequenceNumber(rhs.getPath()));
+					}
+				}
+			);
+		
+		if (sortedData.size() == 0){
+			return null;
 		}
 		
-		return leader.getId();
+		return new String(sortedData.get(0).getData(), Charsets.UTF_8);
 	}
 	
 	@Override
@@ -421,7 +405,8 @@
 		restApi = context.getServiceImpl(IRestApiService.class);
 
 		switches = new ConcurrentHashMap<String, SwitchLeadershipData>();
-		switchPathCaches = new HashMap<String, PathChildrenCache>();
+		//switchPathCaches = new HashMap<String, PathChildrenCache>();
+		switchPathCaches = new ConcurrentHashMap<String, PathChildrenCache>();
 		
 		RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
 		client = CuratorFrameworkFactory.newClient(this.connectionString, 
@@ -431,12 +416,22 @@
 		client = client.usingNamespace(namespace);
 
 		
-		controllerCache = new PathChildrenCache(client, controllerPath, true);
 		switchCache = new PathChildrenCache(client, switchLatchesPath, true);
 		switchCache.getListenable().addListener(switchPathCacheListener);
 		
+		//Build the service discovery object
+	    serviceDiscovery = ServiceDiscoveryBuilder.builder(ControllerService.class)
+	            .client(client).basePath(SERVICES_PATH).build();
+	    
+	    //We read the list of services very frequently (GUI periodically queries them)
+	    //so we'll cache them to cut down on Zookeeper queries.
+	    serviceCache = serviceDiscovery.serviceCacheBuilder()
+				.name(CONTROLLER_SERVICE_NAME).build();
+	    
+	    
 		try {
-			controllerCache.start(StartMode.BUILD_INITIAL_CACHE);
+			serviceDiscovery.start();
+			serviceCache.start();
 			
 			//Don't prime the cache, we want a notification for each child node in the path
 			switchCache.start(StartMode.NORMAL);
diff --git a/start.sh b/start.sh
deleted file mode 100755
index d6aa010..0000000
--- a/start.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#! /bin/sh
-if [ -f floodlight.onos1vpc.log ]; then
- mv floodlight.onos1vpc.log floodlight.onos1vpc.log.1
-fi
-ppid=`ps -edalf |grep java |grep floodlight.jar | awk '{print $4}'`
-if [ x$ppid != "x" ]; then
-  sudo kill -KILL $ppid
-fi
-java -jar target/floodlight.jar > floodlight.onos1vpc.log 2>&1 &
diff --git a/web/js/controller-status.js b/web/js/controller-status.js
index 1cca38f..fa887e3 100644
--- a/web/js/controller-status.js
+++ b/web/js/controller-status.js
@@ -5,22 +5,22 @@
 		{name:'onos12vpc', onos: 0, cassandra: 1}] */
 
     var barWidth = 100;
-    var width = (barWidth + 10) * 4
+    var width = (barWidth + 10) * 8
     var height = 50;
 
     var Servers = d3.select("#servers").
 	append("svg:svg").
-	attr("width", 800).
+	attr("width", 1280).
 	attr("height", 30);
 
     var ContStatus = d3.select("#onos-status").
 	append("svg:svg").
-	attr("width", 800).
+	attr("width", 1280).
 	attr("height", 50);
 
     var CassandraStatus = d3.select("#cassandra-status").
 	append("svg:svg").
-	attr("width", 800).
+	attr("width", 1280).
 	attr("height", 50);
 
     d3.json(data_source, draw);
@@ -62,6 +62,14 @@
 		    return "green"
 		}else if (index == 3){
 		    return "orange"
+		}else if (index == 4){
+		    return "cyan"
+		}else if (index == 5){
+		    return "magenta"
+		}else if (index == 6){
+		    return "yellow"
+		}else if (index == 7){
+		    return "purple"
 		}else{
 		    return "black"
 		}
@@ -84,6 +92,14 @@
 		    return "green"
 		}else if (index == 3){
 		    return "orange"
+		}else if (index == 4){
+		    return "cyan"
+		}else if (index == 5){
+		    return "magenta"
+		}else if (index == 6){
+		    return "yellow"
+		}else if (index == 7){
+		    return "purple"
 		}else{
 		    return "black"
 		}
@@ -133,6 +149,14 @@
 		    return "green"
 		}else if (index == 3){
 		    return "orange"
+		}else if (index == 4){
+		    return "cyan"
+		}else if (index == 5){
+		    return "magenta"
+		}else if (index == 6){
+		    return "yellow"
+		}else if (index == 7){
+		    return "purple"
 		}else{
 		    return "black"
 		}
diff --git a/web/ons-demo/RELEASE_NOTES.txt b/web/ons-demo/RELEASE_NOTES.txt
index 85df9bf..a9a934b 100644
--- a/web/ons-demo/RELEASE_NOTES.txt
+++ b/web/ons-demo/RELEASE_NOTES.txt
@@ -3,3 +3,26 @@
 	- switch config hacked 00:00:00:00:00:00:01:01 ==> 00:00:00:00:00:00:01:00 etc.
 - layout does not dynamically adjust when window is resized
 	- refresh browser window after resizing to fix layout
+
+** March 20, 2013 **
+- URL parameters control functions as follows:
+	http://localhost:9000/ons-demo/index.html
+		uses the ONOS_HOST defined in restapi2.py. currently http://gui3.onlab.us:8080
+	http://localhost:9000/ons-demo/index.html?proxy
+		uses the index.html host to proxy to ONOS_HOST (works around cross site scripting restrictions to allow the WebUI to be served from a different server than the one that hosts the controller)
+	http://localhost:9000/ons-demo/index.html?mock
+		uses the mock JSON responses under ons-dmo/data
+- clicking a controller behavior change
+	1) if all controllers are selected, deselects all controllers except the one clicked
+	2) if only the clicked controller is selected, selects all controllers again
+- Update configuration files to match test bed
+- Update sample JSON files from test bed
+
+** March 22, 2013 **
+- Workarounds for Chrome v25 rendering bugs
+- Fixed broken proxy functionality in restapi2.py
+- webui should now work when hosted from a different server than the controller (where it uses gui3.onlab.us:8080) and also when run from the same server (where it uses localhost:8080)
+
+** March 23, 2013 **
+- Link and switch state updates dynamically
+- Link direction is indicated with arrow heads
diff --git a/web/ons-demo/css/skin.default.css b/web/ons-demo/css/skin.default.css
index 807aa4c..d3a9e61 100644
--- a/web/ons-demo/css/skin.default.css
+++ b/web/ons-demo/css/skin.default.css
@@ -8,23 +8,34 @@
 
 .status {
 	padding: 1em;
-	border-right: 1px solid white;
 }
 
+
 .status:last-child {
 	border-right: none;
 }
 
 .status .static {
-	color: white;
+	color: #AAA;
 	padding: .25em;
 }
 
 .status .dynamic {
-	color: blue;
+	color: #FFF;
 	padding: .25em;
 }
 
+.status.bottom {
+	position: absolute;
+	bottom: 0px;
+	right: 0px;
+	font-size: 12px;
+}
+
+#status.top span {
+	font-size: 24px;
+}
+
 .button {
 	padding: 1em;
 	background-color: lightgray;
@@ -32,6 +43,11 @@
 	border: 1px solid white;
 }
 
+#arrow {
+	stroke: none;
+	fill: rgba(255, 255, 255, .35);
+}
+
 .header {
 	height: 50px;
 }
@@ -59,7 +75,6 @@
 	padding: .25em;
 }
 
-
 #logo {
 	height: 50px;
 }
@@ -76,13 +91,13 @@
 text {
 	stroke: none;
 	fill: white;
-	font-size: 12px;
+	font-size: 16px;
 	pointer-events: none;
 }
 
 path {
 	stroke: rgba(255, 255, 255, .25);
-	stroke-width: 1px;
+	stroke-width: 1.5px;
 }
 
 .aggregation {
@@ -94,68 +109,107 @@
 	visibility: hidden
 }
 
-.color1, .color2, .color3, .color4, .color5, .color6, .color7, .color8, .color9, .color10, .color11, .color12  {
-	fill: rgba(255, 255, 255, .15);
-	background-color: rgba(255, 255, 255, .15);
+.color1-selected .color1,
+.color2-selected .color2,
+.color3-selected .color3,
+.color4-selected .color4,
+.color5-selected .color5,
+.color6-selected .color6,
+.color7-selected .color7,
+.color8-selected .color8,
+.color9-selected .color9,
+.color10-selected .color10,
+.color11-selected .color11,
+.color12-selected .color12  {
+	opacity: 1;
+	pointer-events: auto;
 }
 
+.colorInactive {
+	opacity: 1;
+	fill: #444;
+	background-color: #444;
+	color: #222;
+}
 
-.color1-selected .color1 {
+.color1 {
+	opacity: .2;
+	pointer-events: none;
 	fill: #EC0033;
 	background-color: #EC0033;
 }
 
-.color2-selected .color2 {
+.color2 {
+	opacity: .2;
 	fill: #FFBA00;
 	background-color: #FFBA00;
 }
 
-.color3-selected .color3 {
+.color3 {
+	opacity: .2;
+	pointer-events: none;
 	fill: #3714B0;
 	background-color: #3714B0;
 }
 
-.color4-selected .color4 {
+.color4 {
+	opacity: .2;
+	pointer-events: none;
 	fill: #B12C49;
 	background-color: #B12C49;
 }
 
-.color5-selected .color5 {
+.color5 {
+	opacity: .2;
+	pointer-events: none;
 	fill: #402C84;
 	background-color: #402C84;
 }
 
-.color6-selected .color6 {
+.color6 {
+	opacity: .2;
+	pointer-events: none;
 	fill: #990021;
 	background-color: #990021;
 }
 
-.color7-selected .color7 {
+.color7 {
+	opacity: .2;
+	pointer-events: none;
 	fill: #990021;
-	background-color: ;
+	background-color: #990021;
 }
 
-.color8-selected .color8 {
+.color8 {
+	opacity: .2;
+	pointer-events: none;
 	fill: #A67900;
 	background-color: #A67900;
 }
 
-.color9-selected .color9 {
+.color9 {
+	opacity: .2;
 	fill: #F53D65;
 	background-color: #F53D65;
 }
 
-.color10-selected .color10 {
+.color10 {
+	opacity: .2;
+	pointer-events: none;
 	fill: #1F0772;
 	background-color: #1F0772;
 }
 
-.color11-selected .color11 {
+.color11 {
+	opacity: .2;
+	pointer-events: none;
 	fill: #F56E8B;
 	background-color: #F56E8B;
 }
 
-.color12-selected .color12 {
+.color12 {
+	opacity: .2;
+	pointer-events: none;
 	fill: #6949D7;
 	background-color: #6949D7;
 }
diff --git a/web/ons-demo/data/configuration.json b/web/ons-demo/data/configuration.json
index bf5c855..b36fced 100644
--- a/web/ons-demo/data/configuration.json
+++ b/web/ons-demo/data/configuration.json
@@ -8,13 +8,34 @@
 		"00:00:00:16:97:08:9a:46"
 	],
 	"aggregation": [
-		"00:00:00:00:00:00:01:00",
-		"00:00:00:00:00:00:02:00",
-		"00:00:00:00:00:00:03:00",
-		"00:00:00:00:00:00:04:00",
-		"00:00:00:00:00:00:05:00",
-		"00:00:00:00:00:00:06:00",
-		"00:00:00:00:00:00:07:00",
-		"00:00:00:00:00:00:08:00"
-	]
+		"00:00:00:00:00:00:01:01",
+		"00:00:00:00:00:00:02:01",
+		"00:00:00:00:00:00:03:01",
+		"00:00:00:00:00:00:04:01",
+		"00:00:00:00:00:00:05:01",
+		"00:00:00:00:00:00:06:01",
+		"00:00:00:00:00:00:07:01",
+		"00:00:00:00:00:00:08:01"
+	],
+	"association": {
+		"00:00:00:08:a2:08:f9:01": [
+			"00:00:00:00:00:00:03:01"
+		],
+		"00:00:00:00:ba:5e:ba:11": [
+			"00:00:00:00:00:00:02:01"
+		],
+		"00:00:20:4e:7f:51:8a:35": [
+			"00:00:00:00:00:00:07:01"
+		],
+		"00:00:00:00:00:00:ba:12": [
+			"00:00:00:00:00:00:04:01",
+			"00:00:00:00:00:00:05:01"
+		],
+		"00:00:00:00:ba:5e:ba:13": [
+			"00:00:00:00:00:00:06:01"
+		],
+		"00:00:00:16:97:08:9a:46": [
+			"00:00:00:00:00:00:08:01"
+		]
+	}
 }
\ No newline at end of file
diff --git a/web/ons-demo/data/controllers.json b/web/ons-demo/data/controllers.json
new file mode 100644
index 0000000..db2f5ad
--- /dev/null
+++ b/web/ons-demo/data/controllers.json
@@ -0,0 +1,10 @@
+[
+	"onosgui1",
+	"onosgui2",
+	"onosgui3",
+	"onosgui4",
+	"onosgui5",
+	"onosgui6",
+	"onosgui7",
+	"onosgui8"
+]
\ No newline at end of file
diff --git a/web/ons-demo/data/wm_core_topology_links_json.json b/web/ons-demo/data/wm_core_topology_links_json.json
index 3fd7bf0..0a60d71 100644
--- a/web/ons-demo/data/wm_core_topology_links_json.json
+++ b/web/ons-demo/data/wm_core_topology_links_json.json
@@ -1,1166 +1 @@
-[
-    {
-        "dst-port": 26,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:19"
-    },
-    {
-        "dst-port": 12,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:0b"
-    },
-    {
-        "dst-port": 7,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:06"
-    },
-    {
-        "dst-port": 3,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:02"
-    },
-    {
-        "dst-port": 19,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:12"
-    },
-    {
-        "dst-port": 17,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:10"
-    },
-    {
-        "dst-port": 15,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:0e"
-    },
-    {
-        "dst-port": 20,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:13"
-    },
-    {
-        "dst-port": 18,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:11"
-    },
-    {
-        "dst-port": 29,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:1c"
-    },
-    {
-        "dst-port": 18,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:11"
-    },
-    {
-        "dst-port": 17,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:10"
-    },
-    {
-        "dst-port": 46,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:2d"
-    },
-    {
-        "dst-port": 28,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:1b"
-    },
-    {
-        "dst-port": 33,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:20"
-    },
-    {
-        "dst-port": 16,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:0f"
-    },
-    {
-        "dst-port": 34,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:21"
-    },
-    {
-        "dst-port": 12,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:0b"
-    },
-    {
-        "dst-port": 43,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:2a"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:0b",
-        "src-port": 12,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:13",
-        "src-port": 20,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:05",
-        "src-port": 6,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:0c",
-        "src-port": 13,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:12",
-        "src-port": 19,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:04",
-        "src-port": 5,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:11",
-        "src-port": 18,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:06",
-        "src-port": 7,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:07",
-        "src-port": 8,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:10",
-        "src-port": 17,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:01",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:08",
-        "src-port": 9,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:09",
-        "src-port": 10,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:0f",
-        "src-port": 16,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:0e",
-        "src-port": 15,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:0d",
-        "src-port": 14,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 5,
-        "dst-switch": "00:00:00:00:ba:5e:ba:11",
-        "src-port": 21,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:02",
-        "src-port": 3,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:0a",
-        "src-port": 11,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:03",
-        "src-port": 4,
-        "src-switch": "00:00:00:00:00:00:02:00"
-    },
-    {
-        "dst-port": 9,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:08"
-    },
-    {
-        "dst-port": 13,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:0c"
-    },
-    {
-        "dst-port": 44,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:2b"
-    },
-    {
-        "dst-port": 5,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:04"
-    },
-    {
-        "dst-port": 17,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:10"
-    },
-    {
-        "dst-port": 5,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:04"
-    },
-    {
-        "dst-port": 38,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:25"
-    },
-    {
-        "dst-port": 37,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:24"
-    },
-    {
-        "dst-port": 8,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:07"
-    },
-    {
-        "dst-port": 7,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:06"
-    },
-    {
-        "dst-port": 31,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:1e"
-    },
-    {
-        "dst-port": 8,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:07"
-    },
-    {
-        "dst-port": 14,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:0d"
-    },
-    {
-        "dst-port": 3,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:02"
-    },
-    {
-        "dst-port": 19,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:12"
-    },
-    {
-        "dst-port": 3,
-        "dst-switch": "00:00:00:00:ba:5e:ba:11",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:ba:5e:ba:13"
-    },
-    {
-        "dst-port": 3,
-        "dst-switch": "00:00:20:4e:7f:51:8a:35",
-        "src-port": 3,
-        "src-switch": "00:00:00:00:ba:5e:ba:13"
-    },
-    {
-        "dst-port": 45,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:2c"
-    },
-    {
-        "dst-port": 9,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:08"
-    },
-    {
-        "dst-port": 11,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:0a"
-    },
-    {
-        "dst-port": 20,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:13"
-    },
-    {
-        "dst-port": 3,
-        "dst-switch": "00:00:00:16:97:08:9a:46",
-        "src-port": 2,
-        "src-switch": "00:00:00:08:a2:08:f9:01"
-    },
-    {
-        "dst-port": 3,
-        "dst-switch": "00:00:00:00:00:00:ba:12",
-        "src-port": 3,
-        "src-switch": "00:00:00:08:a2:08:f9:01"
-    },
-    {
-        "dst-port": 21,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 4,
-        "src-switch": "00:00:00:08:a2:08:f9:01"
-    },
-    {
-        "dst-port": 6,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:05"
-    },
-    {
-        "dst-port": 36,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:23"
-    },
-    {
-        "dst-port": 12,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:0b"
-    },
-    {
-        "dst-port": 6,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:05"
-    },
-    {
-        "dst-port": 4,
-        "dst-switch": "00:00:00:00:00:00:ba:12",
-        "src-port": 2,
-        "src-switch": "00:00:20:4e:7f:51:8a:35"
-    },
-    {
-        "dst-port": 3,
-        "dst-switch": "00:00:00:00:ba:5e:ba:13",
-        "src-port": 3,
-        "src-switch": "00:00:20:4e:7f:51:8a:35"
-    },
-    {
-        "dst-port": 4,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:03"
-    },
-    {
-        "dst-port": 8,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:07"
-    },
-    {
-        "dst-port": 13,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:0c"
-    },
-    {
-        "dst-port": 48,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:2f"
-    },
-    {
-        "dst-port": 13,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:0c"
-    },
-    {
-        "dst-port": 10,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:09"
-    },
-    {
-        "dst-port": 16,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:0f"
-    },
-    {
-        "dst-port": 15,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:0e"
-    },
-    {
-        "dst-port": 41,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:28"
-    },
-    {
-        "dst-port": 6,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:05"
-    },
-    {
-        "dst-port": 39,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:26"
-    },
-    {
-        "dst-port": 35,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:22"
-    },
-    {
-        "dst-port": 14,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:0d"
-    },
-    {
-        "dst-port": 32,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:1f"
-    },
-    {
-        "dst-port": 23,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:16"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:01"
-    },
-    {
-        "dst-port": 9,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:08"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:01"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:01"
-    },
-    {
-        "dst-port": 4,
-        "dst-switch": "00:00:00:00:ba:5e:ba:11",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:ba:12"
-    },
-    {
-        "dst-port": 3,
-        "dst-switch": "00:00:00:08:a2:08:f9:01",
-        "src-port": 3,
-        "src-switch": "00:00:00:00:00:00:ba:12"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:20:4e:7f:51:8a:35",
-        "src-port": 4,
-        "src-switch": "00:00:00:00:00:00:ba:12"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:0b",
-        "src-port": 12,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:13",
-        "src-port": 20,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:05",
-        "src-port": 6,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:0c",
-        "src-port": 13,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:12",
-        "src-port": 19,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:04",
-        "src-port": 5,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:11",
-        "src-port": 18,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:06",
-        "src-port": 7,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:07",
-        "src-port": 8,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:10",
-        "src-port": 17,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:01",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:08",
-        "src-port": 9,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:09",
-        "src-port": 10,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:0f",
-        "src-port": 16,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:0e",
-        "src-port": 15,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:0d",
-        "src-port": 14,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 4,
-        "dst-switch": "00:00:00:08:a2:08:f9:01",
-        "src-port": 21,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:02",
-        "src-port": 3,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:0a",
-        "src-port": 11,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:03:03",
-        "src-port": 4,
-        "src-switch": "00:00:00:00:00:00:03:00"
-    },
-    {
-        "dst-port": 21,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:14"
-    },
-    {
-        "dst-port": 11,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:0a"
-    },
-    {
-        "dst-port": 25,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:18"
-    },
-    {
-        "dst-port": 20,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:13"
-    },
-    {
-        "dst-port": 3,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:02"
-    },
-    {
-        "dst-port": 4,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:03"
-    },
-    {
-        "dst-port": 7,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:06"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:27",
-        "src-port": 40,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:15",
-        "src-port": 22,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:30",
-        "src-port": 49,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:0b",
-        "src-port": 12,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:1e",
-        "src-port": 31,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:13",
-        "src-port": 20,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:05",
-        "src-port": 6,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:1a",
-        "src-port": 27,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:21",
-        "src-port": 34,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:12",
-        "src-port": 19,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:0c",
-        "src-port": 13,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:28",
-        "src-port": 41,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:2f",
-        "src-port": 48,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:04",
-        "src-port": 5,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:1b",
-        "src-port": 28,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:20",
-        "src-port": 33,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:11",
-        "src-port": 18,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:29",
-        "src-port": 42,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:18",
-        "src-port": 25,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:2e",
-        "src-port": 47,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:2d",
-        "src-port": 46,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:06",
-        "src-port": 7,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:19",
-        "src-port": 26,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:23",
-        "src-port": 36,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:07",
-        "src-port": 8,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:2c",
-        "src-port": 45,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:22",
-        "src-port": 35,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:10",
-        "src-port": 17,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:01",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:08",
-        "src-port": 9,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 4,
-        "dst-switch": "00:00:00:16:97:08:9a:46",
-        "src-port": 51,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:24",
-        "src-port": 37,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:2b",
-        "src-port": 44,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:2a",
-        "src-port": 43,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:0f",
-        "src-port": 16,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:1d",
-        "src-port": 30,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:16",
-        "src-port": 23,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:09",
-        "src-port": 10,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:0e",
-        "src-port": 15,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:25",
-        "src-port": 38,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:1c",
-        "src-port": 29,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:17",
-        "src-port": 24,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:0d",
-        "src-port": 14,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:14",
-        "src-port": 21,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:02",
-        "src-port": 3,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:26",
-        "src-port": 39,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:1f",
-        "src-port": 32,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:0a",
-        "src-port": 11,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:03",
-        "src-port": 4,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:01:31",
-        "src-port": 50,
-        "src-switch": "00:00:00:00:00:00:01:00"
-    },
-    {
-        "dst-port": 15,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:0e"
-    },
-    {
-        "dst-port": 19,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:12"
-    },
-    {
-        "dst-port": 10,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:09"
-    },
-    {
-        "dst-port": 49,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:30"
-    },
-    {
-        "dst-port": 10,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:09"
-    },
-    {
-        "dst-port": 27,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:1a"
-    },
-    {
-        "dst-port": 40,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:27"
-    },
-    {
-        "dst-port": 18,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:11"
-    },
-    {
-        "dst-port": 5,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:04"
-    },
-    {
-        "dst-port": 4,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:03"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:ba:5e:ba:11",
-        "src-port": 2,
-        "src-switch": "00:00:00:16:97:08:9a:46"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:08:a2:08:f9:01",
-        "src-port": 3,
-        "src-switch": "00:00:00:16:97:08:9a:46"
-    },
-    {
-        "dst-port": 51,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 4,
-        "src-switch": "00:00:00:16:97:08:9a:46"
-    },
-    {
-        "dst-port": 50,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:31"
-    },
-    {
-        "dst-port": 30,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:1d"
-    },
-    {
-        "dst-port": 14,
-        "dst-switch": "00:00:00:00:00:00:03:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:03:0d"
-    },
-    {
-        "dst-port": 16,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:0f"
-    },
-    {
-        "dst-port": 22,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:15"
-    },
-    {
-        "dst-port": 24,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:17"
-    },
-    {
-        "dst-port": 21,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 5,
-        "src-switch": "00:00:00:00:ba:5e:ba:11"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:16:97:08:9a:46",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:ba:5e:ba:11"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:ba:5e:ba:13",
-        "src-port": 3,
-        "src-switch": "00:00:00:00:ba:5e:ba:11"
-    },
-    {
-        "dst-port": 2,
-        "dst-switch": "00:00:00:00:00:00:ba:12",
-        "src-port": 4,
-        "src-switch": "00:00:00:00:ba:5e:ba:11"
-    },
-    {
-        "dst-port": 42,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:29"
-    },
-    {
-        "dst-port": 11,
-        "dst-switch": "00:00:00:00:00:00:02:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:02:0a"
-    },
-    {
-        "dst-port": 47,
-        "dst-switch": "00:00:00:00:00:00:01:00",
-        "src-port": 2,
-        "src-switch": "00:00:00:00:00:00:01:2e"
-    }
-]
\ No newline at end of file
+[{"src-switch":"00:00:00:00:00:00:02:04","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":4},{"src-switch":"00:00:00:00:00:00:06:01","src-port":12,"dst-switch":"00:00:00:00:00:00:06:0c","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":22,"dst-switch":"00:00:00:00:00:00:06:16","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":20,"dst-switch":"00:00:00:00:00:00:06:14","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":6,"dst-switch":"00:00:00:00:00:00:06:06","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":13,"dst-switch":"00:00:00:00:00:00:06:0d","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":19,"dst-switch":"00:00:00:00:00:00:06:13","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":5,"dst-switch":"00:00:00:00:00:00:06:05","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":18,"dst-switch":"00:00:00:00:00:00:06:12","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":25,"dst-switch":"00:00:00:00:00:00:06:19","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":7,"dst-switch":"00:00:00:00:00:00:06:07","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":26,"dst-switch":"00:00:00:00:ba:5e:ba:13","dst-port":4},{"src-switch":"00:00:00:00:00:00:06:01","src-port":8,"dst-switch":"00:00:00:00:00:00:06:08","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":17,"dst-switch":"00:00:00:00:00:00:06:11","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":2,"dst-switch":"00:00:00:00:00:00:06:02","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":9,"dst-switch":"00:00:00:00:00:00:06:09","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":10,"dst-switch":"00:00:00:00:00:00:06:0a","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":23,"dst-switch":"00:00:00:00:00:00:06:17","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":16,"dst-switch":"00:00:00:00:00:00:06:10","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":15,"dst-switch":"00:00:00:00:00:00:06:0f","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":24,"dst-switch":"00:00:00:00:00:00:06:18","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":14,"dst-switch":"00:00:00:00:00:00:06:0e","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":21,"dst-switch":"00:00:00:00:00:00:06:15","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":3,"dst-switch":"00:00:00:00:00:00:06:03","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":11,"dst-switch":"00:00:00:00:00:00:06:0b","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:01","src-port":4,"dst-switch":"00:00:00:00:00:00:06:04","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:0a","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":10},{"src-switch":"00:00:00:00:00:00:04:18","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":24},{"src-switch":"00:00:00:00:00:00:03:0b","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":11},{"src-switch":"00:00:00:00:00:00:06:09","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":9},{"src-switch":"00:00:00:00:00:00:04:04","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":4},{"src-switch":"00:00:00:00:00:00:02:0b","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":11},{"src-switch":"00:00:00:00:00:00:02:1d","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":29},{"src-switch":"00:00:00:00:00:00:04:08","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":8},{"src-switch":"00:00:00:00:00:00:02:06","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":6},{"src-switch":"00:00:00:00:00:00:02:0a","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":10},{"src-switch":"00:00:00:00:00:00:02:10","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":16},{"src-switch":"00:00:00:00:00:00:06:07","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":7},{"src-switch":"00:00:00:00:00:00:07:12","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":18},{"src-switch":"00:00:00:00:00:00:04:10","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":16},{"src-switch":"00:00:00:00:00:00:06:0e","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":14},{"src-switch":"00:00:00:00:00:00:04:0f","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":15},{"src-switch":"00:00:00:00:00:00:06:16","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":22},{"src-switch":"00:00:00:00:00:00:02:1f","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":31},{"src-switch":"00:00:00:00:00:00:02:2e","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":46},{"src-switch":"00:00:00:00:00:00:02:0d","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":13},{"src-switch":"00:00:00:00:00:00:07:03","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":3},{"src-switch":"00:00:00:00:00:00:07:05","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":5},{"src-switch":"00:00:00:00:00:00:04:09","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":9},{"src-switch":"00:00:00:00:00:00:07:0a","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":10},{"src-switch":"00:00:00:00:00:00:06:02","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:0d","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":13},{"src-switch":"00:00:00:00:00:00:06:04","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":4},{"src-switch":"00:00:00:00:00:00:04:0b","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":11},{"src-switch":"00:00:00:00:00:00:07:01","src-port":12,"dst-switch":"00:00:00:00:00:00:07:0c","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":22,"dst-switch":"00:00:00:00:00:00:07:16","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":20,"dst-switch":"00:00:00:00:00:00:07:14","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":6,"dst-switch":"00:00:00:00:00:00:07:06","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":13,"dst-switch":"00:00:00:00:00:00:07:0d","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":19,"dst-switch":"00:00:00:00:00:00:07:13","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":5,"dst-switch":"00:00:00:00:00:00:07:05","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":18,"dst-switch":"00:00:00:00:00:00:07:12","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":25,"dst-switch":"00:00:00:00:00:00:07:19","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":7,"dst-switch":"00:00:00:00:00:00:07:07","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":26,"dst-switch":"00:00:20:4e:7f:51:8a:35","dst-port":5},{"src-switch":"00:00:00:00:00:00:07:01","src-port":8,"dst-switch":"00:00:00:00:00:00:07:08","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":17,"dst-switch":"00:00:00:00:00:00:07:11","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":2,"dst-switch":"00:00:00:00:00:00:07:02","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":9,"dst-switch":"00:00:00:00:00:00:07:09","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":10,"dst-switch":"00:00:00:00:00:00:07:0a","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":23,"dst-switch":"00:00:00:00:00:00:07:17","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":16,"dst-switch":"00:00:00:00:00:00:07:10","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":15,"dst-switch":"00:00:00:00:00:00:07:0f","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":24,"dst-switch":"00:00:00:00:00:00:07:18","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":14,"dst-switch":"00:00:00:00:00:00:07:0e","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":21,"dst-switch":"00:00:00:00:00:00:07:15","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":3,"dst-switch":"00:00:00:00:00:00:07:03","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":11,"dst-switch":"00:00:00:00:00:00:07:0b","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:01","src-port":4,"dst-switch":"00:00:00:00:00:00:07:04","dst-port":2},{"src-switch":"00:00:00:00:00:00:06:14","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":20},{"src-switch":"00:00:00:00:00:00:03:13","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":19},{"src-switch":"00:00:00:00:00:00:07:14","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":20},{"src-switch":"00:00:00:00:00:00:02:25","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":37},{"src-switch":"00:00:00:00:00:00:07:15","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":21},{"src-switch":"00:00:00:00:00:00:06:10","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":16},{"src-switch":"00:00:00:00:00:00:07:08","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":8},{"src-switch":"00:00:00:00:00:00:06:18","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":24},{"src-switch":"00:00:00:00:00:00:06:03","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":3},{"src-switch":"00:00:00:00:00:00:03:14","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":20},{"src-switch":"00:00:00:00:00:00:02:13","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":19},{"src-switch":"00:00:00:00:00:00:03:16","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":22},{"src-switch":"00:00:00:00:00:00:03:06","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":6},{"src-switch":"00:00:00:00:00:00:04:13","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":19},{"src-switch":"00:00:00:00:00:00:06:15","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":21},{"src-switch":"00:00:00:00:00:00:08:15","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":21},{"src-switch":"00:00:00:00:00:00:05:05","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":5},{"src-switch":"00:00:00:00:00:00:03:01","src-port":12,"dst-switch":"00:00:00:00:00:00:03:0c","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":22,"dst-switch":"00:00:00:00:00:00:03:16","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":20,"dst-switch":"00:00:00:00:00:00:03:14","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":6,"dst-switch":"00:00:00:00:00:00:03:06","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":13,"dst-switch":"00:00:00:00:00:00:03:0d","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":19,"dst-switch":"00:00:00:00:00:00:03:13","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":5,"dst-switch":"00:00:00:00:00:00:03:05","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":18,"dst-switch":"00:00:00:00:00:00:03:12","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":25,"dst-switch":"00:00:00:00:00:00:03:19","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":7,"dst-switch":"00:00:00:00:00:00:03:07","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":26,"dst-switch":"00:00:00:08:a2:08:f9:01","dst-port":5},{"src-switch":"00:00:00:00:00:00:03:01","src-port":8,"dst-switch":"00:00:00:00:00:00:03:08","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":17,"dst-switch":"00:00:00:00:00:00:03:11","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":2,"dst-switch":"00:00:00:00:00:00:03:02","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":9,"dst-switch":"00:00:00:00:00:00:03:09","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":10,"dst-switch":"00:00:00:00:00:00:03:0a","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":23,"dst-switch":"00:00:00:00:00:00:03:17","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":16,"dst-switch":"00:00:00:00:00:00:03:10","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":15,"dst-switch":"00:00:00:00:00:00:03:0f","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":24,"dst-switch":"00:00:00:00:00:00:03:18","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":14,"dst-switch":"00:00:00:00:00:00:03:0e","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":21,"dst-switch":"00:00:00:00:00:00:03:15","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":3,"dst-switch":"00:00:00:00:00:00:03:03","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":11,"dst-switch":"00:00:00:00:00:00:03:0b","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:01","src-port":4,"dst-switch":"00:00:00:00:00:00:03:04","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:0f","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":15},{"src-switch":"00:00:00:00:00:00:03:17","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":23},{"src-switch":"00:00:00:00:00:00:07:07","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":7},{"src-switch":"00:00:00:00:00:00:03:04","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":4},{"src-switch":"00:00:00:00:00:00:06:05","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":5},{"src-switch":"00:00:00:00:00:00:05:16","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":22},{"src-switch":"00:00:00:00:00:00:07:18","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":24},{"src-switch":"00:00:00:00:00:00:07:16","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":22},{"src-switch":"00:00:00:00:00:00:06:08","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":8},{"src-switch":"00:00:00:00:00:00:08:0f","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":15},{"src-switch":"00:00:00:00:00:00:03:19","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":25},{"src-switch":"00:00:00:00:00:00:05:11","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":17},{"src-switch":"00:00:00:00:00:00:07:17","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":23},{"src-switch":"00:00:00:00:00:00:08:09","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":9},{"src-switch":"00:00:00:00:00:00:06:0b","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":11},{"src-switch":"00:00:00:00:00:00:05:02","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:14","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":20},{"src-switch":"00:00:00:00:00:00:05:17","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":23},{"src-switch":"00:00:00:00:00:00:06:0d","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":13},{"src-switch":"00:00:00:00:00:00:08:02","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:17","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":23},{"src-switch":"00:00:00:00:00:00:02:0c","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":12},{"src-switch":"00:00:00:00:00:00:05:07","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":7},{"src-switch":"00:00:00:00:00:00:08:13","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":19},{"src-switch":"00:00:00:00:00:00:08:16","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":22},{"src-switch":"00:00:00:00:00:00:03:11","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":17},{"src-switch":"00:00:00:00:00:00:07:06","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":6},{"src-switch":"00:00:00:00:00:00:05:10","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":16},{"src-switch":"00:00:00:00:00:00:02:0f","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":15},{"src-switch":"00:00:00:00:00:00:03:18","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":24},{"src-switch":"00:00:00:00:00:00:07:13","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":19},{"src-switch":"00:00:00:00:00:00:08:07","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":7},{"src-switch":"00:00:00:00:00:00:05:14","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":20},{"src-switch":"00:00:00:00:00:00:03:09","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":9},{"src-switch":"00:00:00:00:00:00:08:10","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":16},{"src-switch":"00:00:00:00:00:00:05:09","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":9},{"src-switch":"00:00:00:00:00:00:08:0a","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":10},{"src-switch":"00:00:00:00:00:00:03:15","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":21},{"src-switch":"00:00:00:00:00:00:05:04","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":4},{"src-switch":"00:00:00:00:00:00:08:0c","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":12},{"src-switch":"00:00:00:00:00:00:06:06","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":6},{"src-switch":"00:00:00:00:00:00:08:12","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":18},{"src-switch":"00:00:00:00:00:00:06:19","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":25},{"src-switch":"00:00:00:00:00:00:03:0d","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":13},{"src-switch":"00:00:00:00:00:00:08:05","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":5},{"src-switch":"00:00:00:00:00:00:03:0a","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":10},{"src-switch":"00:00:00:00:00:00:06:13","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":19},{"src-switch":"00:00:00:00:00:00:03:08","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":8},{"src-switch":"00:00:00:00:00:00:02:12","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":18},{"src-switch":"00:00:00:00:00:00:05:06","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":6},{"src-switch":"00:00:00:00:00:00:06:11","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":17},{"src-switch":"00:00:00:00:00:00:07:09","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":9},{"src-switch":"00:00:00:00:00:00:05:08","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":8},{"src-switch":"00:00:00:00:00:00:07:0b","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":11},{"src-switch":"00:00:00:00:00:00:03:0c","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":12},{"src-switch":"00:00:00:00:00:00:06:0f","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":15},{"src-switch":"00:00:00:00:00:00:04:14","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":20},{"src-switch":"00:00:00:00:00:00:05:0c","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":12},{"src-switch":"00:00:00:00:00:00:03:07","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":7},{"src-switch":"00:00:00:00:00:00:06:0c","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":12},{"src-switch":"00:00:00:00:00:00:05:13","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":19},{"src-switch":"00:00:00:00:00:00:03:05","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":5},{"src-switch":"00:00:00:00:00:00:07:10","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":16},{"src-switch":"00:00:00:00:00:00:03:0f","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":15},{"src-switch":"00:00:00:00:00:00:05:03","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":3},{"src-switch":"00:00:00:00:00:00:05:0f","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":15},{"src-switch":"00:00:00:00:00:00:03:02","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:02","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":2},{"src-switch":"00:00:00:00:00:00:03:0e","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":14},{"src-switch":"00:00:00:00:00:00:04:0c","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":12},{"src-switch":"00:00:00:00:00:00:08:0d","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":13},{"src-switch":"00:00:00:00:00:00:04:05","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":5},{"src-switch":"00:00:00:00:00:00:05:0a","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":10},{"src-switch":"00:00:00:00:00:00:03:03","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":3},{"src-switch":"00:00:00:00:00:00:05:15","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":21},{"src-switch":"00:00:00:00:00:00:03:10","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":16},{"src-switch":"00:00:00:00:00:00:04:06","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":6},{"src-switch":"00:00:00:00:00:00:05:0d","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":13},{"src-switch":"00:00:00:00:00:00:04:12","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":18},{"src-switch":"00:00:00:00:00:00:04:17","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":23},{"src-switch":"00:00:00:00:00:00:06:17","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":23},{"src-switch":"00:00:00:00:00:00:04:07","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":7},{"src-switch":"00:00:00:00:00:00:08:06","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":6},{"src-switch":"00:00:00:00:00:00:07:11","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":17},{"src-switch":"00:00:00:00:00:00:08:0e","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":14},{"src-switch":"00:00:00:00:00:00:04:15","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":21},{"src-switch":"00:00:00:00:00:00:05:12","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":18},{"src-switch":"00:00:00:00:00:00:05:01","src-port":12,"dst-switch":"00:00:00:00:00:00:05:0c","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":22,"dst-switch":"00:00:00:00:00:00:05:16","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":20,"dst-switch":"00:00:00:00:00:00:05:14","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":6,"dst-switch":"00:00:00:00:00:00:05:06","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":13,"dst-switch":"00:00:00:00:00:00:05:0d","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":19,"dst-switch":"00:00:00:00:00:00:05:13","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":5,"dst-switch":"00:00:00:00:00:00:05:05","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":18,"dst-switch":"00:00:00:00:00:00:05:12","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":25,"dst-switch":"00:00:00:00:00:00:05:19","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":7,"dst-switch":"00:00:00:00:00:00:05:07","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":26,"dst-switch":"00:00:00:00:00:00:ba:12","dst-port":5},{"src-switch":"00:00:00:00:00:00:05:01","src-port":8,"dst-switch":"00:00:00:00:00:00:05:08","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":17,"dst-switch":"00:00:00:00:00:00:05:11","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":2,"dst-switch":"00:00:00:00:00:00:05:02","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":9,"dst-switch":"00:00:00:00:00:00:05:09","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":10,"dst-switch":"00:00:00:00:00:00:05:0a","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":23,"dst-switch":"00:00:00:00:00:00:05:17","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":16,"dst-switch":"00:00:00:00:00:00:05:10","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":15,"dst-switch":"00:00:00:00:00:00:05:0f","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":24,"dst-switch":"00:00:00:00:00:00:05:18","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":14,"dst-switch":"00:00:00:00:00:00:05:0e","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":21,"dst-switch":"00:00:00:00:00:00:05:15","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":3,"dst-switch":"00:00:00:00:00:00:05:03","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":11,"dst-switch":"00:00:00:00:00:00:05:0b","dst-port":2},{"src-switch":"00:00:00:00:00:00:05:01","src-port":4,"dst-switch":"00:00:00:00:00:00:05:04","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:04","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":4},{"src-switch":"00:00:00:00:00:00:07:0c","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":12},{"src-switch":"00:00:00:16:97:08:9a:46","src-port":3,"dst-switch":"00:00:20:4e:7f:51:8a:35","dst-port":2},{"src-switch":"00:00:00:16:97:08:9a:46","src-port":4,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":26},{"src-switch":"00:00:00:00:00:00:07:02","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":2},{"src-switch":"00:00:00:00:00:00:07:19","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":25},{"src-switch":"00:00:00:00:00:00:05:0b","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":11},{"src-switch":"00:00:00:00:00:00:08:11","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":17},{"src-switch":"00:00:00:00:00:00:05:19","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":25},{"src-switch":"00:00:00:00:00:00:07:0e","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":14},{"src-switch":"00:00:00:00:00:00:07:04","src-port":2,"dst-switch":"00:00:00:00:00:00:07:01","dst-port":4},{"src-switch":"00:00:00:00:00:00:05:18","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":24},{"src-switch":"00:00:00:00:00:00:04:03","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":3},{"src-switch":"00:00:00:00:00:00:08:03","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":3},{"src-switch":"00:00:00:00:00:00:08:08","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":8},{"src-switch":"00:00:00:00:00:00:05:0e","src-port":2,"dst-switch":"00:00:00:00:00:00:05:01","dst-port":14},{"src-switch":"00:00:00:00:00:00:04:0e","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":14},{"src-switch":"00:00:00:00:00:00:04:0a","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":10},{"src-switch":"00:00:00:00:00:00:04:11","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":17},{"src-switch":"00:00:00:00:00:00:02:02","src-port":2,"dst-switch":"00:00:00:00:00:00:02:01","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:16","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":22},{"src-switch":"00:00:00:00:00:00:04:01","src-port":12,"dst-switch":"00:00:00:00:00:00:04:0c","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":22,"dst-switch":"00:00:00:00:00:00:04:16","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":20,"dst-switch":"00:00:00:00:00:00:04:14","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":6,"dst-switch":"00:00:00:00:00:00:04:06","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":13,"dst-switch":"00:00:00:00:00:00:04:0d","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":19,"dst-switch":"00:00:00:00:00:00:04:13","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":5,"dst-switch":"00:00:00:00:00:00:04:05","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":18,"dst-switch":"00:00:00:00:00:00:04:12","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":25,"dst-switch":"00:00:00:00:00:00:04:19","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":7,"dst-switch":"00:00:00:00:00:00:04:07","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":26,"dst-switch":"00:00:00:00:00:00:ba:12","dst-port":4},{"src-switch":"00:00:00:00:00:00:04:01","src-port":8,"dst-switch":"00:00:00:00:00:00:04:08","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":17,"dst-switch":"00:00:00:00:00:00:04:11","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":2,"dst-switch":"00:00:00:00:00:00:04:02","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":9,"dst-switch":"00:00:00:00:00:00:04:09","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":10,"dst-switch":"00:00:00:00:00:00:04:0a","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":23,"dst-switch":"00:00:00:00:00:00:04:17","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":16,"dst-switch":"00:00:00:00:00:00:04:10","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":15,"dst-switch":"00:00:00:00:00:00:04:0f","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":24,"dst-switch":"00:00:00:00:00:00:04:18","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":14,"dst-switch":"00:00:00:00:00:00:04:0e","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":21,"dst-switch":"00:00:00:00:00:00:04:15","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":3,"dst-switch":"00:00:00:00:00:00:04:03","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":11,"dst-switch":"00:00:00:00:00:00:04:0b","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:01","src-port":4,"dst-switch":"00:00:00:00:00:00:04:04","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:19","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":25},{"src-switch":"00:00:00:00:00:00:04:19","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":25},{"src-switch":"00:00:00:00:00:00:08:0b","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":11},{"src-switch":"00:00:00:00:00:00:08:18","src-port":2,"dst-switch":"00:00:00:00:00:00:08:01","dst-port":24},{"src-switch":"00:00:00:00:00:00:06:12","src-port":2,"dst-switch":"00:00:00:00:00:00:06:01","dst-port":18},{"src-switch":"00:00:00:00:00:00:08:01","src-port":12,"dst-switch":"00:00:00:00:00:00:08:0c","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":22,"dst-switch":"00:00:00:00:00:00:08:16","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":20,"dst-switch":"00:00:00:00:00:00:08:14","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":6,"dst-switch":"00:00:00:00:00:00:08:06","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":13,"dst-switch":"00:00:00:00:00:00:08:0d","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":19,"dst-switch":"00:00:00:00:00:00:08:13","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":5,"dst-switch":"00:00:00:00:00:00:08:05","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":18,"dst-switch":"00:00:00:00:00:00:08:12","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":25,"dst-switch":"00:00:00:00:00:00:08:19","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":7,"dst-switch":"00:00:00:00:00:00:08:07","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":26,"dst-switch":"00:00:00:16:97:08:9a:46","dst-port":4},{"src-switch":"00:00:00:00:00:00:08:01","src-port":8,"dst-switch":"00:00:00:00:00:00:08:08","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":17,"dst-switch":"00:00:00:00:00:00:08:11","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":2,"dst-switch":"00:00:00:00:00:00:08:02","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":9,"dst-switch":"00:00:00:00:00:00:08:09","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":10,"dst-switch":"00:00:00:00:00:00:08:0a","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":23,"dst-switch":"00:00:00:00:00:00:08:17","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":16,"dst-switch":"00:00:00:00:00:00:08:10","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":15,"dst-switch":"00:00:00:00:00:00:08:0f","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":24,"dst-switch":"00:00:00:00:00:00:08:18","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":14,"dst-switch":"00:00:00:00:00:00:08:0e","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":21,"dst-switch":"00:00:00:00:00:00:08:15","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":3,"dst-switch":"00:00:00:00:00:00:08:03","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":11,"dst-switch":"00:00:00:00:00:00:08:0b","dst-port":2},{"src-switch":"00:00:00:00:00:00:08:01","src-port":4,"dst-switch":"00:00:00:00:00:00:08:04","dst-port":2},{"src-switch":"00:00:00:00:00:00:04:0d","src-port":2,"dst-switch":"00:00:00:00:00:00:04:01","dst-port":13},{"src-switch":"00:00:00:00:00:00:03:12","src-port":2,"dst-switch":"00:00:00:00:00:00:03:01","dst-port":18}]
\ No newline at end of file
diff --git a/web/ons-demo/data/wm_core_topology_switches_all_json.json b/web/ons-demo/data/wm_core_topology_switches_all_json.json
index cf23703..5b659a2 100644
--- a/web/ons-demo/data/wm_core_topology_switches_all_json.json
+++ b/web/ons-demo/data/wm_core_topology_switches_all_json.json
@@ -1,2318 +1 @@
-[
-    {
-        "dpid": "00:00:00:00:00:00:01:19",
-        "ports": [
-            {
-                "desc": "sw01.25-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.25-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:0b",
-        "ports": [
-            {
-                "desc": "sw01.11-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.11-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:06",
-        "ports": [
-            {
-                "desc": "sw01.06-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.06-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:02",
-        "ports": [
-            {
-                "desc": "sw01.02-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.02-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:12",
-        "ports": [
-            {
-                "desc": "sw03.18-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.18-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:10",
-        "ports": [
-            {
-                "desc": "sw01.16-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.16-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:0e",
-        "ports": [
-            {
-                "desc": "sw02.14-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.14-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:13",
-        "ports": [
-            {
-                "desc": "sw03.19-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.19-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:11",
-        "ports": [
-            {
-                "desc": "sw03.17-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.17-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:1c",
-        "ports": [
-            {
-                "desc": "sw01.28-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.28-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:11",
-        "ports": [
-            {
-                "desc": "sw01.17-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.17-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:10",
-        "ports": [
-            {
-                "desc": "sw02.16-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.16-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:2d",
-        "ports": [
-            {
-                "desc": "sw01.45-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.45-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:1b",
-        "ports": [
-            {
-                "desc": "sw01.27-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.27-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:20",
-        "ports": [
-            {
-                "desc": "sw01.32-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.32-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:0f",
-        "ports": [
-            {
-                "desc": "sw03.15-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.15-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:21",
-        "ports": [
-            {
-                "desc": "sw01.33-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.33-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:0b",
-        "ports": [
-            {
-                "desc": "sw03.11-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.11-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:2a",
-        "ports": [
-            {
-                "desc": "sw01.42-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.42-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:00",
-        "ports": [
-            {
-                "desc": "sw02.00-eth12",
-                "devices": [],
-                "number": 12,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth20",
-                "devices": [],
-                "number": 20,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth6",
-                "devices": [],
-                "number": 6,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth13",
-                "devices": [],
-                "number": 13,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth19",
-                "devices": [],
-                "number": 19,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth5",
-                "devices": [],
-                "number": 5,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth18",
-                "devices": [],
-                "number": 18,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth7",
-                "devices": [],
-                "number": 7,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth8",
-                "devices": [],
-                "number": 8,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth17",
-                "devices": [],
-                "number": 17,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth9",
-                "devices": [],
-                "number": 9,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth10",
-                "devices": [],
-                "number": 10,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth16",
-                "devices": [],
-                "number": 16,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth15",
-                "devices": [],
-                "number": 15,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth14",
-                "devices": [],
-                "number": 14,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "tapb0",
-                "devices": [],
-                "number": 21,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth3",
-                "devices": [],
-                "number": 3,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth11",
-                "devices": [],
-                "number": 11,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.00-eth4",
-                "devices": [],
-                "number": 4,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:08",
-        "ports": [
-            {
-                "desc": "sw01.08-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.08-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:0c",
-        "ports": [
-            {
-                "desc": "sw03.12-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.12-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:2b",
-        "ports": [
-            {
-                "desc": "sw01.43-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.43-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:04",
-        "ports": [
-            {
-                "desc": "sw02.04-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.04-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:10",
-        "ports": [
-            {
-                "desc": "sw03.16-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.16-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:04",
-        "ports": [
-            {
-                "desc": "sw01.04-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.04-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:25",
-        "ports": [
-            {
-                "desc": "sw01.37-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.37-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:24",
-        "ports": [
-            {
-                "desc": "sw01.36-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.36-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:07",
-        "ports": [
-            {
-                "desc": "sw02.07-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.07-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:06",
-        "ports": [
-            {
-                "desc": "sw03.06-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.06-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:1e",
-        "ports": [
-            {
-                "desc": "sw01.30-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.30-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:07",
-        "ports": [
-            {
-                "desc": "sw03.07-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.07-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:0d",
-        "ports": [
-            {
-                "desc": "sw01.13-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.13-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:02",
-        "ports": [
-            {
-                "desc": "sw02.02-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.02-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:12",
-        "ports": [
-            {
-                "desc": "sw01.18-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.18-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:ba:5e:ba:13",
-        "ports": [
-            {
-                "desc": "swd5-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd5-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd5-eth3",
-                "devices": [],
-                "number": 3,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:2c",
-        "ports": [
-            {
-                "desc": "sw01.44-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.44-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:08",
-        "ports": [
-            {
-                "desc": "sw02.08-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.08-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:0a",
-        "ports": [
-            {
-                "desc": "sw03.10-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.10-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:13",
-        "ports": [
-            {
-                "desc": "sw01.19-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.19-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:08:a2:08:f9:01",
-        "ports": [
-            {
-                "desc": "swd3-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd3-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd3-eth3",
-                "devices": [],
-                "number": 3,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "tapd2",
-                "devices": [],
-                "number": 4,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:05",
-        "ports": [
-            {
-                "desc": "sw03.05-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.05-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:23",
-        "ports": [
-            {
-                "desc": "sw01.35-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.35-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:0b",
-        "ports": [
-            {
-                "desc": "sw02.11-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.11-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:05",
-        "ports": [
-            {
-                "desc": "sw01.05-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.05-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:20:4e:7f:51:8a:35",
-        "ports": [
-            {
-                "desc": "swd6-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd6-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd6-eth3",
-                "devices": [],
-                "number": 3,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:03",
-        "ports": [
-            {
-                "desc": "sw03.03-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.03-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:07",
-        "ports": [
-            {
-                "desc": "sw01.07-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.07-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:0c",
-        "ports": [
-            {
-                "desc": "sw02.12-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.12-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:2f",
-        "ports": [
-            {
-                "desc": "sw01.47-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.47-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:0c",
-        "ports": [
-            {
-                "desc": "sw01.12-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.12-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:09",
-        "ports": [
-            {
-                "desc": "sw03.09-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.09-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:0f",
-        "ports": [
-            {
-                "desc": "sw02.15-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.15-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:0e",
-        "ports": [
-            {
-                "desc": "sw03.14-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.14-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:28",
-        "ports": [
-            {
-                "desc": "sw01.40-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.40-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:05",
-        "ports": [
-            {
-                "desc": "sw02.05-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.05-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:26",
-        "ports": [
-            {
-                "desc": "sw01.38-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.38-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:22",
-        "ports": [
-            {
-                "desc": "sw01.34-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.34-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:0d",
-        "ports": [
-            {
-                "desc": "sw02.13-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.13-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:1f",
-        "ports": [
-            {
-                "desc": "sw01.31-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.31-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:16",
-        "ports": [
-            {
-                "desc": "sw01.22-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.22-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:01",
-        "ports": [
-            {
-                "desc": "sw02.01-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.01-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:08",
-        "ports": [
-            {
-                "desc": "sw03.08-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.08-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:01",
-        "ports": [
-            {
-                "desc": "sw03.01-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.01-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:01",
-        "ports": [
-            {
-                "desc": "sw01.01-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.01-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:ba:12",
-        "ports": [
-            {
-                "desc": "swd4-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd4-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd4-eth3",
-                "devices": [],
-                "number": 3,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd4-eth4",
-                "devices": [],
-                "number": 4,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:00",
-        "ports": [
-            {
-                "desc": "sw03.00-eth12",
-                "devices": [],
-                "number": 12,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth20",
-                "devices": [],
-                "number": 20,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth6",
-                "devices": [],
-                "number": 6,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth13",
-                "devices": [],
-                "number": 13,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth19",
-                "devices": [],
-                "number": 19,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth5",
-                "devices": [],
-                "number": 5,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth18",
-                "devices": [],
-                "number": 18,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth7",
-                "devices": [],
-                "number": 7,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth8",
-                "devices": [],
-                "number": 8,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth17",
-                "devices": [],
-                "number": 17,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth9",
-                "devices": [],
-                "number": 9,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth10",
-                "devices": [],
-                "number": 10,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth16",
-                "devices": [],
-                "number": 16,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth15",
-                "devices": [],
-                "number": 15,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth14",
-                "devices": [],
-                "number": 14,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "tapc0",
-                "devices": [],
-                "number": 21,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth3",
-                "devices": [],
-                "number": 3,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth11",
-                "devices": [],
-                "number": 11,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.00-eth4",
-                "devices": [],
-                "number": 4,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:14",
-        "ports": [
-            {
-                "desc": "sw01.20-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.20-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:0a",
-        "ports": [
-            {
-                "desc": "sw01.10-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.10-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:18",
-        "ports": [
-            {
-                "desc": "sw01.24-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.24-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:13",
-        "ports": [
-            {
-                "desc": "sw02.19-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.19-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:02",
-        "ports": [
-            {
-                "desc": "sw03.02-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.02-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:03",
-        "ports": [
-            {
-                "desc": "sw01.03-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.03-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:06",
-        "ports": [
-            {
-                "desc": "sw02.06-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.06-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:00",
-        "ports": [
-            {
-                "desc": "sw01.00-eth40",
-                "devices": [],
-                "number": 40,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth22",
-                "devices": [],
-                "number": 22,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth49",
-                "devices": [],
-                "number": 49,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth12",
-                "devices": [],
-                "number": 12,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth31",
-                "devices": [],
-                "number": 31,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth20",
-                "devices": [],
-                "number": 20,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth6",
-                "devices": [],
-                "number": 6,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth27",
-                "devices": [],
-                "number": 27,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth34",
-                "devices": [],
-                "number": 34,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth19",
-                "devices": [],
-                "number": 19,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth13",
-                "devices": [],
-                "number": 13,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth41",
-                "devices": [],
-                "number": 41,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth48",
-                "devices": [],
-                "number": 48,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth5",
-                "devices": [],
-                "number": 5,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth28",
-                "devices": [],
-                "number": 28,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth33",
-                "devices": [],
-                "number": 33,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth18",
-                "devices": [],
-                "number": 18,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth42",
-                "devices": [],
-                "number": 42,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth25",
-                "devices": [],
-                "number": 25,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth47",
-                "devices": [],
-                "number": 47,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth46",
-                "devices": [],
-                "number": 46,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth7",
-                "devices": [],
-                "number": 7,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth26",
-                "devices": [],
-                "number": 26,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth36",
-                "devices": [],
-                "number": 36,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth8",
-                "devices": [],
-                "number": 8,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth45",
-                "devices": [],
-                "number": 45,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth35",
-                "devices": [],
-                "number": 35,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth17",
-                "devices": [],
-                "number": 17,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth9",
-                "devices": [],
-                "number": 9,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "tapa0",
-                "devices": [],
-                "number": 51,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth37",
-                "devices": [],
-                "number": 37,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth44",
-                "devices": [],
-                "number": 44,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth43",
-                "devices": [],
-                "number": 43,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth16",
-                "devices": [],
-                "number": 16,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth30",
-                "devices": [],
-                "number": 30,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth23",
-                "devices": [],
-                "number": 23,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth10",
-                "devices": [],
-                "number": 10,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth15",
-                "devices": [],
-                "number": 15,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth38",
-                "devices": [],
-                "number": 38,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth29",
-                "devices": [],
-                "number": 29,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth24",
-                "devices": [],
-                "number": 24,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth14",
-                "devices": [],
-                "number": 14,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth21",
-                "devices": [],
-                "number": 21,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth3",
-                "devices": [],
-                "number": 3,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth39",
-                "devices": [],
-                "number": 39,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth32",
-                "devices": [],
-                "number": 32,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth11",
-                "devices": [],
-                "number": 11,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth4",
-                "devices": [],
-                "number": 4,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.00-eth50",
-                "devices": [],
-                "number": 50,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:0e",
-        "ports": [
-            {
-                "desc": "sw01.14-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.14-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:12",
-        "ports": [
-            {
-                "desc": "sw02.18-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.18-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:09",
-        "ports": [
-            {
-                "desc": "sw01.09-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.09-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:30",
-        "ports": [
-            {
-                "desc": "sw01.48-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.48-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:09",
-        "ports": [
-            {
-                "desc": "sw02.09-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.09-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:1a",
-        "ports": [
-            {
-                "desc": "sw01.26-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.26-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:27",
-        "ports": [
-            {
-                "desc": "sw01.39-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.39-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:11",
-        "ports": [
-            {
-                "desc": "sw02.17-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.17-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:04",
-        "ports": [
-            {
-                "desc": "sw03.04-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.04-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:03",
-        "ports": [
-            {
-                "desc": "sw02.03-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.03-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:16:97:08:9a:46",
-        "ports": [
-            {
-                "desc": "swd1-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd1-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd1-eth3",
-                "devices": [],
-                "number": 3,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "tapd0",
-                "devices": [],
-                "number": 4,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:31",
-        "ports": [
-            {
-                "desc": "sw01.49-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.49-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:1d",
-        "ports": [
-            {
-                "desc": "sw01.29-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.29-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:03:0d",
-        "ports": [
-            {
-                "desc": "sw03.13-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw03.13-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:0f",
-        "ports": [
-            {
-                "desc": "sw01.15-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.15-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:15",
-        "ports": [
-            {
-                "desc": "sw01.21-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.21-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:17",
-        "ports": [
-            {
-                "desc": "sw01.23-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.23-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:ba:5e:ba:11",
-        "ports": [
-            {
-                "desc": "tapd1",
-                "devices": [],
-                "number": 5,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd2-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd2-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd2-eth3",
-                "devices": [],
-                "number": 3,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "swd2-eth4",
-                "devices": [],
-                "number": 4,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:29",
-        "ports": [
-            {
-                "desc": "sw01.41-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.41-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:02:0a",
-        "ports": [
-            {
-                "desc": "sw02.10-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw02.10-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    },
-    {
-        "dpid": "00:00:00:00:00:00:01:2e",
-        "ports": [
-            {
-                "desc": "sw01.46-eth2",
-                "devices": [],
-                "number": 2,
-                "state": "ACTIVE"
-            },
-            {
-                "desc": "sw01.46-eth1",
-                "devices": [],
-                "number": 1,
-                "state": "ACTIVE"
-            }
-        ],
-        "state": "ACTIVE"
-    }
-]
\ No newline at end of file
+[{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.04-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.04-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:04"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":12,"desc":"sw06.01-eth12","devices":[]},{"state":"ACTIVE","number":22,"desc":"sw06.01-eth22","devices":[]},{"state":"ACTIVE","number":20,"desc":"sw06.01-eth20","devices":[]},{"state":"ACTIVE","number":6,"desc":"sw06.01-eth6","devices":[]},{"state":"ACTIVE","number":13,"desc":"sw06.01-eth13","devices":[]},{"state":"ACTIVE","number":19,"desc":"sw06.01-eth19","devices":[]},{"state":"ACTIVE","number":5,"desc":"sw06.01-eth5","devices":[]},{"state":"ACTIVE","number":18,"desc":"sw06.01-eth18","devices":[]},{"state":"ACTIVE","number":25,"desc":"sw06.01-eth25","devices":[]},{"state":"ACTIVE","number":7,"desc":"sw06.01-eth7","devices":[]},{"state":"ACTIVE","number":26,"desc":"tap06_1","devices":[]},{"state":"ACTIVE","number":8,"desc":"sw06.01-eth8","devices":[]},{"state":"ACTIVE","number":17,"desc":"sw06.01-eth17","devices":[]},{"state":"ACTIVE","number":2,"desc":"sw06.01-eth2","devices":[]},{"state":"ACTIVE","number":9,"desc":"sw06.01-eth9","devices":[]},{"state":"ACTIVE","number":10,"desc":"sw06.01-eth10","devices":[]},{"state":"ACTIVE","number":23,"desc":"sw06.01-eth23","devices":[]},{"state":"ACTIVE","number":16,"desc":"sw06.01-eth16","devices":[]},{"state":"ACTIVE","number":15,"desc":"sw06.01-eth15","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.01-eth1","devices":[]},{"state":"ACTIVE","number":24,"desc":"sw06.01-eth24","devices":[]},{"state":"ACTIVE","number":14,"desc":"sw06.01-eth14","devices":[]},{"state":"ACTIVE","number":21,"desc":"sw06.01-eth21","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw06.01-eth3","devices":[]},{"state":"ACTIVE","number":11,"desc":"sw06.01-eth11","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw06.01-eth4","devices":[]}],"dpid":"00:00:00:00:00:00:06:01"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.10-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.10-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:0a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.24-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.24-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:18"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.11-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.11-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:0b"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.38-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.38-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:26"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.09-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.09-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:09"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.04-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.04-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:04"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.11-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.11-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:0b"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.29-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.29-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:1d"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.08-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.08-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:08"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.06-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.06-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:06"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.10-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.10-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:0a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.16-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.16-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:10"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.39-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.39-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:27"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.07-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.07-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:07"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.18-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.18-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:12"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.16-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.16-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:10"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.14-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.14-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:0e"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.25-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.25-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:19"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.15-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.15-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:0f"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.22-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.22-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:16"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.31-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.31-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:1f"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.32-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.32-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:20"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.46-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.46-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:2e"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.13-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.13-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:0d"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.03-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.03-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:03"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.21-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.21-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:15"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.05-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.05-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:05"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.09-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.09-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:09"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.33-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.33-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:21"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.10-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.10-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:0a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.02-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.02-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:02"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.13-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.13-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:0d"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.04-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.04-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:04"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.11-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.11-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:0b"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":12,"desc":"sw07.01-eth12","devices":[]},{"state":"ACTIVE","number":22,"desc":"sw07.01-eth22","devices":[]},{"state":"ACTIVE","number":20,"desc":"sw07.01-eth20","devices":[]},{"state":"ACTIVE","number":6,"desc":"sw07.01-eth6","devices":[]},{"state":"ACTIVE","number":13,"desc":"sw07.01-eth13","devices":[]},{"state":"ACTIVE","number":19,"desc":"sw07.01-eth19","devices":[]},{"state":"ACTIVE","number":5,"desc":"sw07.01-eth5","devices":[]},{"state":"ACTIVE","number":18,"desc":"sw07.01-eth18","devices":[]},{"state":"ACTIVE","number":25,"desc":"sw07.01-eth25","devices":[]},{"state":"ACTIVE","number":7,"desc":"sw07.01-eth7","devices":[]},{"state":"ACTIVE","number":26,"desc":"tap07_1","devices":[]},{"state":"ACTIVE","number":8,"desc":"sw07.01-eth8","devices":[]},{"state":"ACTIVE","number":17,"desc":"sw07.01-eth17","devices":[]},{"state":"ACTIVE","number":2,"desc":"sw07.01-eth2","devices":[]},{"state":"ACTIVE","number":9,"desc":"sw07.01-eth9","devices":[]},{"state":"ACTIVE","number":10,"desc":"sw07.01-eth10","devices":[]},{"state":"ACTIVE","number":23,"desc":"sw07.01-eth23","devices":[]},{"state":"ACTIVE","number":16,"desc":"sw07.01-eth16","devices":[]},{"state":"ACTIVE","number":15,"desc":"sw07.01-eth15","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.01-eth1","devices":[]},{"state":"ACTIVE","number":24,"desc":"sw07.01-eth24","devices":[]},{"state":"ACTIVE","number":14,"desc":"sw07.01-eth14","devices":[]},{"state":"ACTIVE","number":21,"desc":"sw07.01-eth21","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw07.01-eth3","devices":[]},{"state":"ACTIVE","number":11,"desc":"sw07.01-eth11","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw07.01-eth4","devices":[]}],"dpid":"00:00:00:00:00:00:07:01"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.20-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.20-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:14"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.19-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.19-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:13"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.23-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.23-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:17"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.50-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.50-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:32"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.20-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.20-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:14"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.27-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.27-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:1b"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.37-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.37-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:25"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.21-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.21-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:15"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.28-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.28-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:1c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.16-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.16-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:10"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.08-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.08-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:08"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.24-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.24-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:18"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.24-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.24-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:18"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.03-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.03-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:03"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.20-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.20-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:14"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.19-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.19-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:13"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.22-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.22-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:16"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.06-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.06-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:06"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.19-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.19-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:13"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.21-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.21-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:15"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.21-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.21-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:15"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.05-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.05-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:05"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":12,"desc":"sw03.01-eth12","devices":[]},{"state":"ACTIVE","number":22,"desc":"sw03.01-eth22","devices":[]},{"state":"ACTIVE","number":20,"desc":"sw03.01-eth20","devices":[]},{"state":"ACTIVE","number":6,"desc":"sw03.01-eth6","devices":[]},{"state":"ACTIVE","number":13,"desc":"sw03.01-eth13","devices":[]},{"state":"ACTIVE","number":19,"desc":"sw03.01-eth19","devices":[]},{"state":"ACTIVE","number":5,"desc":"sw03.01-eth5","devices":[]},{"state":"ACTIVE","number":18,"desc":"sw03.01-eth18","devices":[]},{"state":"ACTIVE","number":25,"desc":"sw03.01-eth25","devices":[]},{"state":"ACTIVE","number":7,"desc":"sw03.01-eth7","devices":[]},{"state":"ACTIVE","number":26,"desc":"tap03_1","devices":[]},{"state":"ACTIVE","number":8,"desc":"sw03.01-eth8","devices":[]},{"state":"ACTIVE","number":17,"desc":"sw03.01-eth17","devices":[]},{"state":"ACTIVE","number":2,"desc":"sw03.01-eth2","devices":[]},{"state":"ACTIVE","number":9,"desc":"sw03.01-eth9","devices":[]},{"state":"ACTIVE","number":10,"desc":"sw03.01-eth10","devices":[]},{"state":"ACTIVE","number":23,"desc":"sw03.01-eth23","devices":[]},{"state":"ACTIVE","number":16,"desc":"sw03.01-eth16","devices":[]},{"state":"ACTIVE","number":15,"desc":"sw03.01-eth15","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.01-eth1","devices":[]},{"state":"ACTIVE","number":24,"desc":"sw03.01-eth24","devices":[]},{"state":"ACTIVE","number":14,"desc":"sw03.01-eth14","devices":[]},{"state":"ACTIVE","number":21,"desc":"sw03.01-eth21","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw03.01-eth3","devices":[]},{"state":"ACTIVE","number":11,"desc":"sw03.01-eth11","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw03.01-eth4","devices":[]}],"dpid":"00:00:00:00:00:00:03:01"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.15-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.15-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:0f"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.23-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.23-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:17"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":40,"desc":"sw02.01-eth40","devices":[]},{"state":"ACTIVE","number":22,"desc":"sw02.01-eth22","devices":[]},{"state":"ACTIVE","number":49,"desc":"sw02.01-eth49","devices":[]},{"state":"ACTIVE","number":12,"desc":"sw02.01-eth12","devices":[]},{"state":"ACTIVE","number":31,"desc":"sw02.01-eth31","devices":[]},{"state":"ACTIVE","number":20,"desc":"sw02.01-eth20","devices":[]},{"state":"ACTIVE","number":6,"desc":"sw02.01-eth6","devices":[]},{"state":"ACTIVE","number":27,"desc":"sw02.01-eth27","devices":[]},{"state":"ACTIVE","number":34,"desc":"sw02.01-eth34","devices":[]},{"state":"ACTIVE","number":19,"desc":"sw02.01-eth19","devices":[]},{"state":"ACTIVE","number":13,"desc":"sw02.01-eth13","devices":[]},{"state":"ACTIVE","number":41,"desc":"sw02.01-eth41","devices":[]},{"state":"ACTIVE","number":48,"desc":"sw02.01-eth48","devices":[]},{"state":"ACTIVE","number":5,"desc":"sw02.01-eth5","devices":[]},{"state":"ACTIVE","number":28,"desc":"sw02.01-eth28","devices":[]},{"state":"ACTIVE","number":33,"desc":"sw02.01-eth33","devices":[]},{"state":"ACTIVE","number":18,"desc":"sw02.01-eth18","devices":[]},{"state":"ACTIVE","number":42,"desc":"sw02.01-eth42","devices":[]},{"state":"ACTIVE","number":25,"desc":"sw02.01-eth25","devices":[]},{"state":"ACTIVE","number":47,"desc":"sw02.01-eth47","devices":[]},{"state":"ACTIVE","number":46,"desc":"sw02.01-eth46","devices":[]},{"state":"ACTIVE","number":7,"desc":"sw02.01-eth7","devices":[]},{"state":"ACTIVE","number":26,"desc":"sw02.01-eth26","devices":[]},{"state":"ACTIVE","number":36,"desc":"sw02.01-eth36","devices":[]},{"state":"ACTIVE","number":8,"desc":"sw02.01-eth8","devices":[]},{"state":"ACTIVE","number":45,"desc":"sw02.01-eth45","devices":[]},{"state":"ACTIVE","number":35,"desc":"sw02.01-eth35","devices":[]},{"state":"ACTIVE","number":17,"desc":"sw02.01-eth17","devices":[]},{"state":"ACTIVE","number":2,"desc":"sw02.01-eth2","devices":[]},{"state":"ACTIVE","number":9,"desc":"sw02.01-eth9","devices":[]},{"state":"ACTIVE","number":51,"desc":"tap02_1","devices":[]},{"state":"ACTIVE","number":37,"desc":"sw02.01-eth37","devices":[]},{"state":"ACTIVE","number":44,"desc":"sw02.01-eth44","devices":[]},{"state":"ACTIVE","number":43,"desc":"sw02.01-eth43","devices":[]},{"state":"ACTIVE","number":16,"desc":"sw02.01-eth16","devices":[]},{"state":"ACTIVE","number":30,"desc":"sw02.01-eth30","devices":[]},{"state":"ACTIVE","number":23,"desc":"sw02.01-eth23","devices":[]},{"state":"ACTIVE","number":10,"desc":"sw02.01-eth10","devices":[]},{"state":"ACTIVE","number":15,"desc":"sw02.01-eth15","devices":[]},{"state":"ACTIVE","number":38,"desc":"sw02.01-eth38","devices":[]},{"state":"ACTIVE","number":29,"desc":"sw02.01-eth29","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.01-eth1","devices":[]},{"state":"ACTIVE","number":24,"desc":"sw02.01-eth24","devices":[]},{"state":"ACTIVE","number":14,"desc":"sw02.01-eth14","devices":[]},{"state":"ACTIVE","number":21,"desc":"sw02.01-eth21","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw02.01-eth3","devices":[]},{"state":"ACTIVE","number":39,"desc":"sw02.01-eth39","devices":[]},{"state":"ACTIVE","number":32,"desc":"sw02.01-eth32","devices":[]},{"state":"ACTIVE","number":11,"desc":"sw02.01-eth11","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw02.01-eth4","devices":[]},{"state":"ACTIVE","number":50,"desc":"sw02.01-eth50","devices":[]}],"dpid":"00:00:00:00:00:00:02:01"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.48-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.48-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:30"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.07-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.07-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:07"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.04-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.04-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:04"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.22-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.22-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:16"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.05-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.05-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:05"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.22-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.22-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:16"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.24-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.24-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:18"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.22-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.22-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:16"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.08-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.08-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:08"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.15-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.15-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:0f"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.25-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.25-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:19"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.17-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.17-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:11"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.23-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.23-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:17"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.09-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.09-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:09"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.11-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.11-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:0b"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.02-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.02-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:02"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.20-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.20-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:14"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.09-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.09-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:09"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.23-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.23-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:17"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.13-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.13-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:0d"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.02-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.02-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:02"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.23-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.23-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:17"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.12-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.12-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:0c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.07-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.07-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:07"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.19-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.19-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:13"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.07-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.07-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:07"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.22-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.22-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:16"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.17-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.17-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:11"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.06-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.06-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:06"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.16-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.16-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:10"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.15-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.15-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:0f"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.24-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.24-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:18"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.19-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.19-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:13"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.07-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.07-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:07"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.20-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.20-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:14"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.41-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.41-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:29"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.09-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.09-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:09"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.16-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.16-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:10"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.09-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.09-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:09"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.03-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.03-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:03"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.10-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.10-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:0a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.21-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.21-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:15"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.30-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.30-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:1e"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.04-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.04-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:04"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.12-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.12-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:0c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.06-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.06-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:06"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.18-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.18-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:12"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.25-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.25-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:19"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.13-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.13-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:0d"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.05-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.05-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:05"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.10-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.10-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:0a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.19-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.19-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:13"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.08-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.08-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:08"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.18-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.18-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:12"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.06-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.06-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:06"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.17-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.17-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:11"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.09-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.09-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:09"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.08-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.08-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:08"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.11-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.11-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:0b"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.12-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.12-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:0c"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.05-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.05-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:05"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.15-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.15-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:0f"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.20-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.20-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:14"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.12-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.12-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:0c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.07-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.07-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:07"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.12-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.12-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:0c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.19-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.19-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:13"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.05-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.05-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:05"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.16-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.16-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:10"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.15-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.15-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:0f"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.03-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.03-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:03"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.17-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.17-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:11"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.15-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.15-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:0f"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.26-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.26-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:1a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.02-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.02-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:02"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.14-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.14-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:0e"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.02-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.02-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:02"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.14-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.14-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:0e"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.12-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.12-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:0c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.13-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.13-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:0d"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.49-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.49-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:31"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.05-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.05-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:05"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.10-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.10-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:0a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.03-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.03-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:03"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.21-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.21-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:15"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.16-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.16-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:10"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.06-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.06-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:06"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw3-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw3-eth1","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw3-eth3","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw3-eth4","devices":[]},{"state":"ACTIVE","number":5,"desc":"tap01_3","devices":[]}],"dpid":"00:00:00:08:a2:08:f9:01"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.13-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.13-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:0d"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.18-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.18-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:12"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.23-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.23-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:17"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.23-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.23-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:17"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.07-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.07-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:07"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.06-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.06-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:06"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.40-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.40-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:28"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.44-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.44-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:2c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.17-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.17-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:11"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.14-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.14-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:0e"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.21-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.21-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:15"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.18-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.18-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:12"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":12,"desc":"sw05.01-eth12","devices":[]},{"state":"ACTIVE","number":22,"desc":"sw05.01-eth22","devices":[]},{"state":"ACTIVE","number":20,"desc":"sw05.01-eth20","devices":[]},{"state":"ACTIVE","number":6,"desc":"sw05.01-eth6","devices":[]},{"state":"ACTIVE","number":13,"desc":"sw05.01-eth13","devices":[]},{"state":"ACTIVE","number":19,"desc":"sw05.01-eth19","devices":[]},{"state":"ACTIVE","number":5,"desc":"sw05.01-eth5","devices":[]},{"state":"ACTIVE","number":18,"desc":"sw05.01-eth18","devices":[]},{"state":"ACTIVE","number":25,"desc":"sw05.01-eth25","devices":[]},{"state":"ACTIVE","number":7,"desc":"sw05.01-eth7","devices":[]},{"state":"ACTIVE","number":26,"desc":"tap05_1","devices":[]},{"state":"ACTIVE","number":8,"desc":"sw05.01-eth8","devices":[]},{"state":"ACTIVE","number":17,"desc":"sw05.01-eth17","devices":[]},{"state":"ACTIVE","number":2,"desc":"sw05.01-eth2","devices":[]},{"state":"ACTIVE","number":9,"desc":"sw05.01-eth9","devices":[]},{"state":"ACTIVE","number":10,"desc":"sw05.01-eth10","devices":[]},{"state":"ACTIVE","number":23,"desc":"sw05.01-eth23","devices":[]},{"state":"ACTIVE","number":16,"desc":"sw05.01-eth16","devices":[]},{"state":"ACTIVE","number":15,"desc":"sw05.01-eth15","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.01-eth1","devices":[]},{"state":"ACTIVE","number":24,"desc":"sw05.01-eth24","devices":[]},{"state":"ACTIVE","number":14,"desc":"sw05.01-eth14","devices":[]},{"state":"ACTIVE","number":21,"desc":"sw05.01-eth21","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw05.01-eth3","devices":[]},{"state":"ACTIVE","number":11,"desc":"sw05.01-eth11","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw05.01-eth4","devices":[]}],"dpid":"00:00:00:00:00:00:05:01"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.04-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.04-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:04"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.12-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.12-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:0c"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":1,"desc":"sw1-eth1","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw1-eth3","devices":[]},{"state":"ACTIVE","number":4,"desc":"tap01_8","devices":[]}],"dpid":"00:00:00:16:97:08:9a:46"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.02-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.02-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:02"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.36-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.36-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:24"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.25-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.25-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:19"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw5-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw5-eth1","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw5-eth3","devices":[]},{"state":"ACTIVE","number":4,"desc":"tap01_6","devices":[]}],"dpid":"00:00:00:00:ba:5e:ba:13"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.11-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.11-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:0b"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.17-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.17-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:11"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw6-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw6-eth1","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw6-eth3","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw6-eth4","devices":[]},{"state":"ACTIVE","number":5,"desc":"tap01_7","devices":[]}],"dpid":"00:00:20:4e:7f:51:8a:35"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.25-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.25-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:19"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.14-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.14-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:0e"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.20-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.20-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:14"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw07.04-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw07.04-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:07:04"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.24-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.24-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:18"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.03-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.03-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:03"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.03-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.03-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:03"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.08-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.08-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:08"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw05.14-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw05.14-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:05:0e"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.14-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.14-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:0e"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.08-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.08-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:08"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.10-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.10-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:0a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.17-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.17-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:11"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.02-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.02-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:02"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.22-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.22-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:16"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":1,"desc":"sw2-eth1","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw2-eth3","devices":[]},{"state":"ACTIVE","number":4,"desc":"tap01_2","devices":[]}],"dpid":"00:00:00:00:ba:5e:ba:11"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":12,"desc":"sw04.01-eth12","devices":[]},{"state":"ACTIVE","number":22,"desc":"sw04.01-eth22","devices":[]},{"state":"ACTIVE","number":20,"desc":"sw04.01-eth20","devices":[]},{"state":"ACTIVE","number":6,"desc":"sw04.01-eth6","devices":[]},{"state":"ACTIVE","number":13,"desc":"sw04.01-eth13","devices":[]},{"state":"ACTIVE","number":19,"desc":"sw04.01-eth19","devices":[]},{"state":"ACTIVE","number":5,"desc":"sw04.01-eth5","devices":[]},{"state":"ACTIVE","number":18,"desc":"sw04.01-eth18","devices":[]},{"state":"ACTIVE","number":25,"desc":"sw04.01-eth25","devices":[]},{"state":"ACTIVE","number":7,"desc":"sw04.01-eth7","devices":[]},{"state":"ACTIVE","number":26,"desc":"tap04_1","devices":[]},{"state":"ACTIVE","number":8,"desc":"sw04.01-eth8","devices":[]},{"state":"ACTIVE","number":17,"desc":"sw04.01-eth17","devices":[]},{"state":"ACTIVE","number":2,"desc":"sw04.01-eth2","devices":[]},{"state":"ACTIVE","number":9,"desc":"sw04.01-eth9","devices":[]},{"state":"ACTIVE","number":10,"desc":"sw04.01-eth10","devices":[]},{"state":"ACTIVE","number":23,"desc":"sw04.01-eth23","devices":[]},{"state":"ACTIVE","number":16,"desc":"sw04.01-eth16","devices":[]},{"state":"ACTIVE","number":15,"desc":"sw04.01-eth15","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.01-eth1","devices":[]},{"state":"ACTIVE","number":24,"desc":"sw04.01-eth24","devices":[]},{"state":"ACTIVE","number":14,"desc":"sw04.01-eth14","devices":[]},{"state":"ACTIVE","number":21,"desc":"sw04.01-eth21","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw04.01-eth3","devices":[]},{"state":"ACTIVE","number":11,"desc":"sw04.01-eth11","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw04.01-eth4","devices":[]}],"dpid":"00:00:00:00:00:00:04:01"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.25-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.25-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:19"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.25-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.25-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:19"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.11-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.11-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:0b"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.43-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.43-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:2b"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw08.24-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.24-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:08:18"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.45-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.45-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:2d"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw06.18-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw06.18-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:06:12"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":12,"desc":"sw08.01-eth12","devices":[]},{"state":"ACTIVE","number":22,"desc":"sw08.01-eth22","devices":[]},{"state":"ACTIVE","number":20,"desc":"sw08.01-eth20","devices":[]},{"state":"ACTIVE","number":6,"desc":"sw08.01-eth6","devices":[]},{"state":"ACTIVE","number":13,"desc":"sw08.01-eth13","devices":[]},{"state":"ACTIVE","number":19,"desc":"sw08.01-eth19","devices":[]},{"state":"ACTIVE","number":5,"desc":"sw08.01-eth5","devices":[]},{"state":"ACTIVE","number":18,"desc":"sw08.01-eth18","devices":[]},{"state":"ACTIVE","number":25,"desc":"sw08.01-eth25","devices":[]},{"state":"ACTIVE","number":7,"desc":"sw08.01-eth7","devices":[]},{"state":"ACTIVE","number":26,"desc":"tap08_1","devices":[]},{"state":"ACTIVE","number":8,"desc":"sw08.01-eth8","devices":[]},{"state":"ACTIVE","number":17,"desc":"sw08.01-eth17","devices":[]},{"state":"ACTIVE","number":2,"desc":"sw08.01-eth2","devices":[]},{"state":"ACTIVE","number":9,"desc":"sw08.01-eth9","devices":[]},{"state":"ACTIVE","number":10,"desc":"sw08.01-eth10","devices":[]},{"state":"ACTIVE","number":23,"desc":"sw08.01-eth23","devices":[]},{"state":"ACTIVE","number":16,"desc":"sw08.01-eth16","devices":[]},{"state":"ACTIVE","number":15,"desc":"sw08.01-eth15","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw08.01-eth1","devices":[]},{"state":"ACTIVE","number":24,"desc":"sw08.01-eth24","devices":[]},{"state":"ACTIVE","number":14,"desc":"sw08.01-eth14","devices":[]},{"state":"ACTIVE","number":21,"desc":"sw08.01-eth21","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw08.01-eth3","devices":[]},{"state":"ACTIVE","number":11,"desc":"sw08.01-eth11","devices":[]},{"state":"ACTIVE","number":4,"desc":"sw08.01-eth4","devices":[]}],"dpid":"00:00:00:00:00:00:08:01"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.35-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.35-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:23"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw04.13-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw04.13-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:04:0d"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.47-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.47-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:2f"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.34-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.34-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:22"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw4-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw4-eth1","devices":[]},{"state":"ACTIVE","number":3,"desc":"sw4-eth3","devices":[]},{"state":"ACTIVE","number":4,"desc":"tap01_4","devices":[]},{"state":"ACTIVE","number":5,"desc":"tap01_5","devices":[]}],"dpid":"00:00:00:00:00:00:ba:12"},{"state":"INACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw02.42-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw02.42-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:02:2a"},{"state":"ACTIVE","ports":[{"state":"ACTIVE","number":2,"desc":"sw03.18-eth2","devices":[]},{"state":"ACTIVE","number":1,"desc":"sw03.18-eth1","devices":[]}],"dpid":"00:00:00:00:00:00:03:12"}]
\ No newline at end of file
diff --git a/web/ons-demo/data/wm_registry_controllers_json.json b/web/ons-demo/data/wm_registry_controllers_json.json
index 18dc9b0..38b0907 100644
--- a/web/ons-demo/data/wm_registry_controllers_json.json
+++ b/web/ons-demo/data/wm_registry_controllers_json.json
@@ -1,6 +1 @@
-[
-    "onos9vpc",
-    "onos10vpc",
-    "onos11vpc",
-    "onos12vpc"
-]
\ No newline at end of file
+["onosgui1","onosgui2","onosgui3","onosgui4","onosgui5","onosgui6","onosgui7","onosgui8"]
\ No newline at end of file
diff --git a/web/ons-demo/data/wm_registry_switches_json.json b/web/ons-demo/data/wm_registry_switches_json.json
index da2e5aa..841cdb6 100644
--- a/web/ons-demo/data/wm_registry_switches_json.json
+++ b/web/ons-demo/data/wm_registry_switches_json.json
@@ -1,1022 +1 @@
-{
-    "00:00:00:00:00:00:01:00": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:01": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:02": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:03": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:04": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:05": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:06": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:07": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:08": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:09": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:0a": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:0b": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:0c": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:0d": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:0e": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:0f": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:10": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:11": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:12": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:13": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:14": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:15": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:16": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:17": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:18": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:19": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:1a": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:1b": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:1c": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:1d": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:1e": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:1f": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:20": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:21": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:22": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:23": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:24": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:25": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:26": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:27": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:28": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:29": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:2a": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:2b": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:2c": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:2d": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:2e": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:2f": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:30": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        }
-    ],
-    "00:00:00:00:00:00:01:31": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:00": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:01": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:02": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:03": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:04": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:05": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:06": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:07": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:08": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:09": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:0a": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:0b": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:0c": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:0d": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:0e": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:0f": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:10": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:11": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:12": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:02:13": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:00": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:01": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:02": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:03": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:04": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:05": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:06": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:07": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:08": [
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:09": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:0a": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:0b": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:0c": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:0d": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:0e": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:0f": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:10": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:11": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:12": [
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        },
-        {
-            "controllerId": "onos9vpc"
-        }
-    ],
-    "00:00:00:00:00:00:03:13": [
-        {
-            "controllerId": "onos9vpc"
-        },
-        {
-            "controllerId": "onos11vpc"
-        },
-        {
-            "controllerId": "onos10vpc"
-        }
-    ],
-    "00:00:00:16:97:08:9a:46": [
-        {
-            "controllerId": "onos12vpc"
-        }
-    ],
-    "00:00:00:00:ba:5e:ba:11": [
-        {
-            "controllerId": "onos12vpc"
-        }
-    ],
-    "00:00:00:08:a2:08:f9:01": [
-        {
-            "controllerId": "onos12vpc"
-        }
-    ],
-    "00:00:00:00:00:00:ba:12": [
-        {
-            "controllerId": "onos12vpc"
-        }
-    ],
-    "00:00:00:00:ba:5e:ba:13": [
-        {
-            "controllerId": "onos12vpc"
-        }
-    ],
-    "00:00:20:4e:7f:51:8a:35": [
-        {
-            "controllerId": "onos12vpc"
-        }
-    ]
-}
\ No newline at end of file
+{"00:00:00:00:00:00:02:08":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:09":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:16":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:15":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:18":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:17":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:07:0a":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:12":[{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:0b":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:11":[{"controllerId":"onosgui2"},{"controllerId":"onosgui7"}],"00:00:00:00:00:00:07:0c":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:14":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:07:0d":[{"controllerId":"onosgui7"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:13":[{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:0e":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:0f":[{"controllerId":"onosgui7"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:10":[{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:0f":[{"controllerId":"onosgui2"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:0d":[{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:0e":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:0b":[{"controllerId":"onosgui2"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:0c":[{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:0a":[{"controllerId":"onosgui2"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:19":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:29":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:28":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:27":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:26":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:25":[{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:24":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:23":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:22":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:21":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:20":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:07:02":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:01":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:04":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:03":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:17":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:18":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:19":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:13":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:14":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:09":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:15":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:16":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:06":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:10":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:05":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:11":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:08":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:12":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:07":[{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:16:97:08:9a:46":[{"controllerId":"onosgui1"},{"controllerId":"onosgui7"},{"controllerId":"onosgui8"},{"controllerId":"onosgui5"},{"controllerId":"onosgui6"},{"controllerId":"onosgui4"},{"controllerId":"onosgui2"},{"controllerId":"onosgui3"}],"00:00:00:00:00:00:04:10":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:11":[{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:12":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:13":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:14":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:15":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:16":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:17":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:18":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:19":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:15":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:14":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:13":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:12":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:11":[{"controllerId":"onosgui7"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:0a":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:0f":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:10":[{"controllerId":"onosgui7"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:0e":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:0d":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:0c":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:0e":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:0b":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:0d":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:0a":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:0c":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:0b":[{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:19":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:18":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:17":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:07:16":[{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:0f":[{"controllerId":"onosgui4"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:03":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:02":[{"controllerId":"onosgui2"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:01":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:07":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:06":[{"controllerId":"onosgui2"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:05":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:04":[{"controllerId":"onosgui2"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:0f":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:0e":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:0d":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:0c":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:0b":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:08:a2:08:f9:01":[{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:0a":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:11":[{"controllerId":"onosgui5"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:10":[{"controllerId":"onosgui5"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:13":[{"controllerId":"onosgui5"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:12":[{"controllerId":"onosgui5"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:15":[{"controllerId":"onosgui5"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:14":[{"controllerId":"onosgui5"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:17":[{"controllerId":"onosgui5"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:16":[{"controllerId":"onosgui5"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:19":[{"controllerId":"onosgui5"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:18":[{"controllerId":"onosgui5"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:01":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:05":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:04":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:03":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:02":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:09":[{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:08":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:07":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:0e":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:08:06":[{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:0f":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:0c":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:0d":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:0a":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:0b":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:02":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:01":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:06":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:05":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:04":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:03":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:09":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:08":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:05:07":[{"controllerId":"onosgui5"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:09":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:1b":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:1a":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:1d":[{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:1c":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:1f":[{"controllerId":"onosgui2"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:1e":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:30":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:31":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:03:11":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:32":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:03:10":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:13":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:12":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:15":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:14":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:17":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:16":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:19":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:18":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:2a":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:2e":[{"controllerId":"onosgui2"},{"controllerId":"onosgui5"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:02:2d":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:2c":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:2b":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:02:2f":[{"controllerId":"onosgui2"}],"00:00:00:00:00:00:03:04":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:03":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:02":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:01":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:08":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:07":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:06":[{"controllerId":"onosgui3"},{"controllerId":"onosgui8"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:03:05":[{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:ba:12":[{"controllerId":"onosgui1"}],"00:00:20:4e:7f:51:8a:35":[{"controllerId":"onosgui1"}],"00:00:00:00:ba:5e:ba:11":[{"controllerId":"onosgui1"}],"00:00:00:00:ba:5e:ba:13":[{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:03":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:02":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:05":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:04":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:07":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:06":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:09":[{"controllerId":"onosgui4"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:08":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:04:01":[{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui6"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:09":[{"controllerId":"onosgui6"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:08":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:05":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:04":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:07":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:06":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:01":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:03":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:02":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:0d":[{"controllerId":"onosgui6"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:0e":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:0f":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:0a":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:0b":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:0c":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:18":[{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:17":[{"controllerId":"onosgui6"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:16":[{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:15":[{"controllerId":"onosgui6"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:19":[{"controllerId":"onosgui6"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:10":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:14":[{"controllerId":"onosgui6"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:13":[{"controllerId":"onosgui6"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:12":[{"controllerId":"onosgui6"},{"controllerId":"onosgui8"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui1"}],"00:00:00:00:00:00:06:11":[{"controllerId":"onosgui6"},{"controllerId":"onosgui3"},{"controllerId":"onosgui7"},{"controllerId":"onosgui5"},{"controllerId":"onosgui2"},{"controllerId":"onosgui4"},{"controllerId":"onosgui8"},{"controllerId":"onosgui1"}]}
\ No newline at end of file
diff --git a/web/ons-demo/index.html b/web/ons-demo/index.html
index ef2cd65..36d50db 100644
--- a/web/ons-demo/index.html
+++ b/web/ons-demo/index.html
@@ -5,6 +5,7 @@
 	<link rel="stylesheet" href="css/skin.default.css" type="text/css"/>
 	<script src="js/d3.v3.js" charset="utf-8"></script>
 	<script src="js/async.js"></script>
+	<script src="js/utils.js"></script>
 	<script src="js/model.js"></script>
 </head>
 
@@ -15,22 +16,24 @@
 		<img id='logo' src='assets/logo.png'></img>
 	</div>
 	<div id='controllers'>
-		<div class='header'>Controllers</div>
+		<div class='header'>ONOS Nodes</div>
 		<div id='controllerList'></div>
 	</div>
 </div>
 
 <div id='right'>
 	<div class='header'>
-		<div id='status'>
-			<div class='status'><span class='static'>Last updated:</span><span id='lastUpdate' class='dynamic'>Mon Mar 18 11:11:12 PDT 2013</span></div>
-			<div class='status'><span class='dynamic' id='activeFlows'>4000</span><span class='static'>Flows</span></div>
-			<div class='status'><span class='dynamic' id='activeSwitches'>200</span><span class='static'>Active Switches</span></div>
+		<div id='status' class='top'>
+			<div class='status'><span class='dynamic' id='activeFlows'>????</span><span class='static'>Flows</span></div>
+			<div class='status'><span class='dynamic' id='activeSwitches'>???</span><span class='static'>Active Switches</span></div>
 		</div>
 		<div id='traceButton' class='button'>Trace</div>
 	</div>
 	<div id='selectedFlows'>Selected Flows</div>
-	<div id='topology'><div id='svg-container'> </div></div>
+	<div id='topology'>
+		<div id='svg-container'></div>
+		<div class='status bottom'><span class='static'>Last updated:</span><span id='lastUpdate' class='dynamic'>Mon Mar 18 11:11:12 PDT 2013</span></div>
+	</div>
 </div>
 
 
diff --git a/web/ons-demo/js/app.js b/web/ons-demo/js/app.js
index 6f259d0..2e9048d 100644
--- a/web/ons-demo/js/app.js
+++ b/web/ons-demo/js/app.js
@@ -1,5 +1,10 @@
 /*global d3*/
 
+d3.selection.prototype.moveToFront = function() {
+  return this.each(function(){
+    this.parentNode.appendChild(this);
+  });
+};
 
 var colors = [
 	'color1',
@@ -15,13 +20,26 @@
 	'color11',
 	'color12',
 ]
+colors.reverse();
 
 var controllerColorMap = {};
 
 
 
 function createTopologyView() {
-	return d3.select('#svg-container').append('svg:svg').append('svg:svg').attr('id', 'viewBox').attr('viewBox', '0 0 1000 1000').attr('preserveAspectRatio', 'none').
+	var svg = d3.select('#svg-container').append('svg:svg');
+
+	svg.append("svg:defs").append("svg:marker")
+	    .attr("id", "arrow")
+	    .attr("viewBox", "0 -5 10 10")
+	    .attr("refX", -1)
+	    .attr("markerWidth", 5)
+	    .attr("markerHeight", 5)
+	    .attr("orient", "auto")
+	  .append("svg:path")
+	    .attr("d", "M0,-3L10,0L0,3");
+
+	return svg.append('svg:svg').attr('id', 'viewBox').attr('viewBox', '0 0 1000 1000').attr('preserveAspectRatio', 'none').
 			attr('id', 'viewbox').append('svg:g').attr('transform', 'translate(500 500)');
 }
 
@@ -35,9 +53,7 @@
   return angle * (Math.PI / 180);
 }
 
-function updateTopology(svg, model) {
-
-	// DRAW THE NODES
+function createRingsFromModel(model) {
 	var rings = [{
 		radius: 3,
 		width: 6,
@@ -70,7 +86,7 @@
 
 		// record the angle for the agg switch layout
 		var dpid = s.dpid.split(':');
-		dpid[7] = '00';
+		dpid[7] = '01'; // the last component of the agg switch is always '01'
 		var aggdpid = dpid.join(':');
 		var aggRange = aggRanges[aggdpid];
 		if (!aggRange) {
@@ -79,8 +95,6 @@
 		} else {
 			aggRange.max = angle;
 		}
-
-
 	});
 
 	// arrange aggregation switches to "fan out" to edge switches
@@ -92,92 +106,228 @@
 		rings[1].angles[i] = (range.min + range.max)/2;
 	});
 
-	// arrange core switches at equal increments
-	k = 360 / rings[2].switches.length;
-	rings[2].switches.forEach(function (s, i) {
-		rings[2].angles[i] = k * i;
+	// find the association between core switches and aggregation switches
+	var aggregationSwitchMap = {};
+	model.aggregationSwitches.forEach(function (s, i) {
+		aggregationSwitchMap[s.dpid] = i;
 	});
 
+	// put core switches next to linked aggregation switches
+	k = 360 / rings[2].switches.length;
+	rings[2].switches.forEach(function (s, i) {
+//		rings[2].angles[i] = k * i;
+		var associatedAggregationSwitches = model.configuration.association[s.dpid];
+		// TODO: go between if there are multiple
+		var index = aggregationSwitchMap[associatedAggregationSwitches[0]];
+
+		rings[2].angles[i] = rings[1].angles[index];
+	});
+
+	// TODO: construct this form initially rather than converting. it works better because
+	// it allows binding by dpid
+	var testRings = [];
+	rings.forEach(function (ring) {
+		var testRing = [];
+		ring.switches.forEach(function (s, i) {
+			var testSwitch = {
+				dpid: s.dpid,
+				state: s.state,
+				radius: ring.radius,
+				width: ring.width,
+				className: ring.className,
+				angle: ring.angles[i],
+				controller: s.controller
+			}
+			testRing.push(testSwitch);
+		});
+
+
+		testRings.push(testRing);
+	});
+
+
+//	return rings;
+	return testRings;
+}
+
+function updateTopology(svg, model) {
+
+	// DRAW THE SWITCHES
+	var rings = svg.selectAll('.ring').data(createRingsFromModel(model));
+
 	function ringEnter(data, i) {
-		if (!data.switches.length) {
+		if (!data.length) {
 			return;
 		}
 
-
+		// create the nodes
 		var nodes = d3.select(this).selectAll("g")
-			.data(d3.range(data.switches.length).map(function() {
-				return data;
-			}))
+			.data(data, function (data) {
+				return data.dpid;
+			})
 			.enter().append("svg:g")
 			.classed('nolabel', true)
-			.attr("id", function (_, i) {
-				return data.switches[i].dpid;
+			.attr("id", function (data, i) {
+				return data.dpid;
 			})
-			.attr("transform", function(_, i) {
-				return "rotate(" + data.angles[i]+ ")translate(" + data.radius * 150 + ")rotate(" + (-data.angles[i]) + ")";
+			.attr("transform", function(data, i) {
+				return "rotate(" + data.angle+ ")translate(" + data.radius * 150 + ")rotate(" + (-data.angle) + ")";
 			});
 
+		// add the cirles representing the switches
 		nodes.append("svg:circle")
-			.attr('class', function (_, i)  {
-				return data.className + ' ' + controllerColorMap[data.switches[i].controller];
-			})
-			.attr("transform", function(_, i) {
+			.attr("transform", function(data, i) {
 				var m = document.querySelector('#viewbox').getTransformToElement().inverse();
 				if (data.scale) {
 					m = m.scale(data.scale);
 				}
 				return "matrix( " + m.a + " " + m.b + " " + m.c + " " + m.d + " " + m.e + " " + m.f + " )";
 			})
-			.attr("x", -data.width / 2)
-			.attr("y", -data.width / 2)
-			.attr("r", data.width)
-			// .attr("fill", function (_, i) {
-			// 	return controllerColorMap[data.switches[i].controller]
-			// })
+			.attr("x", function (data) {
+				return -data.width / 2;
+			})
+			.attr("y", function (data) {
+				return -data.width / 2;
+			})
+			.attr("r", function (data) {
+				return data.width;
+			})
 
-		nodes.append("svg:text")
-				.text(function (d, i) {return d.switches[i].dpid})
-				.attr("x", 0)
-				.attr("y", 0)
-				.attr("transform", function(_, i) {
-					var m = document.querySelector('#viewbox').getTransformToElement().inverse();
-					if (data.scale) {
-						m = m.scale(data.scale);
-					}
-					return "matrix( " + m.a + " " + m.b + " " + m.c + " " + m.d + " " + m.e + " " + m.f + " )";
-				})
-
+		// setup the mouseover behaviors
 		function showLabel(data, index) {
-			d3.select(document.getElementById(data.switches[index].dpid)).classed('nolabel', false);
+			d3.select(document.getElementById(data.dpid + '-label')).classed('nolabel', false);
 		}
 
 		function hideLabel(data, index) {
-			d3.select(document.getElementById(data.switches[index].dpid)).classed('nolabel', true);
+			d3.select(document.getElementById(data.dpid + '-label')).classed('nolabel', true);
 		}
 
 		nodes.on('mouseover', showLabel);
 		nodes.on('mouseout', hideLabel);
 	}
 
-	var ring = svg.selectAll("g")
-		.data(rings)
-		.enter().append("svg:g")
+	// append switches
+	rings.enter().append("svg:g")
 		.attr("class", "ring")
 		.each(ringEnter);
 
 
+	function ringUpdate(data, i) {
+		nodes = d3.select(this).selectAll("g")
+			.data(data, function (data) {
+				return data.dpid;
+			})
+		nodes.select('circle').attr('class', function (data, i)  {
+				if (data.state == 'ACTIVE') {
+					return data.className + ' ' + controllerColorMap[data.controller];
+				} else {
+					return data.className + ' ' + 'colorInactive';
+				}
+			})
+	}
+
+	// update  switches
+	rings.each(ringUpdate);
+
+
+	// Now setup the labels
+	// This is done separately because SVG draws in node order and we want the labels
+	// always on top
+	var labelRings = svg.selectAll('.labelRing').data(createRingsFromModel(model));
+
+	function labelRingEnter(data) {
+		if (!data.length) {
+			return;
+		}
+
+		// create the nodes
+		var nodes = d3.select(this).selectAll("g")
+			.data(data, function (data) {
+				return data.dpid;
+			})
+			.enter().append("svg:g")
+			.classed('nolabel', true)
+			.attr("id", function (data) {
+				return data.dpid + '-label';
+			})
+			.attr("transform", function(data, i) {
+				return "rotate(" + data.angle+ ")translate(" + data.radius * 150 + ")rotate(" + (-data.angle) + ")";
+			});
+
+		// add the text nodes which show on mouse over
+		nodes.append("svg:text")
+				.text(function (data) {return data.dpid})
+				.attr("x", function (data) {
+					if (data.angle <= 90 || data.angle >= 270 && data.angle <= 360) {
+						if (data.className == 'edge') {
+							return - data.width*3 - 4;
+						} else {
+							return - data.width - 4;
+						}
+					} else {
+						if (data.className == 'edge') {
+							return data.width*3 + 4;
+						} else {
+							return data.width + 4;
+						}
+					}
+				})
+				.attr("y", function (data) {
+					var y;
+					if (data.angle <= 90 || data.angle >= 270 && data.angle <= 360) {
+						if (data.className == 'edge') {
+							y = data.width*3/2 + 4;
+						} else {
+							y = data.width/2 + 4;
+						}
+					} else {
+						if (data.className == 'edge') {
+							y = data.width*3/2 + 4;
+						} else {
+							y = data.width/2 + 4;
+						}
+					}
+					return y - 6;
+				})
+				.attr("text-anchor", function (data) {
+					if (data.angle <= 90 || data.angle >= 270 && data.angle <= 360) {
+						return "end";
+					} else {
+						return "start";
+					}
+				})
+				.attr("transform", function(data) {
+					var m = document.querySelector('#viewbox').getTransformToElement().inverse();
+					if (data.scale) {
+						m = m.scale(data.scale);
+					}
+					return "matrix( " + m.a + " " + m.b + " " + m.c + " " + m.d + " " + m.e + " " + m.f + " )";
+				})
+	}
+
+	labelRings.enter().append("svg:g")
+		.attr("class", "textRing")
+		.each(labelRingEnter);
+
+
+	// switches should not change during operation of the ui so no
+	// rings.exit()
+
+
 	// do mouseover zoom on edge nodes
 	function zoom(data, index) {
-		var g = d3.select(document.getElementById(data.switches[index].dpid)).select('circle');
-			g.transition().duration(100).attr("r", rings[0].width*3);
+		var g = d3.select(document.getElementById(data.dpid)).select('circle');
+			g.transition().duration(100).attr("r", data.width*3);
+			// TODO: this doesn't work because the data binding is by index
+			d3.select(this.parentNode).moveToFront();
 	}
 
 	svg.selectAll('.edge').on('mouseover', zoom);
 	svg.selectAll('.edge').on('mousedown', zoom);
 
 	function unzoom(data, index) {
-		var g = d3.select(document.getElementById(data.switches[index].dpid)).select('circle');
-			g.transition().duration(100).attr("r", rings[0].width);
+		var g = d3.select(document.getElementById(data.dpid)).select('circle');
+			g.transition().duration(100).attr("r", data.width);
 	}
 	svg.selectAll('.edge').on('mouseout', unzoom);
 
@@ -189,55 +339,98 @@
 	    })
 	    .y(function(d) {
 	    	return d.y;
-	    })
-	    .interpolate("basis");
+	    });
+//	    .interpolate("basis");
 
-	d3.select('svg').selectAll('path').data(model.links).enter().append("svg:path").attr("d", function (d) {
+	// key on link dpids since these will come/go during demo
+	var links = d3.select('svg').selectAll('.link').data(model.links, function (d) {
+			return d['src-switch']+'->'+d['dst-switch'];
+	});
+
+	// add new links
+	links.enter().append("svg:path")
+	.attr("class", "link")
+	.attr("d", function (d) {
+
 		var src = d3.select(document.getElementById(d['src-switch']));
 		var dst = d3.select(document.getElementById(d['dst-switch']));
 
 		var srcPt = document.querySelector('svg').createSVGPoint();
 		srcPt.x = src.attr('x');
 		srcPt.y = src.attr('y');
+		srcPt = srcPt.matrixTransform(src[0][0].getCTM());
 
 		var dstPt = document.querySelector('svg').createSVGPoint();
 		dstPt.x = dst.attr('x');
-		dstPt.y = dst.attr('y');
+		dstPt.y = dst.attr('y'); // tmp: make up and down links distinguishable
+		dstPt = dstPt.matrixTransform(dst[0][0].getCTM());
 
-		return line([srcPt.matrixTransform(src[0][0].getCTM()), dstPt.matrixTransform(dst[0][0].getCTM())]);
-	});
+		var midPt = document.querySelector('svg').createSVGPoint();
+		midPt.x = (srcPt.x + dstPt.x)/2;
+		midPt.y = (srcPt.y + dstPt.y)/2;
+
+		return line([srcPt, midPt, dstPt]);
+	})
+	.attr("marker-mid", function(d) { return "url(#arrow)"; });
+
+	// remove old links
+	links.exit().remove();
+
 }
 
 function updateControllers(model) {
 	var controllers = d3.select('#controllerList').selectAll('.controller').data(model.controllers);
 	controllers.enter().append('div')
-		.attr('class', function (d) {
-			var color = controllerColorMap[d];
-			if (!color) {
-				color = controllerColorMap[d] = colors.pop();
-			}
-			return 'controller ' + color;
+		.each(function (c) {
+			controllerColorMap[c] = colors.pop();
+			d3.select(document.body).classed(controllerColorMap[c] + '-selected', true);
+		})
+		.text(function (d) {
+			return d;
 		});
-	controllers.text(function (d) {
-		return d;
-	});
-	controllers.exit().remove();
 
-	model.controllers.forEach(function (c) {
-		d3.select(document.body).classed(controllerColorMap[c] + '-selected', true);
-	});
+	controllers.attr('class', function (d) {
+			var color = 'colorInactive';
+			if (model.activeControllers.indexOf(d) != -1) {
+				color = controllerColorMap[d];
+			}
+			var className = 'controller ' + color;
+			return className;
+		});
+
+	// this should never be needed
+	// controllers.exit().remove();
 
 	controllers.on('click', function (c, index) {
-		var selected = d3.select(document.body).classed(controllerColorMap[c] + '-selected');
-		d3.select(document.body).classed(controllerColorMap[c] + '-selected', !selected);
+		var allSelected = true;
+		for (var key in controllerColorMap) {
+			if (!d3.select(document.body).classed(controllerColorMap[key] + '-selected')) {
+				allSelected = false;
+				break;
+			}
+		}
+		if (allSelected) {
+			for (var key in controllerColorMap) {
+				d3.select(document.body).classed(controllerColorMap[key] + '-selected', key == c)
+			}
+		} else {
+			for (var key in controllerColorMap) {
+				d3.select(document.body).classed(controllerColorMap[key] + '-selected', true)
+			}
+		}
+
+		// var selected = d3.select(document.body).classed(controllerColorMap[c] + '-selected');
+		// d3.select(document.body).classed(controllerColorMap[c] + '-selected', !selected);
 	});
 }
 
 var oldModel;
 function sync(svg) {
+	var d = Date.now();
 	updateModel(function (newModel) {
+		console.log('Update time: ' + (Date.now() - d)/1000 + 's');
 
-		if (!oldModel && JSON.stringify(oldModel) != JSON.stringify(newModel)) {
+		if (!oldModel || JSON.stringify(oldModel) != JSON.stringify(newModel)) {
 			updateControllers(newModel);
 			updateTopology(svg, newModel);
 		} else {
@@ -254,4 +447,14 @@
 	});
 }
 
-sync(createTopologyView());
\ No newline at end of file
+svg = createTopologyView();
+// workaround for Chrome v25 bug
+// if executed immediately, the view box transform logic doesn't work properly
+// fixed in Chrome v27
+setTimeout(function () {
+	// workaround for another Chrome v25 bug
+	// viewbox transform stuff doesn't work in combination with browser zoom
+	// also works in Chrome v27
+	d3.select('#svg-container').style('zoom',  window.document.body.clientWidth/window.document.width);
+	sync(svg);
+}, 100);
diff --git a/web/ons-demo/js/model.js b/web/ons-demo/js/model.js
index ad45469..94bbdfe 100644
--- a/web/ons-demo/js/model.js
+++ b/web/ons-demo/js/model.js
@@ -5,9 +5,11 @@
 		edgeSwitches: [],
 		aggregationSwitches: [],
 		coreSwitches: [],
-		flows: results.flows,
+		flows: [],
 		controllers: results.controllers,
-		links: results.links
+		activeControllers: results.activeControllers,
+		links: results.links,
+		configuration: results.configuration
 	}
 
 	// sort the switches
@@ -16,7 +18,7 @@
 		var bB = b.dpid.split(':');
 		for (var i=0; i<aA.length; i+=1) {
 			if (aA[i] != bB[i]) {
-				return aA[i] - bB[i];
+				return parseInt(aA[i], 16) - parseInt(bB[i], 16);
 			}
 		}
 		return 0;
@@ -34,7 +36,10 @@
 	});
 
 	results.switches.forEach(function (s) {
-		s.controller = results.mapping[s.dpid][0].controllerId;
+		var mapping = results.mapping[s.dpid]
+		if (mapping) {
+			s.controller = mapping[0].controllerId;
+		}
 
 		if (coreSwitchDPIDs[s.dpid]) {
 			model.coreSwitches.push(s);
@@ -48,41 +53,73 @@
 	return model;
 }
 
+var urls = {
+	links: '/wm/core/topology/links/json',
+	switches: '/wm/core/topology/switches/all/json',
+	flows: '/wm/flow/getall/json',
+	activeControllers: '/wm/registry/controllers/json',
+	controllers: 'data/controllers.json',
+	mapping: '/wm/registry/switches/json',
+	configuration: 'data/configuration.json'
+}
+
+var mockURLs = {
+	links: 'data/wm_core_topology_links_json.json',
+	switches: 'data/wm_core_topology_switches_all_json.json',
+	flows: 'data/wm_flow_getall_json.json',
+	activeControllers: 'data/wm_registry_controllers_json.json',
+	controllers: 'data/controllers.json',
+	mapping: 'data/wm_registry_switches_json.json',
+	configuration: 'data/configuration.json'
+}
+
+var proxyURLs = {
+	links: '/wm/core/topology/links/json?proxy',
+	switches: '/wm/core/topology/switches/all/json?proxy',
+	flows: '/wm/flow/getall/json?proxy',
+	activeControllers: '/wm/registry/controllers/json?proxy',
+	controllers: 'data/controllers.json',
+	mapping: '/wm/registry/switches/json?proxy',
+	configuration: 'data/configuration.json'
+}
+
+var params = parseURLParameters();
+if (params.mock) {
+	urls = mockURLs;
+}
+if (params.proxy) {
+	urls = proxyURLs;
+}
+
+function makeRequest(url) {
+	return function (cb) {
+		d3.json(url, function (error, result) {
+			if (error) {
+				error = url + ' : ' + error.status;
+			}
+
+			cb(error, result);
+		});
+	}
+}
+
+
 function updateModel(cb) {
 	async.parallel({
-	    links: function(cb) {
-			d3.json('data/wm_core_topology_links_json.json', function (error, result) {
-				cb(error, result);
-			});
-	    },
-	    switches: function(cb) {
-			d3.json('data/wm_core_topology_switches_all_json.json', function (error, result) {
-				cb(error, result);
-			});
-	    },
-	    flows: function(cb) {
-			d3.json('data/wm_flow_getall_json.json', function (error, result) {
-				cb(error, result);
-			});
-	    },
-	    controllers: function(cb) {
-			d3.json('data/wm_registry_controllers_json.json', function (error, result) {
-				cb(error, result);
-			});
-	    },
-	    mapping: function(cb) {
-			d3.json('data/wm_registry_switches_json.json', function (error, result) {
-				cb(error, result);
-			});
-	    },
-	    configuration: function(cb) {
-			d3.json('data/configuration.json', function (error, result) {
-				cb(error, result);
-			});
-	    },
+	    links: makeRequest(urls.links),
+	    switches: makeRequest(urls.switches),
+	    controllers: makeRequest(urls.controllers),
+	    activeControllers: makeRequest(urls.activeControllers),
+	    mapping: makeRequest(urls.mapping),
+	    configuration: makeRequest(urls.configuration)
+//	    flows: makeRequest(urls.flows),
 	},
 	function(err, results) {
-		var model = toD3(results);
-		cb(model);
+		if (!err) {
+			var model = toD3(results);
+			cb(model);
+		} else {
+			alert(JSON.stringify(err));
+		}
 	});
-}
\ No newline at end of file
+}
diff --git a/web/ons-demo/js/utils.js b/web/ons-demo/js/utils.js
new file mode 100644
index 0000000..17100b1
--- /dev/null
+++ b/web/ons-demo/js/utils.js
@@ -0,0 +1,14 @@
+function parseURLParameters() {
+	var parameters = {};
+
+	var search = location.href.split('?')[1];
+	if (search) {
+		search.split('&').forEach(function (param) {
+			var key = param.split('=')[0];
+			var value = param.split('=')[1];
+			parameters[key] = decodeURIComponent(value);
+		});
+	}
+
+	return parameters;
+}
\ No newline at end of file
diff --git a/web/restapi2.py b/web/restapi2.py
index 93404b4..c9952ac 100755
--- a/web/restapi2.py
+++ b/web/restapi2.py
@@ -53,6 +53,103 @@
 
   return response
 
+## PROXY API (allows development where the webui is served from someplace other than the controller)##
+ONOS_GUI3_HOST="http://gui3.onlab.us:8080"
+ONOS_LOCAL_HOST="http://localhost:8080" ;# for Amazon EC2
+
+@app.route("/wm/core/topology/switches/all/json")
+def switches():
+  if request.args.get('proxy') == None:
+    host = ONOS_LOCAL_HOST
+  else:
+    host = ONOS_GUI3_HOST
+
+  try:
+    command = "curl -s %s/wm/core/topology/switches/all/json" % (host)
+    print command
+    result = os.popen(command).read()
+  except:
+    print "REST IF has issue"
+    exit
+
+  resp = Response(result, status=200, mimetype='application/json')
+  return resp
+
+@app.route("/wm/core/topology/links/json")
+def links():
+  if request.args.get('proxy') == None:
+    host = ONOS_LOCAL_HOST
+  else:
+    host = ONOS_GUI3_HOST
+
+  try:
+    command = "curl -s %s/wm/core/topology/links/json" % (host)
+    print command
+    result = os.popen(command).read()
+  except:
+    print "REST IF has issue"
+    exit
+
+  resp = Response(result, status=200, mimetype='application/json')
+  return resp
+
+@app.route("/wm/flow/getall/json")
+def flows():
+  if request.args.get('proxy') == None:
+    host = ONOS_LOCAL_HOST
+  else:
+    host = ONOS_GUI3_HOST
+
+  try:
+    command = "curl -s %s/wm/flow/getall/json" % (host)
+    print command
+    result = os.popen(command).read()
+  except:
+    print "REST IF has issue"
+    exit
+
+  resp = Response(result, status=200, mimetype='application/json')
+  return resp
+
+@app.route("/wm/registry/controllers/json")
+def registry_controllers():
+  if request.args.get('proxy') == None:
+    host = ONOS_LOCAL_HOST
+  else:
+    host = ONOS_GUI3_HOST
+
+  try:
+    command = "curl -s %s/wm/registry/controllers/json" % (host)
+    print command
+    result = os.popen(command).read()
+  except:
+    print "REST IF has issue"
+    exit
+
+  resp = Response(result, status=200, mimetype='application/json')
+  return resp
+
+@app.route("/wm/registry/switches/json")
+def registry_switches():
+  if request.args.get('proxy') == None:
+    host = ONOS_LOCAL_HOST
+  else:
+    host = ONOS_GUI3_HOST
+
+  try:
+    command = "curl -s %s/wm/registry/switches/json" % (host)
+    print command
+    result = os.popen(command).read()
+  except:
+    print "REST IF has issue"
+    exit
+
+  resp = Response(result, status=200, mimetype='application/json')
+  return resp
+
+
+
+
 ## REST API ##
 #@app.route("/wm/topology/links/json")
 #def links():
@@ -253,7 +350,7 @@
 
 if __name__ == "__main__":
     app.debug = True
-    app.run(host="0.0.0.0", port=9000)
+    app.run(threaded=True, host="0.0.0.0", port=9000)
 #  query_switch()
 #   query_links()
 #  devices()