1(function()
2{
3	Sidebar.prototype.addVeeam2Palette = function()
4	{
5		this.setCurrentSearchEntryLibrary('veeam2', 'veeam2Auxiliary');
6		this.addVeeam2AuxiliaryPalette();
7		this.setCurrentSearchEntryLibrary('veeam2', 'veeam2Data Center');
8		this.addVeeam2DataCenterPalette();
9		this.setCurrentSearchEntryLibrary('veeam2', 'veeam2Features');
10		this.addVeeam2FeaturesPalette();
11		this.setCurrentSearchEntryLibrary('veeam2', 'veeam2General');
12		this.addVeeam2GeneralPalette();
13		this.setCurrentSearchEntryLibrary('veeam2', 'veeam2Products and Components');
14		this.addVeeam2ProductsComponentsPalette();
15		this.setCurrentSearchEntryLibrary('veeam2', 'veeam2Software');
16		this.addVeeam2SoftwarePalette();
17		this.setCurrentSearchEntryLibrary('veeam2', 'veeam2States');
18		this.addVeeam2StatesPalette();
19		this.setCurrentSearchEntryLibrary('veeam2', 'veeam2Storage');
20		this.addVeeam2StoragePalette();
21		this.setCurrentSearchEntryLibrary('veeam2', 'veeam23D');
22		this.addVeeam23DPalette();
23		this.setCurrentSearchEntryLibrary();
24	};
25
26	Sidebar.prototype.addVeeam2AuxiliaryPalette = function()
27	{
28		// Space savers
29		var sb = this;
30		var gn = 'mxgraph.veeam2';
31		var dt = 'veeam vmware virtual machine auxiliary';
32
33		var w = 100;
34		var h = 100;
35
36		var fns =
37		[
38			this.createVertexTemplateEntry('pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#13B24B;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam2.veeam_logo;',
39					w * 1.36, h * 0.24, '', 'Veeam logo', null, null, this.getTagsForStencil(gn, 'logo', dt).join(' ')),
40			this.createVertexTemplateEntry('align=left;verticalAlign=middle;fontFamily=Tahoma;strokeColor=#ECECEC;strokeWidth=2;html=1;whiteSpace=wrap;spacing=6;fontStyle=0',
41					w * 1.5, h * 1.1, 'Please use Tahome font family, not less than 9 pt\n\nABCDEFGHIJKLM\nabcdefghijklm\n0123456789', 'Font', null, null, this.getTagsForStencil(gn, 'font', dt).join(' ')),
42			this.createVertexTemplateEntry('align=left;verticalAlign=middle;fontFamily=Tahoma;fillColor=#005f4b;strokeColor=none;fontColor=#ffffff;strokeWidth=2;html=1;whiteSpace=wrap;spacing=6;fontStyle=0',
43					w * 1.5, h * 1.1, 'Veeam Sapphire\n\nR: 0\nG: 95\nB: 75\n\n #005f4b', 'Veeam Sapphire', null, null, this.getTagsForStencil(gn, 'sapphite', dt).join(' ')),
44			this.createVertexTemplateEntry('align=left;verticalAlign=middle;fontFamily=Tahoma;fillColor=#df8c42;strokeColor=none;fontColor=#ffffff;strokeWidth=2;html=1;whiteSpace=wrap;spacing=6;fontStyle=0',
45					w * 1.5, h * 1.1, 'Orange\n\nR: 223\nG: 140\nB: 66\n\n #df8c42', 'Veeam Sapphire', null, null, this.getTagsForStencil(gn, 'orange', dt).join(' ')),
46			this.createVertexTemplateEntry('align=left;verticalAlign=middle;fontFamily=Tahoma;fillColor=#d9d9d9;strokeColor=none;fontColor=#ffffff;strokeWidth=2;html=1;whiteSpace=wrap;spacing=6;fontStyle=0',
47					w * 1.5, h * 1.1, 'Grey 2\n\nR: 217\nG: 217\nB: 217\n\n #d9d9d9', 'Grey 2', null, null, this.getTagsForStencil(gn, 'grey', dt).join(' ')),
48			this.createVertexTemplateEntry('triangle;whiteSpace=wrap;html=1;gradientColor=#D3D3D3;strokeColor=none;gradientDirection=east;',
49					w * 0.4, h * 1.6, '', 'Inclusion', null, null, this.getTagsForStencil(gn, 'inclusion', dt).join(' ')),
50			this.createVertexTemplateEntry('rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#d3d3d3;strokeWidth=2;',
51					w * 1.5, h * 1.1, '', 'Frame (grey 2)', null, null, this.getTagsForStencil(gn, 'grey frame', dt).join(' ')),
52			this.createVertexTemplateEntry('rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#00B336;strokeWidth=2;',
53					w * 1.5, h * 1.1, '', 'Frame (topaz)', null, null, this.getTagsForStencil(gn, 'topaz frame', dt).join(' ')),
54		 	this.createEdgeTemplateEntry('edgeStyle=none;rounded=0;html=1;entryX=0;entryY=0.5;jettySize=auto;orthogonalLoop=1;strokeColor=#00B336;strokeWidth=2;fontColor=#000000;jumpStyle=none;endArrow=block;endFill=1;startArrow=block;startFill=1;', w, 0,
55		 			'',	'Connector (topaz)', null, dt + 'connector topaz'),
56		 	this.createEdgeTemplateEntry('edgeStyle=none;rounded=0;html=1;entryX=0;entryY=0.5;jettySize=auto;orthogonalLoop=1;strokeColor=#404040;strokeWidth=2;fontColor=#000000;jumpStyle=none;endArrow=block;endFill=1;startArrow=block;startFill=1;', w, 0,
57		 			'',	'Connector (grey 3)', null, dt + 'connector grey'),
58		 	this.createEdgeTemplateEntry('edgeStyle=none;rounded=0;html=1;entryX=0;entryY=0.5;jettySize=auto;orthogonalLoop=1;strokeColor=#D9D9D9;strokeWidth=2;fontColor=#000000;jumpStyle=none;endArrow=oval;endFill=1;startArrow=oval;startFill=1;', w, 0,
59		 			'',	'Connector (grey 2)', null, dt + 'connector grey'),
60		 	this.createEdgeTemplateEntry('edgeStyle=none;rounded=0;html=1;entryX=0;entryY=0.5;jettySize=auto;orthogonalLoop=1;strokeColor=#00B336;strokeWidth=2;fontColor=#000000;jumpStyle=none;endArrow=oval;endFill=1;startArrow=oval;startFill=1;', w, 0,
61		 			'',	'Connector #2 (topaz)', null, dt + 'connector topaz'),
62		 	this.createEdgeTemplateEntry('edgeStyle=none;rounded=0;html=1;entryX=0;entryY=0.5;jettySize=auto;orthogonalLoop=1;strokeColor=#404040;strokeWidth=2;fontColor=#000000;jumpStyle=none;endArrow=block;endFill=1;startArrow=none;', w, 0,
63		 			'',	'Arrow (grey 3)', null, dt + 'arrow grey'),
64		 	this.createEdgeTemplateEntry('edgeStyle=none;rounded=0;html=1;entryX=0;entryY=0.5;jettySize=auto;orthogonalLoop=1;strokeColor=#00B336;strokeWidth=2;fontColor=#000000;jumpStyle=none;endArrow=block;endFill=1;startArrow=none;', w, 0,
65		 			'',	'Arrow (topaz)', null, dt + 'arrow topaz'),
66		 	this.createEdgeTemplateEntry('edgeStyle=none;rounded=0;html=1;entryX=0;entryY=0.5;jettySize=auto;orthogonalLoop=1;strokeColor=#00B336;strokeWidth=2;fontColor=#000000;jumpStyle=none;endArrow=none;endFill=0;startArrow=none;dashed=1;', w, 0,
67		 			'',	'Dotted line (topaz)', null, dt + 'dotted line topaz'),
68		 	this.createEdgeTemplateEntry('edgeStyle=none;rounded=0;html=1;entryX=0;entryY=0.5;jettySize=auto;orthogonalLoop=1;strokeColor=#404040;strokeWidth=2;fontColor=#000000;jumpStyle=none;endArrow=none;endFill=0;startArrow=none;dashed=1;', w, 0,
69		 			'',	'Dotted line (grey 3)', null, dt + 'dotted line grey'),
70			this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;fontFamily=Tahoma;spacingBottom=4;spacingRight=2;strokeColor=#d3d3d3;',
71					w * 0.2, h * 0.2, '1', 'Number one', null, null, this.getTagsForStencil(gn, 'number one', dt).join(' ')),
72			this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;fontFamily=Tahoma;spacingBottom=4;spacingRight=2;strokeColor=#d3d3d3;',
73					w * 0.2, h * 0.2, '2', 'Number two', null, null, this.getTagsForStencil(gn, 'number two', dt).join(' ')),
74			this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;fontFamily=Tahoma;spacingBottom=4;spacingRight=2;strokeColor=#d3d3d3;',
75					w * 0.2, h * 0.2, '3', 'Number three', null, null, this.getTagsForStencil(gn, 'number three', dt).join(' ')),
76			this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;fontFamily=Tahoma;spacingBottom=4;spacingRight=2;strokeColor=#d3d3d3;',
77					w * 0.2, h * 0.2, '4', 'Number four', null, null, this.getTagsForStencil(gn, 'number four', dt).join(' ')),
78			this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;fontFamily=Tahoma;spacingBottom=4;spacingRight=2;strokeColor=#d3d3d3;',
79					w * 0.2, h * 0.2, '5', 'Number five', null, null, this.getTagsForStencil(gn, 'number five', dt).join(' ')),
80			this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;fontFamily=Tahoma;spacingBottom=4;spacingRight=2;strokeColor=#d3d3d3;',
81					w * 0.2, h * 0.2, '6', 'Number six', null, null, this.getTagsForStencil(gn, 'number six', dt).join(' ')),
82			this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;fontFamily=Tahoma;spacingBottom=4;spacingRight=2;strokeColor=#d3d3d3;',
83					w * 0.2, h * 0.2, '7', 'Number seven', null, null, this.getTagsForStencil(gn, 'number seven', dt).join(' ')),
84			this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;fontFamily=Tahoma;spacingBottom=4;spacingRight=2;strokeColor=#d3d3d3;',
85					w * 0.2, h * 0.2, '8', 'Number eight', null, null, this.getTagsForStencil(gn, 'number eight', dt).join(' ')),
86			this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;aspect=fixed;strokeWidth=2;fontFamily=Tahoma;spacingBottom=4;spacingRight=2;strokeColor=#d3d3d3;',
87					w * 0.2, h * 0.2, '9', 'Number nine', null, null, this.getTagsForStencil(gn, 'number nine', dt).join(' '))
88		];
89
90		this.addPalette('veeam2Auxiliary', 'Veeam / Auxiliary', false, mxUtils.bind(this, function(content)
91				{
92					for (var i = 0; i < fns.length; i++)
93					{
94						content.appendChild(fns[i](content));
95					}
96		}));
97	};
98
99	Sidebar.prototype.addVeeam2DataCenterPalette = function()
100	{
101		var s = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#005F4B;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam2.';
102		var s2 = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#DF8C42;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam2.';
103
104		// Space savers
105		var sb = this;
106		var gn = 'mxgraph.veeam2';
107		var dt = 'veeam vm vmware virtual machine data center';
108
109		var w = 100;
110		var h = 100;
111
112		var fns =
113		[
114			this.createVertexTemplateEntry(s + 'datacenter;',
115					w * 0.83, h * 0.53, '', 'Datacenter', null, null, this.getTagsForStencil(gn, 'datacenter', dt).join(' ')),
116			this.createVertexTemplateEntry(s + 'cloud;',
117					w * 0.4, h * 0.25, '', 'Cloud', null, null, this.getTagsForStencil(gn, 'cloud', dt).join(' ')),
118			this.createVertexTemplateEntry(s2 + 'azure;',
119					w * 0.34, h * 0.34, '', 'Azure', null, null, this.getTagsForStencil(gn, 'azure', dt).join(' ')),
120			this.createVertexTemplateEntry(s2 + 'aws;',
121					w * 0.34, h * 0.34, '', 'AWS', null, null, this.getTagsForStencil(gn, 'aws', dt).join(' ')),
122			this.createVertexTemplateEntry(s + 'server;',
123					w * 0.23, h * 0.39, '', 'Server', null, null, this.getTagsForStencil(gn, 'server', dt).join(' ')),
124			this.createVertexTemplateEntry(s + 'server_cluster;',
125					w * 0.56, h * 0.28, '', 'Server Cluster', null, null, this.getTagsForStencil(gn, 'server cluster', dt).join(' ')),
126			this.createVertexTemplateEntry(s + '1u_server;',
127					w * 0.4, h * 0.11, '', '1U Server', null, null, this.getTagsForStencil(gn, '1u one unit server', dt).join(' ')),
128			this.createVertexTemplateEntry(s + 'server_stack;',
129					w * 0.4, h * 0.4, '', 'Server Stack', null, null, this.getTagsForStencil(gn, 'server stack', dt).join(' ')),
130			this.createVertexTemplateEntry(s + 'monitor;',
131					w * 0.51, h * 0.4, '', 'Monitor', null, null, this.getTagsForStencil(gn, 'monitor', dt).join(' ')),
132			this.createVertexTemplateEntry(s + 'laptop;',
133					w * 0.48, h * 0.28, '', 'Laptop', null, null, this.getTagsForStencil(gn, 'laptop', dt).join(' ')),
134			this.createVertexTemplateEntry(s + 'workstation;',
135					w * 0.38, h * 0.28, '', 'Workstation', null, null, this.getTagsForStencil(gn, 'workstation', dt).join(' ')),
136			this.createVertexTemplateEntry(s + 'virtual_host;',
137					w * 0.82, h * 0.79, '', 'Virtual Host', null, null, this.getTagsForStencil(gn, 'virtual host', dt).join(' ')),
138			this.createVertexTemplateEntry(s + 'esxi_host;',
139					w * 0.82, h * 0.79, '', 'ESXi Host', null, null, this.getTagsForStencil(gn, 'esxi host', dt).join(' ')),
140			this.createVertexTemplateEntry(s + 'hyper_v_host;',
141					w * 0.82, h * 0.79, '', 'Hyper-V Host', null, null, this.getTagsForStencil(gn, 'hyper hyperv host', dt).join(' ')),
142			this.createVertexTemplateEntry(s + 'ahv_host;',
143					w * 0.82, h * 0.79, '', 'AHV Host', null, null, this.getTagsForStencil(gn, 'ahv host', dt).join(' ')),
144			this.createVertexTemplateEntry(s + 'esxi_hyper_v_ahv_host;',
145					w * 0.82, h * 0.79, '', 'ESXi/Hyper-V/AHV Host', null, null, this.getTagsForStencil(gn, 'esxi hyper hyperv ahv host', dt).join(' ')),
146			this.createVertexTemplateEntry(s + 'esxi_hyper_v_host;',
147					w * 0.82, h * 0.79, '', 'ESXi/Hyper-V Host', null, null, this.getTagsForStencil(gn, 'esxi hyper hyperv host', dt).join(' ')),
148			this.createVertexTemplateEntry(s + 'cpu;',
149					w * 0.28, h * 0.28, '', 'CPU', null, null, this.getTagsForStencil(gn, 'cpu central processing unit', dt).join(' ')),
150			this.createVertexTemplateEntry(s + 'cpu_socket;',
151					w * 0.28, h * 0.28, '', 'CPU Socket', null, null, this.getTagsForStencil(gn, 'cpu socket central processing unit', dt).join(' ')),
152			this.createVertexTemplateEntry(s + 'ram;',
153					w * 0.4, h * 0.19, '', 'RAM', null, null, this.getTagsForStencil(gn, 'ram random access memory', dt).join(' ')),
154			this.createVertexTemplateEntry(s + 'hdd;',
155					w * 0.28, h * 0.35, '', 'HDD', null, null, this.getTagsForStencil(gn, 'hdd hard disk drive', dt).join(' ')),
156			this.createVertexTemplateEntry(s + 'network_card;',
157					w * 0.38, h * 0.27, '', 'Network Card', null, null, this.getTagsForStencil(gn, 'network card', dt).join(' ')),
158			this.createVertexTemplateEntry(s + 'hardware_controller;',
159					w * 0.38, h * 0.28, '', 'Hardware Controller', null, null, this.getTagsForStencil(gn, 'hardware controller', dt).join(' ')),
160			this.createVertexTemplateEntry(s + 'physical_switch;',
161					w * 0.53, h * 0.15, '', 'Physical Switch', null, null, this.getTagsForStencil(gn, 'physical switch', dt).join(' ')),
162			this.createVertexTemplateEntry(s + 'vmware_vswitch;',
163					w * 0.4, h * 0.11, '', 'VMware vSwitch', null, null, this.getTagsForStencil(gn, 'vswitch', dt).join(' ')),
164			this.createVertexTemplateEntry(s + 'usb_drive;',
165					w * 0.4, h * 0.17, '', 'USB Drive', null, null, this.getTagsForStencil(gn, 'usb drive', dt).join(' ')),
166			this.createVertexTemplateEntry(s + 'sd_card;',
167					w * 0.23, h * 0.28, '', 'SD Card', null, null, this.getTagsForStencil(gn, 'sd card', dt).join(' ')),
168			this.createVertexTemplateEntry(s + 'virtual_machine;',
169					w * 0.28, h * 0.28, '', 'Virtual Machine', null, null, this.getTagsForStencil(gn, '', dt).join(' ')),
170			this.createVertexTemplateEntry(s + 'vm_snapshot;',
171					w * 0.38, h * 0.38, '', 'VM Snapshot', null, null, this.getTagsForStencil(gn, 'vnapshot', dt).join(' ')),
172			this.createVertexTemplateEntry(s + 'vm_with_a_snapshot;',
173					w * 0.42, h * 0.42, '', 'VM with a Snapshot', null, null, this.getTagsForStencil(gn, 'with vnapshot', dt).join(' ')),
174			this.createVertexTemplateEntry(s + 'vm_checked;',
175					w * 0.36, h * 0.36, '', 'VM Checked', null, null, this.getTagsForStencil(gn, 'checked', dt).join(' ')),
176			this.createVertexTemplateEntry(s + 'vm_failed;',
177					w * 0.36, h * 0.36, '', 'VM Failed', null, null, this.getTagsForStencil(gn, 'failed', dt).join(' ')),
178			this.createVertexTemplateEntry(s + 'vm_turn_on_off;',
179					w * 0.36, h * 0.36, '', 'VM turn on/off', null, null, this.getTagsForStencil(gn, 'turn on off', dt).join(' ')),
180			this.createVertexTemplateEntry(s + 'vm_paused_saved_state;',
181					w * 0.36, h * 0.36, '', 'VM paused/saved state', null, null, this.getTagsForStencil(gn, 'paused saved state', dt).join(' ')),
182			this.createVertexTemplateEntry(s + 'vm_locked;',
183					w * 0.36, h * 0.36, '', 'VM locked', null, null, this.getTagsForStencil(gn, 'locked', dt).join(' ')),
184			this.createVertexTemplateEntry(s + 'vm_running;',
185					w * 0.36, h * 0.36, '', 'VM running', null, null, this.getTagsForStencil(gn, 'running', dt).join(' ')),
186			this.createVertexTemplateEntry(s + 'linux_vm;',
187					w * 0.36, h * 0.36, '', 'Linux VM', null, null, this.getTagsForStencil(gn, 'linux', dt).join(' ')),
188			this.createVertexTemplateEntry(s + 'windows_vm;',
189					w * 0.36, h * 0.36, '', 'Windows VM', null, null, this.getTagsForStencil(gn, 'windows', dt).join(' ')),
190			this.createVertexTemplateEntry(s + 'vapp;',
191					w * 0.28, h * 0.28, '', 'vApp', null, null, this.getTagsForStencil(gn, 'vapp', dt).join(' ')),
192			this.createVertexTemplateEntry(s + 'vapp_running;',
193					w * 0.36, h * 0.36, '', 'vApp Running', null, null, this.getTagsForStencil(gn, 'vapp running', dt).join(' '))
194		];
195
196		this.addPalette('veeam2Data Center', 'Veeam / Data Center', false, mxUtils.bind(this, function(content)
197				{
198					for (var i = 0; i < fns.length; i++)
199					{
200						content.appendChild(fns[i](content));
201					}
202		}));
203	};
204
205	Sidebar.prototype.addVeeam2FeaturesPalette = function()
206	{
207		var s2 = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#DF8C42;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam2.';
208
209		// Space savers
210		var sb = this;
211		var gn = 'mxgraph.veeam2';
212		var dt = 'veeam vm vmware virtual machine features';
213
214		var w = 100;
215		var h = 100;
216
217		var fns =
218		[
219			this.createVertexTemplateEntry('pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#13B24B;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam2.veeam_logo;',
220					w * 1.36, h * 0.24, '', 'Veeam logo', null, null, this.getTagsForStencil(gn, 'logo', dt).join(' ')),
221			this.createVertexTemplateEntry(s2 + 'backup_from_storage_snapshots;',
222					w * 0.34, h * 0.34, '', 'Backup from Storage Snapshots', null, null, this.getTagsForStencil(gn, 'backup from storage snapshots', dt).join(' ')),
223			this.createVertexTemplateEntry(s2 + 'cdp;',
224					w * 0.34, h * 0.34, '', 'CDP', null, null, this.getTagsForStencil(gn, 'cdp', dt).join(' ')),
225			this.createVertexTemplateEntry(s2 + 'datalabs;',
226					w * 0.34, h * 0.34, '', 'Datalabs', null, null, this.getTagsForStencil(gn, 'datalabs', dt).join(' ')),
227			this.createVertexTemplateEntry(s2 + 'failover;',
228					w * 0.34, h * 0.34, '', 'Failover', null, null, this.getTagsForStencil(gn, 'failover', dt).join(' ')),
229			this.createVertexTemplateEntry(s2 + 'instant_vm_recovery;',
230					w * 0.34, h * 0.34, '', 'Instant VM recovery', null, null, this.getTagsForStencil(gn, 'instant recovery', dt).join(' ')),
231			this.createVertexTemplateEntry(s2 + 'nas_backup;',
232					w * 0.34, h * 0.34, '', 'NAS Backup', null, null, this.getTagsForStencil(gn, 'nas backup', dt).join(' ')),
233			this.createVertexTemplateEntry(s2 + 'object_storage_support;',
234					w * 0.34, h * 0.34, '', 'Object Storage Support', null, null, this.getTagsForStencil(gn, 'object storage support', dt).join(' ')),
235			this.createVertexTemplateEntry(s2 + 'on_demand_sandbox;',
236					w * 0.34, h * 0.34, '', 'On-demand Sandbox', null, null, this.getTagsForStencil(gn, 'on demand sandbox', dt).join(' ')),
237			this.createVertexTemplateEntry(s2 + 'restful_api;',
238					w * 0.34, h * 0.34, '', 'RESTful API', null, null, this.getTagsForStencil(gn, 'restful api application programming interface', dt).join(' ')),
239			this.createVertexTemplateEntry(s2 + 'scale_out_backup_repository2;',
240					w * 0.34, h * 0.34, '', 'Scale-out Backup Repository', null, null, this.getTagsForStencil(gn, 'scale out backup repository', dt).join(' ')),
241			this.createVertexTemplateEntry(s2 + 'scheduled_backups;',
242					w * 0.34, h * 0.34, '', 'Scheduled Backups', null, null, this.getTagsForStencil(gn, 'scheduled backups', dt).join(' ')),
243			this.createVertexTemplateEntry(s2 + 'surebackup;',
244					w * 0.34, h * 0.34, '', 'SureBackup', null, null, this.getTagsForStencil(gn, 'surebackup', dt).join(' ')),
245			this.createVertexTemplateEntry(s2 + 'surereplica;',
246					w * 0.34, h * 0.34, '', 'SureReplica', null, null, this.getTagsForStencil(gn, 'surereplica', dt).join(' ')),
247			this.createVertexTemplateEntry(s2 + 'vbr_console;',
248					w * 0.34, h * 0.34, '', 'VBR console', null, null, this.getTagsForStencil(gn, 'vbr console', dt).join(' ')),
249			this.createVertexTemplateEntry(s2 + 'veeam_cloud_connect;',
250					w * 0.34, h * 0.34, '', 'Veeam Cloud Connect', null, null, this.getTagsForStencil(gn, 'cloud connect', dt).join(' ')),
251			this.createVertexTemplateEntry(s2 + 'veeam_cloud_mobility;',
252					w * 0.34, h * 0.34, '', 'Veeam Cloud Mobility', null, null, this.getTagsForStencil(gn, 'cloud mobility', dt).join(' ')),
253			this.createVertexTemplateEntry(s2 + 'veeamzip;',
254					w * 0.34, h * 0.34, '', 'VeeamZIP', null, null, this.getTagsForStencil(gn, 'veeamzip zip', dt).join(' ')),
255			this.createVertexTemplateEntry(s2 + 'veeam_explorers;',
256					w * 0.34, h * 0.34, '', 'Veeam Explorers', null, null, this.getTagsForStencil(gn, 'veeam explorers', dt).join(' ')),
257			this.createVertexTemplateEntry(s2 + 'universal_storage_api;',
258					w * 0.34, h * 0.34, '', 'Universal Storage API', null, null, this.getTagsForStencil(gn, 'universal storage api application programming interface', dt).join(' '))
259		];
260
261		this.addPalette('veeam2Features', 'Veeam / Features', false, mxUtils.bind(this, function(content)
262				{
263					for (var i = 0; i < fns.length; i++)
264					{
265						content.appendChild(fns[i](content));
266					}
267		}));
268	};
269
270	Sidebar.prototype.addVeeam2GeneralPalette = function()
271	{
272		var s = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#005F4B;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam2.';
273
274		// Space savers
275		var sb = this;
276		var gn = 'mxgraph.veeam2';
277		var dt = 'veeam vm vmware virtual machine general';
278
279		var w = 100;
280		var h = 100;
281
282		var fns =
283		[
284			this.createVertexTemplateEntry(s + 'enterprise_business;',
285					w * 0.38, h * 0.33, '', 'Enterprise (business)', null, null, this.getTagsForStencil(gn, 'enterprise business', dt).join(' ')),
286			this.createVertexTemplateEntry(s + 'smb_business;',
287					w * 0.38, h * 0.27, '', 'SMB (business)', null, null, this.getTagsForStencil(gn, 'smb business', dt).join(' ')),
288			this.createVertexTemplateEntry(s + 'automation;',
289					w * 0.28, h * 0.28, '', 'Automation', null, null, this.getTagsForStencil(gn, 'automation', dt).join(' ')),
290			this.createVertexTemplateEntry(s + 'service_application;',
291					w * 0.28, h * 0.28, '', 'Service Application', null, null, this.getTagsForStencil(gn, 'service application', dt).join(' ')),
292			this.createVertexTemplateEntry(s + 'cloud;',
293					w * 0.4, h * 0.25, '', 'Cloud', null, null, this.getTagsForStencil(gn, 'cloud', dt).join(' ')),
294			this.createVertexTemplateEntry(s + 'database;',
295					w * 0.23, h * 0.28, '', 'Database', null, null, this.getTagsForStencil(gn, 'database', dt).join(' ')),
296			this.createVertexTemplateEntry(s + 'report;',
297					w * 0.28, h * 0.39, '', 'Report', null, null, this.getTagsForStencil(gn, 'report', dt).join(' ')),
298			this.createVertexTemplateEntry(s + 'task_list;',
299					w * 0.28, h * 0.39, '', 'Task List', null, null, this.getTagsForStencil(gn, 'task list', dt).join(' ')),
300			this.createVertexTemplateEntry(s + 'dr_plan;',
301					w * 0.28, h * 0.42, '', 'DR Plan', null, null, this.getTagsForStencil(gn, 'dr plan', dt).join(' ')),
302			this.createVertexTemplateEntry(s + 'folder;',
303					w * 0.28, h * 0.24, '', 'Folder', null, null, this.getTagsForStencil(gn, 'folder', dt).join(' ')),
304			this.createVertexTemplateEntry(s + 'file;',
305					w * 0.28, h * 0.39, '', 'File', null, null, this.getTagsForStencil(gn, 'file', dt).join(' ')),
306			this.createVertexTemplateEntry(s + 'audio_file;',
307					w * 0.28, h * 0.39, '', 'Audio File', null, null, this.getTagsForStencil(gn, 'audio file', dt).join(' ')),
308			this.createVertexTemplateEntry(s + 'data_file;',
309					w * 0.28, h * 0.39, '', 'Data File', null, null, this.getTagsForStencil(gn, 'data file', dt).join(' ')),
310			this.createVertexTemplateEntry(s + 'iso_file;',
311					w * 0.28, h * 0.39, '', 'ISO File', null, null, this.getTagsForStencil(gn, 'iso file', dt).join(' ')),
312			this.createVertexTemplateEntry(s + 'metadata_file;',
313					w * 0.28, h * 0.39, '', 'Metadata File', null, null, this.getTagsForStencil(gn, 'metadata file', dt).join(' ')),
314			this.createVertexTemplateEntry(s + 'license_file;',
315					w * 0.28, h * 0.39, '', 'License File', null, null, this.getTagsForStencil(gn, 'license file', dt).join(' ')),
316			this.createVertexTemplateEntry(s + 'video_file;',
317					w * 0.28, h * 0.39, '', 'Video File', null, null, this.getTagsForStencil(gn, 'video file', dt).join(' ')),
318			this.createVertexTemplateEntry(s + 'alarm;',
319					w * 0.28, h * 0.28, '', 'Alarm', null, null, this.getTagsForStencil(gn, 'alarm', dt).join(' ')),
320			this.createVertexTemplateEntry(s + 'backup_browser;',
321					w * 0.28, h * 0.28, '', 'Backup Browser', null, null, this.getTagsForStencil(gn, 'backup browser', dt).join(' ')),
322			this.createVertexTemplateEntry(s + 'calendar;',
323					w * 0.28, h * 0.28, '', 'Calendar', null, null, this.getTagsForStencil(gn, 'calendar', dt).join(' ')),
324			this.createVertexTemplateEntry(s + 'command_line;',
325					w * 0.28, h * 0.28, '', 'Command Line', null, null, this.getTagsForStencil(gn, 'command line', dt).join(' ')),
326			this.createVertexTemplateEntry(s + 'cd;',
327					w * 0.28, h * 0.28, '', 'CD', null, null, this.getTagsForStencil(gn, 'cd compact disc', dt).join(' ')),
328			this.createVertexTemplateEntry(s + 'controller;',
329					w * 0.28, h * 0.28, '', 'Controller', null, null, this.getTagsForStencil(gn, 'controller', dt).join(' ')),
330			this.createVertexTemplateEntry(s + 'deduplication;',
331					w * 0.28, h * 0.28, '', 'Deduplication', null, null, this.getTagsForStencil(gn, 'deduplication', dt).join(' ')),
332			this.createVertexTemplateEntry(s + 'download;',
333					w * 0.28, h * 0.28, '', 'Download', null, null, this.getTagsForStencil(gn, 'download', dt).join(' ')),
334			this.createVertexTemplateEntry(s + 'dns;',
335					w * 0.28, h * 0.28, '', 'DNS', null, null, this.getTagsForStencil(gn, 'dns domain name store', dt).join(' ')),
336			this.createVertexTemplateEntry(s + 'globe;',
337					w * 0.28, h * 0.28, '', 'Globe', null, null, this.getTagsForStencil(gn, 'globe', dt).join(' ')),
338			this.createVertexTemplateEntry(s + 'key;',
339					w * 0.28, h * 0.28, '', 'Key', null, null, this.getTagsForStencil(gn, 'key', dt).join(' ')),
340			this.createVertexTemplateEntry(s + 'encryption_key;',
341					w * 0.36, h * 0.36, '', 'Encryption Key', null, null, this.getTagsForStencil(gn, 'encryption key', dt).join(' ')),
342			this.createVertexTemplateEntry(s + 'letter;',
343					w * 0.28, h * 0.2, '', 'Letter', null, null, this.getTagsForStencil(gn, 'letter', dt).join(' ')),
344			this.createVertexTemplateEntry(s + 'exchange_objects;',
345					w * 0.28, h * 0.28, '', 'Exchange objects', null, null, this.getTagsForStencil(gn, 'exchange objects', dt).join(' ')),
346			this.createVertexTemplateEntry(s + 'magnifying_glass;',
347					w * 0.28, h * 0.28, '', 'Magnifying Glass', null, null, this.getTagsForStencil(gn, 'magnifying glass', dt).join(' ')),
348			this.createVertexTemplateEntry(s + 'restore;',
349					w * 0.28, h * 0.28, '', 'Restore', null, null, this.getTagsForStencil(gn, 'restore', dt).join(' ')),
350			this.createVertexTemplateEntry(s + 'role;',
351					w * 0.28, h * 0.39, '', 'Role', null, null, this.getTagsForStencil(gn, 'role', dt).join(' ')),
352			this.createVertexTemplateEntry(s + 'interface_console;',
353					w * 0.28, h * 0.28, '', 'Interface / Console', null, null, this.getTagsForStencil(gn, 'interface console', dt).join(' ')),
354			this.createVertexTemplateEntry(s + 'monitoring_console;',
355					w * 0.28, h * 0.28, '', 'Monitoring Console', null, null, this.getTagsForStencil(gn, 'monitoring console', dt).join(' ')),
356			this.createVertexTemplateEntry(s + 'web_console;',
357					w * 0.28, h * 0.28, '', 'Web Console', null, null, this.getTagsForStencil(gn, 'web console', dt).join(' ')),
358			this.createVertexTemplateEntry(s + 'file_browser;',
359					w * 0.28, h * 0.28, '', 'File Browser', null, null, this.getTagsForStencil(gn, 'file browser', dt).join(' ')),
360			this.createVertexTemplateEntry(s + 'table;',
361					w * 0.28, h * 0.28, '', 'Table', null, null, this.getTagsForStencil(gn, 'table', dt).join(' ')),
362			this.createVertexTemplateEntry(s + 'time_clocks;',
363					w * 0.28, h * 0.28, '', 'Time / Clocks', null, null, this.getTagsForStencil(gn, 'time clocks', dt).join(' ')),
364			this.createVertexTemplateEntry(s + 'tag;',
365					w * 0.28, h * 0.28, '', 'Tag', null, null, this.getTagsForStencil(gn, 'tag', dt).join(' ')),
366			this.createVertexTemplateEntry(s + 'transport;',
367					w * 0.38, h * 0.23, '', 'Transport', null, null, this.getTagsForStencil(gn, 'transport', dt).join(' ')),
368			this.createVertexTemplateEntry(s + 'vpn;',
369					w * 0.28, h * 0.28, '', 'VPN', null, null, this.getTagsForStencil(gn, 'vpn virtual private network', dt).join(' ')),
370			this.createVertexTemplateEntry(s + 'user;',
371					w * 0.28, h * 0.28, '', 'User', null, null, this.getTagsForStencil(gn, 'user', dt).join(' ')),
372			this.createVertexTemplateEntry(s + 'user_group;',
373					w * 0.28, h * 0.28, '', 'User Group', null, null, this.getTagsForStencil(gn, 'user group', dt).join(' '))
374		];
375
376		this.addPalette('veeam2General', 'Veeam / General', false, mxUtils.bind(this, function(content)
377				{
378					for (var i = 0; i < fns.length; i++)
379					{
380						content.appendChild(fns[i](content));
381					}
382		}));
383	};
384
385	Sidebar.prototype.addVeeam2ProductsComponentsPalette = function()
386	{
387		var s = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#005F4B;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam2.';
388		var s2 = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#DF8C42;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam2.';
389
390		// Space savers
391		var sb = this;
392		var gn = 'mxgraph.veeam2';
393		var dt = 'veeam vm vmware virtual machine products and components';
394
395		var w = 100;
396		var h = 100;
397
398		var fns =
399		[
400			this.createVertexTemplateEntry('pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#13B24B;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam2.veeam_logo;',
401					w * 1.36, h * 0.24, '', 'Veeam logo', null, null, this.getTagsForStencil(gn, 'logo', dt).join(' ')),
402			this.createVertexTemplateEntry(s2 + 'veeam_availability_suite;',
403					w * 0.34, h * 0.34, '', 'Veeam Availability Suite', null, null, this.getTagsForStencil(gn, 'availability suite', dt).join(' ')),
404			this.createVertexTemplateEntry(s + 'vas_server;',
405					w * 0.4, h * 0.52, '', 'VAS server', null, null, this.getTagsForStencil(gn, 'vas server', dt).join(' ')),
406			this.createVertexTemplateEntry(s2 + 'veeam_backup_replication;',
407					w * 0.34, h * 0.34, '', 'Veeam Backup & Replication', null, null, this.getTagsForStencil(gn, 'backup and replication', dt).join(' ')),
408			this.createVertexTemplateEntry(s + 'vbr_server;',
409					w * 0.4, h * 0.52, '', 'VBR server', null, null, this.getTagsForStencil(gn, 'vbr server', dt).join(' ')),
410			this.createVertexTemplateEntry(s + 'proxy_server;',
411					w * 0.4, h * 0.52, '', 'Proxy Server', null, null, this.getTagsForStencil(gn, 'proxy server', dt).join(' ')),
412			this.createVertexTemplateEntry(s + 'repository_server;',
413					w * 0.4, h * 0.52, '', 'Repository Server', null, null, this.getTagsForStencil(gn, 'repository server', dt).join(' ')),
414			this.createVertexTemplateEntry(s + 'mount_server;',
415					w * 0.4, h * 0.52, '', 'Mount Server', null, null, this.getTagsForStencil(gn, 'mount server', dt).join(' ')),
416			this.createVertexTemplateEntry(s + 'tape_server;',
417					w * 0.4, h * 0.52, '', 'Tape Server', null, null, this.getTagsForStencil(gn, 'tape server', dt).join(' ')),
418			this.createVertexTemplateEntry(s2 + 'veeam_backup_enterprise_manager;',
419					w * 0.34, h * 0.34, '', 'Veeam Backup Enterprise Manager', null, null, this.getTagsForStencil(gn, 'backup enterprise manager', dt).join(' ')),
420			this.createVertexTemplateEntry(s + 'vbem_server;',
421					w * 0.4, h * 0.52, '', 'VBEM Server', null, null, this.getTagsForStencil(gn, 'vbem server', dt).join(' ')),
422			this.createVertexTemplateEntry(s + 'search_server;',
423					w * 0.4, h * 0.52, '', 'Search Server', null, null, this.getTagsForStencil(gn, 'search server', dt).join(' ')),
424			this.createVertexTemplateEntry(s2 + 'veeam_cloud_connect;',
425					w * 0.34, h * 0.34, '', 'Veeam Cloud Connect', null, null, this.getTagsForStencil(gn, 'cloud connect', dt).join(' ')),
426			this.createVertexTemplateEntry(s2 + 'veeam_one;',
427					w * 0.34, h * 0.34, '', 'Veeam ONE', null, null, this.getTagsForStencil(gn, 'one', dt).join(' ')),
428			this.createVertexTemplateEntry(s + 'one_server;',
429					w * 0.4, h * 0.52, '', 'ONE Server', null, null, this.getTagsForStencil(gn, 'one server', dt).join(' ')),
430			this.createVertexTemplateEntry(s2 + 'veeam_one_reporter;',
431					w * 0.34, h * 0.34, '', 'Veeam ONE Reporter', null, null, this.getTagsForStencil(gn, 'one reporter', dt).join(' ')),
432			this.createVertexTemplateEntry(s2 + 'veeam_agents;',
433					w * 0.34, h * 0.34, '', 'Veeam Agents', null, null, this.getTagsForStencil(gn, 'agents', dt).join(' ')),
434			this.createVertexTemplateEntry(s + 'server_with_veeam_agent;',
435					w * 0.4, h * 0.52, '', 'Server with Veeam Agent', null, null, this.getTagsForStencil(gn, 'server with agent', dt).join(' ')),
436			this.createVertexTemplateEntry(s2 + 'veeam_agent_for_windows;',
437					w * 0.34, h * 0.34, '', 'Veeam Agent for Windows', null, null, this.getTagsForStencil(gn, 'agent for windows', dt).join(' ')),
438			this.createVertexTemplateEntry(s2 + 'veeam_agent_for_linux;',
439					w * 0.34, h * 0.34, '', 'Veeam Agent for Linux', null, null, this.getTagsForStencil(gn, 'agent for linux', dt).join(' ')),
440			this.createVertexTemplateEntry(s2 + 'veeam_agent_for_oracle_solaris;',
441					w * 0.34, h * 0.34, '', 'Veeam Agent for Oracle Solaris', null, null, this.getTagsForStencil(gn, 'agent for oracle solaris', dt).join(' ')),
442			this.createVertexTemplateEntry(s2 + 'veeam_agent_for_ibm_aix;',
443					w * 0.34, h * 0.34, '', 'Veeam Agent for IBM AIX', null, null, this.getTagsForStencil(gn, 'agent for ibm aix', dt).join(' ')),
444			this.createVertexTemplateEntry(s2 + 'veeam_explorer_for_exchange;',
445					w * 0.34, h * 0.34, '', 'Veeam Explorer for Exchange', null, null, this.getTagsForStencil(gn, 'explorer for exchange', dt).join(' ')),
446			this.createVertexTemplateEntry(s2 + 'veeam_explorer_for_active_directory;',
447					w * 0.34, h * 0.34, '', 'Veeam Explorer for Active Directory', null, null, this.getTagsForStencil(gn, 'explorer for active directory', dt).join(' ')),
448			this.createVertexTemplateEntry(s2 + 'veeam_explorer_for_oracle;',
449					w * 0.34, h * 0.34, '', 'Veeam Explorer for Oracle', null, null, this.getTagsForStencil(gn, 'explorer for oracle', dt).join(' ')),
450			this.createVertexTemplateEntry(s2 + 'veeam_explorer_for_onedrive;',
451					w * 0.34, h * 0.34, '', 'Veeam Explorer for OneDrive', null, null, this.getTagsForStencil(gn, 'explorer for onedrive', dt).join(' ')),
452			this.createVertexTemplateEntry(s2 + 'veeam_explorer_for_storage_snapshots;',
453					w * 0.34, h * 0.34, '', 'Veeam Explorer for Storage Snapshots', null, null, this.getTagsForStencil(gn, 'explorer for storage snapshots', dt).join(' ')),
454			this.createVertexTemplateEntry(s2 + 'veeam_explorer_for_sql;',
455					w * 0.34, h * 0.34, '', 'Veeam Explorer for SQL', null, null, this.getTagsForStencil(gn, 'explorer for sql', dt).join(' ')),
456			this.createVertexTemplateEntry(s2 + 'veeam_explorer_for_sharepoint;',
457					w * 0.34, h * 0.34, '', 'Veeam Explorer for SharePoint', null, null, this.getTagsForStencil(gn, 'explorer for sharepoint', dt).join(' ')),
458			this.createVertexTemplateEntry(s2 + 'veeam_plugin_for_oracle_rman;',
459					w * 0.34, h * 0.34, '', 'Veeam Plugin for Oracle RMAN', null, null, this.getTagsForStencil(gn, 'plugin for oracle rman', dt).join(' ')),
460			this.createVertexTemplateEntry(s2 + 'veeam_plugin_for_sap_hana;',
461					w * 0.34, h * 0.34, '', 'Veeam Plugin for SAP HANA', null, null, this.getTagsForStencil(gn, 'plugin for sap hana', dt).join(' ')),
462			this.createVertexTemplateEntry(s2 + 'veeam_plugin_for_sap_on_oracle;',
463					w * 0.34, h * 0.34, '', 'Veeam Plugin for SAP on Oracle', null, null, this.getTagsForStencil(gn, 'plugin for sap on oracle', dt).join(' ')),
464			this.createVertexTemplateEntry(s2 + 'veeam_backup_for_office_365;',
465					w * 0.34, h * 0.34, '', 'Veeam Backup for Office 365', null, null, this.getTagsForStencil(gn, 'plugin for office 365', dt).join(' ')),
466			this.createVertexTemplateEntry(s + 'vbo_server;',
467					w * 0.4, h * 0.52, '', 'VBO Server', null, null, this.getTagsForStencil(gn, 'vbo server', dt).join(' ')),
468			this.createVertexTemplateEntry(s2 + 'veeam_mp;',
469					w * 0.34, h * 0.34, '', 'Veeam MP', null, null, this.getTagsForStencil(gn, 'mp', dt).join(' ')),
470			this.createVertexTemplateEntry(s2 + 'veeam_pn;',
471					w * 0.34, h * 0.34, '', 'Veeam PN', null, null, this.getTagsForStencil(gn, 'pn', dt).join(' ')),
472			this.createVertexTemplateEntry(s + 'vpn_server;',
473					w * 0.4, h * 0.52, '', 'VPN Server', null, null, this.getTagsForStencil(gn, 'vpn server', dt).join(' ')),
474			this.createVertexTemplateEntry(s2 + 'veeam_availability_orchestrator;',
475					w * 0.34, h * 0.34, '', 'Veeam Availability Orchestrator', null, null, this.getTagsForStencil(gn, 'availability orchestrator', dt).join(' ')),
476			this.createVertexTemplateEntry(s + 'vao_server;',
477					w * 0.4, h * 0.52, '', 'VAO Server', null, null, this.getTagsForStencil(gn, 'vao server', dt).join(' ')),
478			this.createVertexTemplateEntry(s2 + 'veeam_service_provider_console;',
479					w * 0.34, h * 0.34, '', 'Veeam Service Provider Console', null, null, this.getTagsForStencil(gn, 'service provider console', dt).join(' ')),
480			this.createVertexTemplateEntry(s + 'vspc_server;',
481					w * 0.4, h * 0.52, '', 'VSPC Server', null, null, this.getTagsForStencil(gn, 'vspc server', dt).join(' ')),
482			this.createVertexTemplateEntry(s2 + 'agent;',
483					w * 0.21, h * 0.21, '', 'Agent', null, null, this.getTagsForStencil(gn, 'agent', dt).join(' ')),
484			this.createVertexTemplateEntry(s2 + 'transport_service;',
485					w * 0.21, h * 0.21, '', 'Transport Service', null, null, this.getTagsForStencil(gn, 'transport service', dt).join(' ')),
486			this.createVertexTemplateEntry(s2 + 'data_mover;',
487					w * 0.21, h * 0.21, '', 'Data Mover', null, null, this.getTagsForStencil(gn, 'data mover', dt).join(' ')),
488			this.createVertexTemplateEntry(s + 'veeam_proxy;',
489					w * 0.21, h * 0.21, '', 'Veeam Proxy', null, null, this.getTagsForStencil(gn, 'veeam proxy', dt).join(' ')),
490			this.createVertexTemplateEntry(s + 'wan_accelerator;',
491					w * 0.21, h * 0.21, '', 'WAN Accelerator', null, null, this.getTagsForStencil(gn, 'wan accelerator wide area network', dt).join(' ')),
492			this.createVertexTemplateEntry(s + 'flr_helper_appliance;',
493					w * 0.21, h * 0.21, '', 'FLR Helper Appliance', null, null, this.getTagsForStencil(gn, 'flr helper appliance', dt).join(' ')),
494			this.createVertexTemplateEntry(s + 'network_proxy;',
495					w * 0.28, h * 0.28, '', 'Network Proxy', null, null, this.getTagsForStencil(gn, 'network proxy', dt).join(' ')),
496			this.createVertexTemplateEntry(s + 'veeam_repository;',
497					w * 0.37, h * 0.38, '', 'Veeam Repository', null, null, this.getTagsForStencil(gn, 'repository', dt).join(' ')),
498			this.createVertexTemplateEntry(s + 'windows_repository;',
499					w * 0.37, h * 0.38, '', 'Windows Repository', null, null, this.getTagsForStencil(gn, 'windows repository', dt).join(' ')),
500			this.createVertexTemplateEntry(s + 'linux_repository;',
501					w * 0.37, h * 0.38, '', 'Linux Repository', null, null, this.getTagsForStencil(gn, 'linux repository', dt).join(' ')),
502			this.createVertexTemplateEntry(s + 'cloud_repository;',
503					w * 0.37, h * 0.38, '', 'Cloud Repository', null, null, this.getTagsForStencil(gn, 'cloud repository', dt).join(' ')),
504			this.createVertexTemplateEntry(s + 'scale_out_backup_repository;',
505					w * 0.37, h * 0.38, '', 'Scale-Out Backup Repository', null, null, this.getTagsForStencil(gn, 'scale out backup repository', dt).join(' ')),
506			this.createVertexTemplateEntry(s + 'vbo_repository;',
507					w * 0.37, h * 0.38, '', 'VBO Repository', null, null, this.getTagsForStencil(gn, 'vbo repository', dt).join(' ')),
508			this.createVertexTemplateEntry(s + 'vbr_repository;',
509					w * 0.37, h * 0.38, '', 'VBR Repository', null, null, this.getTagsForStencil(gn, 'vbr repository', dt).join(' '))
510		];
511
512		this.addPalette('veeam2Products and Components', 'Veeam / Products and Components', false, mxUtils.bind(this, function(content)
513				{
514					for (var i = 0; i < fns.length; i++)
515					{
516						content.appendChild(fns[i](content));
517					}
518		}));
519	};
520
521	Sidebar.prototype.addVeeam2SoftwarePalette = function()
522	{
523		var s = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#005F4B;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam2.';
524		var s2 = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#DF8C42;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam2.';
525
526		// Space savers
527		var sb = this;
528		var gn = 'mxgraph.veeam2';
529		var dt = 'veeam vm vmware virtual machine software';
530
531		var w = 100;
532		var h = 100;
533
534		var fns =
535		[
536			this.createVertexTemplateEntry(s2 + 'antivirus;',
537					w * 0.34, h * 0.34, '', 'Antivirus', null, null, this.getTagsForStencil(gn, 'antivirus', dt).join(' ')),
538			this.createVertexTemplateEntry(s2 + 'firewall;',
539					w * 0.34, h * 0.34, '', 'Firewall', null, null, this.getTagsForStencil(gn, 'firewall', dt).join(' ')),
540			this.createVertexTemplateEntry(s2 + 'application;',
541					w * 0.34, h * 0.34, '', 'Application', null, null, this.getTagsForStencil(gn, 'application', dt).join(' ')),
542			this.createVertexTemplateEntry(s2 + 'linux;',
543					w * 0.34, h * 0.34, '', 'Linux', null, null, this.getTagsForStencil(gn, 'linux', dt).join(' ')),
544			this.createVertexTemplateEntry(s + 'linux_server;',
545					w * 0.4, h * 0.52, '', 'Linux Server', null, null, this.getTagsForStencil(gn, 'linux server', dt).join(' ')),
546			this.createVertexTemplateEntry(s2 + 'microsoft_active_directory;',
547					w * 0.34, h * 0.34, '', 'Microsoft Active Directory', null, null, this.getTagsForStencil(gn, 'microsoft ms active directory', dt).join(' ')),
548			this.createVertexTemplateEntry(s + 'domain_controller;',
549					w * 0.4, h * 0.52, '', 'Domain Controller', null, null, this.getTagsForStencil(gn, 'domain controller', dt).join(' ')),
550			this.createVertexTemplateEntry(s2 + 'microsoft_exchange;',
551					w * 0.34, h * 0.34, '', 'Microsoft Exchange', null, null, this.getTagsForStencil(gn, 'microsoft ms exchange', dt).join(' ')),
552			this.createVertexTemplateEntry(s + 'exchange_server;',
553					w * 0.4, h * 0.52, '', 'Exchange Server', null, null, this.getTagsForStencil(gn, 'exchange server', dt).join(' ')),
554			this.createVertexTemplateEntry(s2 + 'microsoft_scom;',
555					w * 0.34, h * 0.34, '', 'Microsoft SCOM', null, null, this.getTagsForStencil(gn, 'microsoft ms scom', dt).join(' ')),
556			this.createVertexTemplateEntry(s2 + 'microsoft_scvmm;',
557					w * 0.34, h * 0.34, '', 'Microsoft SCVMM', null, null, this.getTagsForStencil(gn, 'microsoft ms scvmm', dt).join(' ')),
558			this.createVertexTemplateEntry(s2 + 'microsoft_sharepoint;',
559					w * 0.34, h * 0.34, '', 'Microsoft SharePoint', null, null, this.getTagsForStencil(gn, 'microsoft ms sharepoint', dt).join(' ')),
560			this.createVertexTemplateEntry(s + 'sharepoint_server;',
561					w * 0.4, h * 0.52, '', 'Sharepoint Server', null, null, this.getTagsForStencil(gn, 'sharepoint server', dt).join(' ')),
562			this.createVertexTemplateEntry(s2 + 'microsoft_sql;',
563					w * 0.34, h * 0.34, '', 'Microsoft SQL', null, null, this.getTagsForStencil(gn, 'microsoft ms sql', dt).join(' ')),
564			this.createVertexTemplateEntry(s + 'sql_server;',
565					w * 0.4, h * 0.52, '', 'SQL Server', null, null, this.getTagsForStencil(gn, 'sql server', dt).join(' ')),
566			this.createVertexTemplateEntry(s2 + 'microsoft_teams;',
567					w * 0.34, h * 0.34, '', 'Microsoft Teams', null, null, this.getTagsForStencil(gn, 'microsoft ms teams', dt).join(' ')),
568			this.createVertexTemplateEntry(s2 + 'microsoft_windows;',
569					w * 0.34, h * 0.34, '', 'Microsoft Windows', null, null, this.getTagsForStencil(gn, 'microsoft ms windows', dt).join(' ')),
570			this.createVertexTemplateEntry(s + 'windows_server;',
571					w * 0.4, h * 0.52, '', 'Windows Server', null, null, this.getTagsForStencil(gn, 'windows server', dt).join(' ')),
572			this.createVertexTemplateEntry(s2 + 'microsoft_onedrive;',
573					w * 0.34, h * 0.34, '', 'Microsoft OneDrive', null, null, this.getTagsForStencil(gn, 'microsoft ms onedrive', dt).join(' ')),
574			this.createVertexTemplateEntry(s2 + 'microsoft_outlook;',
575					w * 0.34, h * 0.34, '', 'Microsoft Outlook', null, null, this.getTagsForStencil(gn, 'microsoft ms outlook', dt).join(' ')),
576			this.createVertexTemplateEntry(s2 + 'microsoft_office;',
577					w * 0.34, h * 0.34, '', 'Microsoft Office', null, null, this.getTagsForStencil(gn, 'microsoft ms office', dt).join(' ')),
578			this.createVertexTemplateEntry(s2 + 'power_shell;',
579					w * 0.34, h * 0.34, '', 'PowerShell', null, null, this.getTagsForStencil(gn, 'powershell', dt).join(' ')),
580			this.createVertexTemplateEntry(s2 + 'oracle_rman;',
581					w * 0.34, h * 0.34, '', 'Oracle RMAN', null, null, this.getTagsForStencil(gn, 'oracle rman', dt).join(' ')),
582			this.createVertexTemplateEntry(s2 + 'sap_brtools;',
583					w * 0.34, h * 0.34, '', 'SAP BRTools', null, null, this.getTagsForStencil(gn, 'sap brtools', dt).join(' ')),
584			this.createVertexTemplateEntry(s2 + 'sap_hana;',
585					w * 0.34, h * 0.34, '', 'SAP HANA', null, null, this.getTagsForStencil(gn, 'sap hana', dt).join(' ')),
586			this.createVertexTemplateEntry(s2 + 'nutanix;',
587					w * 0.34, h * 0.34, '', 'Nutanix', null, null, this.getTagsForStencil(gn, 'nutanix', dt).join(' ')),
588			this.createVertexTemplateEntry(s + 'server_nutanix;',
589					w * 0.4, h * 0.52, '', 'Server Nutanix', null, null, this.getTagsForStencil(gn, 'server nutanix', dt).join(' ')),
590			this.createVertexTemplateEntry(s2 + 'vmware_vcloud_director;',
591					w * 0.34, h * 0.34, '', 'VMware vCloud Director', null, null, this.getTagsForStencil(gn, 'vmware vcloud director', dt).join(' ')),
592			this.createVertexTemplateEntry(s + 'vcloud_director_server;',
593					w * 0.4, h * 0.52, '', 'vCloud Director Server', null, null, this.getTagsForStencil(gn, 'vcloud director server', dt).join(' ')),
594			this.createVertexTemplateEntry(s2 + 'vmware_vsphere;',
595					w * 0.34, h * 0.34, '', 'VMware vSphere', null, null, this.getTagsForStencil(gn, 'vmware vsphere', dt).join(' ')),
596			this.createVertexTemplateEntry(s + 'vcenter_server;',
597					w * 0.4, h * 0.52, '', 'vCenter Server', null, null, this.getTagsForStencil(gn, 'vcenter server', dt).join(' ')),
598			this.createVertexTemplateEntry(s2 + 'database2;',
599					w * 0.34, h * 0.34, '', 'Database', null, null, this.getTagsForStencil(gn, 'database db', dt).join(' ')),
600			this.createVertexTemplateEntry(s + 'database_server;',
601					w * 0.4, h * 0.52, '', 'Database Server', null, null, this.getTagsForStencil(gn, 'database server db', dt).join(' ')),
602			this.createVertexTemplateEntry(s2 + 'microsoft_sql_db;',
603					w * 0.34, h * 0.34, '', 'Microsoft SQL DB', null, null, this.getTagsForStencil(gn, 'microsoft sql db database', dt).join(' ')),
604			this.createVertexTemplateEntry(s2 + 'oracle_db;',
605					w * 0.34, h * 0.34, '', 'Oracle DB', null, null, this.getTagsForStencil(gn, 'oracle db database', dt).join(' ')),
606			this.createVertexTemplateEntry(s2 + 'sap_hana_db;',
607					w * 0.34, h * 0.34, '', 'SAP HANA DB', null, null, this.getTagsForStencil(gn, 'sap hana db database', dt).join(' ')),
608			this.createVertexTemplateEntry(s2 + 'open_vpn;',
609					w * 0.34, h * 0.34, '', 'OpenVPN', null, null, this.getTagsForStencil(gn, 'openvpn open vpn virtual private network', dt).join(' ')),
610			this.createVertexTemplateEntry(s2 + 'wireguard;',
611					w * 0.34, h * 0.34, '', 'WireGuard', null, null, this.getTagsForStencil(gn, 'wireguard', dt).join(' '))
612		];
613
614		this.addPalette('veeam2Software', 'Veeam / Software', false, mxUtils.bind(this, function(content)
615				{
616					for (var i = 0; i < fns.length; i++)
617					{
618						content.appendChild(fns[i](content));
619					}
620		}));
621	};
622
623	Sidebar.prototype.addVeeam2StatesPalette = function()
624	{
625		var s2 = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#DF8C42;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam2.';
626
627		// Space savers
628		var sb = this;
629		var gn = 'mxgraph.veeam2';
630		var dt = 'veeam vm vmware virtual machine states';
631
632		var w = 100;
633		var h = 100;
634
635		var fns =
636		[
637			this.createVertexTemplateEntry(s2 + 'turn_on_off;',
638					w * 0.21, h * 0.21, '', 'Turn on / off', null, null, this.getTagsForStencil(gn, 'turn on off', dt).join(' ')),
639			this.createVertexTemplateEntry(s2 + 'running_playing;',
640					w * 0.21, h * 0.21, '', 'Running / Playing', null, null, this.getTagsForStencil(gn, 'running playing', dt).join(' ')),
641			this.createVertexTemplateEntry(s2 + 'critical;',
642					w * 0.21, h * 0.21, '', 'Critical', null, null, this.getTagsForStencil(gn, 'critical', dt).join(' ')),
643			this.createVertexTemplateEntry(s2 + 'failed;',
644					w * 0.21, h * 0.21, '', 'Failed', null, null, this.getTagsForStencil(gn, 'failed', dt).join(' ')),
645			this.createVertexTemplateEntry(s2 + 'unavailable;',
646					w * 0.21, h * 0.21, '', 'Unavailable', null, null, this.getTagsForStencil(gn, 'unavailable', dt).join(' ')),
647			this.createVertexTemplateEntry(s2 + 'paused;',
648					w * 0.21, h * 0.21, '', 'Paused / saved', null, null, this.getTagsForStencil(gn, 'paused', dt).join(' ')),
649			this.createVertexTemplateEntry(s2 + 'zipped;',
650					w * 0.21, h * 0.21, '', 'Zipped', null, null, this.getTagsForStencil(gn, 'zipped', dt).join(' ')),
651			this.createVertexTemplateEntry(s2 + 'recording;',
652					w * 0.21, h * 0.21, '', 'Recording', null, null, this.getTagsForStencil(gn, 'recording', dt).join(' ')),
653			this.createVertexTemplateEntry(s2 + 'locked;',
654					w * 0.21, h * 0.21, '', 'Locked', null, null, this.getTagsForStencil(gn, 'locked', dt).join(' ')),
655			this.createVertexTemplateEntry(s2 + 'unlocked;',
656					w * 0.21, h * 0.21, '', 'Unlocked', null, null, this.getTagsForStencil(gn, 'unlocked', dt).join(' ')),
657			this.createVertexTemplateEntry(s2 + 'encrypted;',
658					w * 0.21, h * 0.21, '', 'encrypted', null, null, this.getTagsForStencil(gn, 'enrypted', dt).join(' ')),
659			this.createVertexTemplateEntry(s2 + 'delayed;',
660					w * 0.21, h * 0.21, '', 'Delayed', null, null, this.getTagsForStencil(gn, 'delayed', dt).join(' ')),
661			this.createVertexTemplateEntry(s2 + 'restored;',
662					w * 0.21, h * 0.21, '', 'Restored', null, null, this.getTagsForStencil(gn, 'restored', dt).join(' ')),
663			this.createVertexTemplateEntry(s2 + 'exported;',
664					w * 0.21, h * 0.21, '', 'Exported', null, null, this.getTagsForStencil(gn, 'exported', dt).join(' ')),
665			this.createVertexTemplateEntry(s2 + 'ejected;',
666					w * 0.21, h * 0.21, '', 'Ejected', null, null, this.getTagsForStencil(gn, 'ejected', dt).join(' ')),
667			this.createVertexTemplateEntry(s2 + 'instant;',
668					w * 0.21, h * 0.21, '', 'Instant', null, null, this.getTagsForStencil(gn, 'instant', dt).join(' '))
669		];
670
671		this.addPalette('veeam2States', 'Veeam / States', false, mxUtils.bind(this, function(content)
672				{
673					for (var i = 0; i < fns.length; i++)
674					{
675						content.appendChild(fns[i](content));
676					}
677		}));
678	};
679
680	Sidebar.prototype.addVeeam2StoragePalette = function()
681	{
682		var s = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#005F4B;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam2.';
683		var s2 = 'sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#DF8C42;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam2.';
684
685		// Space savers
686		var sb = this;
687		var gn = 'mxgraph.veeam2';
688		var dt = 'veeam vm vmware virtual machine storage';
689
690		var w = 100;
691		var h = 100;
692
693		var fns =
694		[
695			this.createVertexTemplateEntry(s + 'object_storage;',
696					w * 0.28, h * 0.28, '', 'Object Storage', null, null, this.getTagsForStencil(gn, 'object storage', dt).join(' ')),
697			this.createVertexTemplateEntry(s2 + 'azure_blob;',
698					w * 0.34, h * 0.34, '', 'Azure Blob', null, null, this.getTagsForStencil(gn, 'azure blob', dt).join(' ')),
699			this.createVertexTemplateEntry(s2 + 'aws_s3;',
700					w * 0.34, h * 0.34, '', 'AWS S3', null, null, this.getTagsForStencil(gn, 'aws s3', dt).join(' ')),
701			this.createVertexTemplateEntry(s2 + 'ibm_object_storage;',
702					w * 0.34, h * 0.34, '', 'IBM Object Storage', null, null, this.getTagsForStencil(gn, 'ibm object storage', dt).join(' ')),
703			this.createVertexTemplateEntry(s + 's3_compatible;',
704					w * 0.28, h * 0.28, '', 'S3-compatible', null, null, this.getTagsForStencil(gn, 's3 compatible', dt).join(' ')),
705			this.createVertexTemplateEntry(s2 + 'vmware_vsan;',
706					w * 0.34, h * 0.34, '', 'VMware vSAN', null, null, this.getTagsForStencil(gn, 'vmware vsan', dt).join(' ')),
707			this.createVertexTemplateEntry(s + 'nas;',
708					w * 0.28, h * 0.28, '', 'NAS', null, null, this.getTagsForStencil(gn, 'nas', dt).join(' ')),
709			this.createVertexTemplateEntry(s + 'shared_folder;',
710					w * 0.28, h * 0.24, '', 'Shared Folder', null, null, this.getTagsForStencil(gn, 'shared folder', dt).join(' ')),
711			this.createVertexTemplateEntry(s + 'folder;',
712					w * 0.28, h * 0.24, '', 'Folder', null, null, this.getTagsForStencil(gn, 'folder', dt).join(' ')),
713			this.createVertexTemplateEntry(s + 'datastore_empty;',
714					w * 0.28, h * 0.35, '', 'Datastore empty', null, null, this.getTagsForStencil(gn, 'datastore empty', dt).join(' ')),
715			this.createVertexTemplateEntry(s + 'datastore_33_full;',
716					w * 0.28, h * 0.35, '', 'Datastore 33% full', null, null, this.getTagsForStencil(gn, 'datastore 33 percentage third full 33%', dt).join(' ')),
717			this.createVertexTemplateEntry(s + 'datastore_66_full;',
718					w * 0.28, h * 0.35, '', 'Datastore 66% full', null, null, this.getTagsForStencil(gn, 'datastore 66 percentage two thirds full 66%', dt).join(' ')),
719			this.createVertexTemplateEntry(s + 'datastore;',
720					w * 0.28, h * 0.35, '', 'Datastore', null, null, this.getTagsForStencil(gn, 'datastore', dt).join(' ')),
721			this.createVertexTemplateEntry(s + 'sd_card;',
722					w * 0.23, h * 0.28, '', 'SD Card', null, null, this.getTagsForStencil(gn, 'sd card', dt).join(' ')),
723			this.createVertexTemplateEntry(s + 'storage;',
724					w * 0.4, h * 0.11, '', 'Storage', null, null, this.getTagsForStencil(gn, 'storage', dt).join(' ')),
725			this.createVertexTemplateEntry(s + 'storage_snapshot;',
726					w * 0.4, h * 0.11, '', 'Storage Snapshot', null, null, this.getTagsForStencil(gn, 'storage snapshot', dt).join(' ')),
727			this.createVertexTemplateEntry(s + 'storage_with_snapshot;',
728					w * 0.43, h * 0.15, '', 'Storage with Snapshot', null, null, this.getTagsForStencil(gn, 'storage with snapshot', dt).join(' ')),
729			this.createVertexTemplateEntry(s + 'storage_stack;',
730					w * 0.4, h * 0.4, '', 'Storage Stack', null, null, this.getTagsForStencil(gn, 'storage stack', dt).join(' ')),
731			this.createVertexTemplateEntry(s + 'deduplicating_storage;',
732					w * 0.4, h * 0.11, '', 'Deduplicating Storage', null, null, this.getTagsForStencil(gn, 'deduplicating storage', dt).join(' ')),
733			this.createVertexTemplateEntry(s + 'data_volume;',
734					w * 0.4, h * 0.11, '', 'Data Volume', null, null, this.getTagsForStencil(gn, 'data volume', dt).join(' ')),
735			this.createVertexTemplateEntry(s + 'data_volume_snapshot;',
736					w * 0.4, h * 0.11, '', 'Data Volume Snapshot', null, null, this.getTagsForStencil(gn, 'data volume snapshot', dt).join(' ')),
737			this.createVertexTemplateEntry(s + 'data_volume_with_snapshot;',
738					w * 0.43, h * 0.15, '', 'Data Volume with Snapshot', null, null, this.getTagsForStencil(gn, 'data volume with snapshot', dt).join(' ')),
739			this.createVertexTemplateEntry(s + 'file;',
740					w * 0.28, h * 0.39, '', 'File', null, null, this.getTagsForStencil(gn, 'file', dt).join(' ')),
741			this.createVertexTemplateEntry(s + 'backup_file;',
742					w * 0.28, h * 0.39, '', 'Backup file', null, null, this.getTagsForStencil(gn, 'backup file', dt).join(' ')),
743			this.createVertexTemplateEntry(s + 'veeam_full_backup;',
744					w * 0.28, h * 0.39, '', 'Veeam Full Backup', null, null, this.getTagsForStencil(gn, 'full backup', dt).join(' ')),
745			this.createVertexTemplateEntry(s + 'veeam_incremental_backup;',
746					w * 0.28, h * 0.39, '', 'Veeam Incremental Backup', null, null, this.getTagsForStencil(gn, 'incremental backup', dt).join(' ')),
747			this.createVertexTemplateEntry(s + 'veeam_reversed_incremental_backup;',
748					w * 0.28, h * 0.39, '', 'Veeam Reversed Incremental Backup', null, null, this.getTagsForStencil(gn, 'reversed incremental backup', dt).join(' ')),
749			this.createVertexTemplateEntry(s + 'veeam_backup_chain_metadata;',
750					w * 0.28, h * 0.39, '', 'Veeam Backup Chain Metadata', null, null, this.getTagsForStencil(gn, 'backup chain metadata', dt).join(' ')),
751			this.createVertexTemplateEntry(s + 'vbr_configuration_backup;',
752					w * 0.28, h * 0.39, '', 'VBR Configuration Backup', null, null, this.getTagsForStencil(gn, 'vbr configuration backup', dt).join(' ')),
753			this.createVertexTemplateEntry(s + 'vbr_transaction_log_backup;',
754					w * 0.28, h * 0.39, '', 'VBR Transaction Log Backup', null, null, this.getTagsForStencil(gn, 'vbr transaction log backup', dt).join(' ')),
755			this.createVertexTemplateEntry(s + 'tape;',
756					w * 0.38, h * 0.22, '', 'Tape', null, null, this.getTagsForStencil(gn, 'tape', dt).join(' ')),
757			this.createVertexTemplateEntry(s + 'tape_checkout;',
758					w * 0.46, h * 0.30, '', 'Tape Checkout', null, null, this.getTagsForStencil(gn, 'tape checkout', dt).join(' ')),
759			this.createVertexTemplateEntry(s + 'tape_encrypted;',
760					w * 0.46, h * 0.30, '', 'Tape Encrypted', null, null, this.getTagsForStencil(gn, 'tape encrypted', dt).join(' ')),
761			this.createVertexTemplateEntry(s + 'tape_locked;',
762					w * 0.46, h * 0.30, '', 'Tape Locked', null, null, this.getTagsForStencil(gn, 'tape locked', dt).join(' ')),
763			this.createVertexTemplateEntry(s + 'tape_recording;',
764					w * 0.46, h * 0.30, '', 'Tape Recording', null, null, this.getTagsForStencil(gn, 'tape recording', dt).join(' ')),
765			this.createVertexTemplateEntry(s + 'tape_media_pool;',
766					w * 0.28, h * 0.24, '', 'Tape Media Pool', null, null, this.getTagsForStencil(gn, 'tape media pool', dt).join(' ')),
767			this.createVertexTemplateEntry(s + 'tape_library;',
768					w * 0.28, h * 0.35, '', 'Tape Library', null, null, this.getTagsForStencil(gn, 'tape library', dt).join(' ')),
769			this.createVertexTemplateEntry(s + 'tape_writing_device;',
770					w * 0.38, h * 0.14, '', 'Tape Writing Device', null, null, this.getTagsForStencil(gn, 'tape writing device', dt).join(' '))
771		];
772
773		this.addPalette('veeam2Storage', 'Veeam / Storage', false, mxUtils.bind(this, function(content)
774				{
775					for (var i = 0; i < fns.length; i++)
776					{
777						content.appendChild(fns[i](content));
778					}
779		}));
780	};
781
782	Sidebar.prototype.addVeeam23DPalette = function()
783	{
784		var sn = 'sketch=0;shadow=0;dashed=0;html=1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.3d.';
785
786		// Space savers
787		var sb = this;
788		var gn = 'mxgraph.veeam.3d';
789		var dt = 'veeam 3d vmware virtual machine ';
790
791		var w = 2.0;
792		var h = 2.0;
793
794		var fns =
795		[
796			this.createVertexTemplateEntry(sn + '1ftvm;',
797					w * 34, h * 31, '', '1FTVM', null, null, this.getTagsForStencil(gn, '1ftvm', dt).join(' ')),
798			this.createVertexTemplateEntry(sn + '1ftvm_error;',
799					w * 34, h * 31, '', '1FTVM Error', null, null, this.getTagsForStencil(gn, '1ftvm error', dt).join(' ')),
800			this.createVertexTemplateEntry(sn + '1ftvm_running;',
801					w * 34, h * 31, '', '1FTVM Running', null, null, this.getTagsForStencil(gn, '1ftvm running', dt).join(' ')),
802			this.createVertexTemplateEntry(sn + '1ftvm_unavailable;',
803					w * 34, h * 31, '', '1FTVM Unavailable', null, null, this.getTagsForStencil(gn, '1ftvm unavailable', dt).join(' ')),
804			this.createVertexTemplateEntry(sn + '1ftvm_warning;',
805					w * 34, h * 31, '', '1FTVM Warning', null, null, this.getTagsForStencil(gn, '1ftvm warning', dt).join(' ')),
806			this.createVertexTemplateEntry(sn + '2ftvm;',
807					w * 34, h * 31, '', '2FTVM', null, null, this.getTagsForStencil(gn, '2ftvm', dt).join(' ')),
808			this.createVertexTemplateEntry(sn + '2ftvm_error;',
809					w * 34, h * 31, '', '2FTVM Error', null, null, this.getTagsForStencil(gn, '2ftvm error', dt).join(' ')),
810			this.createVertexTemplateEntry(sn + '2ftvm_running;',
811					w * 34, h * 31, '', '2FTVM Running', null, null, this.getTagsForStencil(gn, '2ftvm running', dt).join(' ')),
812			this.createVertexTemplateEntry(sn + '2ftvm_unavailable;',
813					w * 34, h * 31, '', '2FTVM Unavailable', null, null, this.getTagsForStencil(gn, '2ftvm unavailable', dt).join(' ')),
814			this.createVertexTemplateEntry(sn + '2ftvm_warning;',
815					w * 34, h * 31, '', '2FTVM Warning', null, null, this.getTagsForStencil(gn, '2ftvm warning', dt).join(' ')),
816			this.createVertexTemplateEntry(sn + 'backup_repository;',
817					w * 31, h * 31, '', 'Backup Repository', null, null, this.getTagsForStencil(gn, 'backup repository', dt).join(' ')),
818			this.createVertexTemplateEntry(sn + 'backup_repository_2;',
819					w * 31, h * 31, '', 'Backup Repository', null, null, this.getTagsForStencil(gn, 'backup repository', dt).join(' ')),
820			this.createVertexTemplateEntry(sn + 'cd;',
821					w * 34, h * 13, '', 'CD', null, null, this.getTagsForStencil(gn, 'cd', dt).join(' ')),
822			this.createVertexTemplateEntry(sn + 'database;',
823					w * 29, h * 31, '', 'Database', null, null, this.getTagsForStencil(gn, 'database', dt).join(' ')),
824			this.createVertexTemplateEntry(sn + 'datastore;',
825					w * 22, h * 30, '', 'Datastore', null, null, this.getTagsForStencil(gn, 'datastore', dt).join(' ')),
826			this.createVertexTemplateEntry(sn + 'datastore_snapshot;',
827					w * 27, h * 17, '', 'Datastore Snapshot', null, null, this.getTagsForStencil(gn, 'datastore snapshot', dt).join(' ')),
828			this.createVertexTemplateEntry(sn + 'datastore_volume;',
829					w * 27, h * 17, '', 'Datastore Volume', null, null, this.getTagsForStencil(gn, 'datastore volume', dt).join(' ')),
830			this.createVertexTemplateEntry(sn + 'esx_esxi;',
831					w * 19, h * 26, '', 'ESX ESXi', null, null, this.getTagsForStencil(gn, 'esx esxi', dt).join(' ')),
832			this.createVertexTemplateEntry(sn + 'failover_protective_snapshot;',
833					w * 23, h * 23, '', 'Failover Protective Snapshot', null, null, this.getTagsForStencil(gn, 'failover protective snapshot', dt).join(' ')),
834			this.createVertexTemplateEntry(sn + 'failover_protective_snapshot_locked;',
835					w * 28, h * 23, '', 'Failover Protective Snapshot Locked', null, null, this.getTagsForStencil(gn, 'failover protective snapshot locked', dt).join(' ')),
836			this.createVertexTemplateEntry(sn + 'failover_protective_snapshot_running;',
837					w * 29, h * 23, '', 'Failover Protective Snapshot Running', null, null, this.getTagsForStencil(gn, 'failover protective snapshot running', dt).join(' ')),
838			this.createVertexTemplateEntry(sn + 'free_datastore;',
839					w * 22, h * 30, '', 'Free Datastore', null, null, this.getTagsForStencil(gn, 'free datastore', dt).join(' ')),
840			this.createVertexTemplateEntry(sn + 'full_datastore;',
841					w * 22, h * 30, '', 'Full Datastore', null, null, this.getTagsForStencil(gn, 'full datastore', dt).join(' ')),
842			this.createVertexTemplateEntry(sn + 'hard_drive;fillColor=#637D8A;gradientColor=#324752;strokeColor=none;',
843					w * 31, h * 14, '', 'Hard Drive', null, null, this.getTagsForStencil(gn, 'hard drive', dt).join(' ')),
844			this.createVertexTemplateEntry(sn + 'hyper_v_host;',
845					w * 55, h * 49, '', 'Hyper-V Host', null, null, this.getTagsForStencil(gn, 'hyper-v host', dt).join(' ')),
846			this.createVertexTemplateEntry(sn + 'lost_space;',
847					w * 22, h * 30, '', 'Lost Space', null, null, this.getTagsForStencil(gn, 'lost space', dt).join(' ')),
848			this.createVertexTemplateEntry(sn + 'lun;',
849					w * 36, h * 20, '', 'LUN', null, null, this.getTagsForStencil(gn, 'lun', dt).join(' ')),
850			this.createVertexTemplateEntry(sn + 'medium_datastore;',
851					w * 22, h * 30, '', 'Medium Datastore', null, null, this.getTagsForStencil(gn, 'medium datastore', dt).join(' ')),
852			this.createVertexTemplateEntry(sn + 'network_card;',
853					w * 19, h * 20, '', 'Network Card', null, null, this.getTagsForStencil(gn, 'network card', dt).join(' ')),
854			this.createVertexTemplateEntry(sn + 'physical_storage;',
855					w * 54, h * 30, '', 'Physical Storage', null, null, this.getTagsForStencil(gn, 'physical_storage', dt).join(' ')),
856			this.createVertexTemplateEntry(sn + 'proxy;',
857					w * 23, h * 23, '', 'Proxy', null, null, this.getTagsForStencil(gn, 'proxy', dt).join(' ')),
858			this.createVertexTemplateEntry(sn + 'proxy_appliance;',
859					w * 23, h * 23, '', 'Proxy Appliance', null, null, this.getTagsForStencil(gn, 'proxy appliance', dt).join(' ')),
860			this.createVertexTemplateEntry(sn + 'remote_site;',
861					w * 23, h * 30, '', 'Remote Site', null, null, this.getTagsForStencil(gn, 'remote site', dt).join(' ')),
862			this.createVertexTemplateEntry(sn + 'remote_storage;',
863					w * 26, h * 31, '', 'Remote Storage', null, null, this.getTagsForStencil(gn, 'remote storage', dt).join(' ')),
864			this.createVertexTemplateEntry(sn + 'resource_pool;',
865					w * 28, h * 16, '', 'Resource Pool', null, null, this.getTagsForStencil(gn, 'resource pool', dt).join(' ')),
866			this.createVertexTemplateEntry(sn + 'service_vnic;',
867					w * 36, h * 32, '', 'Service vNIC', null, null, this.getTagsForStencil(gn, 'service vnic', dt).join(' ')),
868			this.createVertexTemplateEntry(sn + 'switch;',
869					w * 55, h * 29, '', 'Switch', null, null, this.getTagsForStencil(gn, 'switch', dt).join(' ')),
870			this.createVertexTemplateEntry(sn + 'tape;',
871					w * 29, h * 29, '', 'Tape', null, null, this.getTagsForStencil(gn, 'tape', dt).join(' ')),
872			this.createVertexTemplateEntry(sn + 'tape_checked;',
873					w * 35, h * 29, '', 'Tape Checked', null, null, this.getTagsForStencil(gn, 'tape checked', dt).join(' ')),
874			this.createVertexTemplateEntry(sn + 'tape_ejecting;',
875					w * 35, h * 29, '', 'Tape Ejecting', null, null, this.getTagsForStencil(gn, 'tape ejecting', dt).join(' ')),
876			this.createVertexTemplateEntry(sn + 'tape_library;',
877					w * 31, h * 37, '', 'Tape Library', null, null, this.getTagsForStencil(gn, 'tape library', dt).join(' ')),
878			this.createVertexTemplateEntry(sn + 'tape_licensed;',
879					w * 35, h * 29, '', 'Tape Licensed', null, null, this.getTagsForStencil(gn, 'tape licensed', dt).join(' ')),
880			this.createVertexTemplateEntry(sn + 'tape_recording;',
881					w * 35, h * 29, '', 'Tape Recording', null, null, this.getTagsForStencil(gn, 'tape recording', dt).join(' ')),
882			this.createVertexTemplateEntry(sn + 'tape_server;',
883					w * 23, h * 23, '', 'Tape Server', null, null, this.getTagsForStencil(gn, 'tape server', dt).join(' ')),
884			this.createVertexTemplateEntry(sn + 'vapp;',
885					w * 46, h * 31, '', 'vApp', null, null, this.getTagsForStencil(gn, 'vapp', dt).join(' ')),
886			this.createVertexTemplateEntry(sn + 'vapp_started;',
887					w * 46, h * 31, '', 'vApp Started', null, null, this.getTagsForStencil(gn, 'vapp started', dt).join(' ')),
888			this.createVertexTemplateEntry(sn + 'veeam_availability_suite;',
889					w * 23, h * 23, '', 'Veeam Availability Suite', null, null, this.getTagsForStencil(gn, 'veeam availability suite', dt).join(' ')),
890			this.createVertexTemplateEntry(sn + 'veeam_backup_and_replication_server;',
891					w * 23, h * 23, '', 'Veeam Backup and Replication Server', null, null, this.getTagsForStencil(gn, 'veeam backup and replication server', dt).join(' ')),
892			this.createVertexTemplateEntry(sn + 'veeam_backup_enterprise_manager_server;',
893					w * 23, h * 23, '', 'Veeam Backup Enterprise Manager Server', null, null, this.getTagsForStencil(gn, 'veeam backup enterprise manager server', dt).join(' ')),
894			this.createVertexTemplateEntry(sn + 'veeam_backup_search_server;',
895					w * 23, h * 23, '', 'Veeam Backup Search Server', null, null, this.getTagsForStencil(gn, 'veeam backup search server', dt).join(' ')),
896			this.createVertexTemplateEntry(sn + 'veeam_one_business_view;',
897					w * 23, h * 23, '', 'Veeam ONE Business View', null, null, this.getTagsForStencil(gn, 'veeam one business view', dt).join(' ')),
898			this.createVertexTemplateEntry(sn + 'veeam_one_monitor;',
899					w * 23, h * 23, '', 'Veeam ONE Monitor', null, null, this.getTagsForStencil(gn, 'veeam one monitor', dt).join(' ')),
900			this.createVertexTemplateEntry(sn + 'veeam_one_reporter;',
901					w * 23, h * 23, '', 'Veeam ONE Reporter', null, null, this.getTagsForStencil(gn, 'veeam one reporter', dt).join(' ')),
902			this.createVertexTemplateEntry(sn + 'veeam_one_server;',
903					w * 23, h * 23, '', 'Veeam ONE Server', null, null, this.getTagsForStencil(gn, 'veeam one server', dt).join(' ')),
904			this.createVertexTemplateEntry(sn + 'virtual_machine;',
905					w * 23, h * 23, '', 'Virtual Machine', null, null, this.getTagsForStencil(gn, 'virtual machine', dt).join(' ')),
906			this.createVertexTemplateEntry(sn + 'vmware_host;',
907					w * 55, h * 49, '', 'VMware Host', null, null, this.getTagsForStencil(gn, 'vmware host', dt).join(' ')),
908			this.createVertexTemplateEntry(sn + 'vm_failed;',
909					w * 28, h * 23, '', 'VM Failed', null, null, this.getTagsForStencil(gn, 'vm failed', dt).join(' ')),
910			this.createVertexTemplateEntry(sn + 'vm_linux;',
911					w * 23, h * 30, '', 'VM Linux', null, null, this.getTagsForStencil(gn, 'vm linux', dt).join(' ')),
912			this.createVertexTemplateEntry(sn + 'vm_no_network;',
913					w * 29, h * 23, '', 'VM No Network', null, null, this.getTagsForStencil(gn, 'vm no network', dt).join(' ')),
914			this.createVertexTemplateEntry(sn + 'vm_problem;',
915					w * 28, h * 23, '', 'VM Problem', null, null, this.getTagsForStencil(gn, 'vm problem', dt).join(' ')),
916			this.createVertexTemplateEntry(sn + 'vm_running;',
917					w * 28, h * 23, '', 'VM Running', null, null, this.getTagsForStencil(gn, 'vm running', dt).join(' ')),
918			this.createVertexTemplateEntry(sn + 'vm_saved_state;',
919					w * 29, h * 24, '', 'VM Saved State', null, null, this.getTagsForStencil(gn, 'vm saved state', dt).join(' ')),
920			this.createVertexTemplateEntry(sn + 'vm_windows;',
921					w * 23, h * 30, '', 'VM Windows', null, null, this.getTagsForStencil(gn, 'vm windows', dt).join(' ')),
922			this.createVertexTemplateEntry(sn + 'vnic;',
923					w * 31, h * 31, '', 'vNIC', null, null, this.getTagsForStencil(gn, 'vnic', dt).join(' ')),
924			this.createVertexTemplateEntry(sn + 'wan_accelerator;',
925					w * 23, h * 23, '', 'WAN Accelerator', null, null, this.getTagsForStencil(gn, 'wan accelerator', dt).join(' ')),
926			this.createVertexTemplateEntry(sn + 'workstation;',
927					w * 38, h * 31, '', 'Workstation', null, null, this.getTagsForStencil(gn, 'workstation', dt).join(' '))
928		];
929
930		this.addPalette('veeam23D', 'Veeam / 3D', false, mxUtils.bind(this, function(content)
931				{
932					for (var i = 0; i < fns.length; i++)
933					{
934						content.appendChild(fns[i](content));
935					}
936		}));
937	};
938})();
939