<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<graphic-notation appVersion="0.7.9" version="0.7.9">
<properties>
<property name="multimer" short-description="multimer" type="int" value="0"/>
<property name="product_type" short-description="product arrow type" type="String" value=""/>
<property name="modifier_type" short-description="modifier type" type="String" value=""/>
<property name="text" short-description="text" type="String" value=""/>
<property name="value" short-description="value" type="String" value=""/>
</properties>
<nodes>
<node icon="icon0" type="source-sink"/>
<node icon="icon1" type="tag"/>
<node icon="icon2" type="unspecified entity"/>
<node icon="icon3" type="simple chemical">
<propertyRef name="multimer" value="0"/>
</node>
<node icon="icon4" isCompartment="true" type="macromolecule">
<propertyRef name="multimer" value="0"/>
</node>
<node icon="icon5" isCompartment="true" type="complex"/>
<node icon="icon6" isCompartment="true" type="compartment"/>
<node icon="icon7" type="unit of information">
<propertyRef name="text" value=""/>
</node>
<node icon="icon8" type="variable">
<propertyRef name="value" value=""/>
</node>
<node icon="icon9" type="and"/>
<node icon="icon10" type="or"/>
<node icon="icon11" type="xor"/>
<node icon="icon12" type="not"/>
</nodes>
<edges>
<edge icon="icon13" type="consumption"/>
</edges>
<reactions>
<reaction icon="icon14" type="transition">
<propertyRef name="modifier_type" value=""/>
<propertyRef name="product_type" value=""/>
</reaction>
<reaction icon="icon15" type="omitted process">
<propertyRef name="modifier_type" value=""/>
<propertyRef name="product_type" value=""/>
</reaction>
<reaction icon="icon16" type="uncertain process">
<propertyRef name="modifier_type" value=""/>
<propertyRef name="product_type" value=""/>
</reaction>
<reaction icon="icon17" type="association">
<propertyRef name="modifier_type" value=""/>
<propertyRef name="product_type" value=""/>
</reaction>
<reaction icon="icon18" type="dissociation">
<propertyRef name="modifier_type" value=""/>
<propertyRef name="product_type" value=""/>
</reaction>
</reactions>
<viewOptions/>
<viewBuilder prototype="biouml.model.DefaultDiagramViewBuilder">
<nodeView type="unspecified entity"><![CDATA[function f(container, node, options, g)
{ 
    var d, pen, brush;
    d = new Dimension(70,40);
    brush = new Brush(new Color(1.0, 1.0, 0.9));
    pen = options.getDefaultPen();
    var ellipse = new EllipseView(pen, brush, 0, 0, d.width, d.height);
    container.add(ellipse);
    var title = new TextView(node.getValue('title', ''), options.getNodeTitleFont(), g); 
    container.add(title, CompositeView.X_CC | CompositeView.Y_CC); 
    return false; 
}]]></nodeView>
<nodeView type="xor"><![CDATA[function f(container, node, options, g)
{
     var d, pen, brush;
    d = new Dimension(30,30);
    brush = new Brush(new Color(1.0, 1.0, 1.0));
    pen = options.getDefaultPen();
    var ellipse = new EllipseView(pen, brush, 0, 0, d.width, d.height);
    container.add(ellipse);
    var title = new TextView("XOR", options.getNodeTitleFont(), g); 
    container.add(title, CompositeView.X_CC | CompositeView.Y_CC);
    return false; 
}]]></nodeView>
<nodeView type="complex"><![CDATA[function f(container, node, options, g)
{
    var d, pen, brush;
    d = node.getValue("shapeSize", null);
    if(d.width == 0 && d.height == 0) 
    {
        d.width = 150; 
        d.height = 150;
    }
    brush = new Brush(new Color(0.9, 1.0, 1.0));
    pen = options.getDefaultPen();
    var x = new Array (20,d.width-20,d.width,d.width,d.width-20,20,0,0); 
    var y = new Array (0,0,20,d.height-20,d.height,d.height,d.height-20,20); 
    var polygon = new PolygonView(pen, brush, x, y);  
    container.add(polygon); 

    return false; 
}]]></nodeView>
<nodeView type="dissociation"><![CDATA[function f(container, de, options, g, isNode, role)
{
    var d, pen, brush;
    d = new Dimension(15,15);
    d2 = new Dimension(9,9);
    brush = new Brush(new Color(1.0, 1.0, 1.0));
    brush2 = new Brush(new Color(0.0, 0.0, 0.0));
    pen = options.getDefaultPen();
    if(isNode)
    {
       var ellipse1 = new EllipseView(pen, brush, 0, 0, d.width, d.height);
       container.add(ellipse1);
       var ellipse2 = new EllipseView(pen, brush, 3, 3, d2.width, d2.height);
       container.add(ellipse2);
    }
    else
    {
        var path = JSUtility.getPath(de);
        if(role == 'product')
        {
            var productType = de.getValue("product_type", "");
            if(productType == "stimulation")
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createTriangleTip(pen, brush, 15, 5));
            }
            else  if(productType == "inhibition")
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createDiamondTip(pen, brush2, 0,0, 8));
            }
            else
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createTriangleTip(pen, brush2, 15, 5));
            }
        }
        else if(role == 'modifier')
        {
	  var productType = node.getValue("modifier_type", "");
            if(productType == "stimulation")
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createTriangleTip(pen, brush, 15, 5), null);
            }
            else if(productType == "catalysis")
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createEllipseTip(pen, brush, 6), null);
            }
            else
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createDiamondTip(pen, brush, 5, 10, 5), null);
            }
        }
        else
        {
            var arrow = new ArrowView(pen, brush, path, 0, 0);
        }
        container.add(arrow);
    }
    return false;
}]]></nodeView>
<nodeView type="unit of information"><![CDATA[function f(container, node, options, g)
{
    var d, pen, brush;
    d = new Dimension(40,20);
    brush = new Brush(new Color(1.0, 1.0, 1.0));
    pen = options.getDefaultPen();
    var ellipse = new BoxView(pen, brush, 0, 0, d.width, d.height);
    container.add(ellipse);
    var title = new TextView(node.getValue('text', ''), options.getNodeTitleFont(), g); 
    container.add(title, CompositeView.X_CC | CompositeView.Y_CC); 
    return false; 
}]]></nodeView>
<nodeView type="association"><![CDATA[function f(container, de, options, g, isNode, role)
{
    var d, pen, brush;
    d = new Dimension(15,15);
    brush = new Brush(new Color(0.0, 0.0, 0.0));
    brush2 = new Brush(new Color(1.0, 1.0, 1.0));
    pen = options.getDefaultPen();
    if(isNode)
    {
       var ellipse = new EllipseView(pen, brush, 0, 0, d.width, d.height);
       container.add(ellipse);
    }
    else
    {
        var path = JSUtility.getPath(de);
        if(role == 'product')
        {
            var productType = de.getValue("product_type", "");
            if(productType == "stimulation")
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createTriangleTip(pen, brush, 15, 5));
            }
            else  if(productType == "inhibition")
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createDiamondTip(pen, brush2, 0,0, 8));
            }
            else
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createTriangleTip(pen, brush2, 15, 5));
            }
        }
        else if(role == 'modifier')
        {
	        var productType = de.getValue("modifier_type", "");
            if(productType == "stimulation")
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createTriangleTip(pen, brush2, 15, 5), null);
            }
            else if(productType == "catalysis")
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createEllipseTip(pen, brush2, 6), null);
            }
            else
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createDiamondTip(pen, brush2, 5, 10, 5), null);
            }
        }
        else
        {
            var arrow = new ArrowView(pen, brush, path, 0, 0);
        }
        container.add(arrow);
    }
    return false;
}]]></nodeView>
<nodeView type="consumption"><![CDATA[function f(container, edge, options, g)
{
    var pen, brush;
    brush = new Brush(new Color(0.0, 0.0, 0.0));
    pen = options.getDefaultPen();
    var arrow = new ArrowView(pen, brush, JSUtility.getPath(edge), 0, 0);
    container.add(arrow);
    return false;
}]]></nodeView>
<nodeView type="or"><![CDATA[function f(container, node, options, g)
{
    var d, pen, brush;
    d = new Dimension(30,30);
    brush = new Brush(new Color(1.0, 1.0, 1.0));
    pen = options.getDefaultPen();
    var ellipse = new EllipseView(pen, brush, 0, 0, d.width, d.height);
    container.add(ellipse);
    var title = new TextView("OR", options.getNodeTitleFont(), g); 
    container.add(title, CompositeView.X_CC | CompositeView.Y_CC);
    return false; 
}]]></nodeView>
<nodeView type="tag"><![CDATA[function f(container, node, options, g)
{
    var d, pen, brush;
    d = new Dimension(70,40);
    brush = new Brush(new Color(0.9, 0.9, 1.0));
    pen = options.getDefaultPen();
    var x = new Array (0,d.width-25,d.width,d.width-25,0); 
    var y = new Array (0,0,d.height/2,d.height,d.height); 
    var polygon = new PolygonView(pen, brush, x, y);  
    container.add(polygon); 
    var title = new TextView(node.getValue('title', ''), options.getNodeTitleFont(), g); 
    container.add(title, CompositeView.X_CC | CompositeView.Y_CC); 
    return false; 
}]]></nodeView>
<nodeView type="macromolecule"><![CDATA[function f(container, node, options, g) 
{
    var d, pen, brush;
    d = node.getValue("shapeSize", null);
    if(d.width == 0 && d.height == 0) 
    {
        d.width = 70; 
        d.height = 40;
    }
    brush = new Brush(new Color(0.9, 1.0, 0.9));
    pen = options.getDefaultPen();
    var multimer = node.getValue("multimer", 0);
    if(multimer>1)
    {
         var rect = new RoundRectangle2D.Float(5, 5, d.width, d.height, 20, 20);
         var box = new BoxView(pen, brush, rect); 
         container.add(box); 
    }
    var rect = new RoundRectangle2D.Float(0, 0, d.width, d.height, 20, 20);
    var box = new BoxView(pen, brush, rect); 
    container.add(box); 
    var title = new TextView(node.getValue('title', ''), options.getNodeTitleFont(), g); 
    container.add(title, CompositeView.X_CC | CompositeView.Y_CC); 
    if(multimer>1)
    {
         var mbox = new BoxView(pen, brush, 10, -10, 20, 20); 
         container.add(mbox); 
         var mcount = new TextView(node.getValue('multimer', '...'), options.getNodeTitleFont(), g); 
         var mPosition = new Point(15, 2); 
         container.add(mcount, CompositeView.X_LL | CompositeView.Y_TT, mPosition); 
    }
    return false; 
}]]></nodeView>
<nodeView type="transition"><![CDATA[function f(container, de, options, g, isNode, role)
{
    var d, pen, brush;
    d = new Dimension(15,15);
    brush = new Brush(new Color(1.0, 1.0, 1.0));
    brush2 = new Brush(new Color(0.0, 0.0, 0.0));
    pen = options.getDefaultPen();
    if(isNode)
    {
       var box = new BoxView(pen, brush, 0, 0, d.width, d.height);
       container.add(box);
    }
    else
    {
        var path = JSUtility.getPath(de);
        if(role == 'product')
        {
            var productType = de.getValue("product_type", "");
            if(productType == "stimulation")
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createTriangleTip(pen, brush, 15, 5));
            }
            else  if(productType == "inhibition")
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createDiamondTip(pen, brush2, 0,0, 8));
            }
            else
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createTriangleTip(pen, brush2, 15, 5));
            }
        }
        else if(role == 'modifier')
        {
	  var productType = node.getValue("modifier_type", "");
            if(productType == "stimulation")
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createTriangleTip(pen, brush, 15, 5), null);
            }
            else if(productType == "catalysis")
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createEllipseTip(pen, brush, 6), null);
            }
            else
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createDiamondTip(pen, brush, 5, 10, 5), null);
            }
        }
        else
        {
            var arrow = new ArrowView(pen, brush, path, 0, 0);
        }
        container.add(arrow);
    }
    return false;
}]]></nodeView>
<nodeView type="simple chemical"><![CDATA[function f(container, node, options, g)
{ 
    var d, pen, brush;
    d = new Dimension(50,50);
    brush = new Brush(new Color(1.0, 0.9, 1.0));
    pen = options.getDefaultPen();
    var multimer = node.getValue("multimer", 0);
    if(multimer>1)
    {
         var ellipse = new EllipseView(pen, brush, 5, 5, d.width, d.height);
         container.add(ellipse); 
    }
    var ellipse = new EllipseView(pen, brush, 0, 0, d.width, d.height);
    container.add(ellipse);
    var title = new TextView(node.getValue('title', ''), options.getNodeTitleFont(), g); 
    container.add(title, CompositeView.X_CC | CompositeView.Y_CC);
    if(multimer>1)
    {
         var mbox = new BoxView(pen, brush, d.width/2-10, -10, 20, 20); 
         container.add(mbox); 
         var mcount = new TextView(node.getValue('multimer', '...'), options.getNodeTitleFont(), g); 
         var mPosition = new Point(d.width/2-5, 2); 
         container.add(mcount, CompositeView.X_LL | CompositeView.Y_TT, mPosition); 
    } 
    return false; 
}]]></nodeView>
<nodeView type="uncertain process"><![CDATA[function f(container, de, options, g, isNode, role)
{
    var d, pen, brush;
    d = new Dimension(15,15);
    brush = new Brush(new Color(1.0, 1.0, 1.0));
    brush2 = new Brush(new Color(0.0, 0.0, 0.0));
    pen = options.getDefaultPen();
    if(isNode)
    {
        var box = new BoxView(pen, brush, 0, 0, d.width, d.height);
        container.add(box);
        var title = new TextView("?", options.getNodeTitleFont(), g); 
        container.add(title, CompositeView.X_CC | CompositeView.Y_TT); 
    }
    else
    {
        var path = JSUtility.getPath(de);
        if(role == 'product')
        {
            var productType = de.getValue("product_type", "");
            if(productType == "stimulation")
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createTriangleTip(pen, brush, 15, 5));
            }
            else  if(productType == "inhibition")
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createDiamondTip(pen, brush2, 0,0, 8));
            }
            else
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createTriangleTip(pen, brush2, 15, 5));
            }
        }
        else if(role == 'modifier')
        {
	        var productType = de.getValue("modifier_type", "");
            if(productType == "stimulation")
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createTriangleTip(pen, brush, 15, 5), null);
            }
            else if(productType == "catalysis")
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createEllipseTip(pen, brush, 6), null);
            }
            else
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createDiamondTip(pen, brush, 5, 10, 5), null);
            }
        }
        else
        {
            var arrow = new ArrowView(pen, brush, path, 0, 0);
        }
        container.add(arrow);
    }
    return false;
}]]></nodeView>
<nodeView type="omitted process"><![CDATA[function f(container, de, options, g, isNode, role)
{
    var d, pen, brush;
    d = new Dimension(15,15);
    brush = new Brush(new Color(1.0, 1.0, 1.0));
    brush2 = new Brush(new Color(0.0, 0.0, 0.0));
    pen = options.getDefaultPen();
    if(isNode)
    {
       var box = new BoxView(pen, brush, 0, 0, d.width, d.height);
       container.add(box);
       var x = new Array (3,8); 
       var y = new Array (3,12); 
       var line1 = new PolygonView(pen, brush, x, y);  
       container.add(line1); 
       var x = new Array (8,13); 
       var y = new Array (3,12); 
       var line1 = new PolygonView(pen, brush, x, y);  
       container.add(line1); 
    }
    else
    {
        var path = JSUtility.getPath(de);
        if(role == 'product')
        {
            var productType = de.getValue("product_type", "");
            if(productType == "stimulation")
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createTriangleTip(pen, brush, 15, 5));
            }
            else  if(productType == "inhibition")
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createDiamondTip(pen, brush2, 0,0, 8));
            }
            else
            {
                var arrow = new ArrowView(pen, brush, path, null, ArrowView.createTriangleTip(pen, brush2, 15, 5));
            }
        }
        else if(role == 'modifier')
        {
	        var productType = de.getValue("modifier_type", "");
            if(productType == "stimulation")
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createTriangleTip(pen, brush, 15, 5), null);
            }
            else if(productType == "catalysis")
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createEllipseTip(pen, brush, 6), null);
            }
            else
            {
                var arrow = new ArrowView(pen, brush, path, ArrowView.createDiamondTip(pen, brush, 5, 10, 5), null);
            }
        }
        else
        {
            var arrow = new ArrowView(pen, brush, path, 0, 0);
        }
        container.add(arrow);
    }
    return false;
}]]></nodeView>
<nodeView type="and"><![CDATA[function f(container, node, options, g)
{
    var d, pen, brush;
    d = new Dimension(30,30);
    brush = new Brush(new Color(1.0, 1.0, 1.0));
    pen = options.getDefaultPen();
    var ellipse = new EllipseView(pen, brush, 0, 0, d.width, d.height);
    container.add(ellipse);
    var title = new TextView("AND", options.getNodeTitleFont(), g); 
    container.add(title, CompositeView.X_CC | CompositeView.Y_CC);
    return false; 
}]]></nodeView>
<nodeView type="not"><![CDATA[function f(container, node, options, g)
{
    var d, pen, brush;
    d = new Dimension(30,30);
    brush = new Brush(new Color(1.0, 1.0, 1.0));
    pen = options.getDefaultPen();
    var ellipse = new EllipseView(pen, brush, 0, 0, d.width, d.height);
    container.add(ellipse);
    var title = new TextView("NOT", options.getNodeTitleFont(), g); 
    container.add(title, CompositeView.X_CC | CompositeView.Y_CC);
    return false; 
}]]></nodeView>
<nodeView type="source-sink"><![CDATA[function f(container, node, options, g)
{ 
            var d, pen, brush;
            d = new Dimension(40,40);
            brush = new Brush(new Color(1.0, 0.9, 0.9));
            pen = options.getDefaultPen();
            var ellipse = new EllipseView(pen, brush, 0, 0, d.width, d.height);
            var x = new Array (3,d.width-3);
            var y = new Array (d.height+3,-3);
            var polygon = new PolygonView(pen, null, x, y); 
            container.add(ellipse);
            container.add(polygon);
            return false; 
}]]></nodeView>
<nodeView type="variable"><![CDATA[function f(container, node, options, g)
{
    var d, pen, brush;
    d = new Dimension(40,20);
    brush = new Brush(new Color(1.0, 1.0, 1.0));
    pen = options.getDefaultPen();
    var ellipse = new EllipseView(pen, brush, 0, 0, d.width, d.height);
    container.add(ellipse);
    var title = new TextView(node.getValue('name', '')+' '+node.getValue('value', ''), options.getNodeTitleFont(), g); 
    container.add(title, CompositeView.X_CC | CompositeView.Y_CC); 
    return false; 
}]]></nodeView>
<nodeView type="compartment"><![CDATA[function f(container, node, options, g) 
{
     var d, pen, brush;
    d = node.getValue("shapeSize", null);
    if(d.width == 0 && d.height == 0) 
    {
        d.width = 150; 
        d.height = 150;
    }
    brush = new Brush(new Color(1.0, 1.0, 1.0));
    pen = options.getDefaultPen();
    var rect = new RoundRectangle2D.Float(0, 0, d.width, d.height, 40, 15);
    var box = new BoxView(pen, brush, rect); 
    container.add(box); 
    var title = new TextView(node.getValue('title', ''), options.getNodeTitleFont(), g); 
    var textPosition = new Point((d.width-title.getBounds().width)-5, 2); 
    container.add(title, CompositeView.X_LL | CompositeView.Y_TT, textPosition); 

    return false; 
}]]></nodeView>
</viewBuilder>
<icons>
<icon name="icon0">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABVUlEQVR42rWTbYuCQBSF+/+f+xOVZKUSEkQGlYKiQR8Ke5PoTVPrF5zlXJhll5KIZQeGwXHuc8+5c6eGP47aJ4fzPEdZlu8BQRBgPB7DNE1Mp1Nst1vZdxwHj8ejGrBer9Hr9TCZTBBFkQT6vo/RaIR6vS57lRZ2ux3a7TbO5zNutxuu1ytOp5NIpqJms4l+v18NMAwDx+MRl8tFAjkJWS6X0DQN9/sd8/lcbDwBNpsNBoOBFEkFUwnXRqOB/X4v4DRN5fsJQImz2UwOKABtsB5hGCLLsu89y7IE9gvAohGiADzoeZ54/qmK+7ZtI0mSagv0Hcex+GYmZYWTSnRdf11EymUwg1qtlkDVTaiCrlYrUfASsFgs5OdwOBQ7yjcnrVEJk/A2Khup2+1KwzD74XCQQPplA3U6HYFV9gH9u64rmaiEMPrlyrZ++5joryiK/32Nr8YXxUi7n1KPFGwAAAAASUVORK5CYII=</icon>
<icon name="icon1">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAkElEQVR42t2TMQrEIBBFc//D2OkNgtjYmEasVAhqUqRUm79oG7OwuMWyA48pnHmKowsmY/kNgbUWzjl474e0teu6xoJaKwghMMZAa/0I57xvdBOUUsAYw3EcCCEMiTH2LISAlPIuoJT2on3f35JSglKqi3LOnwsa53li2zas6zp3gtb3nTuYnsL0O/iTvzATL13u0nBgrzJ1AAAAAElFTkSuQmCC</icon>
<icon name="icon2">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA/UlEQVR42tWSSWuEQBCF5///IZG5uFxGcRncFVfQcUNBBPH2hioYQxhiDoGQCAWlbX/1+r2+4IfP5e8Btm1DURSwLAuKouB6vULXdfi+j3Vdvwbs+84/yrIMx3EYEEURsizj3rZtaJoGSZIwjuM7gDbHcYy+77mGYUDXdWjblnsq+l6WJSuj/gCQPM/zmPx4PE6LoHVd88ADIIoi0jTlxe8AVDTddd0PAJlmGAamaWLJZ5vpKHmesy+fPAiCgE2qqurw4eXFqydAGIa43W6c1luMTdNAVVVWQ56Q86Zpcir3+x2CIPAgSuz0IlHey7IgSRKWOs8zv/+Tq/zrgCfkVdNskoL2ugAAAABJRU5ErkJggg==</icon>
<icon name="icon3">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHElEQVR42q2T24qDUAxF+/+fI4qoVbxiCz5YBS+oiC9eW4oo9TFDAiKd0drSObAhHMxKzNk5wJfnsHYZxzEIggAsy5Iw9n1/H/B4PEBRFDBNE4qigLZtSRifTicQRRG6rtsGyLIMSZLA9XqFqqqgLEsSxniHIJ7n4X6//wVYlgWXy4UqzIm/1TQNpGkKkiQ9A5DIcRxV2Uqehd9omgZhGC4Az/PgfD6/rD6rrmtK1nV9AbiuSxBscQ+AwlmoqroAoiiiGbzbQRAEYBjGAhiGARiGeQtwu93otbIse34Fx3FIrwaJBbBbHOKqD47HI7W35QN8Qux0HMd1wDRNRMcJ53lOQ52daNs2ubTv+/1dwP9D/6M3PtqFf9vGT84PQa6/hqfsq/MAAAAASUVORK5CYII=</icon>
<icon name="icon4">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAoUlEQVR42s2TvQ6FIAyFff8ncyEEgvI3I6ITsLD1pjXG3MVrrgtNThg4/SgtDPAyhn4AIQRYloXWO52e1toFYIyBMQastY/knINxHA9ArRWklLBtG6zr+kj7vlNOzvkATNNEG1jeE6WUCFBK6QUwz/M7gBCCmhhj/NlA9GATMYcAOAqlFFXhvacR3Qk9WmvgnH8/pHOMeMKd0INX6PAv/Bsf77LMGemNaaUAAAAASUVORK5CYII=</icon>
<icon name="icon5">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAYklEQVR42u2TMQrAMAhFvf8ZDdFgksFD/CKhQ7emZqzwwEGegkpIBt2Ju2/xENRawcwopbwiakVkCVprMDPMObdQVfTeQdF9jLFNNA4JxShfBcEvOCFIrzF9SOlTPvJMmbgATO+7PPT9np0AAAAASUVORK5CYII=</icon>
<icon name="icon6">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAY0lEQVR42u2TywoAIQhF+/9vjLIMW9cP3OEGzbrHbhjhiIKelTpchmPqvQ9aa0vM2SFQVXjvkVKCiCzB2RgjQghwbCiptW4zBDlnEDPb5hd8R3B9SKWUo1PmMuvjZyLvN97EA/Bgu5NeE6n3AAAAAElFTkSuQmCC</icon>
<icon name="icon7">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAJUlEQVR42mP4TyFgGDWAygYwMDAQhfEaQNDGwW8ARWEwmpDIAwA5fK58zQ3M4QAAAABJRU5ErkJggg==</icon>
<icon name="icon8">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVR42mP4TyFgGDUAuwEMDAxYMUED8CnEJc+ALEm0s5HUUs8Air1AlUAcTYnkAQCDTrR20iDyOQAAAABJRU5ErkJggg==</icon>
<icon name="icon9">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAU0lEQVR42q1TWwoAIAjb/S9dv6FbzVQIxfYAM6xmgDYBeiwBBVR3cMkKgwqZYVElR5EkwOozp54CvrIUiC7U9SZgO6sZfA2x/YwjizSyyiOfqRobC5ZF5bXtHKsAAAAASUVORK5CYII=</icon>
<icon name="icon10">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAUklEQVR42mP4TyFgwCrIwIAVE2UALoW45BiI1YxLDQMpmrGpZSBVM7ohOA1AsQVLIOI1AC6JgybLAJJcgNM2Yl1AciBSHI1USUhUScpUyUykAgDtN2bE17x/8gAAAABJRU5ErkJggg==</icon>
<icon name="icon11">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAUElEQVR42q1TWw4AIAji/peu7wx8uzmbATM1nKGBJgHqKQEFVHfIkhUGFTLDokq2Io+Ajez8YSOCim0Bt4LME8IKWk0cj3FlkVZWeeUzVe0CymBU1iwEm0sAAAAASUVORK5CYII=</icon>
<icon name="icon12">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAUklEQVR42q2T2woAIAhD9/8/Xc/K5l2QwrYDmeEtA7QI0CwBlFCdoWpWGnTMTIuu2UMMwK9s75saAiKgBBj6BBBdIQWMm7h+xpNBOhnlk8/UjQ//rFHZ/TucYAAAAABJRU5ErkJggg==</icon>
<icon name="icon14">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAs0lEQVR42s2TsQnDMBREtaF28AQq3Bi8gybQAgJbuLE1hRprDtXGzYULGOJEP4akseCqe3p8fZDCn0fdS7BtG3LOSClVw46MKJjnGU3TwFpbDTsyomAYBsQYxXHZkTkJ9n3HEe89xnEUBezIvN5Rfd+jbdtntNZYlkUUsCNz8Lx7esI0TZcTkBF3QOBK8N5/CEIIooDdVwEX5JxDKaUadmREwbquMMag67pq2JG58V/45TwAnHK0fDfikh4AAAAASUVORK5CYII=</icon>
<icon name="icon15">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABC0lEQVR42t1TO4uDQBjMz7X0T6QQRRE7EbVQCxuxFPwDosFGEBEfJEV8FCIWlhO+BQ/ucnjFdVkYdtmdmf1mHxf8s10+0KCua6Rpitvt9g1ZlmFZlnODdV3B8zyCIEAYhvB9n/UESZJgGMa5wTzP0HUdeZ6jqioMw4A4jtlaWZawbfvdwHVdmKbJFkVRhCAI2LYNiqIwgqqqGMcRj8cDHMfBcRzGJ5D20nUdmqZB3/dIkgSyLDMhESl3URSMeL/fWYzn88n4BNK+RdA0jY2nafqqgmJFUcSM/jyDw4AaVUQ7khlV5HneuQFlp1uwLItlJBGNSXi9Xn8/xJ8TtBu9hSPngbZtse/7J/6FF7NsuXQ2zMTwAAAAAElFTkSuQmCC</icon>
<icon name="icon16">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAxUlEQVR42u1SuwqEQBDz/7G0VLERCwvxAdv4ASJiqY2ooFaWaimRCdzhsYXFtQYGhiST3R3WwJ8w3gA9YF1XmKYJz/MQBAF834fruuREewwYhgFxHGPfdw4XRYHzPBFFETUtIMsyip+yLAtKKSzLgrquYds2jUmSULt7ZdYYxxF9338rz3OaBWVZoqoq9mmaUrt7ZVZ7Qtd1vIGgaRocx8FeONEed9C2LRzHwTzPPGGaJvbCifYYsG0btx+G4U8JJ9r7lXVcy8LM+qD13nEAAAAASUVORK5CYII=</icon>
<icon name="icon17">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAiUlEQVR42mP4TyFgGDUAtwHnzp37n5ub+7+tre3/u3fvSDNg9+7d/5mZmf8zMDCAsba29v8nT55gN2Djxo3/V69eDccgvpGREVwzDPv7+//fsmULhlqGL1++/P/8+TMYg9gg4OzsjGGAg4MDWA5dPVFeALFBYiQF4o4dO/7r6emBMYg9mhJpaAAA0mmsSzJHRkoAAAAASUVORK5CYII=</icon>
<icon name="icon18">iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAtUlEQVR42u2SvQqEMBCEff/KBxCxUxTEQqMGFGzEQjCQKiFdCkHyAqnmSOAOhPNArnXh62Zm2Z8Af1bwBFwH7PuOdV0hpbwfwDlHVVVIkgR5nmMYhusApRSEEB8YY8iyDNu2YZom9H2Puq5BKT3pHM4bjOPoRW/iOPZ0Xec7WGuRpinCMDzpHM77dYSiKEAIgdYa8zxjWRa0bXt/B1EU+TGc2Rhz7wpu+2VZomkaHMfxvPKPegG8wdVAIkqO6gAAAABJRU5ErkJggg==</icon>
</icons>
<semanticController prototype="biouml.model.DefaultSemanticController">
<canAccept><![CDATA[function f(container, de)
{
    return true; 
}]]></canAccept>
<isResizable><![CDATA[function f(de)
{
    var type = de.getValue('kernel', '').getType();
    if(type == "variable")
    {
        return false;
    }
    return true;
}]]></isResizable>
<move><![CDATA[function f(location, node, parent)
{
    var deType = node.getValue('kernel', '').getType();
    if(deType == "unit of information" || deType == "variable")
    {
        var type = parent.getValue('kernel', '').getType();
        if(type == 'compartment' || type == 'complex' || type == 'macromolecule')
        {
           JSUtility.moveToEdge(location, node, parent);
        }
    }
}]]></move>
</semanticController>
<examples>
<example name="complex">
<diagram diagramType="biouml.model.xml.XmlDiagramType" notation="">
<diagramInfo/>
<layouterInfo>
<o n="layouterInfo" t="ru.biosoft.graph.ForceDirectedLayouter">
<v>
<wi n="initialPlacement" v="1"/>
<wi n="edgeLength" v="150"/>
<wf n="repulsion" v="1.0"/>
<wi n="repulsionDistance" v="10"/>
<wf n="gravity" v="0.06"/>
<wi n="orientation" v="0"/>
<wi n="distanceMethod" v="0"/>
<wf n="attraction" v="1.0"/>
<wf n="magneticIntencity" v="0.0"/>
<wi n="iterationNumber" v="100"/>
<wf n="minTemperature" v="0.0"/>
<wf n="maxTemperature" v="0.0"/>
<o n="dpl" t="ru.biosoft.graph.DiagonalPathLayouter">
<v>
<wi n="lineDistance" v="10"/>
<o n="selfLoopLayouter" t="ru.biosoft.graph.SelfLoopLayouter">
<v>
<wi n="loopLength" v="30"/>
</v>
</o>
</v>
</o>
<wb n="horisontalMovementAllowed" v="true"/>
<wb n="verticalMovementAllowed" v="true"/>
<o n="pathWeighter" t="ru.biosoft.graph.PathWeighter">
<v>
<wi n="bendPenalty" v="500"/>
<wi n="confluencePenalty" v="50000"/>
<wi n="lengthPenalty" v="1"/>
</v>
</o>
<o n="sl" t="ru.biosoft.graph.SubgraphLayouter">
<v>
<wi n="layerDeltaX" v="150"/>
<wi n="layerDeltaY" v="150"/>
</v>
</o>
</v>
</o>
</layouterInfo>
<compartmentInfo color="255,255,255" height="150" kernel="stub/complex" kernel_type="info-diagram" shape="0" width="150" x="0" y="0"/>
<nodes>
<compartment>
<compartmentInfo color="255,255,255" height="276" kernel="stub/dscsdacsdcsd" kernel_type="complex" shape="0" width="361" x="43" y="31"/>
<nodes>
<node height="50" kernel="stub/csacdsc" kernel_type="unit of information" width="50" x="137" y="297">
<property name="text" short-description="text" type="String" value="INFO"/>
</node>
<compartment>
<compartmentInfo color="255,255,255" height="206" kernel="stub/dcdscsdcd" kernel_type="complex" shape="0" width="180" x="171" y="54"/>
<nodes>
<compartment>
<compartmentInfo color="255,255,255" height="71" kernel="stub/label3" kernel_type="macromolecule" shape="0" width="67" x="252" y="84"/>
<nodes>
<node height="50" kernel="stub/ascascsac" kernel_type="unit of information" width="50" x="236" y="74">
<property name="text" short-description="text" type="String" value="INFO"/>
</node>
<node height="50" kernel="stub/var2" kernel_type="variable" width="50" x="282" y="74">
<property name="value" short-description="value" type="String" value=""/>
</node>
</nodes>
<edges/>
<property name="multimer" short-description="multimer" type="int" value="0"/>
</compartment>
<node height="50" kernel="stub/label4" kernel_type="simple chemical" width="50" x="276" y="189"/>
<node height="50" kernel="stub/varX" kernel_type="variable" width="50" x="222" y="250">
<property name="value" short-description="value" type="String" value=""/>
</node>
</nodes>
<edges/>
</compartment>
<compartment>
<compartmentInfo color="255,255,255" height="67" kernel="stub/label1" kernel_type="macromolecule" shape="0" width="65" x="87" y="137"/>
<nodes>
<node height="50" kernel="stub/cdcsdc" kernel_type="unit of information" width="50" x="68" y="127">
<property name="text" short-description="text" type="String" value="INFO"/>
</node>
<node height="50" kernel="stub/var1" kernel_type="variable" width="50" x="112" y="127">
<property name="value" short-description="value" type="String" value=""/>
</node>
</nodes>
<edges/>
<property name="multimer" short-description="multimer" type="int" value="0"/>
</compartment>
<node height="50" kernel="stub/varY" kernel_type="variable" width="50" x="242" y="297">
<property name="value" short-description="value" type="String" value=""/>
</node>
</nodes>
<edges/>
</compartment>
</nodes>
<edges/>
<filters>
<a n="filters" t="[Lbiouml.model.DiagramFilter;">
<v/>
</a>
</filters>
</diagram>
</example>
<example name="test">
<diagram diagramType="biouml.model.xml.XmlDiagramType" notation="">
<diagramInfo/>
<layouterInfo>
<o n="layouterInfo" t="ru.biosoft.graph.ForceDirectedLayouter">
<v>
<wi n="initialPlacement" v="1"/>
<wi n="edgeLength" v="150"/>
<wf n="repulsion" v="1.0"/>
<wi n="repulsionDistance" v="10"/>
<wf n="gravity" v="0.06"/>
<wi n="orientation" v="0"/>
<wi n="distanceMethod" v="0"/>
<wf n="attraction" v="1.0"/>
<wf n="magneticIntencity" v="0.0"/>
<wi n="iterationNumber" v="100"/>
<wf n="minTemperature" v="0.0"/>
<wf n="maxTemperature" v="0.0"/>
<o n="dpl" t="ru.biosoft.graph.DiagonalPathLayouter">
<v>
<wi n="lineDistance" v="10"/>
<o n="selfLoopLayouter" t="ru.biosoft.graph.SelfLoopLayouter">
<v>
<wi n="loopLength" v="30"/>
</v>
</o>
</v>
</o>
<wb n="horisontalMovementAllowed" v="true"/>
<wb n="verticalMovementAllowed" v="true"/>
<o n="pathWeighter" t="ru.biosoft.graph.PathWeighter">
<v>
<wi n="bendPenalty" v="500"/>
<wi n="confluencePenalty" v="50000"/>
<wi n="lengthPenalty" v="1"/>
</v>
</o>
<o n="sl" t="ru.biosoft.graph.SubgraphLayouter">
<v>
<wi n="layerDeltaX" v="150"/>
<wi n="layerDeltaY" v="150"/>
</v>
</o>
</v>
</o>
</layouterInfo>
<compartmentInfo color="255,255,255" height="150" kernel="stub/test" kernel_type="info-diagram" shape="0" width="150" x="0" y="0"/>
<nodes>
<compartment>
<compartmentInfo color="255,255,255" height="166" kernel="stub/cdscdc" kernel_type="complex" shape="0" width="221" x="67" y="204"/>
<nodes>
<node height="50" kernel="stub/csdcs" kernel_type="unit of information" width="50" x="99" y="194">
<property name="text" short-description="text" type="String" value="INFO"/>
</node>
<node height="50" kernel="stub/var1" kernel_type="variable" width="50" x="191" y="194">
<property name="value" short-description="value" type="String" value=""/>
</node>
</nodes>
<edges/>
</compartment>
<node height="50" kernel="stub/fdvfdvdf" kernel_type="tag" width="50" x="175" y="56"/>
<node height="50" kernel="stub/fdvfdvfd" kernel_type="unspecified entity" width="50" x="67" y="139"/>
<compartment>
<compartmentInfo color="255,255,255" height="146" kernel="stub/sdcascsac" kernel_type="compartment" shape="0" width="163" x="345" y="204"/>
<nodes>
<node height="50" kernel="stub/sdcsdacdsc" kernel_type="unit of information" width="50" x="354" y="194">
<property name="text" short-description="text" type="String" value="INFO"/>
</node>
</nodes>
<edges/>
</compartment>
<compartment>
<compartmentInfo color="255,255,255" height="89" kernel="stub/test1" kernel_type="macromolecule" shape="0" width="148" x="349" y="52"/>
<nodes>
<node height="50" kernel="stub/csdcds" kernel_type="unit of information" width="50" x="372" y="131">
<property name="text" short-description="text" type="String" value="t1"/>
</node>
<node height="50" kernel="stub/dascdcasdc" kernel_type="unit of information" width="50" x="477" y="61">
<property name="text" short-description="text" type="String" value="t2"/>
</node>
<node height="50" kernel="stub/dscsdacsd" kernel_type="unit of information" width="50" x="391" y="42">
<property name="text" short-description="text" type="String" value="t3"/>
</node>
<node height="50" kernel="stub/t1" kernel_type="variable" width="50" x="329" y="62">
<property name="value" short-description="value" type="String" value=""/>
</node>
<node height="50" kernel="stub/t2" kernel_type="variable" width="50" x="477" y="111">
<property name="value" short-description="value" type="String" value=""/>
</node>
</nodes>
<edges/>
<property name="multimer" short-description="multimer" type="int" value="0"/>
</compartment>
<node height="50" kernel="stub/test2" kernel_type="simple chemical" width="50" x="194" y="126">
<property name="multimer" short-description="multimer" type="int" value="1"/>
</node>
<node height="50" kernel="stub/vfdvdf" kernel_type="source-sink" width="50" x="70" y="54"/>
</nodes>
<edges/>
<filters>
<a n="filters" t="[Lbiouml.model.DiagramFilter;">
<v/>
</a>
</filters>
</diagram>
</example>
<example name="simple">
<diagram diagramType="biouml.model.xml.XmlDiagramType" notation="">
<diagramInfo/>
<layouterInfo>
<o n="layouterInfo" t="ru.biosoft.graph.ForceDirectedLayouter">
<v>
<wi n="initialPlacement" v="1"/>
<wi n="edgeLength" v="150"/>
<wf n="repulsion" v="1.0"/>
<wi n="repulsionDistance" v="10"/>
<wf n="gravity" v="0.06"/>
<wi n="orientation" v="0"/>
<wi n="distanceMethod" v="0"/>
<wf n="attraction" v="1.0"/>
<wf n="magneticIntencity" v="0.0"/>
<wi n="iterationNumber" v="100"/>
<wf n="minTemperature" v="0.0"/>
<wf n="maxTemperature" v="0.0"/>
<o n="dpl" t="ru.biosoft.graph.DiagonalPathLayouter">
<v>
<wi n="lineDistance" v="10"/>
<o n="selfLoopLayouter" t="ru.biosoft.graph.SelfLoopLayouter">
<v>
<wi n="loopLength" v="30"/>
</v>
</o>
</v>
</o>
<wb n="horisontalMovementAllowed" v="true"/>
<wb n="verticalMovementAllowed" v="true"/>
<o n="pathWeighter" t="ru.biosoft.graph.PathWeighter">
<v>
<wi n="bendPenalty" v="500"/>
<wi n="confluencePenalty" v="50000"/>
<wi n="lengthPenalty" v="1"/>
</v>
</o>
<o n="sl" t="ru.biosoft.graph.SubgraphLayouter">
<v>
<wi n="layerDeltaX" v="150"/>
<wi n="layerDeltaY" v="150"/>
</v>
</o>
</v>
</o>
</layouterInfo>
<compartmentInfo color="255,255,255" height="150" kernel="stub/simple" kernel_type="info-diagram" shape="0" width="150" x="0" y="0"/>
<nodes>
<node height="50" kernel="stub/dscsdcs" kernel_type="source-sink" width="50" x="57" y="50"/>
<node height="50" kernel="stub/label1" kernel_type="unspecified entity" width="50" x="167" y="54"/>
<node height="50" kernel="stub/label2" kernel_type="simple chemical" width="50" x="288" y="51"/>
<compartment>
<compartmentInfo color="255,255,255" height="67" kernel="stub/label3" kernel_type="macromolecule" shape="0" width="71" x="420" y="50"/>
<nodes>
<node height="50" kernel="stub/sacscas" kernel_type="unit of information" width="50" x="402" y="40">
<property name="text" short-description="text" type="String" value="INFO"/>
</node>
</nodes>
<edges/>
<property name="multimer" short-description="multimer" type="int" value="1"/>
</compartment>
<node height="50" kernel="stub/label4" kernel_type="simple chemical" width="50" x="140" y="177"/>
<node height="50" kernel="stub/label5" kernel_type="macromolecule" width="50" x="296" y="174"/>
<node height="50" kernel="stub/var1" kernel_type="variable" width="50" x="476" y="73">
<property name="value" short-description="value" type="String" value=""/>
</node>
</nodes>
<edges/>
<filters>
<a n="filters" t="[Lbiouml.model.DiagramFilter;">
<v/>
</a>
</filters>
</diagram>
</example>
<example name="transition">
<diagram diagramType="biouml.model.xml.XmlDiagramType" notation="">
<diagramInfo/>
<layouterInfo>
<o n="layouterInfo" t="ru.biosoft.graph.ForceDirectedLayouter">
<v>
<wi n="initialPlacement" v="1"/>
<wi n="edgeLength" v="150"/>
<wf n="repulsion" v="1.0"/>
<wi n="repulsionDistance" v="10"/>
<wf n="gravity" v="0.06"/>
<wi n="orientation" v="0"/>
<wi n="distanceMethod" v="0"/>
<wf n="attraction" v="1.0"/>
<wf n="magneticIntencity" v="0.0"/>
<wi n="iterationNumber" v="100"/>
<wf n="minTemperature" v="0.0"/>
<wf n="maxTemperature" v="0.0"/>
<o n="dpl" t="ru.biosoft.graph.DiagonalPathLayouter">
<v>
<wi n="lineDistance" v="10"/>
<o n="selfLoopLayouter" t="ru.biosoft.graph.SelfLoopLayouter">
<v>
<wi n="loopLength" v="30"/>
</v>
</o>
</v>
</o>
<wb n="horisontalMovementAllowed" v="true"/>
<wb n="verticalMovementAllowed" v="true"/>
<o n="pathWeighter" t="ru.biosoft.graph.PathWeighter">
<v>
<wi n="bendPenalty" v="500"/>
<wi n="confluencePenalty" v="50000"/>
<wi n="lengthPenalty" v="1"/>
</v>
</o>
<o n="sl" t="ru.biosoft.graph.SubgraphLayouter">
<v>
<wi n="layerDeltaX" v="150"/>
<wi n="layerDeltaY" v="150"/>
</v>
</o>
</v>
</o>
</layouterInfo>
<compartmentInfo color="255,255,255" height="150" kernel="stub/transition" kernel_type="info-diagram" shape="0" width="150" x="0" y="0"/>
<nodes>
<node height="50" kernel="stub/ADP" kernel_type="simple chemical" width="50" x="430" y="152"/>
<node height="50" kernel="stub/ATP" kernel_type="simple chemical" width="50" x="192" y="186"/>
<node height="50" kernel="stub/F1,6P" kernel_type="simple chemical" width="50" x="424" y="76"/>
<node height="50" kernel="stub/F6P" kernel_type="simple chemical" width="50" x="189" y="125"/>
<node height="50" kernel="stub/H+" kernel_type="simple chemical" width="50" x="428" y="229"/>
<node height="50" kernel="stub/transition_0" kernel_type="transition" width="50" x="311" y="174">
<property elementType="String" name="nodeRoles" short-description="nodeRoles" type="array">
<item>reactant</item>
<item>reactant</item>
<item>product</item>
<item>product</item>
<item>product</item>
</property>
<property elementType="String" name="nodes" short-description="nodes" type="array">
<item>F6P</item>
<item>ATP</item>
<item>F1,6P</item>
<item>ADP</item>
<item>H+</item>
</property>
</node>
</nodes>
<edges/>
<filters>
<a n="filters" t="[Lbiouml.model.DiagramFilter;">
<v/>
</a>
</filters>
</diagram>
</example>
<example name="transition2">
<diagram diagramType="biouml.model.xml.XmlDiagramType" notation="">
<diagramInfo/>
<layouterInfo>
<o n="layouterInfo" t="ru.biosoft.graph.ForceDirectedLayouter">
<v>
<wi n="initialPlacement" v="1"/>
<wi n="edgeLength" v="150"/>
<wf n="repulsion" v="1.0"/>
<wi n="repulsionDistance" v="10"/>
<wf n="gravity" v="0.06"/>
<wi n="orientation" v="0"/>
<wi n="distanceMethod" v="0"/>
<wf n="attraction" v="1.0"/>
<wf n="magneticIntencity" v="0.0"/>
<wi n="iterationNumber" v="100"/>
<wf n="minTemperature" v="0.0"/>
<wf n="maxTemperature" v="0.0"/>
<o n="dpl" t="ru.biosoft.graph.DiagonalPathLayouter">
<v>
<wi n="lineDistance" v="10"/>
<o n="selfLoopLayouter" t="ru.biosoft.graph.SelfLoopLayouter">
<v>
<wi n="loopLength" v="30"/>
</v>
</o>
</v>
</o>
<wb n="horisontalMovementAllowed" v="true"/>
<wb n="verticalMovementAllowed" v="true"/>
<o n="pathWeighter" t="ru.biosoft.graph.PathWeighter">
<v>
<wi n="bendPenalty" v="500"/>
<wi n="confluencePenalty" v="50000"/>
<wi n="lengthPenalty" v="1"/>
</v>
</o>
<o n="sl" t="ru.biosoft.graph.SubgraphLayouter">
<v>
<wi n="layerDeltaX" v="150"/>
<wi n="layerDeltaY" v="150"/>
</v>
</o>
</v>
</o>
</layouterInfo>
<compartmentInfo color="255,255,255" height="150" kernel="stub/transition2" kernel_type="info-diagram" shape="0" width="150" x="0" y="0"/>
<nodes>
<node height="50" kernel="stub/Agonist" kernel_type="simple chemical" width="50" x="238" y="31"/>
<compartment>
<compartmentInfo color="255,255,255" height="66" kernel="stub/GPCR1" kernel_type="macromolecule" shape="0" width="64" x="97" y="163"/>
<nodes>
<node height="50" kernel="stub/inactive" kernel_type="variable" width="50" x="102" y="153">
<property name="value" short-description="value" type="String" value=""/>
</node>
</nodes>
<edges/>
<property name="multimer" short-description="multimer" type="int" value="0"/>
</compartment>
<compartment>
<compartmentInfo color="255,255,255" height="61" kernel="stub/GPCR2" kernel_type="macromolecule" shape="0" width="65" x="388" y="162"/>
<nodes>
<node height="50" kernel="stub/active" kernel_type="variable" width="50" x="401" y="152">
<property name="value" short-description="value" type="String" value=""/>
</node>
</nodes>
<edges/>
<property name="multimer" short-description="multimer" type="int" value="0"/>
</compartment>
<node height="50" kernel="stub/Inverse agonist" kernel_type="simple chemical" width="50" x="220" y="283"/>
<node height="50" kernel="stub/transition_0" kernel_type="transition" width="50" x="257" y="171">
<property elementType="String" name="nodeRoles" short-description="nodeRoles" type="array">
<item>reactant</item>
<item>product</item>
<item>modifier</item>
</property>
<property elementType="String" name="nodes" short-description="nodes" type="array">
<item>GPCR1</item>
<item>GPCR2</item>
<item>Agonist</item>
</property>
</node>
<node height="50" kernel="stub/transition_1" kernel_type="transition" width="50" x="257" y="201">
<property elementType="String" name="nodeRoles" short-description="nodeRoles" type="array">
<item>reactant</item>
<item>product</item>
<item>modifier</item>
</property>
<property elementType="String" name="nodes" short-description="nodes" type="array">
<item>GPCR2</item>
<item>GPCR1</item>
<item>Inverse agonist</item>
</property>
</node>
</nodes>
<edges/>
<filters>
<a n="filters" t="[Lbiouml.model.DiagramFilter;">
<v/>
</a>
</filters>
</diagram>
</example>
<example name="logic example">
<diagram diagramType="biouml.model.xml.XmlDiagramType" notation="">
<diagramInfo/>
<layouterInfo>
<o n="layouterInfo" t="ru.biosoft.graph.ForceDirectedLayouter">
<v>
<wi n="initialPlacement" v="1"/>
<wi n="edgeLength" v="150"/>
<wf n="repulsion" v="1.0"/>
<wi n="repulsionDistance" v="10"/>
<wf n="gravity" v="0.06"/>
<wi n="orientation" v="0"/>
<wi n="distanceMethod" v="0"/>
<wf n="attraction" v="1.0"/>
<wf n="magneticIntencity" v="0.0"/>
<wi n="iterationNumber" v="100"/>
<wf n="minTemperature" v="0.0"/>
<wf n="maxTemperature" v="0.0"/>
<o n="dpl" t="ru.biosoft.graph.DiagonalPathLayouter">
<v>
<wi n="lineDistance" v="10"/>
<o n="selfLoopLayouter" t="ru.biosoft.graph.SelfLoopLayouter">
<v>
<wi n="loopLength" v="30"/>
</v>
</o>
</v>
</o>
<wb n="horisontalMovementAllowed" v="true"/>
<wb n="verticalMovementAllowed" v="true"/>
<o n="pathWeighter" t="ru.biosoft.graph.PathWeighter">
<v>
<wi n="bendPenalty" v="500"/>
<wi n="confluencePenalty" v="50000"/>
<wi n="lengthPenalty" v="1"/>
</v>
</o>
<o n="sl" t="ru.biosoft.graph.SubgraphLayouter">
<v>
<wi n="layerDeltaX" v="150"/>
<wi n="layerDeltaY" v="150"/>
</v>
</o>
</v>
</o>
</layouterInfo>
<compartmentInfo color="255,255,255" height="150" kernel="stub/logic example" kernel_type="info-diagram" shape="0" width="150" x="0" y="0"/>
<nodes>
<node height="50" kernel="stub/jhkgjhgk" kernel_type="or" width="50" x="377" y="66"/>
<node height="50" kernel="stub/jhlklh" kernel_type="and" width="50" x="166" y="121"/>
<node height="50" kernel="stub/jklhkjhlkj" kernel_type="not" width="50" x="189" y="239"/>
<node height="50" kernel="stub/lkjhkl" kernel_type="xor" width="50" x="189" y="186"/>
</nodes>
<edges/>
<filters>
<a n="filters" t="[Lbiouml.model.DiagramFilter;">
<v/>
</a>
</filters>
</diagram>
</example>
<example name="test2">
<diagram diagramType="biouml.model.xml.XmlDiagramType" notation="">
<diagramInfo/>
<layouterInfo>
<o n="layouterInfo" t="ru.biosoft.graph.ForceDirectedLayouter">
<v>
<wi n="initialPlacement" v="1"/>
<wi n="edgeLength" v="150"/>
<wf n="repulsion" v="1.0"/>
<wi n="repulsionDistance" v="10"/>
<wf n="gravity" v="0.06"/>
<wi n="orientation" v="0"/>
<wi n="distanceMethod" v="0"/>
<wf n="attraction" v="1.0"/>
<wf n="magneticIntencity" v="0.0"/>
<wi n="iterationNumber" v="100"/>
<wf n="minTemperature" v="0.0"/>
<wf n="maxTemperature" v="0.0"/>
<o n="dpl" t="ru.biosoft.graph.DiagonalPathLayouter">
<v>
<wi n="lineDistance" v="10"/>
<o n="selfLoopLayouter" t="ru.biosoft.graph.SelfLoopLayouter">
<v>
<wi n="loopLength" v="30"/>
</v>
</o>
</v>
</o>
<wb n="horisontalMovementAllowed" v="true"/>
<wb n="verticalMovementAllowed" v="true"/>
<o n="pathWeighter" t="ru.biosoft.graph.PathWeighter">
<v>
<wi n="bendPenalty" v="500"/>
<wi n="confluencePenalty" v="50000"/>
<wi n="lengthPenalty" v="1"/>
</v>
</o>
<o n="sl" t="ru.biosoft.graph.SubgraphLayouter">
<v>
<wi n="layerDeltaX" v="150"/>
<wi n="layerDeltaY" v="150"/>
</v>
</o>
</v>
</o>
</layouterInfo>
<compartmentInfo color="255,255,255" height="150" kernel="stub/test2" kernel_type="info-diagram" shape="0" width="150" x="0" y="0"/>
<nodes>
<node height="50" kernel="stub/association_0" kernel_type="association" width="50" x="267" y="261">
<property elementType="String" name="nodeRoles" short-description="nodeRoles" type="array">
<item>reactant</item>
<item>product</item>
<item>modifier</item>
</property>
<property elementType="String" name="nodes" short-description="nodes" type="array">
<item>bfbgfb</item>
<item>dfvfdvdf</item>
<item>vdfvds</item>
</property>
</node>
<node height="50" kernel="stub/bfbgfb" kernel_type="unspecified entity" width="50" x="54" y="248"/>
<node height="50" kernel="stub/bgbfrgdb" kernel_type="unspecified entity" width="50" x="54" y="434"/>
<node height="50" kernel="stub/dfvfdvdf" kernel_type="unspecified entity" width="50" x="456" y="249"/>
<node height="50" kernel="stub/dissociation_0" kernel_type="dissociation" width="50" x="270" y="452">
<property elementType="String" name="nodeRoles" short-description="nodeRoles" type="array">
<item>reactant</item>
<item>product</item>
<item>modifier</item>
</property>
<property elementType="String" name="nodes" short-description="nodes" type="array">
<item>bgbfrgdb</item>
<item>gbdfgbgf</item>
<item>jvytuv</item>
</property>
</node>
<node height="50" kernel="stub/dsvdsv" kernel_type="unspecified entity" width="50" x="451" y="28"/>
<node height="50" kernel="stub/dvcdsvds" kernel_type="unspecified entity" width="50" x="49" y="28"/>
<node height="50" kernel="stub/fdvfdvfdvdf" kernel_type="unspecified entity" width="50" x="458" y="101"/>
<node height="50" kernel="stub/fdvfvswdrv" kernel_type="unspecified entity" width="50" x="457" y="177"/>
<node height="50" kernel="stub/fvgfdvfdvd" kernel_type="unspecified entity" width="50" x="49" y="104"/>
<node height="50" kernel="stub/gbdfgbgf" kernel_type="unspecified entity" width="50" x="453" y="433"/>
<node height="50" kernel="stub/jvytuv" kernel_type="unspecified entity" width="50" x="240" y="531"/>
<node height="50" kernel="stub/omitted process_0" kernel_type="omitted process" width="50" x="266" y="119">
<property elementType="String" name="nodeRoles" short-description="nodeRoles" type="array">
<item>reactant</item>
<item>product</item>
</property>
<property elementType="String" name="nodes" short-description="nodes" type="array">
<item>fvgfdvfdvd</item>
<item>fdvfdvfdvdf</item>
</property>
</node>
<node height="50" kernel="stub/rgrfbvfbvfd" kernel_type="unspecified entity" width="50" x="52" y="178"/>
<node height="50" kernel="stub/transition_0" kernel_type="transition" width="50" x="267" y="45">
<property elementType="String" name="nodeRoles" short-description="nodeRoles" type="array">
<item>reactant</item>
<item>product</item>
</property>
<property elementType="String" name="nodes" short-description="nodes" type="array">
<item>dvcdsvds</item>
<item>dsvdsv</item>
</property>
</node>
<node height="50" kernel="stub/uncertain process_0" kernel_type="uncertain process" width="50" x="267" y="194">
<property elementType="String" name="nodeRoles" short-description="nodeRoles" type="array">
<item>reactant</item>
<item>product</item>
</property>
<property elementType="String" name="nodes" short-description="nodes" type="array">
<item>rgrfbvfbvfd</item>
<item>fdvfvswdrv</item>
</property>
</node>
<node height="50" kernel="stub/vdfvds" kernel_type="simple chemical" width="50" x="252" y="359"/>
</nodes>
<edges/>
<filters>
<a n="filters" t="[Lbiouml.model.DiagramFilter;">
<v/>
</a>
</filters>
</diagram>
</example>
</examples>
</graphic-notation>
