Giter Site home page Giter Site logo

json's People

Contributors

arcanez avatar briandfoy avatar cebjyre avatar charsbar avatar chorny avatar dams avatar davidcantrelluk2 avatar dolmen avatar dsteinbrunner avatar gfx avatar jkeenan avatar makamaka avatar mbeijen avatar midlifexis avatar miyagawa avatar olof avatar perlover avatar solid-lambert avatar topaz avatar yanick avatar zoffixznet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

json's Issues

How to handle inf/nan

I got this ticket: rurban/Cpanel-JSON-XS#28
"inf and nan encoded as invalid JSON"

I know that inf and nan are not encodable in JSON, but inf or nan are invalid JavaScript.
perl -MJSON -e'print encode_json([9**9**9])'
=> [inf]

Other JSON libraries encode it as null, and Mojo::JSON stepped forward by stringifying it.
I have no opinion, but either one of those solution would be better than the invalid inf or nan,
we currently have.

$json->boolean_values documentation issue

Doc states:
$json->boolean_values([ $false, $true ]);

But this is incorrect. Correct call is:
$json->boolean_values( $false, $true );

I also suggest including some indication the above call mutates $json. This is to differentiate from other methods that follow $json = $json->some_method( ... );. In fact, $json = $json->boolean_values( ... ); returns the values set, therefore destroying $json.

Test:

use JSON 4.01;

my $json = JSON->new;
$json->boolean_values( 0, 1 );
is( $json->true, 1 );
is( $json->false, 0 );

my $true = $json->decode( '{"value" : true }' );
is( ref($true->{'value'}, '' );
is( $true->{'value'}, 1 );

my $false = $json->decode( '{"value" : false }' );
is( ref($false->{'value'}, '' );
is( $false->{'value'}, 0 );

Can we support refs to "bool"?

Perl has a special boolean false, which is simply a dualvar, zero in numeric context and the empty string in string context. You can get it from !! 0.

JSON supports \0 and \1 as shortcuts to JSON::true and JSON::false, but it would be very helpful if it could detect a ref to this dualvar and resolve accordingly.

That would turn constructs like this

($value ? \1 : \0)

into

(!! $value)

Which, although mildly awkward, seems like the sort of idiom we get in Perl, and is understandable after the first encounter.

Please DO NOT CHANGE DEFAULT VALUES

As expressed on irc, the entire point of a wrapper around the various backends is to provide a consistent experience no matter which backend + version the user has installed. To change the default behaviour now would break some applications and defeats the entire purpose.

Please, I implore you, remove this release on cpan.

see also makamaka/JSON-PP#40

cc @charsbar

$jsonObj->pretty->encode($tempAA{'attr'} seems to return sub elements in random order - please advise how to get sorted list of elements

version:
PERLBREW_PATH: /root/perl5/perlbrew/bin:/root/perl5/perlbrew/perls/perl-5.36.0/bin
PERLBREW_MANPATH: /root/perl5/perlbrew/perls/perl-5.36.0/man

Module: JSON
Location: /root/perl5/perlbrew/perls/perl-5.36.0/lib/site_perl/5.36.0/JSON.pm
Version: 4.10

Module: JSON::MaybeXS
Location: /root/perl5/perlbrew/perls/perl-5.36.0/lib/site_perl/5.36.0/JSON/MaybeXS.pm
Version: 1.004004

Module: JSON::Parse
Location: /root/perl5/perlbrew/perls/perl-5.36.0/lib/site_perl/5.36.0/x86_64-linux/JSON/Parse.pm
Version: 0.62

Module: JSON::XS
Location: /root/perl5/perlbrew/perls/perl-5.36.0/lib/site_perl/5.36.0/x86_64-linux/JSON/XS.pm
Version: 4.03

Module: Test::Deep::JSON
Location: /root/perl5/perlbrew/perls/perl-5.36.0/lib/site_perl/5.36.0/Test/Deep/JSON.pm
Version: 0.05

Sample code used to demonstrate the problem.
original JSON:
{"attr":{"remote":"str1","uuid":{"uuid":{"$uuid":"a1"}},"connectionId":16,"connectionCount":1}
}

in each case the tags in the original JSON have the same order.
the JSON is read using this code:

``
my (%tempAA) = (); my($tempJsonAARef) = undef;
try
{
$tempJsonAARef = from_json($line);
} catch
{
if ( $_ =~ /malformed JSON string/ )
{

print STDERR PACKAGE." ".LINE." No JSON content in line: $line error: $\n" if $ =~ /malformed JSON string/;

	} else
	{
		print STDERR __PACKAGE__." ".__LINE__."  Error when processing from_json error: $_\n";
	}
};
%tempAA = %$tempJsonAARef if ref($tempJsonAARef) eq "HASH";

my ($jsonObj) = JSON->new->allow_nonref;
my ($prettyStr) = $jsonObj->pretty->encode($tempAA{'attr'});

The pretty print output below shows the structure of the hash

pretty print version of the hash
'Connection accepted {
'uuid' : {
'uuid' : {
'$uuid' : 'a1'
}
},
'remote' : 'str1',
'connectionCount' : 1,
'connectionId' : 16
}
``

in this example the ids are listed in the following order: uuid, remote, connectionCount, connectionId

in the examples below the {. indicates where the carriage returns have been stripped out.

'Connection accepted {. 'uuid' : {. 'uuid' : {. '$uuid' : 'a2'. }. },. 'connectionId' : 17,. 'connectionCount' : 1,. 'remote' : 'str2'.}.

order here is:
in this example the ids are listed in the following order: uuid, connectionId, connectionCount, remote

'Connection accepted {. 'uuid' : {. 'uuid' : {. '$uuid' : 'a3'. }. },. 'connectionId' : 18,. 'remote' : 'str3',. 'connectionCount' : 1.}.

in this example the ids are listed in the following order: uuid, connectionId, remote, connectionCount

'Connection accepted {. 'uuid' : {. 'uuid' : {. '$uuid' : 'a4'. }. },. 'connectionCount' : 1,. 'remote' : 'str4',. 'connectionId' : 19.}.

in this example the ids are listed in the following order: uuid, connectionCount, remote, connectionId

In my case the pretty print text is logged a single string so the users can review them.
However it isn't possible to look at the entries and immediately see if the values of the fields are different because the order is different in every case.

In some cases the comparisons could be performed by the user in a non-Perl environment e.g. Excel.

==
I understand that changing the existing code would risk breaking existing code.

The request is to provide a method / option that allows the order of the keys to be defined e.g. the keys must be sorted.
It appears that the values are being retrieved from the hash in a random order.
adding the option to return the keys in a sorted order would add a lot of value when performing comparisons.

If I have missed a setting/misunderstood how to use this then please advise me on how to change my code to get the desired results.

thanks

neither allow_blessed nor convert_blessed settings are enabled

I have a class named FactSet which contains an array of objects of class Fact. I tried to implement a method like this for FactSet:

sub TO_JSON {
         JSON->new->utf8->allow_blessed->convert_blessed->encode( $_[0]->facts );
 }

The items inside $_[0]->facts are blessed objects of class Fact and this class implements a TO_JSON method. However, when I try to call $fact_set->TO_JSON I get

encountered object 'SNMP::Class::Fact=HASH(0x803b9c7b0)', but neither allow_blessed nor convert_blessed settings are enabled at ...

Is this normal? Should it not descend into the array and convert each object by using its TO_JSON method ?

JSON::PP::_looks_like_number is fail.

The following code will fail.

perl -MJSON -e '$a={a=>10, b=>20}; $a->{a} eq "" ; print encode_json($a), "\n";'

->

{"a":"10","b":20}

Data::Dumper is not fail.

perl -MData::Dumper -e '$a={a=>10, b=>20}; $a->{a} eq "" ; print Dumper($a), "\n";'
$VAR1 = {
      'a' => 10,
      'b' => 20
    };

Even if it is not "eq", if you execute the string operation in general, the output changes without assigning it.

Create a 'use_overload' option

Some objects overload numification or stringification, but don't have a TO_JSON method. It would be nice for those objects to be encoded without having to monkey patch a TO_JSON method for them. The one that pops to mind is URI, but there are others.

The following code would go somewhere in object_to_json, and should work for this.

if ( $use_overload && overload::Overloaded($obj) ) {
    if ( my $overload = overload::Method( $obj, '0+' )
                     || overload::Method( $obj, '""' ) )
    {
        return $self->value_to_json( $obj->$overload() );
    }
}

There would also be a sub to turn on/off the feature, and require overload; when it is enabled.

Allow stringification of objects

An idea I had was to allow the stringification of objects in some form that comes out as a readable string, which could be reinterpreted back as the object.

Consider the following object:

my $obj = bless( { foo => 1, bar => 'baz' }, 'My::Object' );

After a say $json->encode([$obj]); with the right options enabled, it would produce something like:

["My::Object={\"bar\":\"baz\",\"foo\":1}"]

The code seems fairly straightforward, going into object_to_json:

if ( $stringify ) {
    my $string = ref($obj);
    my $type = Scalar::Util::reftype($obj);
    if ( $type eq 'SCALAR' ) {
        $string .= '=' . $self->value_to_json($$obj);
    }
    elsif ( $type eq 'ARRAY' ) {
        $string .= '=' . $self->array_to_json($obj);
    }
    elsif ( $type eq 'HASH' ) {
        $string .= '=' . $self->hash_to_json($obj);
    }
    return $self->value_to_hash($string);
}

Suggested improvement on errror reporting

In JSON, when encoding, and when dealing with a blessed object and all attempts have failed, the module yields something like: encountered object 'XXX', but neither allow_blessed, convert_blessed nor allow_tags settings are enabled (or TO_JSON/FREEZE method missing) where XXX is the object reference.

When the object has overload stringification capability, this error message becomes unhelpful, because we do not know the source of the issue, i.e. which package is at fault. Thus, I would recommend changing the error to use overload::StrVal( $obj ). Maybe something like:

encode_error( sprintf("encountered object '%s', but neither allow_blessed, convert_blessed nor allow_tags settings are enabled (or TO_JSON/FREEZE method missing)", overload::StrVal($obj))

JSON error handling improvement

Hi!

use JSON;

my $foo = JSON::from_json('{blah}');

$ perl /tmp/a.pl
'"' expected, at character offset 1 (before "blah}") at JSON.pm line 198.

This makes it look like there's an error in JSON.pm, due to a die()

Or

use JSON;

my $foo = JSON::to_json(\*STDERR);

$ perl /tmp/a.pl
cannot encode reference to scalar 'GLOB(0x558052844fd0)' unless the scalar is 0 or 1 at JSON.pm line 176.

Attached patch to kick errors back to the caller, referencing the caller stack location instead

diff --git a/lib/JSON.pm b/lib/JSON.pm
index 3e644cc..39d7b1f 100644
--- a/lib/JSON.pm
+++ b/lib/JSON.pm
@@ -170,7 +170,12 @@ sub to_json ($@) {
         }
     }

-    $json->encode($_[0]);
+   my $result;
+   eval { $result = $json->encode($_[0]); };
+
+   Carp::croak "to_json: "  . $@ if ($@);
+
+   return $result;
 }


@@ -187,7 +192,12 @@ sub from_json ($@) {
         }
     }

-    return $json->decode( $_[0] );
+    my $result;
+    eval { $result = $json->decode( $_[0] ) };
+
+    Carp::croak "from_json: "  . $@ if ($@);
+
+    return $result;
 }

