1(function()
2{
3	Sidebar.prototype.addVeeamPalette = function()
4	{
5//		this.setCurrentSearchEntryLibrary('veeam', 'veeamData Center');
6		this.addVeeamDataCenterPalette();
7//		this.setCurrentSearchEntryLibrary('veeam', 'veeamMisc');
8		this.addVeeamMiscPalette();
9//		this.setCurrentSearchEntryLibrary('veeam', 'veeamSoftware');
10		this.addVeeamSoftwarePalette();
11//		this.setCurrentSearchEntryLibrary('veeam', 'veeamStorage');
12		this.addVeeamStoragePalette();
13//		this.setCurrentSearchEntryLibrary('veeam', 'veeamUsersStatus');
14		this.addVeeamUsersStatusPalette();
15//		this.setCurrentSearchEntryLibrary('veeam', 'veeamVASComponents');
16		this.addVeeamVASComponentsPalette();
17//		this.setCurrentSearchEntryLibrary('veeam', 'veeamBackup Replication');
18		this.addVeeamBackupReplicationPalette();
19//		this.setCurrentSearchEntryLibrary('veeam', 'veeamProducts');
20		this.addVeeamProductsPalette();
21//		this.setCurrentSearchEntryLibrary('veeam', 'veeamVMs and Tape');
22		this.addVeeamVMsTapePalette();
23		this.setCurrentSearchEntryLibrary('veeam2', 'veeam23D');
24		this.addVeeam3DPalette();
25		this.setCurrentSearchEntryLibrary();
26	};
27
28	Sidebar.prototype.addVeeamDataCenterPalette = function()
29	{
30		var sn = 'pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
31		var s = 'pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
32		var s2 = 'pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
33		var s3 = 'pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
34		var s4 = 'pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
35
36		// Space savers
37		var sb = this;
38		var gn = 'mxgraph.veeam.data_center';
39		var dt = 'veeam vmware virtual machine data center';
40
41		var w = 4.0;
42		var h = 4.0;
43
44		var fns =
45		[
46			this.createVertexTemplateEntry(s3 + 'hyper_v_vmware_host;',
47					w * 27, h * 26, '', 'VMware/Hyper-V Host', null, null, this.getTagsForStencil(gn, 'hyper vmware host', dt).join(' ')),
48			this.createVertexTemplateEntry(s3 + 'hyper_v_host;',
49					w * 27, h * 26, '', 'Hyper-V Host', null, null, this.getTagsForStencil(gn, 'hyper host', dt).join(' ')),
50			this.createVertexTemplateEntry(s3 + 'vmware_host;',
51					w * 27, h * 26, '', 'VMware Host', null, null, this.getTagsForStencil(gn, 'vmware host', dt).join(' ')),
52			this.createVertexTemplateEntry(s3 + 'virtual_host;',
53					w * 27, h * 26, '', 'Virtual Host', null, null, this.getTagsForStencil(gn, 'virtual host', dt).join(' ')),
54			this.createVertexTemplateEntry(s4 + 'production_site;',
55					w * 11.2, h * 11.2, '', 'Production Site', null, null, this.getTagsForStencil(gn, 'production site', dt).join(' ')),
56			this.createVertexTemplateEntry(s4 + 'dr_site;',
57					w * 11.2, h * 11.2, '', 'DR Site', null, null, this.getTagsForStencil(gn, 'dr site', dt).join(' ')),
58			this.createVertexTemplateEntry(s + 'esx_esxi;',
59					w * 8.3, h * 12.7, '', 'Physical Server', null, null, this.getTagsForStencil(gn, 'esx esxi', dt).join(' ')),
60			this.createVertexTemplateEntry(s3 + 'server;',
61					w * 17.9, h * 4.7, '', 'Server', null, null, this.getTagsForStencil(gn, 'esx esxi', dt).join(' ')),
62			this.createVertexTemplateEntry(s3 + 'server_stack;',
63					w * 14.3, h * 12.4, '', 'Server stack', null, null, this.getTagsForStencil(gn, 'server stack', dt).join(' ')),
64			this.createVertexTemplateEntry(s3 + 'data_center;',
65					w * 19, h * 12.5, '', 'Data center', null, null, this.getTagsForStencil(gn, 'data center', dt).join(' ')),
66			this.createVertexTemplateEntry(s3 + 'cluster;',
67					w * 25.7, h * 12.3, '', 'Cluster', null, null, this.getTagsForStencil(gn, 'cluster', dt).join(' ')),
68			this.createVertexTemplateEntry(s3 + 'controller;',
69					w * 11.2, h * 11.2, '', 'Controller', null, null, this.getTagsForStencil(gn, 'controller', dt).join(' ')),
70			this.createVertexTemplateEntry(s3 + 'cpu;',
71					w * 11.2, h * 11.2, '', 'CPU', null, null, this.getTagsForStencil(gn, 'cpu', dt).join(' ')),
72			this.createVertexTemplateEntry(s3 + 'cpu_socket;',
73					w * 11.2, h * 11.2, '', 'CPU socket', null, null, this.getTagsForStencil(gn, 'cpu socket', dt).join(' ')),
74			this.createVertexTemplateEntry(s + 'cloud_gateway;',
75					w * 11.2, h * 11.2, '', 'Gateway', null, null, this.getTagsForStencil(gn, 'cloud gateway', dt).join(' ')),
76			this.createVertexTemplateEntry(s3 + 'laptop;',
77					w * 14.6, h * 11, '', 'Laptop', null, null, this.getTagsForStencil(gn, 'laptop', dt).join(' ')),
78			this.createVertexTemplateEntry(s3 + 'monitor;',
79					w * 10.8, h * 11.9, '', 'Monitor', null, null, this.getTagsForStencil(gn, 'monitor', dt).join(' ')),
80			this.createVertexTemplateEntry(s + 'proxy;',
81					w * 11.2, h * 11.2, '', 'Proxy', null, null, this.getTagsForStencil(gn, 'proxy', dt).join(' ')),
82			this.createVertexTemplateEntry(s + 'proxy_appliance;',
83					w * 11.2, h * 11.2, '', 'Proxy Appliance', null, null, this.getTagsForStencil(gn, 'proxy appliance', dt).join(' ')),
84			this.createVertexTemplateEntry(s3 + 'ram;',
85					w * 12.1, h * 6.3, '', 'RAM', null, null, this.getTagsForStencil(gn, 'ram random access memory', dt).join(' ')),
86			this.createVertexTemplateEntry(s3 + 'raid_controller;',
87					w * 10.5, h * 7.3, '', 'RAID controller', null, null, this.getTagsForStencil(gn, 'raid controller', dt).join(' ')),
88			this.createVertexTemplateEntry(s3 + 'sd_card;',
89					w * 8.1, h * 9.7, '', 'SD card', null, null, this.getTagsForStencil(gn, 'sd card', dt).join(' ')),
90			this.createVertexTemplateEntry(s + 'workstation;',
91					w * 19.1, h * 12.8, '', 'Workstation', null, null, this.getTagsForStencil(gn, 'workstation', dt).join(' ')),
92			this.createVertexTemplateEntry(s + 'wan_accelerator;',
93					w * 11.2, h * 11.2, '', 'WAN Accelerator', null, null, this.getTagsForStencil(gn, 'wan accelerator wireless area network', dt).join(' ')),
94			this.createVertexTemplateEntry(s3 + 'usb;',
95					w * 13.2, h * 4.6, '', 'USB', null, null, this.getTagsForStencil(gn, 'usb', dt).join(' ')),
96			this.createVertexTemplateEntry(s + 'network_card;',
97					w * 10.7, h * 7.5, '', 'Network Card', null, null, this.getTagsForStencil(gn, 'network card', dt).join(' ')),
98			this.createVertexTemplateEntry(s + 'switch;',
99					w * 16, h * 2.7, '', 'Network Switch', null, null, this.getTagsForStencil(gn, 'network switch', dt).join(' ')),
100			this.createVertexTemplateEntry(s + 'service_vnic;',
101					w * 14.2, h * 13.5, '', 'Service vNIC', null, null, this.getTagsForStencil(gn, 'service vnic', dt).join(' ')),
102			this.createVertexTemplateEntry(s + 'virtual_switch;',
103					w * 11.2, h * 11.2, '', 'Virtual Switch', null, null, this.getTagsForStencil(gn, 'switch', dt).join(' ')),
104			this.createVertexTemplateEntry(s + 'vnic;',
105					w * 11.2, h * 11.2, '', 'vNIC', null, null, this.getTagsForStencil(gn, 'vnic', dt).join(' '))
106
107		];
108
109		this.addPalette('veeamData Center', 'Veeam / Data Center', false, mxUtils.bind(this, function(content)
110				{
111					for (var i = 0; i < fns.length; i++)
112					{
113						content.appendChild(fns[i](content));
114					}
115		}));
116	};
117
118	Sidebar.prototype.addVeeamMiscPalette = function()
119	{
120		var sn = 'shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
121		var s = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
122		var s2 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
123		var s3 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
124		var s4 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
125
126		// Space savers
127		var sb = this;
128		var gn = 'mxgraph.veeam.misc';
129		var dt = 'veeam vmware virtual machine misc miscellaneous';
130
131		var w = 4.0;
132		var h = 4.0;
133
134		var fns =
135		[
136			this.createVertexTemplateEntry(s + 'alarm;',
137					w * 13.2, h * 9.4, '', 'Alarm', null, null, this.getTagsForStencil(gn, 'alarm', dt).join(' ')),
138			this.createVertexTemplateEntry(s3 + 'building;',
139					w * 15.8, h * 13.8, '', 'Building', null, null, this.getTagsForStencil(gn, 'building', dt).join(' ')),
140			this.createVertexTemplateEntry(s + 'cloud;',
141					w * 14.7, h * 10.4, '', 'Cloud', null, null, this.getTagsForStencil(gn, 'cloud', dt).join(' ')),
142			this.createVertexTemplateEntry(s3 + 'checked_doc;',
143					w * 12.7, h * 15.4, '', 'Checked doc', null, null, this.getTagsForStencil(gn, 'checked doc document', dt).join(' ')),
144			this.createVertexTemplateEntry(s + 'download;',
145					w * 11.2, h * 11.2, '', 'Download', null, null, this.getTagsForStencil(gn, 'download', dt).join(' ')),
146			this.createVertexTemplateEntry(s3 + 'dns;',
147					w * 11.2, h * 11.2, '', 'DNS', null, null, this.getTagsForStencil(gn, 'dns domain name server', dt).join(' ')),
148			this.createVertexTemplateEntry(s3 + 'encryption_key;',
149					w * 9.2, h * 12.7, '', 'Encryption key', null, null, this.getTagsForStencil(gn, 'dns domain name server', dt).join(' ')),
150			this.createVertexTemplateEntry(s + 'file;',
151					w * 9.2, h * 12.7, '', 'File', null, null, this.getTagsForStencil(gn, 'file', dt).join(' ')),
152			this.createVertexTemplateEntry(s + 'folder;',
153					w * 13.8, h * 12.8, '', 'Folder', null, null, this.getTagsForStencil(gn, 'folder', dt).join(' ')),
154			this.createVertexTemplateEntry(s3 + 'globe;',
155					w * 11.2, h * 11.2, '', 'Globe', null, null, this.getTagsForStencil(gn, 'globe', dt).join(' ')),
156			this.createVertexTemplateEntry(s3 + 'iso;',
157					w * 9.2, h * 12.7, '', 'ISO', null, null, this.getTagsForStencil(gn, 'iso international standard organization', dt).join(' ')),
158			this.createVertexTemplateEntry(s + 'letter;',
159					w * 11.6, h * 8.7, '', 'Letter', null, null, this.getTagsForStencil(gn, 'letter', dt).join(' ')),
160			this.createVertexTemplateEntry(s3 + 'library;',
161					w * 12, h * 9.2, '', 'Library', null, null, this.getTagsForStencil(gn, 'library', dt).join(' ')),
162			this.createVertexTemplateEntry(s3 + 'license;',
163					w * 12.7, h * 14.1, '', 'License', null, null, this.getTagsForStencil(gn, 'license', dt).join(' ')),
164			this.createVertexTemplateEntry(s3 + 'magnifying_glass;pointerEvents=1;',
165					w * 13.8, h * 13.6, '', 'Magnifying Glass', null, null, this.getTagsForStencil(gn, 'magnifying glass', dt).join(' ')),
166			this.createVertexTemplateEntry(s3 + 'script;',
167					w * 11.2, h * 11.2, '', 'Script', null, null, this.getTagsForStencil(gn, 'script', dt).join(' ')),
168			this.createVertexTemplateEntry(s + 'search;',
169					w * 11.2, h * 11.2, '', 'Search', null, null, this.getTagsForStencil(gn, 'search', dt).join(' ')),
170			this.createVertexTemplateEntry(s3 + 'smb;pointerEvents=1;',
171					w * 20, h * 14.1, '', 'SMB', null, null, this.getTagsForStencil(gn, 'smb', dt).join(' ')),
172			this.createVertexTemplateEntry(s3 + 'tasks;',
173					w * 9.2, h * 12.7, '', 'Tasks', null, null, this.getTagsForStencil(gn, 'tasks', dt).join(' ')),
174			this.createVertexTemplateEntry(s3 + 'table;',
175					w * 12.7, h * 12.7, '', 'Table', null, null, this.getTagsForStencil(gn, 'table', dt).join(' ')),
176			this.createVertexTemplateEntry(s3 + 'time;',
177					w * 11.2, h * 11.2, '', 'Time', null, null, this.getTagsForStencil(gn, 'time', dt).join(' ')),
178			this.createVertexTemplateEntry(s + 'resource_pool;',
179					w * 11.2, h * 11.2, '', 'Part', null, null, this.getTagsForStencil(gn, 'resource pool', dt).join(' ')),
180			this.createVertexTemplateEntry(s + 'private_key;',
181					w * 13.9, h * 12.7, '', 'Private Key', null, null, this.getTagsForStencil(gn, 'private key', dt).join(' ')),
182			this.createVertexTemplateEntry(s + 'report;',
183					w * 9.2, h * 12.7, '', 'Report', null, null, this.getTagsForStencil(gn, 'report', dt).join(' ')),
184			this.createVertexTemplateEntry(s + 'privilege;',
185					w * 15.1, h * 14.5, '', 'Policy', null, null, this.getTagsForStencil(gn, 'policy', dt).join(' ')),
186			this.createVertexTemplateEntry(s3 + 'restore;pointerEvents=1;',
187					w * 11.2, h * 11.2, '', 'Restore', null, null, this.getTagsForStencil(gn, 'restore', dt).join(' ')),
188			this.createVertexTemplateEntry(s + 'role;',
189					w * 9.2, h * 12.7, '', 'Role', null, null, this.getTagsForStencil(gn, 'role', dt).join(' ')),
190			this.createVertexTemplateEntry(s3 + 'transportation;',
191					w * 13.8, h * 9.6, '', 'Transportation', null, null, this.getTagsForStencil(gn, 'transportation', dt).join(' '))
192		];
193
194		this.addPalette('veeamMisc', 'Veeam / Miscellaneous', false, mxUtils.bind(this, function(content)
195				{
196					for (var i = 0; i < fns.length; i++)
197					{
198						content.appendChild(fns[i](content));
199					}
200		}));
201	};
202
203	Sidebar.prototype.addVeeamSoftwarePalette = function()
204	{
205		var sn = 'shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
206		var s = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
207		var s2 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
208		var s3 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
209		var s4 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
210
211		// Space savers
212		var sb = this;
213		var gn = 'mxgraph.veeam.software';
214		var dt = 'veeam vmware virtual machine software';
215
216		var w = 4.0;
217		var h = 4.0;
218
219		var fns =
220		[
221			this.createVertexTemplateEntry('pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#07B152;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.veeam_logo;',
222					w * 27.4, h * 4.8, '', 'Veeam logo', null, null, this.getTagsForStencil(gn, 'veeam logo', dt).join(' ')),
223			this.createVertexTemplateEntry(s4 + 'active_directory;',
224					w * 11.2, h * 11.2, '', 'Active Directory', null, null, this.getTagsForStencil(gn, 'active directory', dt).join(' ')),
225			this.createVertexTemplateEntry(s + 'agent;pointerEvents=1;',
226					w * 11.2, h * 11.2, '', 'Agent', null, null, this.getTagsForStencil(gn, 'agent', dt).join(' ')),
227			this.createVertexTemplateEntry(s3 + 'automated_testing;',
228					w * 11.2, h * 11.2, '', 'Automated Testing', null, null, this.getTagsForStencil(gn, 'automated testing', dt).join(' ')),
229			this.createVertexTemplateEntry(s + 'backup_browser;',
230					w * 11.2, h * 11.2, '', 'Backup Browser', null, null, this.getTagsForStencil(gn, 'backup browser', dt).join(' ')),
231			this.createVertexTemplateEntry(s + 'data_mover;pointerEvents=1;',
232					w * 11.2, h * 11.2, '', 'Data Mover', null, null, this.getTagsForStencil(gn, 'data mover', dt).join(' ')),
233			this.createVertexTemplateEntry(s + 'database;',
234					w * 15.7, h * 13.5, '', 'Database', null, null, this.getTagsForStencil(gn, 'database db', dt).join(' ')),
235			this.createVertexTemplateEntry(s3 + 'deduplication;',
236					w * 11.2, h * 11.2, '', 'Deduplication', null, null, this.getTagsForStencil(gn, 'deduplication', dt).join(' ')),
237			this.createVertexTemplateEntry(s3 + 'failover_plan;',
238					w * 9.6, h * 13.6, '', 'Failover plan', null, null, this.getTagsForStencil(gn, 'failover plan', dt).join(' ')),
239			this.createVertexTemplateEntry(s + 'file_system_browser;',
240					w * 11.2, h * 11.2, '', 'File System Browser', null, null, this.getTagsForStencil(gn, 'file system browser', dt).join(' ')),
241			this.createVertexTemplateEntry(s + 'failover_protective_snapshot;',
242					w * 11.2, h * 11.2, '', 'Failover Protection', null, null, this.getTagsForStencil(gn, 'failover protection', dt).join(' ')),
243			this.createVertexTemplateEntry(s3 + 'interface;',
244					w * 11.2, h * 11.2, '', 'Interface', null, null, this.getTagsForStencil(gn, 'interface', dt).join(' ')),
245			this.createVertexTemplateEntry(s + 'monitoring_console;',
246					w * 11.2, h * 11.2, '', 'Monitoring Console', null, null, this.getTagsForStencil(gn, 'monitoring console', dt).join(' ')),
247			this.createVertexTemplateEntry(s4 + 'linux;',
248					w * 11.2, h * 11.2, '', 'Linux', null, null, this.getTagsForStencil(gn, 'linux', dt).join(' ')),
249			this.createVertexTemplateEntry(s4 + 'ms_sharepoint;',
250					w * 11.2, h * 11.2, '', 'MS SharePoint', null, null, this.getTagsForStencil(gn, 'sharepoint', dt).join(' ')),
251			this.createVertexTemplateEntry(s4 + 'ms_sql;',
252					w * 11.2, h * 11.2, '', 'MS SQL', null, null, this.getTagsForStencil(gn, 'sql', dt).join(' ')),
253			this.createVertexTemplateEntry(s4 + 'ms_exchange;',
254					w * 11.2, h * 11.2, '', 'MS Exchange', null, null, this.getTagsForStencil(gn, 'exchange', dt).join(' ')),
255			this.createVertexTemplateEntry(s3 + 'ms_exchange_items;',
256					w * 20.4, h * 17.3, '', 'MS Exchange items', null, null, this.getTagsForStencil(gn, 'exchange items', dt).join(' ')),
257			this.createVertexTemplateEntry(s4 + 'ms_office;',
258					w * 11.2, h * 11.2, '', 'MS Office', null, null, this.getTagsForStencil(gn, 'office', dt).join(' ')),
259			this.createVertexTemplateEntry(s4 + 'ms_outlook;',
260					w * 11.2, h * 11.2, '', 'MS Outlook', null, null, this.getTagsForStencil(gn, 'outlook', dt).join(' ')),
261			this.createVertexTemplateEntry(s + 'web_console;',
262					w * 11.2, h * 11.2, '', 'Web Console', null, null, this.getTagsForStencil(gn, 'web console', dt).join(' ')),
263			this.createVertexTemplateEntry(s3 + 'vpn;',
264					w * 13.5, h * 9.5, '', 'VPN', null, null, this.getTagsForStencil(gn, 'vpn virtual private network', dt).join(' ')),
265			this.createVertexTemplateEntry(s + 'service;',
266					w * 8.3, h * 8.3, '', 'Service', null, null, this.getTagsForStencil(gn, 'service', dt).join(' ')),
267			this.createVertexTemplateEntry('shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#75B4DB;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.volume_shadow_copy;',
268					w * 14.3, h * 14.3, '', 'Volume shadow copy', null, null, this.getTagsForStencil(gn, 'volume shadow copy', dt).join(' ')),
269			this.createVertexTemplateEntry(s4 + 'ms_windows;',
270					w * 11.2, h * 11.2, '', 'MS Windows', null, null, this.getTagsForStencil(gn, 'windows', dt).join(' ')),
271			this.createVertexTemplateEntry(s2 + 'powershell_extension;',
272					w * 11.2, h * 11.2, '', 'PowerShell Extension', null, null, this.getTagsForStencil(gn, 'powershell extension', dt).join(' ')),
273			this.createVertexTemplateEntry(s4 + 'vcloud_director',
274					w * 11.2, h * 11.2, '', 'vCloud Director', null, null, this.getTagsForStencil(gn, 'vcloud director virtual cloud', dt).join(' ')),
275			this.createVertexTemplateEntry(s4 + 'vsphere',
276					w * 11.2, h * 11.2, '', 'vSphere', null, null, this.getTagsForStencil(gn, 'vsphere virtual sphere', dt).join(' ')),
277			this.createVertexTemplateEntry(s + 'web_ui;',
278					w * 11.2, h * 11.2, '', 'Web UI', null, null, this.getTagsForStencil(gn, 'web ui user interface', dt).join(' ')),
279			this.createVertexTemplateEntry(s + 'transport_service;pointerEvents=1;',
280					w * 11.2, h * 11.2, '', 'Transport Service', null, null, this.getTagsForStencil(gn, 'transport service', dt).join(' '))
281		];
282
283		this.addPalette('veeamSoftware', 'Veeam / Software', false, mxUtils.bind(this, function(content)
284				{
285					for (var i = 0; i < fns.length; i++)
286					{
287						content.appendChild(fns[i](content));
288					}
289		}));
290	};
291
292	Sidebar.prototype.addVeeamStoragePalette = function()
293	{
294		var sn = 'shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
295		var s = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
296		var s2 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
297		var s3 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
298		var s4 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
299
300		// Space savers
301		var sb = this;
302		var gn = 'mxgraph.veeam.storage';
303		var dt = 'veeam vmware virtual machine storage';
304
305		var w = 4.0;
306		var h = 4.0;
307
308		var fns =
309		[
310			this.createVertexTemplateEntry(s + 'backup_repository;',
311					w * 13.5, h * 12.5, '', 'Backup Repository', null, null, this.getTagsForStencil(gn, 'backup repository', dt).join(' ')),
312			this.createVertexTemplateEntry(s3 + 'remote_repository;',
313					w * 11.9, h * 11.6, '', 'Remote Repository', null, null, this.getTagsForStencil(gn, 'remote repository', dt).join(' ')),
314			this.createVertexTemplateEntry(s3 + 'shared_folder;',
315					w * 13.8, h * 16, '', 'Shared Folder', null, null, this.getTagsForStencil(gn, 'shared folder', dt).join(' ')),
316			this.createVertexTemplateEntry(s + 'datastore;',
317					w * 11.1, h * 11.3, '', 'Datastore', null, null, this.getTagsForStencil(gn, 'datastore', dt).join(' ')),
318			this.createVertexTemplateEntry(s3 + 'snapshot;',
319					w * 13.9, h * 12.2, '', 'Snapshot', null, null, this.getTagsForStencil(gn, 'snapshot', dt).join(' ')),
320			this.createVertexTemplateEntry(s3 + 'storage_cluster;',
321					w * 13.9, h * 14, '', 'Storage Cluster', null, null, this.getTagsForStencil(gn, 'storage cluster', dt).join(' ')),
322			this.createVertexTemplateEntry(s + 'datastore_volume;',
323					w * 15.8, h * 4.2, '', 'Data Volume', null, null, this.getTagsForStencil(gn, 'data volume', dt).join(' ')),
324			this.createVertexTemplateEntry(s + 'physical_storage;',
325					w * 14.8, h * 5, '', 'Physical Storage', null, null, this.getTagsForStencil(gn, 'physical storage', dt).join(' ')),
326			this.createVertexTemplateEntry('shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#75B4DB;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.datastore;',
327					w * 10.8, h * 11.1, '', 'Datastore', null, null, this.getTagsForStencil(gn, 'datastore', dt).join(' ')),
328			this.createVertexTemplateEntry(s + 'full_datastore;',
329					w * 10.8, h * 11.1, '', 'Full Datastore', null, null, this.getTagsForStencil(gn, 'full datastore', dt).join(' ')),
330			this.createVertexTemplateEntry(s + 'medium_datastore;',
331					w * 10.8, h * 11.1, '', 'Medium Datastore', null, null, this.getTagsForStencil(gn, 'medium datastore', dt).join(' ')),
332			this.createVertexTemplateEntry(s + 'free_datastore;',
333					w * 10.8, h * 11.1, '', 'Free Datastore', null, null, this.getTagsForStencil(gn, 'free datastore', dt).join(' ')),
334			this.createVertexTemplateEntry(s + 'remote_storage;',
335					w * 11.6, h * 11.6, '', 'Remote Storage', null, null, this.getTagsForStencil(gn, 'remote storage', dt).join(' ')),
336			this.createVertexTemplateEntry(s + 'vm_backup;',
337					w * 14.3, h * 13.3, '', 'VM Backup', null, null, this.getTagsForStencil(gn, 'vm backup', dt).join(' ')),
338			this.createVertexTemplateEntry(s + 'lost_space;',
339					w * 10.8, h * 11.1, '', 'Lost Space', null, null, this.getTagsForStencil(gn, 'lost space', dt).join(' ')),
340			this.createVertexTemplateEntry(s + 'hard_drive;',
341					w * 10, h * 12, '', 'Hard Drive', null, null, this.getTagsForStencil(gn, 'hard drive', dt).join(' ')),
342			this.createVertexTemplateEntry(s3 + 'disk_partition;',
343					w * 14.3, h * 14.3, '', 'Disk partition', null, null, this.getTagsForStencil(gn, 'disk partition', dt).join(' ')),
344			this.createVertexTemplateEntry(s3 + 'local_disk;',
345					w * 14.3, h * 14.2, '', 'Local disk', null, null, this.getTagsForStencil(gn, 'local disk', dt).join(' ')),
346			this.createVertexTemplateEntry(s3 + 'audio_file;',
347					w * 9.2, h * 12.7, '', 'Audio file', null, null, this.getTagsForStencil(gn, 'audio file', dt).join(' ')),
348			this.createVertexTemplateEntry(s3 + 'backup_file;',
349					w * 14.4, h * 13.3, '', 'Backup file', null, null, this.getTagsForStencil(gn, 'audio file', dt).join(' ')),
350			this.createVertexTemplateEntry(s3 + 'data_file;',
351					w * 11.8, h * 15.2, '', 'Data file', null, null, this.getTagsForStencil(gn, 'data file', dt).join(' ')),
352			this.createVertexTemplateEntry(s3 + 'google_document;',
353					w * 9.2, h * 12.7, '', 'Google document', null, null, this.getTagsForStencil(gn, 'google document', dt).join(' ')),
354			this.createVertexTemplateEntry(s3 + 'video_file;',
355					w * 9.2, h * 12.7, '', 'Video file', null, null, this.getTagsForStencil(gn, 'video file', dt).join(' ')),
356			this.createVertexTemplateEntry(s3 + 'vsb_file;',
357					w * 9.2, h * 12.7, '', 'VSB file', null, null, this.getTagsForStencil(gn, 'vsb file', dt).join(' ')),
358			this.createVertexTemplateEntry(s3 + 'windows_repository;',
359					w * 13.3, h * 12.3, '', 'Windows Repository', null, null, this.getTagsForStencil(gn, 'windows repository', dt).join(' ')),
360			this.createVertexTemplateEntry(s3 + 'linux_repository;',
361					w * 13.4, h * 12.4, '', 'Linux Repository', null, null, this.getTagsForStencil(gn, 'linux repository', dt).join(' '))
362		];
363
364		this.addPalette('veeamStorage', 'Veeam / Storage', false, mxUtils.bind(this, function(content)
365				{
366					for (var i = 0; i < fns.length; i++)
367					{
368						content.appendChild(fns[i](content));
369					}
370		}));
371	};
372
373	Sidebar.prototype.addVeeamUsersStatusPalette = function()
374	{
375		var sn = 'shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
376		var s = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
377		var s2 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
378		var s3 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
379		var s4 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
380
381		// Space savers
382		var sb = this;
383		var gn = 'mxgraph.veeam.storage';
384		var dt = 'veeam vmware virtual machine users status';
385
386		var w = 4.0;
387		var h = 4.0;
388
389		var fns =
390		[
391			this.createVertexTemplateEntry(s + 'user;',
392					w * 8, h * 14.5, '', 'User', null, null, this.getTagsForStencil(gn, 'user', dt).join(' ')),
393			this.createVertexTemplateEntry(s + 'group;',
394					w * 13.4, h * 15.1, '', 'User Group', null, null, this.getTagsForStencil(gn, 'user group', dt).join(' ')),
395			this.createVertexTemplateEntry(s3 + 'company_user;',
396					w * 11.1, h * 12.2, '', 'Company User', null, null, this.getTagsForStencil(gn, 'company user', dt).join(' ')),
397			this.createVertexTemplateEntry(s3 + 'company_owner;',
398					w * 11.1, h * 12.2, '', 'Company Owner', null, null, this.getTagsForStencil(gn, 'company owner', dt).join(' ')),
399			this.createVertexTemplateEntry(s3 + 'portal_admin;',
400					w * 11.1, h * 12.2, '', 'Portal Admin', null, null, this.getTagsForStencil(gn, 'portal admin', dt).join(' ')),
401			this.createVertexTemplateEntry(s3 + 'company_administrator;',
402					w * 11.1, h * 12.2, '', 'Company Administrator', null, null, this.getTagsForStencil(gn, 'company administrator', dt).join(' ')),
403			this.createVertexTemplateEntry(s + 'alert;',
404					w * 8.3, h * 8.3, '', 'Alert', null, null, this.getTagsForStencil(gn, 'alert', dt).join(' ')),
405			this.createVertexTemplateEntry(s4 + 'zipped;pointerEvents=1;',
406					w * 1.7, h * 14.3, '', 'Zipped', null, null, this.getTagsForStencil(gn, 'zipped', dt).join(' ')),
407			this.createVertexTemplateEntry(s4 + 'shared;',
408					w * 11.5, h * 6.2, '', 'Shared', null, null, this.getTagsForStencil(gn, 'shared', dt).join(' ')),
409			this.createVertexTemplateEntry(s4 + 'checked;',
410					w * 9, h * 9, '', 'Checked', null, null, this.getTagsForStencil(gn, 'checked', dt).join(' ')),
411			this.createVertexTemplateEntry(s4 + 'eject;',
412					w * 9, h * 9, '', 'Eject', null, null, this.getTagsForStencil(gn, 'eject', dt).join(' ')),
413			this.createVertexTemplateEntry(s4 + 'recording;',
414					w * 9, h * 9, '', 'Recording', null, null, this.getTagsForStencil(gn, 'recording', dt).join(' ')),
415			this.createVertexTemplateEntry(s4 + 'powered;',
416					w * 9, h * 9, '', 'Powered', null, null, this.getTagsForStencil(gn, 'powered', dt).join(' ')),
417			this.createVertexTemplateEntry(s4 + 'failed;',
418					w * 9, h * 9, '', 'Failed', null, null, this.getTagsForStencil(gn, 'failed', dt).join(' ')),
419			this.createVertexTemplateEntry(s4 + 'paused;',
420					w * 9, h * 9, '', 'Paused', null, null, this.getTagsForStencil(gn, 'paused', dt).join(' ')),
421			this.createVertexTemplateEntry(s4 + 'unavailable;',
422					w * 9, h * 9, '', 'Unavailable', null, null, this.getTagsForStencil(gn, 'unavailable', dt).join(' ')),
423			this.createVertexTemplateEntry(s4 + 'active;',
424					w * 9, h * 9, '', 'Active', null, null, this.getTagsForStencil(gn, 'active', dt).join(' ')),
425			this.createVertexTemplateEntry(s4 + 'delayed;',
426					w * 9, h * 9, '', 'Delayed', null, null, this.getTagsForStencil(gn, 'delayed', dt).join(' ')),
427			this.createVertexTemplateEntry(s3 + 'restore;pointerEvents=1;',
428					w * 7.8, h * 7.4, '', 'Restore', null, null, this.getTagsForStencil(gn, 'restore', dt).join(' ')),
429			this.createVertexTemplateEntry(s4 + 'locked;',
430					w * 7.6, h * 8.6, '', 'Locked', null, null, this.getTagsForStencil(gn, 'locked', dt).join(' ')),
431			this.createVertexTemplateEntry(s4 + 'unlocked;',
432					w * 10.4, h * 8.7, '', 'Unlocked', null, null, this.getTagsForStencil(gn, 'unlocked', dt).join(' '))
433		];
434
435		this.addPalette('veeamUsersStatus', 'Veeam / Users and Status', false, mxUtils.bind(this, function(content)
436				{
437					for (var i = 0; i < fns.length; i++)
438					{
439						content.appendChild(fns[i](content));
440					}
441		}));
442	};
443
444	Sidebar.prototype.addVeeamVASComponentsPalette = function()
445	{
446		var sn = 'shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
447		var s = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
448		var s2 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
449		var s3 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
450		var s4 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
451
452		// Space savers
453		var sb = this;
454		var gn = 'mxgraph.veeam.vascomponent';
455		var dt = 'veeam vmware virtual machine vas availability suite component';
456
457		var w = 4.0;
458		var h = 4.0;
459
460		var fns =
461		[
462			this.createVertexTemplateEntry(s3 + 'database_server;',
463					w * 19, h * 18, '', 'Database Server', null, null, this.getTagsForStencil(gn, 'database server', dt).join(' ')),
464			this.createVertexTemplateEntry(s3 + 'gateway_server;',
465					w * 19, h * 18, '', 'Gateway Server', null, null, this.getTagsForStencil(gn, 'gateway server', dt).join(' ')),
466			this.createVertexTemplateEntry(s3 + 'mount_server;',
467					w * 19, h * 18, '', 'Mount Server', null, null, this.getTagsForStencil(gn, 'mount server', dt).join(' ')),
468			this.createVertexTemplateEntry(s3 + 'proxy_server;',
469					w * 19, h * 18, '', 'Proxy Server', null, null, this.getTagsForStencil(gn, 'proxy server', dt).join(' ')),
470			this.createVertexTemplateEntry(s3 + 'repository_server;',
471					w * 19, h * 18, '', 'Repository Server', null, null, this.getTagsForStencil(gn, 'repository server', dt).join(' ')),
472			this.createVertexTemplateEntry(s + 'veeam_backup_search_server;',
473					w * 19, h * 18, '', 'Search Server', null, null, this.getTagsForStencil(gn, 'backup search server', dt).join(' ')),
474			this.createVertexTemplateEntry(s3 + 'tape_server;',
475					w * 19, h * 18, '', 'Tape Server', null, null, this.getTagsForStencil(gn, 'tape server', dt).join(' ')),
476			this.createVertexTemplateEntry(s3 + 'vsphere_server;',
477					w * 19, h * 18, '', 'vSphere Server', null, null, this.getTagsForStencil(gn, 'vsphere server', dt).join(' ')),
478			this.createVertexTemplateEntry(s3 + 'windows_linux_server;',
479					w * 19, h * 18, '', 'Windows Linux Server', null, null, this.getTagsForStencil(gn, 'windows linux server', dt).join(' ')),
480			this.createVertexTemplateEntry(s + 'veeam_backup_and_replication_server;',
481					w * 19, h * 18, '', 'Backup and Replication Server', null, null, this.getTagsForStencil(gn, 'backup and replication server', dt).join(' ')),
482			this.createVertexTemplateEntry(s + 'veeam_backup_enterprise_manager_server;',
483					w * 19, h * 18, '', 'Backup Enterprise Manager Server', null, null, this.getTagsForStencil(gn, 'backup enterprise manager server', dt).join(' ')),
484			this.createVertexTemplateEntry(s3 + 'one_server;',
485					w * 19, h * 18, '', 'ONE Server', null, null, this.getTagsForStencil(gn, 'one server', dt).join(' ')),
486			this.createVertexTemplateEntry(s2 + 'veeam_explorer_for_active_directory;',
487					w * 11.2, h * 11.2, '', 'Explorer for Active Directory', null, null, this.getTagsForStencil(gn, 'explorer for active directory', dt).join(' ')),
488			this.createVertexTemplateEntry(s2 + 'veeam_explorer_for_exchange;',
489					w * 11.2, h * 11.2, '', 'Explorer for Exchange', null, null, this.getTagsForStencil(gn, 'explorer for exchange', dt).join(' ')),
490			this.createVertexTemplateEntry(s4 + 'explorer_for_oracle;',
491					w * 11.2, h * 11.2, '', 'Explorer for Oracle', null, null, this.getTagsForStencil(gn, 'explorer for oracle', dt).join(' ')),
492			this.createVertexTemplateEntry(s2 + 'veeam_explorer_for_sharepoint;',
493					w * 11.2, h * 11.2, '', 'Explorer for SharePoint', null, null, this.getTagsForStencil(gn, 'explorer for sharepoint', dt).join(' ')),
494			this.createVertexTemplateEntry(s4 + 'explorer_for_storage_snapshots;',
495					w * 11.2, h * 11.2, '', 'Explorer for Storage Snapshots', null, null, this.getTagsForStencil(gn, 'explorer for storage snapshots', dt).join(' ')),
496			this.createVertexTemplateEntry(s2 + 'veeam_explorer_for_sql;',
497					w * 11.2, h * 11.2, '', 'Explorer for SQL', null, null, this.getTagsForStencil(gn, 'explorer for sql', dt).join(' ')),
498			this.createVertexTemplateEntry(s2 + 'veeam_availability_suite;',
499					w * 11.2, h * 11.2, '', 'Availability Suite', null, null, this.getTagsForStencil(gn, 'availability suite', dt).join(' ')),
500			this.createVertexTemplateEntry(s4 + 'backup_replication;',
501					w * 11.2, h * 11.2, '', 'Backup and Replication', null, null, this.getTagsForStencil(gn, 'backup and replication', dt).join(' ')),
502			this.createVertexTemplateEntry(s4 + 'enterprise_manager;',
503					w * 11.2, h * 11.2, '', 'Enterprise Manager', null, null, this.getTagsForStencil(gn, 'enterprise manager', dt).join(' ')),
504			this.createVertexTemplateEntry(s3 + 'linux_repository;',
505					w * 12.2, h * 11.2, '', 'Linux Repository', null, null, this.getTagsForStencil(gn, 'linux repository', dt).join(' ')),
506			this.createVertexTemplateEntry(s3 + 'windows_repository;',
507					w * 12.2, h * 11.2, '', 'Windows Repository', null, null, this.getTagsForStencil(gn, 'windows repository', dt).join(' ')),
508			this.createVertexTemplateEntry(s3 + 'flr_helper_appliance;',
509					w * 12.4, h * 12.5, '', 'FLR Helper Appliance', null, null, this.getTagsForStencil(gn, 'flr helper appliance', dt).join(' ')),
510			this.createVertexTemplateEntry(s3 + 'one_client;',
511					w * 22.7, h * 15.4, '', 'ONE client', null, null, this.getTagsForStencil(gn, 'one client', dt).join(' '))
512		];
513
514		this.addPalette('veeamVASComponents', 'Veeam / Availability Suite components', false, mxUtils.bind(this, function(content)
515				{
516					for (var i = 0; i < fns.length; i++)
517					{
518						content.appendChild(fns[i](content));
519					}
520		}));
521	};
522
523	Sidebar.prototype.addVeeamBackupReplicationPalette = function()
524	{
525		var sn = 'shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
526		var s = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
527		var s2 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
528		var s3 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
529		var s4 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
530
531		// Space savers
532		var sb = this;
533		var gn = 'mxgraph.veeam.backup_replication';
534		var dt = 'veeam vmware virtual machine backup replication';
535
536		var w = 4.0;
537		var h = 4.0;
538
539		var fns =
540		[
541			this.createVertexTemplateEntry(s2 + 'built_in_wan_acceleration;',
542					w * 11.2, h * 11.2, '', 'Built-in WAN Acceleration', null, null, this.getTagsForStencil(gn, 'built in wan acceleration wireless area network', dt).join(' ')),
543			this.createVertexTemplateEntry(s2 + '1_click_failover_orchestration;',
544					w * 11.2, h * 11.2, '', '1 Click Failover Orchestration', null, null, this.getTagsForStencil(gn, 'one click failover orchestration', dt).join(' ')),
545			this.createVertexTemplateEntry(s4 + 'advanced_refs_integration;',
546					w * 11.2, h * 11.2, '', 'Advanced ReFS integration', null, null, this.getTagsForStencil(gn, 'advanced refs integration', dt).join(' ')),
547			this.createVertexTemplateEntry(s2 + 'assisted_failover_and_failback;',
548					w * 11.2, h * 11.2, '', 'Assisted Failover and Failback', null, null, this.getTagsForStencil(gn, 'assisted failover and failback', dt).join(' ')),
549			this.createVertexTemplateEntry(s4 + 'chargeback_and_billing_capabilities;',
550					w * 11.2, h * 11.2, '', 'Chargeback and billing capabilities', null, null, this.getTagsForStencil(gn, 'chargeback and billing capabilities', dt).join(' ')),
551			this.createVertexTemplateEntry(s2 + 'veeam_cloud_connect;',
552					w * 11.2, h * 11.2, '', 'Cloud Connect', null, null, this.getTagsForStencil(gn, 'cloud connect', dt).join(' ')),
553			this.createVertexTemplateEntry(s4 + 'built_in_management_for_agents;',
554					w * 11.2, h * 11.2, '', 'Built-in Management for agents', null, null, this.getTagsForStencil(gn, 'built in management for agents', dt).join(' ')),
555			this.createVertexTemplateEntry(s2 + 'disaster_recovery;',
556					w * 11.2, h * 11.2, '', 'Disaster Recovery', null, null, this.getTagsForStencil(gn, 'disaster recovery', dt).join(' ')),
557			this.createVertexTemplateEntry(s2 + 'emc_data_domain_boost;',
558					w * 11.2, h * 11.2, '', 'Dell EMC Data Domain Boost', null, null, this.getTagsForStencil(gn, 'emc data domain boost', dt).join(' ')),
559			this.createVertexTemplateEntry(s2 + 'end_to_end_encryption;',
560					w * 11.2, h * 11.2, '', 'End-to-end Encryption', null, null, this.getTagsForStencil(gn, 'end to end encryption', dt).join(' ')),
561			this.createVertexTemplateEntry(s2 + 'backup_from_storage_snapshots;',
562					w * 11.2, h * 11.2, '', 'Backup from Storage Snapshots', null, null, this.getTagsForStencil(gn, 'backup from storage snapshots', dt).join(' ')),
563			this.createVertexTemplateEntry(s4 + 'direct_restore_to_ms_azure;',
564					w * 11.2, h * 11.2, '', 'Direct Restore to MS Azure', null, null, this.getTagsForStencil(gn, 'direct restore to ms azure', dt).join(' ')),
565			this.createVertexTemplateEntry(s4 + 'draas_enhancements;',
566					w * 11.2, h * 11.2, '', 'DRaaS Enhancements', null, null, this.getTagsForStencil(gn, 'draas enhancements', dt).join(' ')),
567			this.createVertexTemplateEntry(s4 + 'full_ms_integration;',
568					w * 11.2, h * 11.2, '', 'Full MS Integration', null, null, this.getTagsForStencil(gn, 'full ms integration', dt).join(' ')),
569			this.createVertexTemplateEntry(s2 + 'native_tape_support;',
570					w * 11.2, h * 11.2, '', 'Native Tape Support', null, null, this.getTagsForStencil(gn, 'native tape support', dt).join(' ')),
571			this.createVertexTemplateEntry(s4 + 'enterprise_scalability_enhancements;',
572					w * 11.2, h * 11.2, '', 'Enterprise scalability enhancements', null, null, this.getTagsForStencil(gn, 'enterprise scalability enhancements', dt).join(' ')),
573			this.createVertexTemplateEntry(s2 + 'on_demand_sandbox;',
574					w * 11.2, h * 11.2, '', 'On Demand Sandbox', null, null, this.getTagsForStencil(gn, 'on demand sandbox', dt).join(' ')),
575			this.createVertexTemplateEntry(s4 + 'nas_backup;',
576					w * 11.2, h * 11.2, '', 'NAS Backup', null, null, this.getTagsForStencil(gn, 'nas backup', dt).join(' ')),
577			this.createVertexTemplateEntry(s2 + 'quick_migration;',
578					w * 11.2, h * 11.2, '', 'Quick Migration', null, null, this.getTagsForStencil(gn, 'quick migration', dt).join(' ')),
579			this.createVertexTemplateEntry(s2 + 'replication_from_a_backup;',
580					w * 11.2, h * 11.2, '', 'Replication from a Backup', null, null, this.getTagsForStencil(gn, 'replication from a backup', dt).join(' ')),
581			this.createVertexTemplateEntry(s4 + 'primary_storage_integration;',
582					w * 11.2, h * 11.2, '', 'Primary Storage integration', null, null, this.getTagsForStencil(gn, 'primary storage integration', dt).join(' ')),
583			this.createVertexTemplateEntry(s2 + 'sure_replica;',
584					w * 11.2, h * 11.2, '', 'Sure Replica', null, null, this.getTagsForStencil(gn, 'sure replica', dt).join(' ')),
585			this.createVertexTemplateEntry(s4 + 'archive_tier;',
586					w * 11.2, h * 11.2, '', 'Archive Tier', null, null, this.getTagsForStencil(gn, 'archive tier', dt).join(' ')),
587			this.createVertexTemplateEntry(s2 + 'restore_data_from_the_vm_backup;',
588					w * 11.2, h * 11.2, '', 'Restore Data from VM Backup', null, null, this.getTagsForStencil(gn, 'restore data from vm backup', dt).join(' ')),
589			this.createVertexTemplateEntry(s2 + 'scheduled_backups;',
590					w * 11.2, h * 11.2, '', 'Scheduled Backups', null, null, this.getTagsForStencil(gn, 'Scheduled Backups', dt).join(' ')),
591			this.createVertexTemplateEntry(s2 + 'restful_apis;',
592					w * 11.2, h * 11.2, '', 'RESTful API', null, null, this.getTagsForStencil(gn, 'restful apis api', dt).join(' ')),
593			this.createVertexTemplateEntry(s2 + 'self_service_recovery;',
594					w * 11.2, h * 11.2, '', 'Self-Service Recovery', null, null, this.getTagsForStencil(gn, 'self service recovery', dt).join(' ')),
595			this.createVertexTemplateEntry(s4 + 'reporting;',
596					w * 11.2, h * 11.2, '', 'Reporting', null, null, this.getTagsForStencil(gn, 'reporting', dt).join(' ')),
597			this.createVertexTemplateEntry(s4 + 'continuous_data_protection;',
598					w * 11.2, h * 11.2, '', 'Continuous Data Protection', null, null, this.getTagsForStencil(gn, 'continuous data protection', dt).join(' ')),
599			this.createVertexTemplateEntry(s4 + 'vcloud_director_support;',
600					w * 11.2, h * 11.2, '', 'vCloud Director Support', null, null, this.getTagsForStencil(gn, 'vcloud director support', dt).join(' ')),
601			this.createVertexTemplateEntry(s2 + 'virtual_lab;',
602					w * 11.2, h * 11.2, '', 'Virtual Lab', null, null, this.getTagsForStencil(gn, 'virtual lab', dt).join(' ')),
603			this.createVertexTemplateEntry(s2 + 'sure_backup;',
604					w * 11.2, h * 11.2, '', 'SureBackup', null, null, this.getTagsForStencil(gn, 'sure backup', dt).join(' ')),
605			this.createVertexTemplateEntry(s3 + 'scale_out_repository;',
606					w * 16.2, h * 14.3, '', 'Scale Out Repository', null, null, this.getTagsForStencil(gn, 'scale out repository', dt).join(' ')),
607			this.createVertexTemplateEntry(s2 + 'veeamzip;',
608					w * 11.2, h * 11.2, '', 'VeeamZIP', null, null, this.getTagsForStencil(gn, 'veeamzip zip', dt).join(' ')),
609			this.createVertexTemplateEntry(s2 + 'veeam_explorer;',
610					w * 11.2, h * 11.2, '', 'Veeam Explorer', null, null, this.getTagsForStencil(gn, 'explorer', dt).join(' '))
611		];
612
613		this.addPalette('veeamBackup Replication', 'Veeam / Backup and Replication', false, mxUtils.bind(this, function(content)
614				{
615					for (var i = 0; i < fns.length; i++)
616					{
617						content.appendChild(fns[i](content));
618					}
619		}));
620	};
621
622	Sidebar.prototype.addVeeamProductsPalette = function()
623	{
624		var sn = 'shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
625		var s = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
626		var s2 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
627		var s3 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
628		var s4 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
629
630		// Space savers
631		var sb = this;
632		var gn = 'mxgraph.veeam.products';
633		var dt = 'veeam vmware virtual machine products';
634
635		var w = 4.0;
636		var h = 4.0;
637
638		var fns =
639		[
640			this.createVertexTemplateEntry('pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#07B152;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.veeam_logo;',
641					w * 27.4, h * 4.8, '', 'Veeam logo', null, null, this.getTagsForStencil(gn, 'veeam logo', dt).join(' ')),
642			this.createVertexTemplateEntry(s4 + 'backup_replication;',
643					w * 11.2, h * 11.2, '', 'Backup and Replication', null, null, this.getTagsForStencil(gn, 'backup and replication', dt).join(' ')),
644			this.createVertexTemplateEntry(s4 + 'enterprise_manager;',
645					w * 11.2, h * 11.2, '', 'Enterprise Manager', null, null, this.getTagsForStencil(gn, 'enterprise manager', dt).join(' ')),
646			this.createVertexTemplateEntry(s2 + 'veeam_availability_suite;',
647					w * 11.2, h * 11.2, '', 'Availability Suite', null, null, this.getTagsForStencil(gn, 'availability suite', dt).join(' ')),
648			this.createVertexTemplateEntry(s4 + 'availability_console;',
649					w * 11.2, h * 11.2, '', 'Availability Console', null, null, this.getTagsForStencil(gn, 'availability console', dt).join(' ')),
650			this.createVertexTemplateEntry(s4 + 'availability_orchestrator;',
651					w * 11.2, h * 11.2, '', 'Availability Orchestrator', null, null, this.getTagsForStencil(gn, 'availability orchestrator', dt).join(' ')),
652			this.createVertexTemplateEntry(s4 + 'agents;',
653					w * 11.2, h * 11.2, '', 'Agents', null, null, this.getTagsForStencil(gn, 'agents', dt).join(' ')),
654			this.createVertexTemplateEntry(s4 + 'powered_network;',
655					w * 11.2, h * 11.2, '', 'Powered Network', null, null, this.getTagsForStencil(gn, 'powered network', dt).join(' ')),
656			this.createVertexTemplateEntry(s4 + 'backup_for_office_365;',
657					w * 11.2, h * 11.2, '', 'Backup for Office 365', null, null, this.getTagsForStencil(gn, 'backup for office 365', dt).join(' ')),
658			this.createVertexTemplateEntry(s4 + 'endpoint_backup;',
659					w * 11.2, h * 11.2, '', 'Endpoint Backup', null, null, this.getTagsForStencil(gn, 'endpoint backup', dt).join(' ')),
660			this.createVertexTemplateEntry(s2 + 'veeam_one_monitor;',
661					w * 11.2, h * 11.2, '', 'ONE Monitor', null, null, this.getTagsForStencil(gn, 'one monitor', dt).join(' ')),
662			this.createVertexTemplateEntry(s2 + 'veeam_one_reporter;',
663					w * 11.2, h * 11.2, '', 'ONE Reporter', null, null, this.getTagsForStencil(gn, 'one reporter', dt).join(' ')),
664			this.createVertexTemplateEntry(s2 + 'veeam_one_business_view;',
665					w * 11.2, h * 11.2, '', 'ONE (Business View)', null, null, this.getTagsForStencil(gn, 'one business view', dt).join(' ')),
666			this.createVertexTemplateEntry(s2 + 'veeam_one_server;',
667					w * 11.2, h * 11.2, '', 'ONE Server', null, null, this.getTagsForStencil(gn, 'one server', dt).join(' '))
668		];
669
670		this.addPalette('veeamProducts', 'Veeam / Products', false, mxUtils.bind(this, function(content)
671				{
672					for (var i = 0; i < fns.length; i++)
673					{
674						content.appendChild(fns[i](content));
675					}
676		}));
677	};
678
679	Sidebar.prototype.addVeeamVMsTapePalette = function()
680	{
681		var sn = 'shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
682		var s = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
683		var s2 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.2d.';
684		var s3 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
685		var s4 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.';
686
687		// Space savers
688		var sb = this;
689		var gn = 'mxgraph.veeam.vmstape';
690		var dt = 'veeam vmware virtual machine vm tape';
691
692		var w = 4.0;
693		var h = 4.0;
694
695		var fns =
696		[
697			this.createVertexTemplateEntry(s + 'virtual_machine;',
698					w * 11.2, h * 11, '', 'Virtual Machine', null, null, this.getTagsForStencil(gn, '', dt).join(' ')),
699			this.createVertexTemplateEntry(s3 + 'vm_checked;',
700					w * 13.5, h * 13, '', 'VM Checked', null, null, this.getTagsForStencil(gn, 'checked', dt).join(' ')),
701			this.createVertexTemplateEntry(s + 'vm_running;',
702					w * 13.5, h * 13, '', 'VM Started', null, null, this.getTagsForStencil(gn, 'vm started', dt).join(' ')),
703			this.createVertexTemplateEntry(s + 'vm_locked;',
704					w * 13.9, h * 13, '', 'VM Locked', null, null, this.getTagsForStencil(gn, 'vm locked', dt).join(' ')),
705			this.createVertexTemplateEntry(s3 + 'vm_paused;',
706					w * 13.5, h * 13, '', 'VM Paused', null, null, this.getTagsForStencil(gn, 'vm paused', dt).join(' ')),
707			this.createVertexTemplateEntry(s + 'vm_failed;',
708					w * 13.5, h * 13, '', 'VM Failed', null, null, this.getTagsForStencil(gn, 'vm failed', dt).join(' ')),
709			this.createVertexTemplateEntry(s3 + 'vm_kernel;',
710					w * 13.5, h * 13, '', 'VM Kernel', null, null, this.getTagsForStencil(gn, 'vm kernel', dt).join(' ')),
711			this.createVertexTemplateEntry(s3 + 'vm_windows;',
712					w * 14.3, h * 13.8, '', 'VM Windows', null, null, this.getTagsForStencil(gn, 'vm windows', dt).join(' ')),
713			this.createVertexTemplateEntry(s3 + 'vm_linux;',
714					w * 14.3, h * 13.8, '', 'VM Linux', null, null, this.getTagsForStencil(gn, 'vm linux', dt).join(' ')),
715			this.createVertexTemplateEntry('shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#A2C6E0;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.vm_snapshot;',
716					w * 15.2, h * 14.6, '', 'VM Snapshot', null, null, this.getTagsForStencil(gn, 'vm snapshot', dt).join(' ')),
717			this.createVertexTemplateEntry(s + 'vapp;',
718					w * 11.2, h * 11, '', 'vApp', null, null, this.getTagsForStencil(gn, 'vapp', dt).join(' ')),
719			this.createVertexTemplateEntry(s + 'tape;',
720					w * 15.5, h * 8.4, '', 'Tape', null, null, this.getTagsForStencil(gn, 'tape', dt).join(' ')),
721			this.createVertexTemplateEntry(s + 'tape_device;',
722					w * 26.3, h * 26.5, '', 'Tape Device', null, null, this.getTagsForStencil(gn, 'tape device', dt).join(' ')),
723			this.createVertexTemplateEntry(s3 + 'tape_library;',
724					w * 24.2, h * 24.5, '', 'Tape Library', null, null, this.getTagsForStencil(gn, 'tape library', dt).join(' ')),
725			this.createVertexTemplateEntry(s3 + 'tape_writing_device;',
726					w * 20.6, h * 10.9, '', 'Tape writing device', null, null, this.getTagsForStencil(gn, 'tape writing device', dt).join(' ')),
727			this.createVertexTemplateEntry(s3 + 'media_pool;',
728					w * 18.6, h * 17.9, '', 'Media pool', null, null, this.getTagsForStencil(gn, 'media pool', dt).join(' ')),
729			this.createVertexTemplateEntry(s3 + 'unknown_tape;',
730					w * 16.8, h * 15.6, '', 'Unknown tape', null, null, this.getTagsForStencil(gn, 'unknown tape', dt).join(' ')),
731			this.createVertexTemplateEntry(s + 'tape_ejecting;',
732					w * 18.9, h * 12.4, '', 'Tape eject', null, null, this.getTagsForStencil(gn, 'tape eject', dt).join(' ')),
733			this.createVertexTemplateEntry(s3 + 'tape_locked;',
734					w * 17.6, h * 10, '', 'Tape locked', null, null, this.getTagsForStencil(gn, 'tape locked', dt).join(' ')),
735			this.createVertexTemplateEntry(s + 'tape_licensed;',
736					w * 18.8, h * 11.1, '', 'Tape Licensed', null, null, this.getTagsForStencil(gn, 'tape licensed', dt).join(' ')),
737			this.createVertexTemplateEntry(s + 'tape_recording;',
738					w * 17.8, h * 11.8, '', 'Tape Recording', null, null, this.getTagsForStencil(gn, 'tape recording', dt).join(' ')),
739			this.createVertexTemplateEntry(s + 'tape_checked;',
740					w * 18.8, h * 11.4, '', 'Tape Checked', null, null, this.getTagsForStencil(gn, 'tape checked', dt).join(' '))
741		];
742
743		this.addPalette('veeamVMs and Tape', 'Veeam / VMs and Tape', false, mxUtils.bind(this, function(content)
744				{
745					for (var i = 0; i < fns.length; i++)
746					{
747						content.appendChild(fns[i](content));
748					}
749		}));
750	};
751
752	Sidebar.prototype.addVeeam3DPalette = function()
753	{
754		var sn = 'shadow=0;dashed=0;html=1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.3d.';
755		var s = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#4495D1;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.3d.';
756		var s2 = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#EF8F21;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;shape=mxgraph.veeam.3d.';
757
758		// Space savers
759		var sb = this;
760		var gn = 'mxgraph.veeam.3d';
761		var dt = 'veeam 3d vmware virtual machine ';
762
763		var w = 2.0;
764		var h = 2.0;
765
766		var fns =
767		[
768			this.createVertexTemplateEntry(sn + '1ftvm;',
769					w * 34, h * 31, '', '1FTVM', null, null, this.getTagsForStencil(gn, '1ftvm', dt).join(' ')),
770			this.createVertexTemplateEntry(sn + '1ftvm_error;',
771					w * 34, h * 31, '', '1FTVM Error', null, null, this.getTagsForStencil(gn, '1ftvm error', dt).join(' ')),
772			this.createVertexTemplateEntry(sn + '1ftvm_running;',
773					w * 34, h * 31, '', '1FTVM Running', null, null, this.getTagsForStencil(gn, '1ftvm running', dt).join(' ')),
774			this.createVertexTemplateEntry(sn + '1ftvm_unavailable;',
775					w * 34, h * 31, '', '1FTVM Unavailable', null, null, this.getTagsForStencil(gn, '1ftvm unavailable', dt).join(' ')),
776			this.createVertexTemplateEntry(sn + '1ftvm_warning;',
777					w * 34, h * 31, '', '1FTVM Warning', null, null, this.getTagsForStencil(gn, '1ftvm warning', dt).join(' ')),
778			this.createVertexTemplateEntry(sn + '2ftvm;',
779					w * 34, h * 31, '', '2FTVM', null, null, this.getTagsForStencil(gn, '2ftvm', dt).join(' ')),
780			this.createVertexTemplateEntry(sn + '2ftvm_error;',
781					w * 34, h * 31, '', '2FTVM Error', null, null, this.getTagsForStencil(gn, '2ftvm error', dt).join(' ')),
782			this.createVertexTemplateEntry(sn + '2ftvm_running;',
783					w * 34, h * 31, '', '2FTVM Running', null, null, this.getTagsForStencil(gn, '2ftvm running', dt).join(' ')),
784			this.createVertexTemplateEntry(sn + '2ftvm_unavailable;',
785					w * 34, h * 31, '', '2FTVM Unavailable', null, null, this.getTagsForStencil(gn, '2ftvm unavailable', dt).join(' ')),
786			this.createVertexTemplateEntry(sn + '2ftvm_warning;',
787					w * 34, h * 31, '', '2FTVM Warning', null, null, this.getTagsForStencil(gn, '2ftvm warning', dt).join(' ')),
788			this.createVertexTemplateEntry(sn + 'backup_repository;',
789					w * 31, h * 31, '', 'Backup Repository', null, null, this.getTagsForStencil(gn, 'backup repository', dt).join(' ')),
790			this.createVertexTemplateEntry(sn + 'backup_repository_2;',
791					w * 31, h * 31, '', 'Backup Repository', null, null, this.getTagsForStencil(gn, 'backup repository', dt).join(' ')),
792			this.createVertexTemplateEntry(sn + 'cd;',
793					w * 34, h * 13, '', 'CD', null, null, this.getTagsForStencil(gn, 'cd', dt).join(' ')),
794			this.createVertexTemplateEntry(sn + 'database;',
795					w * 29, h * 31, '', 'Database', null, null, this.getTagsForStencil(gn, 'database', dt).join(' ')),
796			this.createVertexTemplateEntry(sn + 'datastore;',
797					w * 22, h * 30, '', 'Datastore', null, null, this.getTagsForStencil(gn, 'datastore', dt).join(' ')),
798			this.createVertexTemplateEntry(sn + 'datastore_snapshot;',
799					w * 27, h * 17, '', 'Datastore Snapshot', null, null, this.getTagsForStencil(gn, 'datastore snapshot', dt).join(' ')),
800			this.createVertexTemplateEntry(sn + 'datastore_volume;',
801					w * 27, h * 17, '', 'Datastore Volume', null, null, this.getTagsForStencil(gn, 'datastore volume', dt).join(' ')),
802			this.createVertexTemplateEntry(sn + 'esx_esxi;',
803					w * 19, h * 26, '', 'ESX ESXi', null, null, this.getTagsForStencil(gn, 'esx esxi', dt).join(' ')),
804			this.createVertexTemplateEntry(sn + 'failover_protective_snapshot;',
805					w * 23, h * 23, '', 'Failover Protective Snapshot', null, null, this.getTagsForStencil(gn, 'failover protective snapshot', dt).join(' ')),
806			this.createVertexTemplateEntry(sn + 'failover_protective_snapshot_locked;',
807					w * 28, h * 23, '', 'Failover Protective Snapshot Locked', null, null, this.getTagsForStencil(gn, 'failover protective snapshot locked', dt).join(' ')),
808			this.createVertexTemplateEntry(sn + 'failover_protective_snapshot_running;',
809					w * 29, h * 23, '', 'Failover Protective Snapshot Running', null, null, this.getTagsForStencil(gn, 'failover protective snapshot running', dt).join(' ')),
810			this.createVertexTemplateEntry(sn + 'free_datastore;',
811					w * 22, h * 30, '', 'Free Datastore', null, null, this.getTagsForStencil(gn, 'free datastore', dt).join(' ')),
812			this.createVertexTemplateEntry(sn + 'full_datastore;',
813					w * 22, h * 30, '', 'Full Datastore', null, null, this.getTagsForStencil(gn, 'full datastore', dt).join(' ')),
814			this.createVertexTemplateEntry(sn + 'hard_drive;fillColor=#637D8A;gradientColor=#324752;strokeColor=none;',
815					w * 31, h * 14, '', 'Hard Drive', null, null, this.getTagsForStencil(gn, 'hard drive', dt).join(' ')),
816			this.createVertexTemplateEntry(sn + 'hyper_v_host;',
817					w * 55, h * 49, '', 'Hyper-V Host', null, null, this.getTagsForStencil(gn, 'hyper-v host', dt).join(' ')),
818			this.createVertexTemplateEntry(sn + 'lost_space;',
819					w * 22, h * 30, '', 'Lost Space', null, null, this.getTagsForStencil(gn, 'lost space', dt).join(' ')),
820			this.createVertexTemplateEntry(sn + 'lun;',
821					w * 36, h * 20, '', 'LUN', null, null, this.getTagsForStencil(gn, 'lun', dt).join(' ')),
822			this.createVertexTemplateEntry(sn + 'medium_datastore;',
823					w * 22, h * 30, '', 'Medium Datastore', null, null, this.getTagsForStencil(gn, 'medium datastore', dt).join(' ')),
824			this.createVertexTemplateEntry(sn + 'network_card;',
825					w * 19, h * 20, '', 'Network Card', null, null, this.getTagsForStencil(gn, 'network card', dt).join(' ')),
826			this.createVertexTemplateEntry(sn + 'physical_storage;',
827					w * 54, h * 30, '', 'Physical Storage', null, null, this.getTagsForStencil(gn, 'physical_storage', dt).join(' ')),
828			this.createVertexTemplateEntry(sn + 'proxy;',
829					w * 23, h * 23, '', 'Proxy', null, null, this.getTagsForStencil(gn, 'proxy', dt).join(' ')),
830			this.createVertexTemplateEntry(sn + 'proxy_appliance;',
831					w * 23, h * 23, '', 'Proxy Appliance', null, null, this.getTagsForStencil(gn, 'proxy appliance', dt).join(' ')),
832			this.createVertexTemplateEntry(sn + 'remote_site;',
833					w * 23, h * 30, '', 'Remote Site', null, null, this.getTagsForStencil(gn, 'remote site', dt).join(' ')),
834			this.createVertexTemplateEntry(sn + 'remote_storage;',
835					w * 26, h * 31, '', 'Remote Storage', null, null, this.getTagsForStencil(gn, 'remote storage', dt).join(' ')),
836			this.createVertexTemplateEntry(sn + 'resource_pool;',
837					w * 28, h * 16, '', 'Resource Pool', null, null, this.getTagsForStencil(gn, 'resource pool', dt).join(' ')),
838			this.createVertexTemplateEntry(sn + 'service_vnic;',
839					w * 36, h * 32, '', 'Service vNIC', null, null, this.getTagsForStencil(gn, 'service vnic', dt).join(' ')),
840			this.createVertexTemplateEntry(sn + 'switch;',
841					w * 55, h * 29, '', 'Switch', null, null, this.getTagsForStencil(gn, 'switch', dt).join(' ')),
842			this.createVertexTemplateEntry(sn + 'tape;',
843					w * 29, h * 29, '', 'Tape', null, null, this.getTagsForStencil(gn, 'tape', dt).join(' ')),
844			this.createVertexTemplateEntry(sn + 'tape_checked;',
845					w * 35, h * 29, '', 'Tape Checked', null, null, this.getTagsForStencil(gn, 'tape checked', dt).join(' ')),
846			this.createVertexTemplateEntry(sn + 'tape_ejecting;',
847					w * 35, h * 29, '', 'Tape Ejecting', null, null, this.getTagsForStencil(gn, 'tape ejecting', dt).join(' ')),
848			this.createVertexTemplateEntry(sn + 'tape_library;',
849					w * 31, h * 37, '', 'Tape Library', null, null, this.getTagsForStencil(gn, 'tape library', dt).join(' ')),
850			this.createVertexTemplateEntry(sn + 'tape_licensed;',
851					w * 35, h * 29, '', 'Tape Licensed', null, null, this.getTagsForStencil(gn, 'tape licensed', dt).join(' ')),
852			this.createVertexTemplateEntry(sn + 'tape_recording;',
853					w * 35, h * 29, '', 'Tape Recording', null, null, this.getTagsForStencil(gn, 'tape recording', dt).join(' ')),
854			this.createVertexTemplateEntry(sn + 'tape_server;',
855					w * 23, h * 23, '', 'Tape Server', null, null, this.getTagsForStencil(gn, 'tape server', dt).join(' ')),
856			this.createVertexTemplateEntry(sn + 'vapp;',
857					w * 46, h * 31, '', 'vApp', null, null, this.getTagsForStencil(gn, 'vapp', dt).join(' ')),
858			this.createVertexTemplateEntry(sn + 'vapp_started;',
859					w * 46, h * 31, '', 'vApp Started', null, null, this.getTagsForStencil(gn, 'vapp started', dt).join(' ')),
860			this.createVertexTemplateEntry(sn + 'veeam_availability_suite;',
861					w * 23, h * 23, '', 'Veeam Availability Suite', null, null, this.getTagsForStencil(gn, 'veeam availability suite', dt).join(' ')),
862			this.createVertexTemplateEntry(sn + 'veeam_backup_and_replication_server;',
863					w * 23, h * 23, '', 'Veeam Backup and Replication Server', null, null, this.getTagsForStencil(gn, 'veeam backup and replication server', dt).join(' ')),
864			this.createVertexTemplateEntry(sn + 'veeam_backup_enterprise_manager_server;',
865					w * 23, h * 23, '', 'Veeam Backup Enterprise Manager Server', null, null, this.getTagsForStencil(gn, 'veeam backup enterprise manager server', dt).join(' ')),
866			this.createVertexTemplateEntry(sn + 'veeam_backup_search_server;',
867					w * 23, h * 23, '', 'Veeam Backup Search Server', null, null, this.getTagsForStencil(gn, 'veeam backup search server', dt).join(' ')),
868			this.createVertexTemplateEntry(sn + 'veeam_one_business_view;',
869					w * 23, h * 23, '', 'Veeam ONE Business View', null, null, this.getTagsForStencil(gn, 'veeam one business view', dt).join(' ')),
870			this.createVertexTemplateEntry(sn + 'veeam_one_monitor;',
871					w * 23, h * 23, '', 'Veeam ONE Monitor', null, null, this.getTagsForStencil(gn, 'veeam one monitor', dt).join(' ')),
872			this.createVertexTemplateEntry(sn + 'veeam_one_reporter;',
873					w * 23, h * 23, '', 'Veeam ONE Reporter', null, null, this.getTagsForStencil(gn, 'veeam one reporter', dt).join(' ')),
874			this.createVertexTemplateEntry(sn + 'veeam_one_server;',
875					w * 23, h * 23, '', 'Veeam ONE Server', null, null, this.getTagsForStencil(gn, 'veeam one server', dt).join(' ')),
876			this.createVertexTemplateEntry(sn + 'virtual_machine;',
877					w * 23, h * 23, '', 'Virtual Machine', null, null, this.getTagsForStencil(gn, 'virtual machine', dt).join(' ')),
878			this.createVertexTemplateEntry(sn + 'vmware_host;',
879					w * 55, h * 49, '', 'VMware Host', null, null, this.getTagsForStencil(gn, 'vmware host', dt).join(' ')),
880			this.createVertexTemplateEntry(sn + 'vm_failed;',
881					w * 28, h * 23, '', 'VM Failed', null, null, this.getTagsForStencil(gn, 'vm failed', dt).join(' ')),
882			this.createVertexTemplateEntry(sn + 'vm_linux;',
883					w * 23, h * 30, '', 'VM Linux', null, null, this.getTagsForStencil(gn, 'vm linux', dt).join(' ')),
884			this.createVertexTemplateEntry(sn + 'vm_no_network;',
885					w * 29, h * 23, '', 'VM No Network', null, null, this.getTagsForStencil(gn, 'vm no network', dt).join(' ')),
886			this.createVertexTemplateEntry(sn + 'vm_problem;',
887					w * 28, h * 23, '', 'VM Problem', null, null, this.getTagsForStencil(gn, 'vm problem', dt).join(' ')),
888			this.createVertexTemplateEntry(sn + 'vm_running;',
889					w * 28, h * 23, '', 'VM Running', null, null, this.getTagsForStencil(gn, 'vm running', dt).join(' ')),
890			this.createVertexTemplateEntry(sn + 'vm_saved_state;',
891					w * 29, h * 24, '', 'VM Saved State', null, null, this.getTagsForStencil(gn, 'vm saved state', dt).join(' ')),
892			this.createVertexTemplateEntry(sn + 'vm_windows;',
893					w * 23, h * 30, '', 'VM Windows', null, null, this.getTagsForStencil(gn, 'vm windows', dt).join(' ')),
894			this.createVertexTemplateEntry(sn + 'vnic;',
895					w * 31, h * 31, '', 'vNIC', null, null, this.getTagsForStencil(gn, 'vnic', dt).join(' ')),
896			this.createVertexTemplateEntry(sn + 'wan_accelerator;',
897					w * 23, h * 23, '', 'WAN Accelerator', null, null, this.getTagsForStencil(gn, 'wan accelerator', dt).join(' ')),
898			this.createVertexTemplateEntry(sn + 'workstation;',
899					w * 38, h * 31, '', 'Workstation', null, null, this.getTagsForStencil(gn, 'workstation', dt).join(' '))
900		];
901
902		this.addPalette('veeam3D', 'Veeam / 3D', false, mxUtils.bind(this, function(content)
903				{
904					for (var i = 0; i < fns.length; i++)
905					{
906						content.appendChild(fns[i](content));
907					}
908		}));
909	};
910})();
911