Now we have a nice error:

$ perl test_json.pl
from_json: '"' expected, at character offset 1 (before "blah}") at JSON.pm line 196.
 at test_json.pl line 4.

json_croak.master.ebbae18.zip

Option to downgrade booleans to 0 and 1

In my tests I have to do something like this:

for (values $href) {
  $_ = int !!$_ if JSON::is_bool($_);
}

So that Test::Differences::eq_or_diff doesn't consider the blessed boolean thingies to be different from the 0 and 1 (or \0 and \1) I'm using in the first place.

A setting that downgrades the true and false atoms to simple scalars (perhaps customisable) would be very useful in this situation.

JSON::XS and JSON::PP pass along different contexts

JSON exports a decode_json that it chooses from either the preferred installed JSON parser or an acceptable one that the user provides. However, decode_json from JSON::XS and JSON::PP act slightly differently.

The first question is how JSON might want to handle this. Reading through previous bug reports, I've seen that JSON might not want to track divergent interfaces.

I'd think that the most user-friendly solution is to make decode_json act the same way despite the backend. On the development side that's a bit hairy.

The problem

In I don't want no 'wantarray', Juho Snellman notes that if decode_json uses a function call as its argument, the backend matters because JSON::XS and JSON::PP use different contexts for their argument list. JSON::XS uses scalar context but JSON::PP uses list context. Unfortunately, he used File::Slurp::read_file and was bit by its context-sensitive return value:

#!/usr/bin/perl
use v5.26;

use JSON::XS ();
use JSON::PP ();

say "JSON::XS " . JSON::XS->VERSION . " ------------";
my $ds_xs = eval { JSON::XS::decode_json read_file() };
say "Error: $@\n" if $@;

say "JSON::PP " . JSON::PP->VERSION . " ------------";
my $ds_pp = eval { JSON::PP::decode_json read_file() };
say "Error: $@\n" if $@;

say "done";

sub read_file {
	my $json = <<~"JSON";
		{
		"camel": "Amelia"
		}
		JSON
	say "Wantarray is <" . wantarray . ">";

	wantarray ? split(/\R/, $json) : $json;
	}

The result shows that JSON::PP only gets the first line of the JSON becuase it was called in list context:

$ perl json.pl
JSON::XS 4.03 ------------
Wantarray is <>
JSON::PP 4.07 ------------
Wantarray is <1>
Error: , or } expected while parsing object/hash, at character offset 1 (before "(end of string)") at json.pl line 12.


done

This shows up on which one JSON loads

#!/usr/bin/perl
use v5.26;

BEGIN {
	$ENV{PERL_JSON_BACKEND} = $ARGV[0] // 'JSON::XS';
	}

use JSON;

say "JSON backend is ", JSON->backend;

my $ds = decode_json read_file();

sub read_file {
	my $json = <<~"JSON";
		{
		"camel": "Amelia"
		}
		JSON
	say "Wantarray is <" . wantarray . ">";

	wantarray ? split(/\R/, $json) : $json;
	}

If the backend is not JSON::PP (and acceptable to JSON), there's no problem:

$ perl json2.pl
JSON backend is JSON::Backend::XS
Wantarray is <>

$ perl json2.pl JSON::PP
JSON backend is JSON::Backend::PP
Wantarray is <1>
, or } expected while parsing object/hash, at character offset 1 (before "(end of string)") at json2.pl line 12.

$ perl json2.pl Cpanel::JSON::XS
JSON backend is JSON::Backend::XS
Wantarray is <>

$ perl json2.pl Foo
The value of environmental variable 'PERL_JSON_BACKEND' is invalid. at json2.pl line 8.
Compilation failed in require at json2.pl line 8.
BEGIN failed--compilation aborted at json2.pl line 8.

Allow for another false value: \''

Currently JSON accepts two scalar references as values, \0 and \1, which mean false and true respectively. However, Perl returns the empty string as a false value from most functions. JSON should accept a reference to the empty string as a false value, to stay consistent with Perl.

$ perl -MJSON -E 'say JSON->new->encode([!!1, \!!1])'
[1,true]
$ perl -MJSON -E 'say JSON->new->encode([!!0, \!!0])'
cannot encode reference to scalar at -e line 1.

To get the latter one to work is less obvious:

$ perl -MJSON -E 'say JSON->new->encode([!!0, \(0+!!0)])'
["",false]

Which means to be consistent, casting any boolean function from perl to a JSON false/true value is excessively verbose:

$ perl -MJSON -E 'say JSON->new->encode([defined(undef), \(0+defined(undef))])'
["",false]

How to handle old JSON::XS version

I have a scenario with hundreds of servers with different Perl versions and operating systems. On these servers, I need to run a script which decodes a JSON file. I can push additional libraries to the servers via a shared directory, but due to the different Perl versions, they can't contain XS code.

I'd like to leverage a pre-installed JSON::XS wherever possible and fall back to JSON::PP otherwise. Caveat: I use boolean_values(), which is only available from version 4.0. Various servers have only JSON::XS version 3.0.1, so this call fails.

Is there any way to use JSON::XS only if it has a certain minimum version / supports a certain method and use PP otherwise?
I also tried -support_by_pp, but it didn't help here.

thread safety warnings

I recently fell into the problem, that JSON prefers JSON::XS, which is not thread safe. However using JSON::PP works perfectly fine.

Would it be a good idea for JSON to either:

  • omit JSON::XS from the candidate list when loaded after threads
  • warn that JSON::XS can cause issues in a threaded environment

I'd hope that this could prevent another person not reading the entire documentation of JSON::XS from getting into weird crashes and spending a few days hunting down what caused it, until finally figuring it out.

Best regards,
Andre

Error: 'malformed JSON string' thrown, however jsonchecker.com says JSON is valid

I tried using zdim's script shown here, but it throws this error:

malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at /home/user/scripts/Perl/stackoverflow-json-query-ex1_zdim.pl line 16.
 at /home/user/scripts/Perl/stackoverflow-json-query-ex1_zdim.pl line 16.

So I pasted my complete JSON file text into jsonchecker.com and it says the JSON is valid.

JSON text below:

{
    "auto_close": true,
    "auto_open": false,
    "auto_start": false,
    "drawing_grid_size": 25,
    "grid_size": 75,
    "name": "Network Automation Quick Start",
    "project_id": "8d418c27-83f3-4ebf-83cb-ab65fd1f9be9",
    "revision": 9,
    "scene_height": 1000,
    "scene_width": 2000,
    "show_grid": true,
    "show_interface_labels": true,
    "show_layers": false,
    "snap_to_grid": true,
    "supplier": null,
    "topology": {
        "computes": [],
        "drawings": [],
        "links": [
            {
                "filters": {},
                "link_id": "1363b463-bb7e-40c4-a230-79f2fd1ede0a",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "eth0",
                            "x": 75,
                            "y": -2
                        },
                        "node_id": "69030479-1e75-46c7-8736-75dad39b4a8d",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "e1",
                            "x": -51,
                            "y": -9
                        },
                        "node_id": "64c79d73-3c11-4827-8c80-203191ae63ac",
                        "port_number": 1
                    }
                ],
                "suspend": false
            },
            {
                "filters": {
                    "bpf": [
                        "icmp"
                    ]
                },
                "link_id": "889077ae-0c1a-48dc-bdec-07aae88fc27b",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "e0",
                            "x": 44,
                            "y": -39
                        },
                        "node_id": "64c79d73-3c11-4827-8c80-203191ae63ac",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "virbr0",
                            "x": 88,
                            "y": 74
                        },
                        "node_id": "21e67911-617e-45d3-b5e7-7555a5580de8",
                        "port_number": 3
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "d5d78256-9079-4314-aa2d-d08fbca25280",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/0",
                            "x": 43,
                            "y": 48
                        },
                        "node_id": "0d29ae28-d371-4e6d-b061-f75aa70d6c4f",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 1,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/1",
                            "x": 38,
                            "y": -31
                        },
                        "node_id": "16f5e2f6-319d-4000-9b39-45183927fc86",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "997122f7-9976-4323-9be7-ccc40e94ecbf",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "e2",
                            "x": 82,
                            "y": -26
                        },
                        "node_id": "64c79d73-3c11-4827-8c80-203191ae63ac",
                        "port_number": 2
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/0",
                            "x": -68,
                            "y": -8
                        },
                        "node_id": "16f5e2f6-319d-4000-9b39-45183927fc86",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "d1738ec5-ce45-4920-80f9-b7db180c6cf0",
                "nodes": [
                    {
                        "adapter_number": 4,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi1/0",
                            "x": -30,
                            "y": 89
                        },
                        "node_id": "16f5e2f6-319d-4000-9b39-45183927fc86",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/0",
                            "x": 67,
                            "y": -82
                        },
                        "node_id": "a566a414-110c-4d8b-8d16-c96185c424b4",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "481de502-6bdd-4d8b-95d3-cf4bf7f57bf1",
                "nodes": [
                    {
                        "adapter_number": 5,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi1/1",
                            "x": 45,
                            "y": 86
                        },
                        "node_id": "16f5e2f6-319d-4000-9b39-45183927fc86",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/0",
                            "x": -69,
                            "y": -84
                        },
                        "node_id": "0a3df914-f0e7-4985-8195-57990d79e962",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "d1964aaf-5799-4e05-8216-38e169d01bda",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/0",
                            "x": 4,
                            "y": -30
                        },
                        "node_id": "14e89a4c-5d82-4fd5-b17c-e3253c174e69",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 6,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi1/2",
                            "x": -65,
                            "y": 44
                        },
                        "node_id": "16f5e2f6-319d-4000-9b39-45183927fc86",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "8041e53c-c86b-4f1a-88bd-15b27ee25cab",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/0",
                            "x": -28,
                            "y": -27
                        },
                        "node_id": "ebc9b3c2-8632-4095-b27b-24d10543c8cf",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 7,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi1/3",
                            "x": 11,
                            "y": 104
                        },
                        "node_id": "16f5e2f6-319d-4000-9b39-45183927fc86",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "2c554fe0-8e41-4dbc-b6dc-f19be4844893",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/0",
                            "x": -25,
                            "y": -37
                        },
                        "node_id": "213a5582-e9db-4a8b-a0e2-3fa073827e37",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 8,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi2/0",
                            "x": 68,
                            "y": 44
                        },
                        "node_id": "16f5e2f6-319d-4000-9b39-45183927fc86",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "a8a2bbce-282a-495a-9f21-d7138d9cce44",
                "nodes": [
                    {
                        "adapter_number": 2,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/2",
                            "x": 82,
                            "y": 25
                        },
                        "node_id": "a566a414-110c-4d8b-8d16-c96185c424b4",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 2,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/2",
                            "x": -75,
                            "y": 25
                        },
                        "node_id": "0a3df914-f0e7-4985-8195-57990d79e962",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "55dd9d82-2a0e-405a-bead-09a20da978ec",
                "nodes": [
                    {
                        "adapter_number": 1,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/1",
                            "x": 83,
                            "y": -6
                        },
                        "node_id": "a566a414-110c-4d8b-8d16-c96185c424b4",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 1,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/1",
                            "x": -75,
                            "y": -6
                        },
                        "node_id": "0a3df914-f0e7-4985-8195-57990d79e962",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "3a5b05e5-8c58-44ed-b700-3f7747cd071b",
                "nodes": [
                    {
                        "adapter_number": 4,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi1/0",
                            "x": -32,
                            "y": -31
                        },
                        "node_id": "a566a414-110c-4d8b-8d16-c96185c424b4",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 1,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/1",
                            "x": -31,
                            "y": 49
                        },
                        "node_id": "14e89a4c-5d82-4fd5-b17c-e3253c174e69",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "8cf53a28-71e4-41b6-a64b-005dc96fa256",
                "nodes": [
                    {
                        "adapter_number": 5,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi1/1",
                            "x": 95,
                            "y": -59
                        },
                        "node_id": "a566a414-110c-4d8b-8d16-c96185c424b4",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 1,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/1",
                            "x": -1,
                            "y": 49
                        },
                        "node_id": "ebc9b3c2-8632-4095-b27b-24d10543c8cf",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "0fceb2fb-9c58-4d00-bb7e-12e47997b826",
                "nodes": [
                    {
                        "adapter_number": 6,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi1/2",
                            "x": 122,
                            "y": -35
                        },
                        "node_id": "a566a414-110c-4d8b-8d16-c96185c424b4",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 1,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/1",
                            "x": -37,
                            "y": 49
                        },
                        "node_id": "213a5582-e9db-4a8b-a0e2-3fa073827e37",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "f375627c-da11-42ed-992e-08a0cf3f9a0d",
                "nodes": [
                    {
                        "adapter_number": 4,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi1/0",
                            "x": -101,
                            "y": -30
                        },
                        "node_id": "0a3df914-f0e7-4985-8195-57990d79e962",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 2,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/2",
                            "x": 68,
                            "y": 23
                        },
                        "node_id": "14e89a4c-5d82-4fd5-b17c-e3253c174e69",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "6cdcc8e2-6a70-4e91-b58b-7d0ef2d61bce",
                "nodes": [
                    {
                        "adapter_number": 5,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi1/1",
                            "x": -94,
                            "y": -61
                        },
                        "node_id": "0a3df914-f0e7-4985-8195-57990d79e962",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 2,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/2",
                            "x": 62,
                            "y": 45
                        },
                        "node_id": "ebc9b3c2-8632-4095-b27b-24d10543c8cf",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "33221919-fb4d-44bc-b258-109d84d93951",
                "nodes": [
                    {
                        "adapter_number": 6,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi1/2",
                            "x": 33,
                            "y": -32
                        },
                        "node_id": "0a3df914-f0e7-4985-8195-57990d79e962",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 2,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/2",
                            "x": 29,
                            "y": 50
                        },
                        "node_id": "213a5582-e9db-4a8b-a0e2-3fa073827e37",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "38cdaa1e-9288-4aea-9c1e-a84479c03626",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "eth0",
                            "x": 62,
                            "y": -23
                        },
                        "node_id": "6ee7b7fb-b57c-49e3-8b65-03f39ed3d83e",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "e7",
                            "x": -54,
                            "y": 17
                        },
                        "node_id": "64c79d73-3c11-4827-8c80-203191ae63ac",
                        "port_number": 7
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "cb5f1705-c3fa-4e6e-8442-00be09bfbfe0",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "eth0",
                            "x": 62,
                            "y": 10
                        },
                        "node_id": "341ff07c-d304-4610-82af-bb340e1b6495",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "e3",
                            "x": -26,
                            "y": 48
                        },
                        "node_id": "64c79d73-3c11-4827-8c80-203191ae63ac",
                        "port_number": 3
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "7e0e9cee-4397-43b0-b21b-f41a47d3b195",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "eth0",
                            "x": 73,
                            "y": 11
                        },
                        "node_id": "07414fe2-70b5-4a62-ad13-9595eee83d79",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "e4",
                            "x": -47,
                            "y": -35
                        },
                        "node_id": "64c79d73-3c11-4827-8c80-203191ae63ac",
                        "port_number": 4
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "5a93aef1-ca3b-43d9-836a-301ffef2715c",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "s0/0",
                            "x": -43,
                            "y": 38
                        },
                        "node_id": "ca5c6b81-0e40-4a1c-b1ed-b6a9ab0d88d3",
                        "port_number": 16
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "s0/0",
                            "x": 11,
                            "y": -24
                        },
                        "node_id": "e14c75d0-3125-41f0-bfc9-91da6db67698",
                        "port_number": 16
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "79f848b3-4570-4ed1-92d8-77485981a761",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "s0/1",
                            "x": 74,
                            "y": 33
                        },
                        "node_id": "ca5c6b81-0e40-4a1c-b1ed-b6a9ab0d88d3",
                        "port_number": 17
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "s0/0",
                            "x": 14,
                            "y": -25
                        },
                        "node_id": "f5a3a7be-a09c-4b26-8ec9-f2797aaef440",
                        "port_number": 16
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "a72de753-f481-4a7d-a88c-6fb2c35d3e84",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "s0/1",
                            "x": 64,
                            "y": 21
                        },
                        "node_id": "e14c75d0-3125-41f0-bfc9-91da6db67698",
                        "port_number": 17
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "s0/1",
                            "x": -50,
                            "y": 0
                        },
                        "node_id": "f5a3a7be-a09c-4b26-8ec9-f2797aaef440",
                        "port_number": 17
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "0c5d4425-4904-4585-84fe-9a54c1e03fed",
                "nodes": [
                    {
                        "adapter_number": 1,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "f1/0",
                            "x": -44,
                            "y": -8
                        },
                        "node_id": "ca5c6b81-0e40-4a1c-b1ed-b6a9ab0d88d3",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 3,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi0/3",
                            "x": 73,
                            "y": 22
                        },
                        "node_id": "0d29ae28-d371-4e6d-b061-f75aa70d6c4f",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "96b52b9e-358e-4c77-946a-797c0f2ab21a",
                "nodes": [
                    {
                        "adapter_number": 15,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi3/3",
                            "x": 67,
                            "y": 20
                        },
                        "node_id": "ebc9b3c2-8632-4095-b27b-24d10543c8cf",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 15,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi3/3",
                            "x": -64,
                            "y": 20
                        },
                        "node_id": "213a5582-e9db-4a8b-a0e2-3fa073827e37",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "d10821ea-e78e-4052-a119-5064d8a00bc2",
                "nodes": [
                    {
                        "adapter_number": 14,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi3/2",
                            "x": 66,
                            "y": -3
                        },
                        "node_id": "ebc9b3c2-8632-4095-b27b-24d10543c8cf",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 14,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi3/2",
                            "x": -65,
                            "y": -2
                        },
                        "node_id": "213a5582-e9db-4a8b-a0e2-3fa073827e37",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "b8ffd64f-641c-4879-b771-b1cbcd260641",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "ens0",
                            "x": -25,
                            "y": -14
                        },
                        "node_id": "fd77de72-aaef-4f69-bc5a-808995da1b5c",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 12,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "Gi3/0",
                            "x": 72,
                            "y": 20
                        },
                        "node_id": "16f5e2f6-319d-4000-9b39-45183927fc86",
                        "port_number": 0
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "b3f36415-35ea-44f1-b591-c2071952c952",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "1",
                            "x": 27,
                            "y": -25
                        },
                        "node_id": "99dc8ad3-b55b-4489-bfaa-5187699e4721",
                        "port_number": 1
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "3",
                            "x": 7,
                            "y": 47
                        },
                        "node_id": "552f192e-1e80-4ddc-9507-ae408dd7251d",
                        "port_number": 3
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "1f468877-d4e8-4073-b090-573c6108c866",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "1",
                            "x": -23,
                            "y": -3
                        },
                        "node_id": "d4e76d64-2682-4ce3-a54c-a29e9501ef9c",
                        "port_number": 1
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "2",
                            "x": 57,
                            "y": -8
                        },
                        "node_id": "552f192e-1e80-4ddc-9507-ae408dd7251d",
                        "port_number": 2
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "d0beaaa7-09d9-4bcc-a667-6642fc3d5728",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "4",
                            "x": 56,
                            "y": 26
                        },
                        "node_id": "552f192e-1e80-4ddc-9507-ae408dd7251d",
                        "port_number": 4
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "1",
                            "x": -3,
                            "y": -22
                        },
                        "node_id": "dc51f2ed-2b89-4d7a-a97e-46da9bc1b17d",
                        "port_number": 1
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "b3a47b4a-55b9-4dd0-92ae-762e3c55e9cf",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "2",
                            "x": 58,
                            "y": -14
                        },
                        "node_id": "99dc8ad3-b55b-4489-bfaa-5187699e4721",
                        "port_number": 2
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "3",
                            "x": -21,
                            "y": 35
                        },
                        "node_id": "d4e76d64-2682-4ce3-a54c-a29e9501ef9c",
                        "port_number": 3
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "59e2c6b6-a0e0-425c-ac25-301f055e7523",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "2",
                            "x": 28,
                            "y": -28
                        },
                        "node_id": "dc51f2ed-2b89-4d7a-a97e-46da9bc1b17d",
                        "port_number": 2
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "4",
                            "x": 8,
                            "y": 51
                        },
                        "node_id": "d4e76d64-2682-4ce3-a54c-a29e9501ef9c",
                        "port_number": 4
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "b389750e-d0f7-46b4-bc81-f563803b2e76",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "4",
                            "x": 56,
                            "y": 21
                        },
                        "node_id": "99dc8ad3-b55b-4489-bfaa-5187699e4721",
                        "port_number": 4
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "3",
                            "x": -24,
                            "y": 3
                        },
                        "node_id": "dc51f2ed-2b89-4d7a-a97e-46da9bc1b17d",
                        "port_number": 3
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "360d9888-d1f5-4472-934e-ad22b009eb92",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "3",
                            "x": 7,
                            "y": 47
                        },
                        "node_id": "9bbf578e-6feb-4f18-ab1d-c99b647492df",
                        "port_number": 3
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "1",
                            "x": 30,
                            "y": -27
                        },
                        "node_id": "5047a781-7b2a-4609-af13-fd84056a0611",
                        "port_number": 1
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "500fbaaa-3955-44ef-8026-33d089ab5902",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "4",
                            "x": 38,
                            "y": 46
                        },
                        "node_id": "9bbf578e-6feb-4f18-ab1d-c99b647492df",
                        "port_number": 4
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "1",
                            "x": -6,
                            "y": -28
                        },
                        "node_id": "ff297e3f-bcb6-47e2-b9f0-d5415e75f614",
                        "port_number": 1
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "6d018dde-7873-4a08-90f6-3b9a1f2fdfb3",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "4",
                            "x": 7,
                            "y": 50
                        },
                        "node_id": "da2ade8c-c28e-498c-9579-2a6b0ef74f36",
                        "port_number": 4
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "2",
                            "x": 28,
                            "y": -29
                        },
                        "node_id": "ff297e3f-bcb6-47e2-b9f0-d5415e75f614",
                        "port_number": 2
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "6c87391a-5f1a-4631-9807-6e5d6fe85b30",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "4",
                            "x": 55,
                            "y": 22
                        },
                        "node_id": "5047a781-7b2a-4609-af13-fd84056a0611",
                        "port_number": 4
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "3",
                            "x": -25,
                            "y": 0
                        },
                        "node_id": "ff297e3f-bcb6-47e2-b9f0-d5415e75f614",
                        "port_number": 3
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "b46bb4bd-ef48-47c3-b225-8255ccfe11a9",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "3",
                            "x": -22,
                            "y": 38
                        },
                        "node_id": "da2ade8c-c28e-498c-9579-2a6b0ef74f36",
                        "port_number": 3
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "2",
                            "x": 57,
                            "y": -14
                        },
                        "node_id": "5047a781-7b2a-4609-af13-fd84056a0611",
                        "port_number": 2
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "89c09ebc-a19c-4099-8cdf-577155754446",
                "nodes": [
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "2",
                            "x": 57,
                            "y": 20
                        },
                        "node_id": "9bbf578e-6feb-4f18-ab1d-c99b647492df",
                        "port_number": 2
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "1",
                            "x": -23,
                            "y": 0
                        },
                        "node_id": "da2ade8c-c28e-498c-9579-2a6b0ef74f36",
                        "port_number": 1
                    }
                ],
                "suspend": false
            },
            {
                "filters": {},
                "link_id": "6e0a7598-6d98-4c4b-bee6-1d52d5f280d6",
                "nodes": [
                    {
                        "adapter_number": 1,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "s1/0",
                            "x": 5,
                            "y": 43
                        },
                        "node_id": "4a712f86-eb1d-4e2a-b53b-1a314fd84837",
                        "port_number": 0
                    },
                    {
                        "adapter_number": 0,
                        "label": {
                            "rotation": 0,
                            "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                            "text": "10",
                            "x": 8,
                            "y": -25
                        },
                        "node_id": "9bbf578e-6feb-4f18-ab1d-c99b647492df",
                        "port_number": 10
                    }
                ],
                "suspend": false
            }
        ],
        "nodes": [
            {
                "compute_id": "local",
                "console": 5000,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 59,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 10.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "NetBot-1",
                    "x": -98,
                    "y": 9
                },
                "locked": false,
                "name": "NetBot-1",
                "node_id": "69030479-1e75-46c7-8736-75dad39b4a8d",
                "node_type": "docker",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "adapters": 1,
                    "aux": 5001,
                    "console_http_path": "/",
                    "console_http_port": 80,
                    "console_resolution": "1024x768",
                    "container_id": "c554a7cd281039e3df8839a2fe6cc9b0afe62325004542bf139b3dc1e7e1266f",
                    "environment": null,
                    "extra_hosts": null,
                    "extra_volumes": [],
                    "image": "adosztal/network_automation:latest",
                    "start_command": null,
                    "usage": ""
                },
                "symbol": "linux_guest.svg",
                "template_id": "9e150ae6-5867-4e40-bac6-7833cf53a1c3",
                "width": 65,
                "x": -782,
                "y": -104,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5002,
                "console_auto_start": false,
                "console_type": "none",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 32,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 12.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "S0",
                    "x": 59,
                    "y": 22
                },
                "locked": false,
                "name": "S0",
                "node_id": "64c79d73-3c11-4827-8c80-203191ae63ac",
                "node_type": "ethernet_switch",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "ports_mapping": [
                        {
                            "name": "Ethernet0",
                            "port_number": 0,
                            "type": "access",
                            "vlan": 1
                        },
                        {
                            "name": "Ethernet1",
                            "port_number": 1,
                            "type": "access",
                            "vlan": 1
                        },
                        {
                            "name": "Ethernet2",
                            "port_number": 2,
                            "type": "access",
                            "vlan": 1
                        },
                        {
                            "name": "Ethernet3",
                            "port_number": 3,
                            "type": "access",
                            "vlan": 1
                        },
                        {
                            "name": "Ethernet4",
                            "port_number": 4,
                            "type": "access",
                            "vlan": 1
                        },
                        {
                            "name": "Ethernet5",
                            "port_number": 5,
                            "type": "access",
                            "vlan": 1
                        },
                        {
                            "name": "Ethernet6",
                            "port_number": 6,
                            "type": "access",
                            "vlan": 1
                        },
                        {
                            "name": "Ethernet7",
                            "port_number": 7,
                            "type": "access",
                            "vlan": 1
                        }
                    ]
                },
                "symbol": ":/symbols/ethernet_switch.svg",
                "template_id": "1966b864-93e7-32d5-965f-001384eec461",
                "width": 72,
                "x": -560,
                "y": -91,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5004,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": "",
                "height": 48,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 12.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "S1",
                    "x": 51,
                    "y": -4
                },
                "locked": false,
                "name": "S1",
                "node_id": "16f5e2f6-319d-4000-9b39-45183927fc86",
                "node_type": "qemu",
                "port_name_format": "Gi{1}/{0}",
                "port_segment_size": 4,
                "properties": {
                    "adapter_type": "e1000",
                    "adapters": 16,
                    "bios_image": "",
                    "bios_image_md5sum": null,
                    "boot_priority": "c",
                    "cdrom_image": "",
                    "cdrom_image_md5sum": null,
                    "cpu_throttling": 0,
                    "cpus": 1,
                    "hda_disk_image": "vios_l2-adventerprisek9-m.03.2017.qcow2",
                    "hda_disk_image_md5sum": "8f14b50083a14688dec2fc791706bb3e",
                    "hda_disk_interface": "virtio",
                    "hdb_disk_image": "",
                    "hdb_disk_image_md5sum": null,
                    "hdb_disk_interface": "ide",
                    "hdc_disk_image": "",
                    "hdc_disk_image_md5sum": null,
                    "hdc_disk_interface": "ide",
                    "hdd_disk_image": "",
                    "hdd_disk_image_md5sum": null,
                    "hdd_disk_interface": "ide",
                    "initrd": "",
                    "initrd_md5sum": null,
                    "kernel_command_line": "",
                    "kernel_image": "",
                    "kernel_image_md5sum": null,
                    "legacy_networking": false,
                    "linked_clone": true,
                    "mac_address": "0c:9b:e9:fc:86:00",
                    "on_close": "power_off",
                    "options": "-nographic",
                    "platform": "x86_64",
                    "process_priority": "normal",
                    "qemu_path": "/usr/bin/qemu-system-x86_64",
                    "ram": 768,
                    "replicate_network_connection_state": true,
                    "usage": "There is no default password and enable password. There is no default configuration present."
                },
                "symbol": ":/symbols/multilayer_switch.svg",
                "template_id": "906f55a1-3bc4-4faf-80cf-789382cda4a5",
                "width": 51,
                "x": -325,
                "y": -98,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5006,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": "",
                "height": 45,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 12.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "R1",
                    "x": -40,
                    "y": 7
                },
                "locked": false,
                "name": "R1",
                "node_id": "0d29ae28-d371-4e6d-b061-f75aa70d6c4f",
                "node_type": "qemu",
                "port_name_format": "Gi0/{0}",
                "port_segment_size": 0,
                "properties": {
                    "adapter_type": "e1000",
                    "adapters": 4,
                    "bios_image": "",
                    "bios_image_md5sum": null,
                    "boot_priority": "c",
                    "cdrom_image": "",
                    "cdrom_image_md5sum": null,
                    "cpu_throttling": 0,
                    "cpus": 1,
                    "hda_disk_image": "vios-adventerprisek9-m.vmdk.SPA.156-2.T",
                    "hda_disk_image_md5sum": "83707e3cc93646da58ee6563a68002b5",
                    "hda_disk_interface": "virtio",
                    "hdb_disk_image": "IOSv_startup_config.img",
                    "hdb_disk_image_md5sum": "bc605651c4688276f81fd59dcf5cc786",
                    "hdb_disk_interface": "virtio",
                    "hdc_disk_image": "",
                    "hdc_disk_image_md5sum": null,
                    "hdc_disk_interface": "ide",
                    "hdd_disk_image": "",
                    "hdd_disk_image_md5sum": null,
                    "hdd_disk_interface": "ide",
                    "initrd": "",
                    "initrd_md5sum": null,
                    "kernel_command_line": "",
                    "kernel_image": "",
                    "kernel_image_md5sum": null,
                    "legacy_networking": false,
                    "linked_clone": false,
                    "mac_address": "0c:9b:e9:6c:4f:00",
                    "on_close": "power_off",
                    "options": "",
                    "platform": "x86_64",
                    "process_priority": "normal",
                    "qemu_path": "/usr/bin/qemu-system-x86_64",
                    "ram": 512,
                    "replicate_network_connection_state": true,
                    "usage": "There is no default password and enable password. There is no default configuration present."
                },
                "symbol": ":/symbols/classic/router.svg",
                "template_id": "c03bb804-daa4-4202-b8fa-ed8737baf70d",
                "width": 66,
                "x": -333,
                "y": -247,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": null,
                "console_auto_start": false,
                "console_type": "none",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 71,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 12.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "NAT1",
                    "x": 52,
                    "y": 18
                },
                "locked": false,
                "name": "NAT1",
                "node_id": "21e67911-617e-45d3-b5e7-7555a5580de8",
                "node_type": "cloud",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "interfaces": [
                        {
                            "name": "docker0",
                            "special": true,
                            "type": "ethernet"
                        },
                        {
                            "name": "enp4s0",
                            "special": false,
                            "type": "ethernet"
                        },
                        {
                            "name": "enp6s0",
                            "special": false,
                            "type": "ethernet"
                        },
                        {
                            "name": "lo",
                            "special": true,
                            "type": "ethernet"
                        },
                        {
                            "name": "virbr0",
                            "special": true,
                            "type": "ethernet"
                        },
                        {
                            "name": "virbr0-nic",
                            "special": true,
                            "type": "ethernet"
                        },
                        {
                            "name": "wlp5s0",
                            "special": false,
                            "type": "ethernet"
                        }
                    ],
                    "ports_mapping": [
                        {
                            "interface": "enp4s0",
                            "name": "enp4s0",
                            "port_number": 0,
                            "type": "ethernet"
                        },
                        {
                            "interface": "enp6s0",
                            "name": "enp6s0",
                            "port_number": 1,
                            "type": "ethernet"
                        },
                        {
                            "interface": "wlp5s0",
                            "name": "wlp5s0",
                            "port_number": 2,
                            "type": "ethernet"
                        },
                        {
                            "interface": "virbr0",
                            "name": "virbr0",
                            "port_number": 3,
                            "type": "ethernet"
                        },
                        {
                            "interface": "virbr0-nic",
                            "name": "virbr0-nic",
                            "port_number": 4,
                            "type": "ethernet"
                        },
                        {
                            "interface": "docker0",
                            "name": "docker0",
                            "port_number": 5,
                            "type": "ethernet"
                        },
                        {
                            "interface": "gns3tap0-3",
                            "name": "gns3tap0-3",
                            "port_number": 6,
                            "type": "ethernet"
                        },
                        {
                            "interface": "vboxnet0",
                            "name": "vboxnet0",
                            "port_number": 7,
                            "type": "ethernet"
                        },
                        {
                            "interface": "vboxnet2",
                            "name": "vboxnet2",
                            "port_number": 8,
                            "type": "ethernet"
                        },
                        {
                            "interface": "lo",
                            "name": "lo",
                            "port_number": 9,
                            "type": "ethernet"
                        },
                        {
                            "interface": "vboxnet1",
                            "name": "vboxnet1",
                            "port_number": 10,
                            "type": "ethernet"
                        },
                        {
                            "interface": "vboxnet3",
                            "name": "vboxnet3",
                            "port_number": 11,
                            "type": "ethernet"
                        }
                    ],
                    "remote_console_host": "127.0.0.1",
                    "remote_console_http_path": "/",
                    "remote_console_port": 23,
                    "remote_console_type": "none"
                },
                "symbol": ":/symbols/cloud.svg",
                "template_id": "5250e2de-ec81-4de5-962e-fae5d2276111",
                "width": 159,
                "x": -604,
                "y": -260,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5008,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": "",
                "height": 48,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 12.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "S2",
                    "x": -40,
                    "y": 8
                },
                "locked": false,
                "name": "S2",
                "node_id": "a566a414-110c-4d8b-8d16-c96185c424b4",
                "node_type": "qemu",
                "port_name_format": "Gi{1}/{0}",
                "port_segment_size": 4,
                "properties": {
                    "adapter_type": "e1000",
                    "adapters": 16,
                    "bios_image": "",
                    "bios_image_md5sum": null,
                    "boot_priority": "c",
                    "cdrom_image": "",
                    "cdrom_image_md5sum": null,
                    "cpu_throttling": 0,
                    "cpus": 1,
                    "hda_disk_image": "vios_l2-adventerprisek9-m.03.2017.qcow2",
                    "hda_disk_image_md5sum": "8f14b50083a14688dec2fc791706bb3e",
                    "hda_disk_interface": "virtio",
                    "hdb_disk_image": "",
                    "hdb_disk_image_md5sum": null,
                    "hdb_disk_interface": "ide",
                    "hdc_disk_image": "",
                    "hdc_disk_image_md5sum": null,
                    "hdc_disk_interface": "ide",
                    "hdd_disk_image": "",
                    "hdd_disk_image_md5sum": null,
                    "hdd_disk_interface": "ide",
                    "initrd": "",
                    "initrd_md5sum": null,
                    "kernel_command_line": "",
                    "kernel_image": "",
                    "kernel_image_md5sum": null,
                    "legacy_networking": false,
                    "linked_clone": true,
                    "mac_address": "0c:9b:e9:24:b4:00",
                    "on_close": "power_off",
                    "options": "-nographic",
                    "platform": "x86_64",
                    "process_priority": "normal",
                    "qemu_path": "/usr/bin/qemu-system-x86_64",
                    "ram": 768,
                    "replicate_network_connection_state": true,
                    "usage": "There is no default password and enable password. There is no default configuration present."
                },
                "symbol": ":/symbols/multilayer_switch.svg",
                "template_id": "906f55a1-3bc4-4faf-80cf-789382cda4a5",
                "width": 51,
                "x": -550,
                "y": 351,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5010,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": "",
                "height": 48,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 12.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "S3",
                    "x": 56,
                    "y": 7
                },
                "locked": false,
                "name": "S3",
                "node_id": "0a3df914-f0e7-4985-8195-57990d79e962",
                "node_type": "qemu",
                "port_name_format": "Gi{1}/{0}",
                "port_segment_size": 4,
                "properties": {
                    "adapter_type": "e1000",
                    "adapters": 16,
                    "bios_image": "",
                    "bios_image_md5sum": null,
                    "boot_priority": "c",
                    "cdrom_image": "",
                    "cdrom_image_md5sum": null,
                    "cpu_throttling": 0,
                    "cpus": 1,
                    "hda_disk_image": "vios_l2-adventerprisek9-m.03.2017.qcow2",
                    "hda_disk_image_md5sum": "8f14b50083a14688dec2fc791706bb3e",
                    "hda_disk_interface": "virtio",
                    "hdb_disk_image": "",
                    "hdb_disk_image_md5sum": null,
                    "hdb_disk_interface": "ide",
                    "hdc_disk_image": "",
                    "hdc_disk_image_md5sum": null,
                    "hdc_disk_interface": "ide",
                    "hdd_disk_image": "",
                    "hdd_disk_image_md5sum": null,
                    "hdd_disk_interface": "ide",
                    "initrd": "",
                    "initrd_md5sum": null,
                    "kernel_command_line": "",
                    "kernel_image": "",
                    "kernel_image_md5sum": null,
                    "legacy_networking": false,
                    "linked_clone": true,
                    "mac_address": "0c:9b:e9:e9:62:00",
                    "on_close": "power_off",
                    "options": "-nographic",
                    "platform": "x86_64",
                    "process_priority": "normal",
                    "qemu_path": "/usr/bin/qemu-system-x86_64",
                    "ram": 768,
                    "replicate_network_connection_state": true,
                    "usage": "There is no default password and enable password. There is no default configuration present."
                },
                "symbol": ":/symbols/multilayer_switch.svg",
                "template_id": "906f55a1-3bc4-4faf-80cf-789382cda4a5",
                "width": 51,
                "x": -100,
                "y": 351,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5012,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": "",
                "height": 48,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 12.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "S4",
                    "x": -36,
                    "y": 7
                },
                "locked": false,
                "name": "S4",
                "node_id": "14e89a4c-5d82-4fd5-b17c-e3253c174e69",
                "node_type": "qemu",
                "port_name_format": "Gi{1}/{0}",
                "port_segment_size": 4,
                "properties": {
                    "adapter_type": "e1000",
                    "adapters": 16,
                    "bios_image": "",
                    "bios_image_md5sum": null,
                    "boot_priority": "c",
                    "cdrom_image": "",
                    "cdrom_image_md5sum": null,
                    "cpu_throttling": 0,
                    "cpus": 1,
                    "hda_disk_image": "vios_l2-adventerprisek9-m.03.2017.qcow2",
                    "hda_disk_image_md5sum": "8f14b50083a14688dec2fc791706bb3e",
                    "hda_disk_interface": "virtio",
                    "hdb_disk_image": "",
                    "hdb_disk_image_md5sum": null,
                    "hdb_disk_interface": "ide",
                    "hdc_disk_image": "",
                    "hdc_disk_image_md5sum": null,
                    "hdc_disk_interface": "ide",
                    "hdd_disk_image": "",
                    "hdd_disk_image_md5sum": null,
                    "hdd_disk_interface": "ide",
                    "initrd": "",
                    "initrd_md5sum": null,
                    "kernel_command_line": "",
                    "kernel_image": "",
                    "kernel_image_md5sum": null,
                    "legacy_networking": false,
                    "linked_clone": true,
                    "mac_address": "0c:9b:e9:4e:69:00",
                    "on_close": "power_off",
                    "options": "-nographic",
                    "platform": "x86_64",
                    "process_priority": "normal",
                    "qemu_path": "/usr/bin/qemu-system-x86_64",
                    "ram": 768,
                    "replicate_network_connection_state": true,
                    "usage": "There is no default password and enable password. There is no default configuration present."
                },
                "symbol": ":/symbols/multilayer_switch.svg",
                "template_id": "906f55a1-3bc4-4faf-80cf-789382cda4a5",
                "width": 51,
                "x": -550,
                "y": 126,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5014,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": "",
                "height": 48,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 12.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "S5",
                    "x": -36,
                    "y": 7
                },
                "locked": false,
                "name": "S5",
                "node_id": "ebc9b3c2-8632-4095-b27b-24d10543c8cf",
                "node_type": "qemu",
                "port_name_format": "Gi{1}/{0}",
                "port_segment_size": 4,
                "properties": {
                    "adapter_type": "e1000",
                    "adapters": 16,
                    "bios_image": "",
                    "bios_image_md5sum": null,
                    "boot_priority": "c",
                    "cdrom_image": "",
                    "cdrom_image_md5sum": null,
                    "cpu_throttling": 0,
                    "cpus": 1,
                    "hda_disk_image": "vios_l2-adventerprisek9-m.03.2017.qcow2",
                    "hda_disk_image_md5sum": "8f14b50083a14688dec2fc791706bb3e",
                    "hda_disk_interface": "virtio",
                    "hdb_disk_image": "",
                    "hdb_disk_image_md5sum": null,
                    "hdb_disk_interface": "ide",
                    "hdc_disk_image": "",
                    "hdc_disk_image_md5sum": null,
                    "hdc_disk_interface": "ide",
                    "hdd_disk_image": "",
                    "hdd_disk_image_md5sum": null,
                    "hdd_disk_interface": "ide",
                    "initrd": "",
                    "initrd_md5sum": null,
                    "kernel_command_line": "",
                    "kernel_image": "",
                    "kernel_image_md5sum": null,
                    "legacy_networking": false,
                    "linked_clone": true,
                    "mac_address": "0c:9b:e9:c8:cf:00",
                    "on_close": "power_off",
                    "options": "-nographic",
                    "platform": "x86_64",
                    "process_priority": "normal",
                    "qemu_path": "/usr/bin/qemu-system-x86_64",
                    "ram": 768,
                    "replicate_network_connection_state": true,
                    "usage": "There is no default password and enable password. There is no default configuration present."
                },
                "symbol": ":/symbols/multilayer_switch.svg",
                "template_id": "906f55a1-3bc4-4faf-80cf-789382cda4a5",
                "width": 51,
                "x": -325,
                "y": 126,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5016,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": "",
                "height": 48,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 12.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "S6",
                    "x": 54,
                    "y": 7
                },
                "locked": false,
                "name": "S6",
                "node_id": "213a5582-e9db-4a8b-a0e2-3fa073827e37",
                "node_type": "qemu",
                "port_name_format": "Gi{1}/{0}",
                "port_segment_size": 4,
                "properties": {
                    "adapter_type": "e1000",
                    "adapters": 16,
                    "bios_image": "",
                    "bios_image_md5sum": null,
                    "boot_priority": "c",
                    "cdrom_image": "",
                    "cdrom_image_md5sum": null,
                    "cpu_throttling": 0,
                    "cpus": 1,
                    "hda_disk_image": "vios_l2-adventerprisek9-m.03.2017.qcow2",
                    "hda_disk_image_md5sum": "8f14b50083a14688dec2fc791706bb3e",
                    "hda_disk_interface": "virtio",
                    "hdb_disk_image": "",
                    "hdb_disk_image_md5sum": null,
                    "hdb_disk_interface": "ide",
                    "hdc_disk_image": "",
                    "hdc_disk_image_md5sum": null,
                    "hdc_disk_interface": "ide",
                    "hdd_disk_image": "",
                    "hdd_disk_image_md5sum": null,
                    "hdd_disk_interface": "ide",
                    "initrd": "",
                    "initrd_md5sum": null,
                    "kernel_command_line": "",
                    "kernel_image": "",
                    "kernel_image_md5sum": null,
                    "legacy_networking": false,
                    "linked_clone": true,
                    "mac_address": "0c:9b:e9:7e:37:00",
                    "on_close": "power_off",
                    "options": "-nographic",
                    "platform": "x86_64",
                    "process_priority": "normal",
                    "qemu_path": "/usr/bin/qemu-system-x86_64",
                    "ram": 768,
                    "replicate_network_connection_state": true,
                    "usage": "There is no default password and enable password. There is no default configuration present."
                },
                "symbol": ":/symbols/multilayer_switch.svg",
                "template_id": "906f55a1-3bc4-4faf-80cf-789382cda4a5",
                "width": 51,
                "x": -100,
                "y": 126,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5901,
                "console_auto_start": false,
                "console_type": "vnc",
                "custom_adapters": [],
                "first_port_name": "",
                "height": 59,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 12.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "Kali",
                    "x": -71,
                    "y": 7
                },
                "locked": false,
                "name": "Kali",
                "node_id": "6ee7b7fb-b57c-49e3-8b65-03f39ed3d83e",
                "node_type": "qemu",
                "port_name_format": "eth{0}",
                "port_segment_size": 0,
                "properties": {
                    "adapter_type": "e1000",
                    "adapters": 8,
                    "bios_image": "",
                    "bios_image_md5sum": null,
                    "boot_priority": "d",
                    "cdrom_image": "",
                    "cdrom_image_md5sum": null,
                    "cpu_throttling": 0,
                    "cpus": 1,
                    "hda_disk_image": "kali-linux-persistence-1gb.qcow2",
                    "hda_disk_image_md5sum": "14e9c92f3ba5a0bd1128c1ea26a129ea",
                    "hda_disk_interface": "ide",
                    "hdb_disk_image": "",
                    "hdb_disk_image_md5sum": null,
                    "hdb_disk_interface": "sata",
                    "hdc_disk_image": "",
                    "hdc_disk_image_md5sum": null,
                    "hdc_disk_interface": "ide",
                    "hdd_disk_image": "",
                    "hdd_disk_image_md5sum": null,
                    "hdd_disk_interface": "ide",
                    "initrd": "",
                    "initrd_md5sum": null,
                    "kernel_command_line": "",
                    "kernel_image": "",
                    "kernel_image_md5sum": null,
                    "legacy_networking": false,
                    "linked_clone": true,
                    "mac_address": "0c:9b:e9:d8:3e:00",
                    "on_close": "power_off",
                    "options": "",
                    "platform": "x86_64",
                    "process_priority": "normal",
                    "qemu_path": "/usr/bin/qemu-system-x86_64",
                    "ram": 4096,
                    "replicate_network_connection_state": true,
                    "usage": "Default password is toor\nEnable persistence by selecting boot option 'Live USB Persistence'"
                },
                "symbol": ":/symbols/classic/qemu_guest.svg",
                "template_id": "3b43c48f-a5d5-42c3-bb2c-071de3c9c663",
                "width": 65,
                "x": -782,
                "y": -29,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5019,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 59,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 12.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "DNS-1",
                    "x": -79,
                    "y": 6
                },
                "locked": false,
                "name": "DNS-1",
                "node_id": "341ff07c-d304-4610-82af-bb340e1b6495",
                "node_type": "docker",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "adapters": 1,
                    "aux": 5020,
                    "console_http_path": "/",
                    "console_http_port": 80,
                    "console_resolution": "1024x768",
                    "container_id": "cec49d805889d076795bbbf1ee38a59a5a26fd2bf85d1f1f7775fa33858b901d",
                    "environment": null,
                    "extra_hosts": null,
                    "extra_volumes": [],
                    "image": "adosztal/dns:latest",
                    "start_command": null,
                    "usage": "You can add records by adding entries to the /etc/hosts file in the following format:\n%IP_ADDRESS% %HOSTNAME%.lab %HOSTNAME%\n\nExample:\n192.168.123.10 router1.lab router1"
                },
                "symbol": "linux_guest.svg",
                "template_id": "5498cdb6-221b-4de8-831d-138b17fd0e43",
                "width": 65,
                "x": -782,
                "y": 45,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5021,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 59,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 12.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "ipterm-1",
                    "x": -115,
                    "y": 10
                },
                "locked": false,
                "name": "ipterm-1",
                "node_id": "07414fe2-70b5-4a62-ad13-9595eee83d79",
                "node_type": "docker",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "adapters": 1,
                    "aux": 5022,
                    "console_http_path": "/",
                    "console_http_port": 80,
                    "console_resolution": "1024x768",
                    "container_id": "e125da78bebed3ad08bdba21f6cf63da0ea655bf6c9feb5b2a4f08b05d7aeec8",
                    "environment": null,
                    "extra_hosts": null,
                    "extra_volumes": [],
                    "image": "gns3/ipterm:latest",
                    "start_command": null,
                    "usage": "The /root directory is persistent."
                },
                "symbol": "linux_guest.svg",
                "template_id": "178936e5-445c-4f61-8f80-c3c71d775004",
                "width": 65,
                "x": -782,
                "y": -179,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5023,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 45,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "R2",
                    "x": 21,
                    "y": -25
                },
                "locked": false,
                "name": "R2",
                "node_id": "ca5c6b81-0e40-4a1c-b1ed-b6a9ab0d88d3",
                "node_type": "dynamips",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "auto_delete_disks": false,
                    "aux": null,
                    "chassis": "2610",
                    "clock_divisor": 8,
                    "disk0": 0,
                    "disk1": 0,
                    "dynamips_id": 1,
                    "exec_area": 64,
                    "idlemax": 500,
                    "idlepc": "",
                    "idlesleep": 30,
                    "image": "c2600-adventerprisek9_sna-mz.124-25b.bin",
                    "image_md5sum": "2b2f807cf1c8f12404977baabeb4e269",
                    "iomem": 15,
                    "mac_addr": "c801.57a4.0000",
                    "mmap": true,
                    "nvram": 128,
                    "platform": "c2600",
                    "ram": 160,
                    "slot0": "C2600-MB-1E",
                    "slot1": "NM-1FE-TX",
                    "sparsemem": true,
                    "system_id": "FTX0945W0MY",
                    "usage": "",
                    "wic0": "WIC-2T",
                    "wic1": null,
                    "wic2": null
                },
                "symbol": ":/symbols/classic/router.svg",
                "template_id": "39c787a9-5bc4-4b5e-9d54-7442088b355a",
                "width": 66,
                "x": 117,
                "y": -247,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5024,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 45,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "R3",
                    "x": -26,
                    "y": 7
                },
                "locked": false,
                "name": "R3",
                "node_id": "e14c75d0-3125-41f0-bfc9-91da6db67698",
                "node_type": "dynamips",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "auto_delete_disks": false,
                    "aux": null,
                    "chassis": "2610",
                    "clock_divisor": 8,
                    "disk0": 0,
                    "disk1": 0,
                    "dynamips_id": 2,
                    "exec_area": 64,
                    "idlemax": 500,
                    "idlepc": "",
                    "idlesleep": 30,
                    "image": "c2600-adventerprisek9_sna-mz.124-25b.bin",
                    "image_md5sum": "2b2f807cf1c8f12404977baabeb4e269",
                    "iomem": 15,
                    "mac_addr": "c802.57b3.0000",
                    "mmap": true,
                    "nvram": 128,
                    "platform": "c2600",
                    "ram": 160,
                    "slot0": "C2600-MB-1E",
                    "slot1": "NM-16ESW",
                    "sparsemem": true,
                    "system_id": "FTX0945W0MY",
                    "usage": "",
                    "wic0": "WIC-2T",
                    "wic1": null,
                    "wic2": null
                },
                "symbol": ":/symbols/classic/router.svg",
                "template_id": "39c787a9-5bc4-4b5e-9d54-7442088b355a",
                "width": 66,
                "x": -33,
                "y": -97,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5025,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 45,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "R4",
                    "x": 72,
                    "y": 9
                },
                "locked": false,
                "name": "R4",
                "node_id": "f5a3a7be-a09c-4b26-8ec9-f2797aaef440",
                "node_type": "dynamips",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "auto_delete_disks": false,
                    "aux": null,
                    "chassis": "2610",
                    "clock_divisor": 8,
                    "disk0": 0,
                    "disk1": 0,
                    "dynamips_id": 3,
                    "exec_area": 64,
                    "idlemax": 500,
                    "idlepc": "",
                    "idlesleep": 30,
                    "image": "c2600-adventerprisek9_sna-mz.124-25b.bin",
                    "image_md5sum": "2b2f807cf1c8f12404977baabeb4e269",
                    "iomem": 15,
                    "mac_addr": "c803.57c4.0000",
                    "mmap": true,
                    "nvram": 128,
                    "platform": "c2600",
                    "ram": 160,
                    "slot0": "C2600-MB-1E",
                    "slot1": "NM-16ESW",
                    "sparsemem": true,
                    "system_id": "FTX0945W0MY",
                    "usage": "",
                    "wic0": "WIC-2T",
                    "wic1": null,
                    "wic2": null
                },
                "symbol": ":/symbols/classic/router.svg",
                "template_id": "39c787a9-5bc4-4b5e-9d54-7442088b355a",
                "width": 66,
                "x": 267,
                "y": -97,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": null,
                "console_auto_start": false,
                "console_type": "none",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 48,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "ATMSW1",
                    "x": -59,
                    "y": 10
                },
                "locked": false,
                "name": "ATMSW1",
                "node_id": "9bbf578e-6feb-4f18-ab1d-c99b647492df",
                "node_type": "atm_switch",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "mappings": {
                        "1:0:100": "10:0:200",
                        "2:0:100": "11:0:200",
                        "3:0:100": "12:0:200",
                        "4:0:100": "13:0:200"
                    }
                },
                "symbol": ":/symbols/atm_switch.svg",
                "template_id": "aaa764e2-b383-300f-8a0e-3493bbfdb7d2",
                "width": 51,
                "x": 124,
                "y": 126,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": null,
                "console_auto_start": false,
                "console_type": "none",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 48,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "ATMSW2",
                    "x": -1,
                    "y": -25
                },
                "locked": false,
                "name": "ATMSW2",
                "node_id": "da2ade8c-c28e-498c-9579-2a6b0ef74f36",
                "node_type": "atm_switch",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "mappings": {
                        "1:0:100": "10:0:200",
                        "2:0:100": "11:0:200",
                        "3:0:100": "12:0:200",
                        "4:0:100": "13:0:200"
                    }
                },
                "symbol": ":/symbols/atm_switch.svg",
                "template_id": "aaa764e2-b383-300f-8a0e-3493bbfdb7d2",
                "width": 51,
                "x": 349,
                "y": 126,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": null,
                "console_auto_start": false,
                "console_type": "none",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 48,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "ATMSW3",
                    "x": -56,
                    "y": 13
                },
                "locked": false,
                "name": "ATMSW3",
                "node_id": "5047a781-7b2a-4609-af13-fd84056a0611",
                "node_type": "atm_switch",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "mappings": {
                        "1:0:100": "10:0:200",
                        "2:0:100": "11:0:200",
                        "3:0:100": "12:0:200",
                        "4:0:100": "13:0:200"
                    }
                },
                "symbol": ":/symbols/atm_switch.svg",
                "template_id": "aaa764e2-b383-300f-8a0e-3493bbfdb7d2",
                "width": 51,
                "x": 124,
                "y": 351,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": null,
                "console_auto_start": false,
                "console_type": "none",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 48,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "ATMSW4",
                    "x": 56,
                    "y": 12
                },
                "locked": false,
                "name": "ATMSW4",
                "node_id": "ff297e3f-bcb6-47e2-b9f0-d5415e75f614",
                "node_type": "atm_switch",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "mappings": {
                        "1:0:100": "10:0:200",
                        "2:0:100": "11:0:200",
                        "3:0:100": "12:0:200",
                        "4:0:100": "13:0:200"
                    }
                },
                "symbol": ":/symbols/atm_switch.svg",
                "template_id": "aaa764e2-b383-300f-8a0e-3493bbfdb7d2",
                "width": 51,
                "x": 349,
                "y": 351,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5900,
                "console_auto_start": false,
                "console_type": "vnc",
                "custom_adapters": [],
                "first_port_name": "",
                "height": 59,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "IPAM",
                    "x": 12,
                    "y": -25
                },
                "locked": false,
                "name": "IPAM",
                "node_id": "fd77de72-aaef-4f69-bc5a-808995da1b5c",
                "node_type": "qemu",
                "port_name_format": "ens{0}",
                "port_segment_size": 0,
                "properties": {
                    "adapter_type": "virtio-net-pci",
                    "adapters": 4,
                    "bios_image": "",
                    "bios_image_md5sum": null,
                    "boot_priority": "c",
                    "cdrom_image": "",
                    "cdrom_image_md5sum": null,
                    "cpu_throttling": 0,
                    "cpus": 1,
                    "hda_disk_image": "Ubuntu%20Server%2018.04.3%20LTS%20(64bit).vmdk",
                    "hda_disk_image_md5sum": "435f15a54f7f673e302ad26f05226e0e",
                    "hda_disk_interface": "virtio",
                    "hdb_disk_image": "",
                    "hdb_disk_image_md5sum": null,
                    "hdb_disk_interface": "ide",
                    "hdc_disk_image": "",
                    "hdc_disk_image_md5sum": null,
                    "hdc_disk_interface": "ide",
                    "hdd_disk_image": "",
                    "hdd_disk_image_md5sum": null,
                    "hdd_disk_interface": "ide",
                    "initrd": "",
                    "initrd_md5sum": null,
                    "kernel_command_line": "",
                    "kernel_image": "",
                    "kernel_image_md5sum": null,
                    "legacy_networking": false,
                    "linked_clone": true,
                    "mac_address": "0c:9b:e9:1b:5c:00",
                    "on_close": "power_off",
                    "options": "-vga virtio",
                    "platform": "x86_64",
                    "process_priority": "normal",
                    "qemu_path": "/usr/bin/qemu-system-x86_64",
                    "ram": 2048,
                    "replicate_network_connection_state": true,
                    "usage": "Username: gns3\nPassword: gns3 | MD5: 435f15a54f7f673e302ad26f05226e0e"
                },
                "symbol": ":/symbols/classic/qemu_guest.svg",
                "template_id": "ced16f81-8b49-49ae-bccc-24ef2f73c05e",
                "width": 65,
                "x": -107,
                "y": -29,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": null,
                "console_auto_start": false,
                "console_type": "none",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 48,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "FRSW1",
                    "x": 1,
                    "y": -25
                },
                "locked": false,
                "name": "FRSW1",
                "node_id": "552f192e-1e80-4ddc-9507-ae408dd7251d",
                "node_type": "frame_relay_switch",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "mappings": {
                        "1:100": "11:200",
                        "2:101": "12:201",
                        "3:102": "13:202",
                        "4:103": "14:203",
                        "5:104": "15:204",
                        "6:105": "16:205",
                        "7:106": "17:206",
                        "8:107": "18:207",
                        "9:108": "19:208"
                    }
                },
                "symbol": ":/symbols/frame_relay_switch.svg",
                "template_id": "dd0f6f3a-ba58-3249-81cb-a1dd88407a47",
                "width": 51,
                "x": 424,
                "y": -398,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": null,
                "console_auto_start": false,
                "console_type": "none",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 48,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "FRSW2",
                    "x": 1,
                    "y": -25
                },
                "locked": false,
                "name": "FRSW2",
                "node_id": "d4e76d64-2682-4ce3-a54c-a29e9501ef9c",
                "node_type": "frame_relay_switch",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "mappings": {
                        "1:100": "11:200",
                        "2:101": "12:201",
                        "3:102": "13:202",
                        "4:103": "14:203",
                        "5:104": "15:204",
                        "6:105": "16:205",
                        "7:106": "17:206",
                        "8:107": "18:207"
                    }
                },
                "symbol": ":/symbols/frame_relay_switch.svg",
                "template_id": "dd0f6f3a-ba58-3249-81cb-a1dd88407a47",
                "width": 51,
                "x": 649,
                "y": -398,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": null,
                "console_auto_start": false,
                "console_type": "none",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 48,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "FRSW3",
                    "x": -49,
                    "y": 12
                },
                "locked": false,
                "name": "FRSW3",
                "node_id": "99dc8ad3-b55b-4489-bfaa-5187699e4721",
                "node_type": "frame_relay_switch",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "mappings": {
                        "1:100": "11:200",
                        "2:101": "12:201",
                        "3:102": "13:202",
                        "4:103": "14:203",
                        "5:104": "15:204",
                        "6:105": "16:205",
                        "7:106": "17:206",
                        "8:107": "18:207"
                    }
                },
                "symbol": ":/symbols/frame_relay_switch.svg",
                "template_id": "dd0f6f3a-ba58-3249-81cb-a1dd88407a47",
                "width": 51,
                "x": 424,
                "y": -173,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": null,
                "console_auto_start": false,
                "console_type": "none",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 48,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "FRSW4",
                    "x": 54,
                    "y": 11
                },
                "locked": false,
                "name": "FRSW4",
                "node_id": "dc51f2ed-2b89-4d7a-a97e-46da9bc1b17d",
                "node_type": "frame_relay_switch",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "mappings": {
                        "1:100": "11:200",
                        "2:101": "12:201",
                        "3:102": "13:202",
                        "4:103": "14:203",
                        "5:104": "15:204",
                        "6:105": "16:205",
                        "7:106": "17:206",
                        "8:107": "18:207"
                    }
                },
                "symbol": ":/symbols/frame_relay_switch.svg",
                "template_id": "dd0f6f3a-ba58-3249-81cb-a1dd88407a47",
                "width": 51,
                "x": 649,
                "y": -173,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5027,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 45,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "R5",
                    "x": 21,
                    "y": -25
                },
                "locked": false,
                "name": "R5",
                "node_id": "75a49356-1431-4757-87d2-5d3504561a21",
                "node_type": "dynamips",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "auto_delete_disks": true,
                    "aux": null,
                    "clock_divisor": 4,
                    "disk0": 0,
                    "disk1": 0,
                    "dynamips_id": 4,
                    "exec_area": 64,
                    "idlemax": 500,
                    "idlepc": "0x60632738",
                    "idlesleep": 30,
                    "image": "c7200-adventerprisek9-mz.152-4.M11.image",
                    "image_md5sum": "cee15ae61eda8e10f983390cd0c829fe",
                    "mac_addr": "ca04.a1f4.0000",
                    "midplane": "vxr",
                    "mmap": true,
                    "npe": "npe-400",
                    "nvram": 512,
                    "platform": "c7200",
                    "power_supplies": [
                        1,
                        1
                    ],
                    "ram": 512,
                    "sensors": [
                        22,
                        22,
                        22,
                        22
                    ],
                    "slot0": "C7200-IO-FE",
                    "slot1": "PA-FE-TX",
                    "slot2": "PA-POS-OC3",
                    "slot3": null,
                    "slot4": "PA-POS-OC3",
                    "slot5": null,
                    "slot6": null,
                    "sparsemem": true,
                    "system_id": "FTX0945W0MY",
                    "usage": "POS-OC3"
                },
                "symbol": ":/symbols/router.svg",
                "template_id": "1e9667ad-438f-4b19-a8b3-816cac64a6de",
                "width": 66,
                "x": 417,
                "y": -22,
                "z": 1
            },
            {
                "compute_id": "local",
                "console": 5028,
                "console_auto_start": false,
                "console_type": "telnet",
                "custom_adapters": [],
                "first_port_name": null,
                "height": 45,
                "label": {
                    "rotation": 0,
                    "style": "font-family: DejaVu Sans Mono;font-size: 8.0;font-weight: bold;fill: #204a87;fill-opacity: 1.0;",
                    "text": "R6",
                    "x": 21,
                    "y": -25
                },
                "locked": false,
                "name": "R6",
                "node_id": "4a712f86-eb1d-4e2a-b53b-1a314fd84837",
                "node_type": "dynamips",
                "port_name_format": "Ethernet{0}",
                "port_segment_size": 0,
                "properties": {
                    "auto_delete_disks": true,
                    "aux": null,
                    "clock_divisor": 4,
                    "disk0": 0,
                    "disk1": 0,
                    "dynamips_id": 5,
                    "exec_area": 64,
                    "idlemax": 500,
                    "idlepc": "0x60171348",
                    "idlesleep": 30,
                    "image": "c7200-adventerprisek9-mz.151-4.M.image",
                    "image_md5sum": "b702cc16b3aae00deec519c939a7df5f",
                    "mac_addr": "ca05.a203.0000",
                    "midplane": "vxr",
                    "mmap": true,
                    "npe": "npe-400",
                    "nvram": 512,
                    "platform": "c7200",
                    "power_supplies": [
                        1,
                        1
                    ],
                    "ram": 512,
                    "sensors": [
                        22,
                        22,
                        22,
                        22
                    ],
                    "slot0": "C7200-IO-2FE",
                    "slot1": "PA-8T",
                    "slot2": "PA-8T",
                    "slot3": "PA-8T",
                    "slot4": "PA-8T",
                    "slot5": "PA-8T",
                    "slot6": "PA-2FE-TX",
                    "sparsemem": true,
                    "system_id": "FTX0945W0MY",
                    "usage": "HD Serial WAN"
                },
                "symbol": ":/symbols/router.svg",
                "template_id": "c37acc62-17a5-49cc-9e6a-0a4aea87238f",
                "width": 66,
                "x": 42,
                "y": -22,
                "z": 1
            }
        ]
    },
    "type": "topology",
    "variables": null,
    "version": "2.2.17",
    "zoom": 200
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.