WoTStatScript

More info for World of Tanks profile page. Updated for the new style.

Від 23.03.2016. Дивіться остання версія.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(У мене вже є менеджер скриптів, дайте мені встановити його!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name        WoTStatScript
// @version     0.9.14.1.0
// @description More info for World of Tanks profile page. Updated for the new style.
// @author      Orrie
// @namespace   http://forum.worldoftanks.eu/index.php?/topic/263423-
// @icon        https://dl.dropboxusercontent.com/u/12497046/wot/projects/statscript/img/icon.png
// @include     http*://worldoftanks.eu/*/accounts/*/*
// @include     http*://worldoftanks.ru/*/accounts/*/*
// @include     http*://worldoftanks.com/*/accounts/*/*
// @include     http*://worldoftanks.asia/*/accounts/*/*
// @include     http*://worldoftanks.kr/*/accounts/*/*
// @grant       GM_xmlhttpRequest
// @connect     www.wnefficiency.net
// @connect     api.worldoftanks.eu
// @connect     api.worldoftanks.ru
// @connect     api.worldoftanks.com
// @connect     api.worldoftanks.asia
// @connect     api.worldoftanks.kr
// @connect     clanapi-wotcs-eu.herokuapp.com
// @connect     noobmeter.com
// @license     MIT License
// ==/UserScript==
(function() {
	// global vars
	var d = document, c = d.cookie, n = navigator, fragment = d.createDocumentFragment();

	// get server info and webpage
	var wg = {host:d.location.host, href:d.location.href, clan:{}};
	wg.srv = wg.host.match(/\.(eu|ru|com|asia|kr)/)[1].replace(/com/,"na");

	// getting userinfo and checking if own profile
	var profileName_header = d.getElementById('js-profile-name');
	wg.name = profileName_header.innerHTML;
	wg.id = wg.href.match(/\/(\d+)/)[1];
	wg.login = (c.match(/user_name=(\w+)/) || false)[1];
	wg.own = wg.login == wg.name;

	// script variables
	var sc = {
		vers: "0.9.14.1.0",
		host: "http://greasyfork.org/scripts/661-wotstatscript",
		user: {
			wl: "http://forum.wotlabs.net/index.php?/user/1618-orrie/",
			wot: "http://worldoftanks.eu/community/accounts/505838943-Orrie/"
		},
		top: {
			eu: "http://forum.worldoftanks.eu/index.php?showtopic=263423",
			na: "http://forum.worldoftanks.com/index.php?showtopic=404652"
		},
		cred: { // translators
			cs: "<a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/500744969/'>Crabtr33</a> , <a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/508323506/'>Ragnarocek</a> , <a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/508904714/'>jViks</a>" ,
			de: "<a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/504873051/'>ArtiOpa</a> , <a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/501118529/'>Crakker</a> , <a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/501072645/'>multimill</a>",
			fr: "<a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/506641783/'>SuperPommeDeTerre</a>",
			pl: "<a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/501801562/'>KeluMocy</a> , <a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/504412736/'>pokapokami</a>",
			es: "<a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/512759883/'>Frodo45127</a>",
			tr: "<a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/500400806/'>Ufuko</a>",
			ru: "dimon222"
		},
		api: {
			ru: "98ca7c4fb108175b67d6505b9c3f3ebd",
			eu: "a7595640a90bf2d19065f3f2683b171c",
			na: "bf5dba0efd444d75147b6222dd903fd2",
			asia: "95f8713eccd322e52dbf521dbd28b19c",
			kr: "ffea0f1c3c5f770db09357d94fe6abfb"
		},
		srv: {
			wl: false,   // wotlabs
			nm: false,   // noobmeter
			vb: false,   // vbaddict
			ws: false,   // wotstats
			cs: false,   // wotcs
			wlf: false,  // wot-life
			ct: false,   // clan tools
			aos: false,  // age of strife
			kttc: false, // kttc
			wots: false, // wots
			ch: false,   // clan history
			wr: false,   // wotreplays
			vk: false    // volknn - famepoints
		},
		wn: "http://www.wnefficiency.net/exp/expected_tank_values_latest.json",
		nm: {
			id: "orrie_js_174043" // noobmeter api id
		},
		loc: [c.match(/hllang=(\w+)/)[1], wg.href.match(/\.\w+\/([\w-]+)\//)[1]],
		locSup: ["en", "ru", "cs", "de", "fr", "pl", "es", "tr"],
		date: Date.now(),
		dateFormat: {ru: "ru-RU", eu: "en-GB", na: "en-US", asia: "en-AU", kr: "ko-KR"},
		col: {
			//      col        wr  lr  bat    sr  hr  dmg  wgr   wn8   wn7   eff   nm
			sUni: [ "#5A3175", 65, 35, 30000, 50, 80, 270, 9900, 2900, 2050, 2050, 2000 ], // 99.99% super unicum
			uni:  [ "#83579D", 60, 40, 25000, 46, 75, 240, 9000, 2450, 1850, 1800, 1950 ], // 99.90% unicum
			gr8:  [ "#3972C6", 56, 44, 21000, 42, 70, 210, 8500, 2000, 1550, 1500, 1750 ], // 99.00% great
			vGud: [ "#4099BF", 54, 46, 17000, 38, 65, 180, 6500, 1600, 1350             ], // 95.00% very good
			good: [ "#4D7326", 52, 48, 13000, 34, 60, 150, 5000, 1200, 1100, 1200, 1450 ], // 82.00% good
			aAvg: [ "#849B24", 50, 50, 10000, 30, 55, 120, 4000,  900                   ], // 63.00% above average
			avg:  [ "#CCB800", 48, 52,  7000, 25, 50,  90, 3000,  650,  900,  900, 1250 ], // 40.00% average
			bAvg: [ "#CC7A00", 47, 53,  3000, 20, 45,  60, 2000,  450,  700,  600, 1150 ], // 20.00% below average
			bas:  [ "#CD3333", 46, 54,  1000, 15, 40,  30, 1500,  300,  500             ], //  6.00% basic
			beg:  [ "#930D0D",  0, 100,    0,  0,  0,   0,    0,    0,    0,    0,    0 ], //  0.00% beginner
			dft:  [ "#6B6B6B" ], // default
			id: { col: 0, wr: 1,  lr: 2, bat: 3, sr: 4, hr: 5, dmg: 6, wgr: 7, wn8: 8, wn7: 9, eff: 10, nm: 11 }  // type identifier
		},
		web: {
			gecko: typeof InstallTrigger !== 'undefined',
			opera: !!window.opera || /opera|opr/i.test(n.userAgent),
			chrome: !!window.chrome && !!window.chrome.webstore,
			safari: /constructor/i.test(window.HTMLElement)
		},
		fun: { // fun and giggles
			Keezoo: "<div class='b-stat-fun'><img class='i-stat-fun' src='//static-cdn.jtvnw.net/emoticons/v1/41/1.0'></div>",
			weenis: "<div class='b-stat-fun'><img class='i-stat-fun' src='//static-cdn.jtvnw.net/emoticons/v1/22639/1.0'></div>"
		},
		debug: false
	};

	// script functions
	var sf = {
		apiInfoHnd: function (resp) { // processing information from player API
			var data = JSON.parse(resp).data[wg.id],
			allStats = data.statistics.all;

			// add client language as a flag
			profileName_header.appendChild(sf.elem("img", "i-profile-flag", "", "", "https://bytebucket.org/seriych/worldoftanksforumextendedstat.user.js/raw/tip/data/img/lang/"+data.client_language+".png"));

			// last battle if it exists
			if (data.last_battle_time) {
				var lastBattle_div = d.getElementById('js-lastBattle');
				lastBattle_div.textContent = new Date(data.last_battle_time*1000).toLocaleString(sc.dateFormat[wg.srv]);
				lastBattle_div.parentNode.parentNode.parentNode.classList.add("b-display-block");
			}

			// ban time if it exists
			if (data.ban_time) {
				var banInfo_div = d.getElementById('js-banInfo');
				banInfo_div.textContent = new Date(data.ban_time*1000).toLocaleString(sc.dateFormat[wg.srv]);
				banInfo_div.parentNode.parentNode.parentNode.classList.add("b-display-block");
			}

			// add stats in existing tables
			or_table.appendChild(sf.elem("tr", "", "<td class='t-dotted_minor'>"+loc[99]+"</td><td class='t-dotted_value'></td><td class='t-dotted_value'>"+allStats.tanking_factor+"</td>"));
			bp_table.lastElementChild.innerHTML = "<td class='t-dotted_minor'>"+loc[51]+"</td><td class='t-dotted_value'>"+sf.color(allStats.hits/allStats.shots*100, "hr", 2, "%")+"</td><td class='t-dotted_value'>"+sf.format(allStats.hits,2)+"</td>";
			bp_table.appendChild(sf.elem("tr", "", "<td class='t-dotted_minor'>"+loc[115]+"</td><td class='t-dotted_value'>"+sf.color(allStats.piercings/allStats.hits*100, "", 2, "%")+"</td><td class='t-dotted_value'>"+sf.format(allStats.piercings,2)+"</td>"));
			bp_table.appendChild(sf.elem("tr", "", "<td class='t-dotted_minor'>"+loc[98]+"</td><td class='t-dotted_value'>"+sf.format(data.statistics.trees_cut/allStats.battles,2,2)+"</td><td class='t-dotted_value'>"+sf.format(data.statistics.trees_cut,2)+"</td>"));

			// add new tables for API stats
			var statTabMore = sf.elem("div", "b-tab-more"),
			newTables = [
				[
					[loc[87], d.querySelectorAll("[data-vehicle-cd='"+allStats.max_damage_tank_id+"']")[0].previousElementSibling.firstElementChild.lastElementChild.innerHTML, sf.format(allStats.max_damage,2)],
					[loc[88], d.querySelectorAll("[data-vehicle-cd='"+allStats.max_frags_tank_id+"']")[0].previousElementSibling.firstElementChild.lastElementChild.innerHTML, sf.format(allStats.max_frags,2)],
					[loc[89], d.querySelectorAll("[data-vehicle-cd='"+allStats.max_xp_tank_id+"']")[0].previousElementSibling.firstElementChild.lastElementChild.innerHTML, sf.format(allStats. max_xp,2)],
					[loc[90], sf.format(allStats.avg_damage_assisted,2), sf.format(allStats.avg_damage_assisted*allStats.battles,2)],
					[loc[91], sf.format(allStats.avg_damage_assisted_radio,2), sf.format(allStats.avg_damage_assisted_radio*allStats.battles,2)],
					[loc[92], sf.format(allStats.avg_damage_assisted_track,2), sf.format(allStats.avg_damage_assisted_track*allStats.battles,2)]
				],
				[
					[loc[93], sf.color(100, "", 2, "%"), sf.format(allStats.direct_hits_received,2)],
					[loc[94], sf.color(allStats.piercings_received/allStats.direct_hits_received*100, "", 2, "%"), sf.format(allStats.piercings_received,2)],
					[loc[95], sf.color(allStats.no_damage_direct_hits_received/allStats.direct_hits_received*100, "", 2, "%"), sf.format(allStats.no_damage_direct_hits_received,2)],
					[loc[96], sf.color(allStats.explosion_hits_received/allStats.direct_hits_received*100, "", 2, "%"), sf.format(allStats.explosion_hits_received,2)],
					[loc[97], sf.format(allStats.avg_damage_blocked,2), sf.format(allStats.avg_damage_blocked*allStats.battles,2)],
					[loc[99], "", allStats.tanking_factor]
				],
				[
					loc[85],
					loc[86]
				]
			];
			for (var _a=0, _a_len = newTables.length; _a<(_a_len-1); ++_a) {
				var newTable = sf.elem("div", "b-result b-result-api", "<h3>"+newTables[2][_a]+"</h3><table class='t-dotted t-dotted__fixed'></table>");
				for (var _ar=0, _ar_len = newTables[_a].length; _ar<_ar_len; ++_ar) {
					newTable.lastElementChild.appendChild(sf.elem("tr", "", "<td class='t-dotted_minor'>"+newTables[_a][_ar][0]+"</td><td class='t-dotted_value'>"+newTables[_a][_ar][1]+"</td><td class='t-dotted_value'>"+newTables[_a][_ar][2]+"</td>"));
				}
				statTabMore.appendChild(newTable);
			}
			statTabsParent.appendChild(statTabMore);

			// add new tables for each gamemode
			var modeTables = [
				[
					["globalmap_absolute", loc[105]],
					["globalmap_champion", loc[104]],
					["globalmap_middle", loc[103]]
				],
				[
					["stronghold_skirmish", loc[107]],
					["stronghold_defense", loc[108]]
				],
				[
					["team", loc[109]],
					["regular_team", loc[110]]
				],
				[
					["fallout", loc[112]],
					["historical", loc[113]],
					["company", loc[114]]
				],
				[
					"clan",
					"strong",
					"team",
					"other"
				]
			];
			for (var _mt=0, _mt_len = modeTables.length; _mt<(_mt_len-1); ++_mt) {
				var newModeTab = sf.elem("div", "b-tab-"+modeTables[4][_mt]);
				for (var _gm=0, _gm_len = modeTables[_mt].length; _gm<_gm_len; ++_gm) {
					var modeStats = data.statistics[modeTables[_mt][_gm][0]],
					modeStatsArr = [
						[loc[39], "", sf.format(modeStats.battles,2)],
						[loc[40], sf.color(modeStats.wins/modeStats.battles*100, "wr", 2, "%"), sf.format(modeStats.wins,2)],
						[loc[41], sf.color(modeStats.losses/modeStats.battles*100, "lr", 2, "%"), sf.format(modeStats.losses,2)],
						[loc[42], sf.color(modeStats.draws/modeStats.battles*100, "", 2, "%"), sf.format(modeStats.draws,2)],
						[loc[43], sf.color(modeStats.survived_battles/modeStats.battles*100, "sr", 2, "%"), sf.format(modeStats.survived_battles,2)],
						[loc[45], sf.format(modeStats.xp/modeStats.battles,2), sf.format(modeStats.xp,2)],
						[loc[52], sf.format(modeStats.damage_dealt/modeStats.battles,2), sf.format(modeStats.damage_dealt,2)],
						[loc[99], "", sf.format(modeStats.tanking_factor,2,2)],
						[loc[51], "", sf.color(modeStats.hits/modeStats.shots*100, "hr", 2, "%")]
					],
					newTableMode = sf.elem("div", "b-result b-result-api", "<h3>"+modeTables[_mt][_gm][1]+"</h3><table class='t-dotted t-dotted__fixed'></table>");
					for (var _ms=0, _ms_len = modeStatsArr.length; _ms<_ms_len; ++_ms) {
						newTableMode.lastElementChild.appendChild(sf.elem("tr", "", "<td class='t-dotted_minor'>"+modeStatsArr[_ms][0]+"</td><td class='t-dotted_value'>"+modeStatsArr[_ms][1]+"</td><td class='t-dotted_value'>"+modeStatsArr[_ms][2]+"</td>"));
					}
					newModeTab.appendChild(newTableMode);
				}
				statTabsParent.appendChild(newModeTab);
			}
		},
		clan: function () { // clanBlock function
			wg.clan.id = cl_class.getAttribute('href').match(/\/(\d+)/)[1];
			wg.clan.name = cl_class.getElementsByTagName('span')[0].innerHTML.match(/[\w.+\-]+/)[0];
			// clan statistic links
			var clanStat_table_cells = [
				[
					[loc[66]],
					[sc.srv.wl, "<a target='_blank' href='http://wotlabs.net/"+sc.srv.wl+"/clan/"+wg.clan.name+"'>WoTLabs</a>"],
					[sc.srv.nm, "<a target='_blank' href='http://noobmeter.com/clan/"+sc.srv.nm+"/"+wg.clan.name+"/"+wg.clan.id+"'>Noobmeter</a>"],
					[sc.srv.ct, "<a target='_blank' href='http://clantools.us/servers/"+sc.srv.ct+"/clans?id="+wg.clan.id+"'>Clan Tools</a>"]
				],
				[
					[""],
					[sc.srv.cs, "<a target='_blank' href='http://wotcs.com/clan.php?wid="+wg.clan.id+"'>WoT-CS</a>"],
					[sc.srv.vb, "<a target='_blank' href='http://www.vbaddict.net/clan/worldoftanks."+sc.srv.vb+"/"+wg.clan.id+"/clan-"+wg.clan.name.toLowerCase()+"'>vBAddict</a>"],
					(wg.srv=="ru") ? [sc.srv.kttc, "<a target='_blank' href='http://kttc.ru/clan/"+wg.clan.id+"/'>KTTC</a>"] : [sc.srv.wlf, "<a target='_blank' href='http://en.wot-life.com/"+sc.srv.wlf+"/clan/"+wg.clan.name+"-"+wg.clan.id+"/'>WoT-Life</a>"]
				],
				[
					[loc[67]],
					[sc.srv.wr, "<a target='_blank' href='http://wotreplays."+sc.srv.wr+"/clan/"+wg.clan.name+"'>WoTReplays</a>"]
				],
				[
					[loc[81]],
					[sc.srv.vk, "<a target='_blank' href='http://volknn.ru/4th/"+((wg.srv=="eu") ? sc.srv.vk+"/" : "")+"#/"+wg.clan.name+"'>Volknn</a>"]
				]
			];
			sf.links(clanStat_table, clanStat_table_cells, "table");
			clanBlock.appendChild(clanStat_table);
		},
		format: function (input, type, dec) { // input and output formatting
			var inputReg = new RegExp("\\"+loc[0], "g");
			switch(type) {
				case (1): // input string into number
					return parseFloat(input.replace(inputReg,"").replace(",","."));
				case (2): // output number with locale symbol
					if (isNaN(input)) {return 0;}
					dec = dec ? dec : 0;
					input = input.toFixed(dec).toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1"+loc[0]);
					return (loc[0] !== "," && dec !== 0) ? input.replace(/\.(\d+)*$/g,",$1") : input;
				default:
					console.error("Error filtering: ", input);
					return input;
			}
		},
		color: function (input, type, dec, sym, ext) { // color formatting
			if (isNaN(input)) {return 0;}
			var color, output = input.toFixed(dec);
			if (type == "dmg") {
				output =  sf.format(ext,2,0);
			}
			else if (input >= 1000) {
				output = sf.format(input,2,dec);
			}
			if (type !== "") {
				if (s.h[type]) {
					color = s.h[type];
				}
				else {
					for (var _c in sc.col) {
						if (sc.col.hasOwnProperty(_c)) {
							if (type == "lr") {
								if (input <= sc.col[_c][sc.col.id[type]]) {
									color = sc.col[_c][0]; break;
								}
							}
							else {
								if (input >= sc.col[_c][sc.col.id[type]]) {
									color = sc.col[_c][0]; break;
								}
							}
						}
					}
					if (sym !== "%") {
						s.h[type] = color;
					}
				}
			}
			if (loc[0] !== "," && dec !== 0) {
				output = output.replace(/\.(\d+)*$/g,",$1");
			}
			if (sym) {
				output += sym;
			}
			return "<span style='color:"+color+"'>"+output+"</span>";
		},
		elem: function (tag, name, html, type, src) { // element creation
			var element = d.createElement(tag);
			if (name) {
				element.className = name;
			}
			if (html) {
				if (/</.test(html)) {
					element.innerHTML = html;
				}
				else {
					element.textContent = html;
				}
			}
			if (type) {
				element.type = type;
			}
			if (src) {
				element.src = src;
			}
			return element;
		},
		settings: function (name, text) { // script menu handler
			var setItem = sf.elem("li", "b-settingItem"),
			setDiv = sf.elem("div", "b-settingParent b-"+name, "<a>"+text+"</a>");
			switch(name) {
				case ("wnRefresh"):
					setDiv.addEventListener('click', function() {localStorage.removeItem("wnExpValues"); location.reload();}, false);
				break;
				case ("copyClipboard"):
					setDiv.addEventListener('click', function() {window.prompt(loc[64], d.getElementById('js-clipBoard').innerHTML);}, false);
				break;
				default: break;
			}
			setItem.appendChild(setDiv);
			return setItem;
		},
		links: function (parent, links, type) { // statistic links handler
			var linksFragment = d.createDocumentFragment();
			for (var _l=0, _l_len = links.length; _l<_l_len; ++_l) {
				switch(type) {
					case ("table"):
						var link = sf.elem("tr");
						for (var _lr=0, _lr_len = links[_l].length; _lr<_lr_len; ++_lr) {
							link.appendChild((links[_l][_lr][0] && links[_l][_lr][1]) ? sf.elem("td", "", links[_l][_lr][1]) : sf.elem("td", "", links[_l][_lr][0]));
						}
						linksFragment.appendChild(link);
					break;
					case ("list"):
						if (links[_l] instanceof HTMLElement) {
							linksFragment.appendChild(links[_l]);
						}
						else {
							linksFragment.appendChild((links[_l][0] && links[_l][1]) ? sf.elem("li", "", links[_l][1]) : sf.elem("li", "statname", links[_l][0]));
						}
					break;
					default: break;
				}
			}
			parent.appendChild(linksFragment);
		},
		tabs: function (elem) { // statistic tabs handler
			var tab = elem.target.parentNode;
			if (!tab.classList.contains("js-tabs__active")) {
				d.getElementsByClassName('b-statistics-wrpr')[0].getElementsByClassName('js-tabs__active')[0].classList.remove('js-tabs__active');
				tab.classList.add("js-tabs__active");
				d.getElementsByClassName('js-stat_active')[0].classList.remove("js-stat_active");
				d.getElementsByClassName(tab.getAttribute('data-ref'))[0].classList.add("js-stat_active");
			}
		},
		storage: function (name, data, type, mode) { // localstorage handler
			var storage;
			switch(type) {
				case ("set"):
					if (mode == "string") {
						data = JSON.stringify(data);
					}
					storage = localStorage.setItem(name, data);
				break;
				case ("get"):
					storage = localStorage.getItem(name);
					if (mode == "parse") {
						storage = JSON.parse(storage);
					}
				break;
				default: break;
			}
			return storage;
		},
		wn: function hnd(resp) { // wnefficiency handler
				sf.storage("wnExpValues", resp, "set");
				sf.storage("wnExpDate", sc.date, "set");
				sf.storage("wnExpVers", [sc.vers, JSON.parse(resp).header.version], "set", "string");
				location.reload();
		},
		nm: { // noobmeter handler
			hnd: function (resp) {
				if (!isNaN(parseFloat(resp))) {
					sf.nm.insert(parseFloat(resp));
				}
				else {
					sf.nm.error();
				}
			},
			error: function () {
				sf.nm.insert(loc[75]);
			},
			insert: function (nm) {
				var nmClip = d.getElementById('js-clipBoard'),
				nmStat = d.getElementById('js-noobmeter-stat');
				if (nmClip) {
					nmClip.textContent += (!isNaN(nm)) ? " NM: "+nm.toFixed(2) : "";
				}
				nmStat.innerHTML = (sc.fun[wg.name]) ? sc.fun[wg.name] : (!isNaN(nm)) ? sf.color(nm,"nm",2) : nm;
			}
		},
		ch: { // clan history handler
			hnd: function (resp) {
				var ch = JSON.parse(resp).changes, _h_len = ch.length, clansCount = 0, prevClan,
				clanHistFragment = d.createDocumentFragment();
				clanHist_div.lastElementChild.classList.add("b-display-none");
				if (_h_len > 0) {
					for (var _h=_h_len-1; _h>=0; --_h) {
						clansCount ++;
						if (!!ch[_h].clan_tag && prevClan !== ch[_h].clan_tag && (clansCount == 1 || ch[_h].joined)) {
							var clanHist_span = sf.elem("span", (ch[_h].clan_tag == wg.clan.name) ? "clantag curr" : "clantag", "<a href='http://"+sc.srv.ch+".wargaming.net/clans/"+ch[_h].clan_id+"/' target='_blank'>["+ch[_h].clan_tag+"]</a>");
							clanHistFragment.appendChild(clanHist_span);
							prevClan = ch[_h].clan_tag;
						}
					}
					if (wg.clan.name && prevClan !== wg.clan.name) {
						clanHistFragment.appendChild(sf.elem("span", "clantag curr", "<a href='http://"+sc.srv.ch+".wargaming.net/clans/"+wg.clan.id+"/' target='_blank'>["+wg.clan.name+"]</a>"));
					}
					clanHist_div.appendChild(clanHistFragment);
				}
				else {
					clanHist_div.appendChild(sf.elem("span", "clantag", loc[76]));
				}
			},
			error: function () {
				clanHist_div.appendChild(sf.elem("span", "", loc[77]));
			}
		},
		request: function (url, handler, error) { // cross-domain request handler
			GM_xmlhttpRequest({
				method: "GET",
				url: url,
				headers: {
					Accept: "text/xml"
				},
				onload: function(resp) {
					if (resp.status == 200) {
						handler(resp.responseText);
					}
					else {
						console.error("Error accessing "+url, resp.readyState, resp.status, resp.statusText);
						if (error) {error();}
					}
				},
				onerror: function(resp) {
					console.error("Error accessing "+url, resp.readyState, resp.status, resp.statusText);
					if (error) {error();}
				}
			});
		}
	};

	// make sure correct localization is displayed, and reload page with user language if not
	if (sc.loc[0] == sc.loc[1]) {
		sc.loc = sc.loc[0];
	}
	else {
		sc.loc = sc.loc[0];
		window.location.href = "http://"+wg.host+"/"+sc.loc+"/community/accounts/"+wg.id+"-"+wg.name+"/";
	}

	// add language to body classname for language based styling
	d.body.classList.add("lang-"+sc.loc);

	// fetch wnefficiency values - check if array exists in localStorage, otherwise fetch and reload page
	var wn = {
		values: sf.storage("wnExpValues", "", "get", "parse"),
		date: sf.storage("wnExpDate", "", "get", "parse")+12096e5 >= sc.date, // true if timestamp is less than 2 weeks old, refresh list if false.
		vers: sf.storage("wnExpVers", "", "get", "parse") || ""
	}, statArr;
	if (wn.vers[0]==sc.vers && wn.values && wn.date) {
		statArr = wn.values.data;
	}
	else {
		// add animated loading icon for progress indication
		var pageWrpr = d.getElementsByClassName('page-wrapper')[0],
		loadGif = sf.elem("div", "processing", "<div class='processing_loader'><img src='http://eu.wargaming.net/clans/static/2.2.8/images/processing/loader.gif' alt='Processing...'></div>");
		pageWrpr.appendChild(loadGif);
		sf.request(sc.wn, sf.wn);
	}

	// inserting style into head
	var style = sf.elem("style", "wotstatscript", "", "text/css"),
	styleText = [
		// processing loader rules
		".processing {width: 100%; height: 100%; position: fixed; top: 0; left: 0; z-index: 500; background: url(http://eu.wargaming.net/clans/static/2.2.9/images/processing/processing_overlay-pattern.png);}",
		".processing_loader {width: 56px; height: 54px; position: absolute; top: 50%; left: 50%; margin-top: -27px; margin-left: -28px;}",
		// script menu rules
		"#common_menu .cm-menu__user > *:not(.cm-notifications):not(.js-cm-user-menu-dropdown):not(.js-cm-dropdown-for-mobile-only):not(.cm-user-unauthorized) {display: inline-block}",
		// settings menu rules
		"#common_menu .menu-settings {text-align: left;}",
		"#common_menu .menu-settings .cm-user-menu-link {margin: 0 10px 0 0;}",
		"#common_menu .menu-settings .cm-user-menu-link_cutted-text {max-width: unset;}",
		"#common_menu .menu-settings .cm-user-menu {padding: 15px; right: unset;}",
		"#common_menu .menu-settings .cm-parent-link:hover {cursor: pointer;}",
		"#common_menu .menu-settings label {display: table; line-height: normal; cursor: pointer;}",
		"#common_menu .menu-settings .l-box {display: none;}",
		"#common_menu .menu-settings .b-checkbox {height: 16px; width: 16px; float: left; margin-right: 5px;}",
		"#common_menu .menu-settings .b-checkbox span {height: 16px; width: 16px;}",
		"#common_menu .menu-settings .b-combobox-label__checked {color: #DCDCDC;}",
		"#common_menu .menu-settings .b-settingItem .b-combobox-label:hover {color: #DCDCDC;}",
		"#common_menu .menu-settings .b-settingItem .b-combobox-label:hover .b-checkbox {background-position: 0px -34px; box-shadow: 0px 0px 10px 1px rgba(191, 166, 35, 0.15), 0px 0px 3px 1px rgba(191, 166, 35, 0.25);}",
		"#common_menu .menu-settings .b-settingItem .b-combobox-label:hover .b-checkbox.b-checkbox__checked {background-position: 0px -68px;}",
		"#common_menu .menu-settings textarea.l-textarea {background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 2px; color: #FFFFFF; line-height: normal; padding: 5px; min-height: 50px; margin: 5px 0 5px 0; min-width: 175px;}",
		"#common_menu .menu-settings textarea::-webkit-input-placeholder {color: #FFFFFF;}",
		"#common_menu .menu-settings textarea::-moz-placeholder {color: #FFFFFF;}",
		"#common_menu .menu-settings .b-settingParent {line-height: 26px;}",
		"#common_menu .menu-settings .b-settingParent a {cursor: pointer; color: #B1B2B3; text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);}",
		"#common_menu .menu-settings .b-settingParent a:hover {color: #FFFFFF; text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75); text-decoration: underline;}",
		"#common_menu .menu-settings .b-settingParent.b-wnRefresh, #common_menu .menu-settings .b-settingParent.b-copyClipboard {text-align: center;}",
		"#common_menu .menu-settings .settingCredits {margin: 2px 0px; text-align: center;}",
		"#common_menu .menu-settings .settingCredits.settingSepertor {border-top: 1px dashed #212123; margin-top: 6px; padding-top: 12px;}",
		"#common_menu .menu-settings .settingCredits p {font-size: 12px;}",
		"#common_menu .menu-settings .settingCredits .b-orange-arrow {color: #F25322; line-height: 14px; padding-right: 9px;}",
		"#common_menu .menu-settings .settingCredits .b-orange-arrow:hover {color: #FF7432;}"
	];
	d.head.appendChild(style);

	// localization
	var loc = [
		// thousands separator
		{ en: ",", ru: " ", cs: " ", de: ".", fr: " ", pl: " ", es:".", tr: "."},
		// profile page
		{ en: "Go to Bottom", ru: "Пролистать вниз", cs: "Konec stránky", de: "nach unten", fr: "Aller à la fin", pl: "Koniec strony", es: "Ir al final", tr: "Aşağı İn"},
		{ en: "Go to Top", ru: "Пролистать наверх", cs: "Začátek stránky", de: "nach oben", fr: "Aller au début", pl: "Początek strony", es: "Ir al principio", tr: "Yukarı Çık"},
		{ en: "Days Ago", ru: "Дней назад", cs: "dnů", de: "Tage in WOT aktiv", fr: "jours", pl: "Dni temu", es: "Días", tr: "Gün Önce"},
		{ en: "Player Stats:", ru: "Статистика игрока:", cs: "Stat. hráče:", de: "Spielerstatistik", fr: "Statistiques du joueur:", pl: "Statystyki gracza:", es: "Estadísticas del jugador:", tr: "Oyuncu Statları"},
		{ en: "Signature:", ru: "Подпись:", cs: "Podpis:", de: "Forumsignatur", fr: "Signature:", pl: "Sygnatura do forum:", es: "Firma", tr: "İmza"},
		{ en: "Light", ru: "Светлые тона", cs: "Světlý", de: "Signatur Weiß", fr: "Claire", pl: "Jasna", es: "Clara", tr: "Açık"},
		{ en: "Dark", ru: "Тёмные тона", cs: "Tmavý", de: "Signatur Schwarz", fr: "Foncée", pl: "Ciemna", es: "Oscura", tr: "Koyu"},
		{ en: "Replays:", ru: "Реплеи:", cs: "Záznamy:", de: "Replays", fr: "Replays:", pl: "Powtórki:", es: "Repeticiones:", tr: "Replayler"},
		{ en: "Victories", ru: "Победы", cs: "Vítězství", de: "Siege", fr: "Victoires", pl: "Zwycięstw", es: "Victorias", tr: "Zaferler"},
		{ en: "Battles Participated", ru: "Участий в битвах", cs: "Počet bitev", de: "Gefechte geführt", fr: "Batailles participées", pl: "Bitew", es: "Batallas jugadas", tr: "Savaş Katılımı"},
		{ en: "Average Experience", ru: "Средний опыт", cs: "Průměrné zkušenosti", de: "Durchnittl. Erfahrung", fr: "Expérience moyenne", pl: "Średnie doświadczenie", es: "Experiencia media", tr: "Ortalama Deneyim"},
		{ en: "Average Tier", ru: "Средний уровень танка", cs: "Průměrný Tier", de: "Durchschnittl. Stufe", fr: "Tiers moyen", pl: "Średni poziom pojazdu", es: "Tier medio", tr: "Ortalama Seviye"},
		{ en: "Win/Loss Ratio", ru: "Отношение Победы/Поражения", cs: "Poměr vítězství/porážek", de: "Verhältnis Siege/ Niederlagen", fr: "Ratio Victoires/Défaites", pl: "Zwycięstwa/porażki", es: "Ratio de victorias/derrotas", tr: "Zafer/Kayıp Oranı"},
		{ en: "Performance Ratings", ru: "Рейтинги производительности", cs: "Hodnocení bojového výkonu", de: "Leistungsverhältnis", fr: "Indices de performances", pl: "Statystyki wydajności", es: "Ratios de rendimiento", tr: "Performans Değerleri"},
		{ en: "WN8", ru: "WN8", cs: "WN8", de: "WN8", fr: "WN8", pl: "WN8", es: "WN8", tr: "WN8", i:1},
		{ en: "Efficiency", ru: "Эффективность", cs: "Efektivita", de: "Effizienz", fr: "Efficacité", pl: "Efficiency", es: "Eficiencia", tr: "Efficiency", i:1},
		{ en: "NoobMeter", ru: "NoobMeter", cs: "NoobMeter", de: "NoobMeter", fr: "NoobMeter", pl: "NoobMeter", es: "NoobMeter", tr: "NoobMeter", i:1},
		{ en: "Fetching...", ru: "Загрузка...", cs: "Načítám...", de: "abrufen...", fr: "Récupération...", pl: "Pobieranie...", es: "Recuperando...", tr: "Getiriliyor..."},
		{ en: "Performance Rating Calculations", ru: "Вычисления рейтинга производительности", cs: "Výpočet hodnocení bojového výkonu", de: "Leistungsberechnung", fr: "Calculs des indicateurs de performances", pl: "Obliczenia statystyk wydajności", es: "Cálculos del ratio de rendimiento", tr: "Performans Değeri Hesaplamaları"},
		{ en: "Formula Type", ru: "Тип формулы", cs: "Typ výpočtu", de: "Formel", fr: "Type de formule", pl: "Formuła", es: "Tipo de fórmula", tr: "Formül Tipi"},
		{ en: "Total", ru: "Всего", cs: "Celkem", de: "Gesamt", fr: "Total", pl: "Wynik", es: "Total", tr: "Toplam"},
		{ en: "Scaled", ru: "Шкала", cs: "Stupnice", de: "Skaliert", fr: "A l'échelle", pl: "Skalowanie", es: "Escala", tr: "Ölçek"},
		{ en: "Destroyed", ru: "Уничтожено", cs: "Zničeno", de: "Zerstört", fr: "Détruits", pl: "Fragi", es: "Destruidos", tr: "imha"},
		{ en: "Damage", ru: "Урон", cs: "Poškození", de: "Schaden", fr: "Dommages", pl: "Obrażenia", es: "Daño", tr: "Hasar"},
		{ en: "Detected", ru: "Обнаружено", cs: "Detekováno", de: "Aufgeklärt", fr: "Détectés", pl: "Wykrycia", es: "Detectados", tr: "Tespit"},
		{ en: "Capping", ru: "Захват", cs: "Obsazení", de: "Erobert", fr: "Capture", pl: "Zdobycie bazy", es: "Capturando", tr: "İşgal"},
		{ en: "Defense", ru: "Оборона", cs: "Obrana", de: "Verteidigt", fr: "Défense", pl: "Obrona bazy", es: "Defendiendo", tr: "Savunma"},
		{ en: "Victories", ru: "Победы", cs: "Vítězství", de: "Siege", fr: "Victoires", pl: "Zwycięstwa", es: "Victorias", tr: "Zaferler"},
		{ en: "WN8", ru: "WN8", cs: "WN8", de: "WN8", fr: "WN8", pl: "WN8", es: "WN8", tr: "WN8", i:1},
		{ en: "WN7", ru: "WN7", cs: "WN7", de: "WN7", fr: "WN7", pl: "WN7", es: "WN7", tr: "WN7", i:1},
		{ en: "Efficiency", ru: "Эффективность", cs: "Efektivita", de: "Effizienz", fr: "Efficacité", pl: "Efficiency", es: "Eficiencia", tr: "Efficiency", i:1},
		{ en: "What is WN Efficiency?", ru: "Что такое WN эффективность?", cs: "Co je WN hodnocení?", de: "Was bedeutet WN Effizienz", fr: "Qu'est que l'efficacité WN ?", pl: "Czym jest statystyka wydajności WN?", es: "¿Qué es la eficiencia WN?", tr: "WN Efficiency Nedir?"},
		{ en: "Ace Tanker", ru: "Мастер", cs: "Hrdina", de: "Panzer Ass", fr: "As du char", pl: "As Pancerny", es: "As de tanques", tr: "Tank Ası"},
		{ en: "1st Class", ru: "1 степень", cs: "1. třídy", de: "1ter Klasse", fr: "Classe 1", pl: "Pierwsza Klasa", es: "Clase I", tr: "1. Sınıf"},
		{ en: "2nd Class", ru: "2 степень", cs: "2. třídy", de: "2ter Klasse", fr: "Classe 2", pl: "Druga Klasa", es: "Clase II", tr: "2. Sınıf"},
		{ en: "3rd Class", ru: "3 степень", cs: "3. třídy", de: "3ter Klasse", fr: "Classe 3", pl: "Trzecia Klasa", es: "Clase III", tr: "3. Sınıf"},
		{ en: "No Badge", ru: "Нет значка", cs: "Nezískáno", de: "kein Orden", fr: "Aucun badge", pl: "Bez odznaki", es: "Sin medalla", tr: "Rozetsiz"},
		{ en: "Total Vehicles", ru: "Общее количество танки", cs: "Celkem vozidel", de: "Alle Fahrzeuge", fr: "Nombre total de véhicules", pl: "Całkowita liczba pojazdów", es: "Total de vehículos", tr: "Toplam Araçlar"},
		{ en: "Battles Participated", ru: "Участий в битвах", cs: "Počet bitev", de: "An Gefechten teilgenommen", fr: "Batailles participées", pl: "Bitwy", es: "Batallas jugadas", tr: "Savaş Katılımı"},
		{ en: "Victories", ru: "Победы", cs: "Vítězství", de: "Siege", fr: "Victoires", pl: "Zwycięstwa", es: "Victorias", tr: "Zaferler"},
		{ en: "Defeats", ru: "Поражения", cs: "Porážek", de: "Niederlagen", fr: "Défaites", pl: "Porażki", es: "Derrotas", tr: "Yenilgiler"},
		{ en: "Draws", ru: "Ничья", cs: "Remíza", de: "Unentschieden", fr: "Egalités", pl: "Remisy", es: "Empates", tr: "Beraberlikler"},
		{ en: "Battles Survived", ru: "Битв пережито", cs: "Přežito bitev", de: "Gefechte überlebt", fr: "Batailles survécues", pl: "Przetrwane bitwy", es: "Batallas como superviviente", tr: "Hayatta Kalma"},
		{ en: "Average Battles per Day", ru: "Среднее число битв за день", cs: "Průměrný počet bitev za den", de: "Durschnittliche Gefechte pro Tag", fr: "Nombre moyen de batailles par jour", pl: "Średnia bitew na dzień", es: "Media de batallas por día", tr: "Günlük Ortalama Savaş"},
		{ en: "Experience", ru: "Опыт", cs: "Zkušenosti", de: "Erfahrung", fr: "Expérience", pl: "Doświadczenie", es: "Experiencia", tr: "Deneyim"},
		{ en: "Average Experience per Battle", ru: "Средний опыт за битву", cs: "Průměrné zkušenosti za bitvu", de: "Durchschnittserfahrung", fr: "Expérience moyenne par bataille", pl: "Średnie doświadczenie na bitwę", es: "Experiencia media por batalla", tr: "Savaş Başına Ortalama Deneyim"},
		{ en: "Maximum Experience per Battle", ru: "Максимальный опыт за битву", cs: "Maximální zkušenosti za bitvu", de: "Höchste Gefechtserfahrung", fr: "Expérience maximum par bataille", pl: "Maksymalne doświadczenie na bitwę", es: "Experiencia máxima por batalla", tr: "Savaş Başına Maksimum Deneyim"},
		{ en: "Destroyed", ru: "Уничтожено", cs: "Zničeno", de: "Zerstört", fr: "Détruits", pl: "Zniszczeni przeciwnicy", es: "Destruidos", tr: "İmhalar"},
		{ en: "Deaths", ru: "Смертей", cs: "Nepřežil", de: "Tode", fr: "Morts", pl: "Zniszczony", es: "Muertes", tr: "Ölümler"},
		{ en: "Detected", ru: "Обнаружено", cs: "Detekováno", de: "Aufgeklärt", fr: "Détectés", pl: "Wykrytych", es: "Detectados", tr: "Tespitler"},
		{ en: "Hit Ratio", ru: "Коэффициент попаданий", cs: "Přesnost střelby", de: "Trefferquote", fr: "Ratio de hit", pl: "Celność", es: "Ratio de impactos", tr: "İsabet Oranı"},
		{ en: "Damage Caused", ru: "Урона нанесено", cs: "Udělené poškození", de: "Schaden verursacht", fr: "Dommages causés", pl: "Zadane obrażenia", es: "Daño causado", tr: "Yapılan Hasar"},
		{ en: "Damage Received", ru: "Урона получено", cs: "Přijaté poškození", de: "Schaden erhalten", fr: "Dommages reçus", pl: "Otrzymane obrażenia", es: "Daño recibido", tr: "Alınan Hasar"},
		{ en: "Base Capture Points", ru: "Очки захвата", cs: "Bodů obsazení základny", de: "Eroberungspunkte", fr: "Points de capture de base", pl: "Punkty przejęcia bazy", es: "Puntos de captura", tr: "Bölge İşgali Puanı"},
		{ en: "Base Defense Points", ru: "Очки обороны", cs: "Bodů obrany základny", de: "Verteidigungspunkte", fr: "Points de défense de base", pl: "Punkty obrony bazy", es: "Puntos de defensa", tr: "Bölge Savunması Puanı"},
		{ en: "Average Tier", ru: "Средний уровень", cs: "Průměrný Tier", de: "Durchschnittliche Stufe", fr: "Tiers moyen", pl: "Średni poziom pojazdów", es: "Tier media", tr: "Ortalama Seviye"},
		{ en: "Vehicle Tiers", ru: "Уровни техники", cs: "Tiery vozidel", de: "Fahrzeuge Stufe", fr: "Tiers du véhicule", pl: "Poziomy czołgów", es: "Tier de los vehículos:", tr: "Araç Seviyeleri"},
		{ en: "Tier", ru: "Уровень", cs: "Tier", de: "Stufe", fr: "Tiers", pl: "Poziom", es: "Tier", tr: "Seviye", i:1},
		{ en: "Total Vehicles:", ru: "Количество техники:", cs: "Celkem vozidel:", de: "Gesamt Fahrzeuge", fr: "Nombre total de véhicules:", pl: "Całkowita liczba pojazdów:", es: "Total de vehículos:", tr: "Toplam Araçlar"},
		{ en: "Tankopedia", ru: "Танковедение", cs: "Tankpédie", de: "Tankopedia", fr: "Tankopedia", pl: "Tankopedia", es: "Tankopedia", tr: "Tankopedia"},
		{ en: "Tank Statistics", ru: "Статистика танка", cs: "Statistiky vozidel", de: "Panzer Statistik", fr: "Statistiques des chars", pl: "Statystyki czołgu", es: "Estadísticas de tanques", tr: "Tank İstatistikleri"},
		{ en: "Premium Tanks", ru: "Премиум танки", cs: "Premium tanky", de: "Premium Panzer", fr: "Chars premiums", pl: "Czołgi premium", es: "Tanques premium", tr: "Premium Tanklar"},
		{ en: "Copy stats to Clipboard", ru: "Скопировать в буфер обмена", cs: "Kopírovat Stat. do schránky", de: "Statistiken in Zwischenablage kopieren", fr: "Copier les statistiques vers le presse-papiers", pl: "Kopiuj statystyki do schowka", es: "Copiar estadísticas al portapapeles", tr: "İstatistikleri Panoya Kopyala"},
		{ en: "Press Ctrl+C, or Right-Click and Copy", ru: "Нажмите Ctrl+C или ПКМ и Скопировать", cs: "Stiskni Ctrl+C, nebo klikni pravým tl. myši a vyber Kopírovat", de: "STRG+C/ rechter Mausklick und Kopieren", fr: "Appuyez sur Ctrl+C, ou clic droit et Copier", pl: "Naciśnij Ctrl+C, lub prawy klawisz myszy i 'Kopiuj'", es: "Presiona Ctrl+C, o haz clic derecho y pulsa Copiar.", tr: "Ctrl+C Tuşuna Bas, veya Sağ Tıkla ve Kopyala"},
		{ en: "WoTStatScript not active, because of player having 0 battles", ru: "Скрипт неактивен, т.к. у игрока 0 битв", cs: "WoTStatScript není aktivní, protože hráč má 0 bitev", de: "WoTStatScript inaktiv wegen fehlender Gefechte", fr: "WoTStatScript n'est pas actif, car le joueur a 0 batailles", pl: "WoTStatScript nieaktywny, ponieważ gracz rozegrał 0 bitew", es: "El script WoTStat no está activo, porque el jugador no ha jugado ninguna batalla.", tr: "WoTStat Scipt aktif değil, çünkü oyuncunun 0 savaşı var."},
		{ en: "Clan Stats:", ru: "Статистика клана:", cs: "Stat. klanu:", de: "Clanstatistiken", fr: "Statistiques du clan:", pl: "Statystyki klanu:", es: "Estadísticas del clan:", tr: "Klan İstatistikleri"},
		{ en: "Replays:", ru: "Реплеи:", cs: "Záznamy:", de: "Replays", fr: "Replays:", pl: "Powtórki:", es: "Repeticiones:", tr: "Replayler"},
		{ en: "Tier 10 Tanks", ru: "Уровень 10 Только", cs: "Pouze Tier 10", de: "nur Stufe 10", fr: "Seulement les tiers 10", pl: "Tylko 10 tier", es: "Sólo tier 10", tr: "Seviye 10 Tanklar"},
		{ en: "Battles missing from API, ratings may be inaccurate", ru: "Отсутствует Battles от API, рейтинги могут быть неточными", cs: "Některé bitvy se z API nenačetly, hodnocení může být nepřesné", de: "Fehlende API Gefechtsdaten, Bewertungen können ungenau sein", fr: "Des batailles manquent de l'API, les indices peuvent être faussés", pl: "Brakujące bitwy, obliczenia mogą być niedokładne", es: "Faltan batallas desde la API, por lo que los ratios pueden no ser muy precisos.", tr: "Savaş bilgileri eksik, hesaplamalar hatalı olabilir."},
		{ en: "Hit Ratio", ru: "Коэффициент попаданий", cs: "Přesnost střelby", de: "Trefferquote", fr: "Ratio de hit", pl: "Celność", es: "Ratio de impacto", tr: "İsabet Oranı"},
		{ en: "Average Damage", ru: "Средний Урона", cs: "Průměrné poškození", de: "Durchschnittlicher Schaden", fr: "Dommages moyens", pl: "Średnie obrażenia", es: "Daño medio", tr: "Ortalama Hasar"},
		{ en: "Stats for", ru: "Cтатистика для", cs: "Statistika hráče", de: "Statistik für", fr: "Statistiques pour ", pl: "Statystyki z", es: "Estadísticas para", tr: "İstatistikler"},
		{ en: "Battles:", ru: "Битвы:", cs: "Bitev:", de: "Gefechte", fr: "Batailles:", pl: "Bitew:", es: "Batallas:", tr: "Savaşlar"},
		{ en: "Clan History:", ru: "История клана:", cs: "Historie klanů:", de: "Clan Historie", fr: "Clan History:", pl: "Poprzednie klany:", es: "Clan History:", tr: "Clan History:"},
		{ en: "No Rating", ru: "Нет рейтинга", cs: "Bez hodnocení", de: "Kein Rating", fr: "No Rating", pl: "Brak klasyfikacji", es: "No Rating", tr: "No Rating"},
		{ en: "None", ru: "Никто", cs: "Žádné", de: "Kein", fr: "None", pl: "Brak", es: "None", tr: "None"},
		{ en: "Error", ru: "Oшибка", cs: "Chyba", de: "Fehler", fr: "Error", pl: "Błąd", es: "Error", tr: "Error"},
		{ en: "Missing Tanks", ru: "Missing Tanks", cs: "Chybějící tanky", de: "Missing Tanks", fr: "Missing Tanks", pl: "Missing Tanks", es: "Missing Tanks", tr: "Missing Tanks"},
		{ en: "Refresh WN8 Table", ru: "Refresh WN8 Table", cs: "Obnov WN8 Tabulku", de: "Refresh WN8 Table", fr: "Refresh WN8 Table", pl: "Refresh WN8 Table", es: "Refresh WN8 Table", tr: "Refresh WN8 Table"},
		{ en: "Script Menu", ru: "Script Menu", cs: "Nastavení scriptu", de: "Script Menu", fr: "Script Menu", pl: "Script Menu", es:"Script Menu", tr: "Script Menu"},
		{ en: "Famepoints:", ru: "Famepoints:", cs: "Body slávy:", de: "Famepoints:", fr: "Famepoints:", pl: "Famepoints:", es:"Famepoints:", tr: "Famepoints:"},
		{ en: "Tanks missing from WN8 table, ratings may be inaccurate", ru: "Tanks missing from WN8 table, ratings may be inaccurate", cs: "Některé tanky chybí ve WN8 tabulce, statistiky mohou být nepřesné", de: "Tanks missing from WN8 table, ratings may be inaccurate", fr: "Tanks missing from WN8 table, ratings may be inaccurate", pl: "Tanks missing from WN8 table, ratings may be inaccurate", es:"Tanks missing from WN8 table, ratings may be inaccurate", tr: "Tanks missing from WN8 table, ratings may be inaccurate"},
		{ en: "Account banned until:", ru: "Аккаунт заблокирован до", cs: "Konto zabanováno do:", de: "Account banned until:", fr: "Account banned until:", pl: "Account banned until:", es:"Account banned until:", tr: "Account banned until:"},
		{ en: "Last Battle:", ru: "Last Battle:", cs: "Poslední bitva:", de: "Last Battle:", fr: "Last Battle:", pl: "Last Battle:", es:"Last Battle:", tr: "Last Battle:"},
		{ en: "Max & Assist Performance", ru: "Max & Assist Performance", cs: "Nej výkony & Asistence", de: "Max & Assist Performance", fr: "Max & Assist Performance", pl: "Max & Assist Performance", es:"Max & Assist Performance", tr: "Max & Assist Performance"},
		{ en: "Tanking Performance", ru: "Tanking Performance", cs: "Tankovací výkon", de: "Tanking Performance", fr: "Tanking Performance", pl: "Tanking Performance", es:"Tanking Performance", tr: "Tanking Performance"},
		{ en: "Maximum Damage in a Battle", ru: "Maximum Damage in a Battle", cs: "Nejvyšší poškození v bitvě", de: "Maximum Damage in a Battle", fr: "Maximum Damage in a Battle", pl: "Maximum Damage in a Battle", es:"Maximum Damage in a Battle", tr: "Maximum Damage in a Battle"},
		{ en: "Maximum Destroyed in a Battle", ru: "Maximum Destroyed in a Battle", cs: "Nejvíce zničení v bitvě", de: "Maximum Destroyed in a Battle", fr: "Maximum Destroyed in a Battle", pl: "Maximum Destroyed in a Battle", es:"Maximum Destroyed in a Battle", tr: "Maximum Destroyed in a Battle"},
		{ en: "Maximum Experience in a Battle", ru: "Maximum Experience in a Battle", cs: "Nejvíce zkušeností v bitvě", de: "Maximum Experience in a Battle", fr: "Maximum Experience in a Battle", pl: "Maximum Experience in a Battle", es:"Maximum Experience in a Battle", tr: "Maximum Experience in a Battle"},
		{ en: "Damage Assisted", ru: "Damage Assisted", cs: "Asistované poškození", de: "Damage Assisted", fr: "Damage Assisted", pl: "Damage Assisted", es:"Damage Assisted", tr: "Damage Assisted"},
		{ en: "Damage Assisted with Radio", ru: "Damage Assisted with Radio", cs: "Asistované poškození spotováním", de: "Damage Assisted with Radio", fr: "Damage Assisted with Radio", pl: "Damage Assisted with Radio", es:"Damage Assisted with Radio", tr: "Damage Assisted with Radio"},
		{ en: "Damage Assisted with Tracking", ru: "Damage Assisted with Tracking", cs: "Asistované poškození detrackováním", de: "Damage Assisted with Tracking", fr: "Damage Assisted with Tracking", pl: "Damage Assisted with Tracking", es:"Damage Assisted with Tracking", tr: "Damage Assisted with Tracking"},
		{ en: "Direct Hits Received", ru: "Direct Hits Received", cs: "Obdrženo přímých zásahů", de: "Direct Hits Received", fr: "Direct Hits Received", pl: "Direct Hits Received", es:"Direct Hits Received", tr: "Direct Hits Received"},
		{ en: "Penetrations Received", ru: "Penetrations Received", cs: "Obdrženo penetrací", de: "Penetrations Received", fr: "Penetrations Received", pl: "Penetrations Received", es:"Penetrations Received", tr: "Penetrations Received"},
		{ en: "No Damage Direct Hits Recieved", ru: "No Damage Direct Hits Recieved", cs: "Obdrženo zásahů bez poškození", de: "No Damage Direct Hits Recieved", fr: "No Damage Direct Hits Recieved", pl: "No Damage Direct Hits Recieved", es:"No Damage Direct Hits Recieved", tr: "No Damage Direct Hits Recieved"},
		{ en: "Explosion Hits Recieved", ru: "Explosion Hits Recieved", cs: "Obdrženo explozivních zásahů", de: "Explosion Hits Recieved", fr: "Explosion Hits Recieved", pl: "Explosion Hits Recieved", es:"Explosion Hits Recieved", tr: "Explosion Hits Recieved"},
		{ en: "Damage Blocked", ru: "Damage Blocked", cs: "Poškození zastavené pancířem", de: "Damage Blocked", fr: "Damage Blocked", pl: "Damage Blocked", es:"Damage Blocked", tr: "Damage Blocked"},
		{ en: "Trees Driven Down", ru: "Trees Driven Down", cs: "Pokáceno stromů", de: "Trees Driven Down", fr: "Trees Driven Down", pl: "Trees Driven Down", es:"Trees Driven Down", tr: "Trees Driven Down"},
		{ en: "Armor-Use Efficiency", ru: "Armor-Use Efficiency", cs: "Efektivita využítí pancíře", de: "Armor-Use Efficiency", fr: "Armor-Use Efficiency", pl: "Armor-Use Efficiency", es:"Armor-Use Efficiency", tr: "Armor-Use Efficiency"},
		{ en: "Overall", ru: "Overall", cs: "Celkem", de: "Overall", fr: "Overall", pl: "Overall", es:"Overall", tr: "Overall"},
		{ en: "Max, Assist & Tanking", ru: "Max, Assist & Tanking", cs: "Nej, Asist & Tankování", de: "Max, Assist & Tanking", fr: "Max, Assist & Tanking", pl: "Max, Assist & Tanking", es:"Max, Assist & Tanking", tr: "Max, Assist & Tanking"},
		{ en: "Global Map", ru: "Global Map", cs: "Klanové války", de: "Global Map", fr: "Global Map", pl: "Global Map", es:"Global Map", tr: "Global Map"},
		{ en: "Medium - T6", ru: "Medium - T6", cs: "Medium - T6", de: "Medium - T6", fr: "Medium - T6", pl: "Medium - T6", es:"Medium - T6", tr: "Medium - T6"},
		{ en: "Champion - T8", ru: "Champion - T8", cs: "Champion - T8", de: "Champion - T8", fr: "Champion - T8", pl: "Champion - T8", es:"Champion - T8", tr: "Champion - T8"},
		{ en: "Absolute - T10", ru: "Absolute - T10", cs: "Absolute - T10", de: "Absolute - T10", fr: "Absolute - T10", pl: "Absolute - T10", es:"Absolute - T10", tr: "Absolute - T10"},
		{ en: "Strongholds", ru: "Strongholds", cs: "Opevnění", de: "Strongholds", fr: "Strongholds", pl: "Strongholds", es:"Strongholds", tr: "Strongholds"},
		{ en: "Stronghold Skirmish", ru: "Stronghold Skirmish", cs: "Opevnění - Šarvátky", de: "Stronghold Skirmish", fr: "Stronghold Skirmish", pl: "Stronghold Skirmish", es:"Stronghold Skirmish", tr: "Stronghold Skirmish"},
		{ en: "Stronghold Defense", ru: "Stronghold Defense", cs: "Opevnění - Obrana", de: "Stronghold Defense", fr: "Stronghold Defense", pl: "Stronghold Defense", es:"Stronghold Defense", tr: "Stronghold Defense"},
		{ en: "Team Battles", ru: "Team Battles", cs: "Týmové bitvy", de: "Team Battles", fr: "Team Battles", pl: "Team Battles", es:"Team Battles", tr: "Team Battles"},
		{ en: "Ranked Team Battles", ru: "Ranked Team Battles", cs: "Hodnocené týmové bitvy", de: "Ranked Team Battles", fr: "Ranked Team Battles", pl: "Ranked Team Battles", es:"Ranked Team Battles", tr: "Ranked Team Battles"},
		{ en: "Other Modes", ru: "Other Modes", cs: "Ostatní bitvy", de: "Other Modes", fr: "Other Modes", pl: "Other Modes", es:"Other Modes", tr: "Other Modes"},
		{ en: "Rampage", ru: "Rampage", cs: "Rampage", de: "Rampage", fr: "Rampage", pl: "Rampage", es:"Rampage", tr: "Rampage"},
		{ en: "Historical Battles", ru: "Historical Battles", cs: "Historické bitvy", de: "Historical Battles", fr: "Historical Battles", pl: "Historical Battles", es:"Historical Battles", tr: "Historical Battles"},
		{ en: "Tank Company", ru: "Tank Company", cs: "Roty", de: "Tank Company", fr: "Tank Company", pl: "Tank Company", es:"Tank Company", tr: "Tank Company"},
		{ en: "Penetration Ratio", ru: "Penetration Ratio", cs: "Poměr průstřelů", de: "Penetration Ratio", fr: "Penetration Ratio", pl: "Penetration Ratio", es:"Penetration Ratio", tr: "Penetration Ratio"},
		{ en: "First value is either average per battle or % of a related value, and the second value is the total.", ru: "First value is either average per battle or % of a related value, and the second value is the total.", cs: "První hodnota je buďto průměr na jednu bitvu nebo procentuální zastoupení dané hodnoty. Druhá hodnota je celkové množství ve všech bitvách.", de: "First value is either average per battle or % of a related value, and the second value is the total.", fr: "First value is either average per battle or % of a related value, and the second value is the total.", pl: "First value is either average per battle or % of a related value, and the second value is the total.", es:"First value is either average per battle or % of a related value, and the second value is the total.", tr: "First value is either average per battle or % of a related value, and the second value is the total."},
		{ en: "Do mind that some of the values are from the API, and might not load immediately.", ru: "Do mind that some of the values are from the API, and might not load immediately.", cs: "Některé hodnoty jsou načítány z API a nemusí se načíst ihned.", de: "Do mind that some of the values are from the API, and might not load immediately.", fr: "Do mind that some of the values are from the API, and might not load immediately.", pl: "Do mind that some of the values are from the API, and might not load immediately.", es:"Do mind that some of the values are from the API, and might not load immediately.", tr: "Do mind that some of the values are from the API, and might not load immediately."},
		{ en: "Script Author:", ru: "Script Author:", cs: "Script Author:", de: "Script Author:", fr: "Script Author:", pl: "Script Author:", es:"Script Author:", tr: "Script Author:"},
		{ en: "Contributors (EN):", ru: "Contributors (RU):", cs: "Contributors (CZ):", de: "Contributors (DE):", fr: "Contributors (FR):", pl: "Contributors (PL):", es:"Contributors (ES):", tr: "Contributors (TR):"}
		// 119 localized strings
		// { en: "", ru: "", cs: "", de: "", fr: "", pl: "", es:"", tr: ""},
	];

	// region settings for external sites
	switch(wg.srv) {
		case ("eu"): // eu server
			sc.srv.wl = sc.srv.nm = sc.srv.vb = sc.srv.ws = sc.srv.cs = sc.srv.wlf = sc.srv.ct = sc.srv.kttc = sc.srv.aos = sc.srv.ch = sc.srv.wr = wg.srv; sc.srv.vk = "en";
		break;
		case ("ru"): // ru server
			sc.srv.wl = sc.srv.nm = sc.srv.vb = sc.srv.ws = sc.srv.cs = sc.srv.ct = sc.srv.kttc = sc.srv.wots = sc.srv.aos = sc.srv.ch = sc.srv.wr = sc.srv.vk = wg.srv;
		break;
		case ("na"): // na server - american english
			sc.srv.wl = sc.srv.nm = sc.srv.vb = sc.srv.ws = sc.srv.cs = sc.srv.wlf = sc.srv.ct = sc.srv.kttc = sc.srv.aos = sc.srv.ch = sc.srv.vb = wg.srv; sc.srv.wr = "com";
			loc[27].en = "Defence";
			loc[55].en = "Base Defence Points:";
			loc[108].en = "Stronghold Defence";
		break;
		case ("asia"): // asia server
			sc.srv.wl = sc.srv.nm = sc.srv.vb = sc.srv.ws = sc.srv.cs = "sea"; sc.srv.ct = sc.srv.kttc = sc.srv.aos = sc.srv.ch = sc.srv.vb = wg.srv; sc.srv.wr = "com";
		break;
		case ("kr"): // korean server
			sc.srv.wl = sc.srv.nm = sc.srv.vb = sc.srv.ws = sc.srv.cs = sc.srv.ct = sc.srv.aos = sc.srv.ch = sc.srv.vb = wg.srv; sc.srv.wr = "com";
		break;
		default: break;
	}

	// set script language to english if an unsupported language is detected
	var locSup_div, locMiss = 0;
	if (sc.locSup.indexOf(sc.loc) == -1) {
		sc.loc = "en";
		locSup_div = sf.elem("div", "b-loc-wrpr", "<div class='b-sidebar-widget clearfix'><div class='b-sidebar-widget_inner b-sidebar-widget_inner__recrut'><h2 class='b-sidebar-widget_title'>Script Translation</h2><p class='b-sidebar-widget_text'>Unsupported language detected!<br>If you want to contribute with translation, please contact <a class='b-orange-arrow' href='"+sc.user.wl+"'>Orrie</a></p></div></div>");
	}
	// process localization
	for (var _l=0, l_len = loc.length; _l<l_len; _l++) {
		var langLoc = loc[_l][sc.loc];
		if (sc.loc !== "en" && langLoc == loc[_l].en && !loc[_l].i) {
			locMiss ++;
		}
		loc[_l] = langLoc;
	}
	// add counter for how many strings not translated
	var locMiss_div;
	if (!locSup_div && locMiss > 0) {
		locMiss_div = sf.elem("div", "b-loc-wrpr", "<div class='b-sidebar-widget clearfix'><div class='b-sidebar-widget_inner b-sidebar-widget_inner__recrut'><h2 class='b-sidebar-widget_title'>Script Translation</h2><p class='b-sidebar-widget_text'>Currently "+locMiss+" out of "+_l+" strings not translated in your language!<br>If you want to contribute, please contact <a class='b-orange-arrow' href='"+sc.user.wl+"'>Orrie</a></p></div></div>");
	}

	// script link and settings
	var userSet_div = sf.elem("div", "menu-settings menu-top_item", "<a class='cm-user-menu-link' href='#' onClick='return false;'><span class='cm-user-menu-link_cutted-text'>"+loc[80]+"</span><span class='cm-arrow'></span></a>"),
	userSet_list = sf.elem("ul", "cm-user-menu"),
	userSet_list_items = [
		sf.settings("wnRefresh", loc[79]+" [v"+wn.vers[1]+"]"),
		sf.settings("copyClipboard", loc[63]),
		sf.elem("li", "b-settingItem settingCredits settingSepertor", "<p>"+loc[118]+" <a class='b-orange-arrow' href='"+sc.user.wot+"'>Orrie</a></p>"+((sc.cred[sc.loc]) ? "<p>"+loc[119]+"</p><p>"+sc.cred[sc.loc]+"</p>" : "")),
		sf.elem("li", "b-settingItem settingCredits", "<p>Version: "+sc.vers+"</p>"),
		sf.elem("li", "b-settingItem settingCredits", "<p><a class='b-orange-arrow' href='"+sc.host+"'>Greasy Fork</a></p>"),
		sf.elem("li", "b-settingItem settingCredits", "<p><a class='b-orange-arrow' href='"+((wg.srv == "na") ? sc.top.na : sc.top.eu)+"'>Support Thread</a></p>")
	],
	navMenu = d.getElementById('common_menu'),
	navUser = navMenu.getElementsByClassName('cm-menu__user')[0],
	navLook = new MutationObserver(function() {
		navUser = navMenu.getElementsByClassName('cm-menu__user')[0];
		navUser.insertBefore(userSet_div, navUser.firstChild);
		navLook.disconnect();
	});
	sf.links(userSet_list, userSet_list_items, "list");
	userSet_div.firstElementChild.addEventListener('click', function() {this.classList.toggle('cm-user-menu-link__opened'); this.nextSibling.classList.toggle('cm-user-menu__opened');}, false);
	userSet_div.appendChild(userSet_list);
	if (navUser) {
		navUser.insertBefore(userSet_div, navUser.firstChild);
	}
	navLook.observe(navMenu, {childList: true});

	// check if player has 0 battles before continuing
	var tableBattles = sf.format(d.getElementsByClassName('t-personal-data_value')[2].innerHTML, 1),
	profileName_class = d.getElementsByClassName('b-profile-name')[0];
	if (tableBattles > 0 && statArr) {
		// request and retrieve statistics from API
		sc.api.i = "http://api.worldoftanks."+((wg.srv == "na") ? "com" : wg.srv)+"/wot/account/info/?application_id="+sc.api[wg.srv]+"&account_id="+wg.id+"&extra=statistics.fallout,statistics.globalmap_absolute,statistics.globalmap_champion,statistics.globalmap_middle";
		sc.api.v = "http://api.worldoftanks."+((wg.srv == "na") ? "com" : wg.srv)+"/wot/account/tanks/?application_id="+sc.api[wg.srv]+"&account_id="+wg.id;
		sf.request(sc.api.i, sf.apiInfoHnd);

		// url variables
		sc.nm.url = "http://noobmeter.com/player/"+sc.srv.nm+"/"+wg.name+"/"+wg.id;
		sc.nm.api = "http://noobmeter.com/simpleplayerprapi/"+sc.srv.nm+"/"+wg.name+"/"+wg.id+"/"+sc.nm.id;
		sc.chApi = "http://clanapi-wotcs-eu.herokuapp.com/players/"+wg.id+"/changes";

		// variables for dropbox, css and data uri
		var css = {
			box: "box-shadow: 0 0 38px 1px rgba(0, 0, 0, 0.3) inset, 0 0 23px 1px rgba(255, 255, 255, 0.02), 0 0 5px 1px rgba(0, 0, 0, 0.5) inset;",
			input: "background: rgba(0, 0, 0, 0.09); box-shadow: 0 0 1px 1px rgba(255, 255, 255, 0.15) inset, 0 0 38px 1px rgba(0, 0, 0, 0.3) inset, 0 0 23px 1px rgba(255, 255, 255, 0.02), 0 0 5px 1px rgba(0, 0, 0, 0.5) inset; color: #606061;",
			l: [
				"https://dl.dropboxusercontent.com/u/12497046/wot/projects/statscript/img",
				"/static/wot/common/css/scss/context-menu/img/arrow.png",
				"/static/wot/common/css/scss/content/links/img/orange_arrow.png",
				"/static/wot/common/css/scss/content/user/img/speedometr-separator.png",
				"/static/wot/common/css/scss/content/links/img/ico-info.png",
				"/static/wot/common/css/scss/content/links/img/vertical-arrow.png",
				"/static/wot/common/img/common/cont-img-mask.png",
				"/static/wot/common/img/classes/class-ace.png",
				"/static/wot/common/img/classes/class-1.png",
				"/static/wot/common/img/classes/class-2.png",
				"/static/wot/common/img/classes/class-3.png"
			],
			u: {
				menu: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPQAAAABCAIAAABmEhQDAAAAHklEQVQoU2MAAj4BAR5ePi6eUTSKhgni4eFjYGAAAN9YIhjam+zlAAAAAElFTkSuQmCC",
				icon1:"data:image/png;base64,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",
				icon2:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAcCAYAAAATFf3WAAALCUlEQVR42p2Xe2wc13XGv3Pnzsw+uEvucpdvkZT4EClKsh52akeO5VjNo4lSo24UF0WbokjqIq0BFEiB/NNW8T9Ba6AvBEURNAWCps5LcWQncWIJcRLbkm3JpmLJEmlKlkjxzX1w34/Zmbk3Z+0FIhBOrOTb/WEWd3bnfvudPQez+HXSADVBS1qD3uYYjLc5flygpZEAtv3VZz792ZfPvvD/0+de/sbnH330b0ai0dF3uyZ+SxHzG00SH5rG3n4cY05AEcAeYZwAtj909A/uOPaph0cP3Xuvbguas4ZWXr7mTb56/jXj5JPfmX/iuycvAbiK31F0m+bw9muApoDwNWDooaMfGnzgyEd6h4e3m4NDg9mJnWPzKGaWELQ8RLv7rl6eGVqYX0wsLC2pF1782cYT335yCcAiU8FvIfmu5lqJaQBE0F8BzAgQ3Wkheef9D/Q+ODHevWNoSN61f39+7+TEBkXFCq6czuWXKqTbBnSs9/rC+J77M2M7xnpn5ua6fe21dyZ6wsuLi/FnTp9edRwnA6DM6PdOcGtiAOFX4E6gTQ1Ek9H4QE9fT09i34F9wY8f/cPK1P6pVRRSaf3GdK3suzrSucNIR9ooBCBkmX4xte61dyd8bD9gg5C4fPlK19Pf+174/PR0dTmVyizfuJFiFQHUbtsgjjOPtdYOg/A81FQyubd3W+/AffcdNv78U8fy23ePbODalWI1m0G+LmUwGEDFdZVN8P1om1+t1QksYUSJhKBAzFI+G+7bedADEJibm+v67lNPhU6eOKGWl5dTGxsbC+9h8FZzrbWDEGhqGv43/+Px3bvHd2LPaPcmsjfcpcWCrFTrpkGuAdjwteVnGo7yqK5Mh5RvmtrqjSjlxbWQkoRhkOywhCr5OpJMup1DQ04ikcCZM2dis7OzxiOPPDL/uxmcbv0cf/SjWE3mzXSpqFOFsrTKNVmu14WjSZqGp+dWHHVh7g0zk0/bItTuDA6OFvbt2tWQsRj5SomurjDqjqTOeFyDla5W/ampKTcej1N7e7svhCjdVpOwOQ1ANEurVyCoeXRAS6vXTelX5ErqKuUq2iiVPOlEA/1rN1OZk8+/MnjHHWO/v/99+/YNjx0T2gw2Rob6Vi9duf7mM6dOp35xeRZKkhO17ZsvnT+fPn78eH58fByvzM6KUdsWViJxe11MgG6lqLF2UMDZELq9Jok8Izd7zl7YLAYL1U0P8X7DDYWT6yvpyle+/fTw/578zh9viwV/TxUzEQ2BXGpd4drKIJW9yXvu2F795EfvoZGdk8qMJCtEKH/mbx/951A0tjje3ePbAVtz+X2wbq/EaA1i7DJ0XpqgTRvalaeig8m00UFWPIZAdzJwYz1tf//spY7P/f3f/dFDn3zwSG35Boobq0ivrehCahVBr443vTCCoSB279qFvuEx0oEotFJYXVv/8Ze+9IW1YlmVlJZQSkP5ytNag1FSGqHOeCxSd9xQvlh0D+6ZSkk+R/hiq3tTTBdAdlrrhoFsxZM365v2CjdEoViL5mfmO6+tbqhDh953+BMf+9AHZ199Tbx6/lxjfvGmWFxYpIZbRySeQCafQygQwpkLb+iuRKceGNgGsgI49P4PHNs2PHHV9chxPQVoQAhSYCl2a1uW3RGNhCq1mpUvlb2R0ZGCJAJ7bOl55vCMwk64tNqLhuOINa+mLuayvVc3a0OpsjMUbg8N7Bgd3ldcuqkf//cvu2enL4qenq5mt2qLOzZTTZE0TahGRaPR0I1CUSwtLIiMY3jCV4We/pFuQJPrumjGZhhCgwi+7yMSCiHWHkWpWkWuWEL/QF+bBMABgnD8nUa5/3nQheuQeyeCph3UlKko6UIEpGW02wGZrLle8sRPX8KO/j7YloFkrF0HTYMEEUxDAQTluA0KtYURjbYhGLDBNVRBgzDc0+39w+ePz9brtapWXFxGK+0TQQIQzQXZrHOI97btSs1pzEqwZgAqPQFZA/zHgO7AMo786Z7efdo0pG9XIhNdlJiyRXy9UQltpDfNLhk0x0Yn8S//dCe++vVv0A9OPUfRaAQCBB8Ab6Q9DXIUoVHz0NTU8JCOlFJiLB4O/eTC/AqAPEOMz9gtGkyKucFcZVYJgMUE4gA2gUNHP/zAw0/+z7/dIxPdQnh10sUsFZYWxOKbF3U4EAbF+3kelpDK5nUqm0PDc7F35wge+9f/kpFwUGkSKCmhDDNAhjQw2N2pjxzcg4bvq/TaOqIdnd5yrqxevHBx/sWXzs8GLanzpcpyy6DPbDI3WybTBCBuAzEHmPqLo4cf/MJf/8l9kwcOmt88dV7F/YJ2Gg2jUq7ojY2szpZrCIdCqqEUza+uq1KhQD2xDhik6cbNJZKmqWGYKCoSiiSBhIy3R/XEYE+94dQws7iO/kRCDA/0y77+/kp//7ZcW8D2Tp86ffWL//nfzwFYY+pMoZVkmQBMMP1T49sf/Me//Pjhhz98V/T/Tl9wf3h2Bj0hwG24hrIjyHtANpOlkF9TkY4YlnJFQ7keTO3qoAAC0kQNRMqwyCEOXyllKiWCktiz6fieRw1NaIpN0/jYqBgdGeVTlstjKpfNFS4++8KZH5599eIFAFnGbWIAOMCMf+Seve9/4M6xgbW1lPv415+lgG3pKgh1xxObFYdqviLblDCFgGVZENKW0rK1kBICgGLqujnaA6bSWnmep4Tn+ZZylGZztYaLSMCE0IpSmQzNXZ/H65dn/ddef93nsRL8wF0H9k5uH45M7hh88+z0pbdal9QCwAAzUsxlQ+trm26qpCnUnkTY1NRgY1VPUc2pUbWQQ61WhSOs5pqwJHmxoPRNQ8BR0EpweETaFFAS2jMBH9JCwwoThOQvHKBMrkDlUhlBy0LYskl7PsFTOHdpxl/NbBb2TI4f/rNPfGwP3pFmYDAfZIbnltJd/cmYfezI3SJbrWPm6jykIGhfk1AKEakpYgLKNFXIMnnmgUwC8RMQQktDakOQ5rb1wwGbzwshzWZ9DTieD9s2yfM9kqZNjuOgWC4TpwyezUoTUaPRME0yXgkHzB987eQzi2jJYO5mupnO+VQuGAqHxeceuh9fe+rn2MwX4CpOqznntE/aVwh18NyTBgztM4p8LqevoQkgoZtBQneEw2QJRZCSrEAIIYM0lE8+mbbibq7zAPfZlgJBCaHu3b+b7t4zFdrMFb/84reePjW9tqZuNTjBxJmOas0JLm9kZTSeoE9/9hFdrjuUzWYFG6Wa4u1D7VR1FHtTkJxWkJNsTlrH8zSg4Wvf0FqLDlsQJwpXEXwuowHNiXJKZEfItOJEQknLdDp4AvQlEjTU1Y2Xf/H6V587+9qzz165ktl6s/BRZh+zlxkSgmJjO4ZkV+82OnjwAIK2JEN73CAGlNaoVqvNJtF1pwHLNME3r6g6LjgYElAgAgiEWt2B5M+YUqLRcFCu1tAsaSIaxvhAD1yOneefkUrnMstrqe//5KVXfgxgjiluvd1aY2JMO2MpdjH31kJbNl+RAAzuXGEYIE4AXE7U6/V3NvV8EPGaywm6LnlKkQFAM811z+dUtYbBHxZEbLJBLq/N8Te5dn3BS3ZE675COpcvXvjZuenTAJYYB1tETB8zyOxkxlqv40yQMRnjPf4/a4a2vEe1juJd9vOZLLPcSuw8s8pkmBqjtiZYaLn3mSqzySSZttYGtMWARuvYgn6NaaMFMfoWGswK81bL5GrLcJ1R2CLZcq0Zr2Uw3Uow1DpPtxhtSt2mQcEYt1zDa5koMXkm3TJWvDW5rfolvxqAFmiL3qMAAAAASUVORK5CYII=",
				nmLogo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABgUlEQVQ4y92SPWsUYRSFn/POzE4MgkhMKyKICAEjiUksgoWClY0WYifKDlj4VyxsDGvlgmhtLUiIkoSNiLEWCwN+dmvAnZl3jkV2lxArSz3d/eDe53Iu/NOabb8J6cHkfLGZbXUWq1E8c2c7kxpPhF8unfPu0bk4qqWqz+jggAtFL6uor9hhLqjZnkwHq7ip+/WRJlF50tYs0oLwF5vdPwhKKCHDguiEfpUBkKh6aMIT8MutzmJ3TDFGb/duA7L91HBTgAEYQlqHgeOH9PPt/oUCWCpezVTk7z1sFpwG7gMt4C64a7QCdGUTVF9LQ/l6feXiN80Xmw8aJ/cQxm6AIKkAXgAfgWnbZyVNgp8bjdAIqi8HW1MMeSUs2MG+ZfsTeMdwQrBs+AAgPAQ1gl0BnC82njVOboxPkGujVHhglMuORonYywfid8nXe52ltbGNC8X6JaNTQapjrGNjchH7VutYnvhHJJ3Cg8+mdXSCr4/XOlcH+7xf1d984Fx7I/D/6Dd9b6wCx93gcQAAAABJRU5ErkJggg==",
				vbLogo: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAACrUExURUxpcahYHvXmtciUVrbSzejKpNzr8f///47A3adRHu3n29zd3cOUct3t9cDj9BFeuTJUoe7EitufUiuGzOrTn5HT+NHdy7Pp+f/0x83m9Pz96n240Pry4DWg2WKn1Nfp9K7f8CthnNurZvz27OrTsP/////+/P757fv+/vL8/+L6/+fy+Pv49f/z2uPSvrDf+Prrysfj4OPDlrqRrsDDrXen15PH3sC918vq/6QbRKQAAAAldFJOUwBxqjlV41VVVTnGqsbxuDmqqqqqOaqOqnGOjqrjqsbGORxxxhxX8ZyaAAAAjElEQVQY043N1xaCMAyA4aKAbPceuNq0FHCP938yU6pU7/yvmu+cNIR8tfGa5KckbuiH18Lcqcx3Ww0HiuUcor2e25kC6tQfdCpg3ffYF7Tu6CMMzUxZD2HMDXB1dmmAnQcI62dhJRC5wvEzmCDMJYQxC1KxCEVRnbnJzwYElgJ7VT6up0t5n41s8kcvaosSk0veKFwAAAAASUVORK5CYII=",
				rat:"data:image/png;base64,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",
				ratMark:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAANCAQAAADLNWwDAAAAV0lEQVQI12NgEGQQZhBhEALSQEqMQQIIgUxxBqmvRyBMKQa5H3cZpIGyDHIMir/fAkkxBgZFa/0/nxgUgQoZVNLsgExloGpkUSS1SCYgmQuxTQwkCncDAH0wFzVj5p2XAAAAAElFTkSuQmCC",
				tiers:"data:image/png;base64,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",
				bad1:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAfCAYAAABtYXSPAAAFVklEQVR42q2Xf0idVRjHu/f95dxVBGvNJlM2lI2hbW5sqMo23SDa2JaOtWBDCuZG2QBawZis0WA4pgtMREUQFXWJiASIGgkgEBWRKSD9GYAVEDQE+qtOzweey7nck12vdODLc5/3fL/f87znx/ve94X/aDEbFc61TXSZtFk2X6PnmGUe2OVYeNZ/aw1BXAWxtN+a66A2p7nXrcYnT/vtZVEQIi3MigONtjAH2qd810N9MzcV2DsIFTmCHfbOMxVjeejQWy+dZS0y86xYUSR48fr169MHDhx4czvFoEOPD372JjefHTu1wM5GflFR0fujo6MmNzf3s97e3pJsioGPDj0++OFriwGW7yyRVp8rSOzZs+fVs2fPfj03N2ck/3xoaKgCYllZWRzs3r3bKy4u9goLCz0iebIPHnx06PHBD1/1j9KWyikkTBYjrbKlpeXvwcHBv2SaKeaLvr6+GsjHjh3zgCyBf/ToUW/fvn0ekTzZBw8+OvT44IdvSjFhWkHO7mcaXwqC4PbMzIwB7e3tJhaLfTkwMNCAoLa2NgCHDx8OGxoa/EOHDvlE8mQfPPjo0Ce98MWfcdzTaWfG152/My8vr6ygoGBgcnLSLCwsmJ6eHmbmK7nT1yCfPHkyBMePH4/Onz8fVFVVBUTyZB88+OjQ44Mfvvgzjo7npy9VLOX0FAr56b1798yjR49Md3e32b9/P8V809nZeQ7y6dOnI1BdXZ3T1NQUnjhxIiSSJ/vgwUeHHh/88MWfcVJOVyy9mEArLZOpfXb37l0zPz9vLl++jAnF/NDV1XUBcmNj4w4gy5F79erVqKamJiKSJ/vgwUeHHh/88MWfcXS84N+KCXVjlQs+qqurMxsbG+bx48dmZGTEYPrkyZNzkM+cOZML6uvrd167di2SGBHJk33w4KNDjw9++OKv48ALbTH2h6+b6uXy8vKnJSUl64uLi6ajo8PIHWPwvRhegCjHdCeQvZGQE5IjMYdInuyDBx8denzwwxd/xtHxfLjpBYXaWSzPiZ/Gx8eN7APDesseYGqXHzx48Ho2xcBHhx4f/PDFn3EYz86M+xqIdPr6Ll26ZNbX141sTjMxMcHMLN+5c6cxm2Lgo0OPD3744q/jRDqu+yrQzhLB22EY/jI2NmbkRJiHDx9isNLW1nb71q1b9YgyNXjw0aHHBz988WccW4zWkLZnIj3/lYL2vXv3/lpRUWHkYUYx38rR7bAFZS4EPjr0+OCHL/46TpS6Z9y3tW7ieDzecvHixefDw8OmsrKSdf5NrrccOXLkQ7cgtxB48NGhxwc/fO3m3fztHRcEinxBred5azdv3jT9/f3m/v37Zmpq6k+5/okYvmULcguhHx58dOjxwQ9f9Q8U8c2KoQVacYXgAzF+Lu8ec/DgQXPjxg3D2u/atWtF+tgPzRSwtLT0jEjOdfrhwUeHHh/88FX/IG1ct6CUv4V5gmrBx3I81xKJxB9RFJn8/HyeFYbNeOXKlRUt4A0iOdfphwcfHXp88MNX/f3NC3H/XEeCAkGd4B3Bp3Jkf29tbTWnTp0y8pQ109PTZnZ21jQ3N68RyblOPzz46NDjo36R8yd+i18Iob7uSwVN8oL7ubS01MgpMcQgCAyPd15+RPLUfvjo0KtPmM2XQSwl+kAN8vTF9q6s/XeCVd/3V2Xw1TAMlwU/Esm5Tj88+OhUH1rPrD7o7LeNxkCPY5XeaavgPUUby0AkB/TDg49O9dYP/6yb+9GVELwiKNJYIigmJ5Kn9Secj8JtNfcLEgR26Yhbyl2fbTcr9pzjb3N7Et1j61mf/6k539FuEXGnL8si/gEY8SzOXUsBvQAAAABJRU5ErkJggg==",
				bad2:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAfCAQAAADHaLwEAAAErklEQVQYGQXAD4yWdR0A8M/39zzv8R4cB4fADmUorjRUmULKNDetVMtcTWdYbra0aJZrjmVZrY1yW26LcmuMZCZrJUbaLEfGRjUczjnHTUXaIADjPzAABLw74O55vg4ACIQQAiEAABAAAAAANSohBIAQAIoCKCAUgAKg0qq1QoVQBAgUFC231mpFqwgpAAqARqCgVdQCIVC0CBW3UVCrhAoFCEARWpWCIpyTAgFaVGgVtdBKKYwJoaUAWnQQ+h968VNfBgAApPa6iz//mn5FkToKgoIQKlCbMOvrd96775aVc7inHtr92+a55vlmRf4uNxy+oY+Vc07fuOhzd680RVFLrZDUSAW1Srlk7lUPzjAys7efPxy9ZeCP0rhhPZbM+MuRBTN6+5vLue32zfOOveeCGuOIgiJUMPHy29994MY19B6btePUwoFXdc1wjX4D1rqn++bho7P39f3H3CkPvj64WEcIIShCIoVJY7fdG9PLpaL3s6tvmHq/p/zckJPW+4Ufme/OvgWr9V3veHlEfZepoJKylopQK5OnVtdcMNWgLAe6w/6kccI9jjvrFdN0nPPuRD2TdHVcmD0w+9QZjUaIgkSr67uPLdllu2foG467DHlUOGXEB3q87IsuMTlMfMGQNzy6aOA3eoVQyQJCMe2ji1sLbfItej5w0gW11Dprkta4fpUPQ/chZ7SutH9Av0qtFQWEEPnOG252g9k4oeO0Lnaba4LWMWmm0VR6LPAVmzVb9SlaKYuQWq3TVwzuP7xZWkXbNe6499CrOKG1117TzQ2xzg7HbBydc9wZqQhRpFDQyS89PWuF5/SI6ixG3GyK804aMMsFl5niQirTrbfU97tXLBZohCxIjTRx58aXrDDdd6S+5oQXHbDEJHuEJ822xVsuauV95nrS8diwTZ8WjSxCgPPe/ueRjb5qF+XA818b2+igtThqj997xZD7muVb1f9zla5fj3nZKakIKiFVinPONWeGrt7et92RfX17tu5/ev4yZ1xmkU3escvjtu38wq5/j47O3+m1kcNrm/X2GTMmKRIpNY6W/df3PqH1yUvf2la2/PKlpec7xpzWY6Inxg7um/bmj/81eOWwb7uzro/Y7ZxGKNQgpcZou+sfhwb7H3Nw5vxn7/9VvDpt+IGHX7fQVo84dOTvK0fHf7rsE7P3KFaPj7ytQUoJUNDR41o/KKevznm5JJfnzPc93rPqm9nJZdlZa2nPxp/kUzkvP511Y5Wb9KoVRQGgqFUmu8my2Nb34YTsz0tzTS5+3/Jn01+v2/S3/ExOyQk5eaTssdLdpuvqCAQBQmgVHb2ucYVr7/jG3Gk71L6n62eHll48aI0tFhoe+/MLthmy3UljQoskAFBJtSkmWTD5mYvmzHLYQYvc6r826JrnmBOjJ39ovVNGjUutFJIAhBQqFBMMuqM8rFuEaERoa23ThmaddXb4SCuFRkgIANRaIVWmucRlpusgjOhRS+mE/9tr2HnjQiskEACAUGmFXv1S6Gg0KjQ6RjTOSq1UpAQIABAIiVoqWiEVoVU0WiGMCyQABACAkCqNokiNIgVSoBUILQBQAQAAAAgpERIhkQAAHwPlu9kMCvbXiAAAAABJRU5ErkJggg==",
				miss: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAcCAMAAAAz6Z0tAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAA5UExURUxpcdkCCP8KJP8MJtIAAdkEC88AANAAAP8LJusHGM8AAM8AAM8AAM8AAP8OKf8OKdAAAP8MJ88AAK2kIk4AAAATdFJOUwBH1rffDcv+/if1nzhijVC68IB97NktAAAAjElEQVQoz+3RSxIDIQgEUBkQ8K9z/8OOJi4l2afS5c6nXahzvx3fKmJt3hYBh84MDKa4dNTW6qWXYTzqey+g9HNXG2OfDxThSKpW2OaWdCSozQEJTwPSj6TLvD2/jEWS3G4bq6hEWnOsLorlPHSXtI2w8cCrowAUEsrW82aOEufi/OEbS2JOxbt/vucBz3AEu+Dj2y4AAAAASUVORK5CYII=",
				sparks: "data:image/png;base64,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",
				blueMsg: "data:image/png;base64,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",
				wgLogo: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAG2UExURXiw+HLC5Yji84DB0woUGILK3g0VGEZcdR44SA8bHozU8Ds9QCg1NSI3O4PJ70VcYYqvu6vBxw0bJA8WFxMjJxQWFhMZJQ4YHBEWGBoaGCAhHxIaHRwdG0NFRikvLyQuL2aXsJDU9np6fKW0u9na3+jm57rCxhcZFQ8VFyMjITAxMRcZFycoJzM0MxoaGQ8VF0pMTi0vLT5CQDA3OjI2NDM1MlhaW1FTUzhUZ0pOTnZ3d32BgI2Sko6Vl26gsVmCkFxnZ3CAhsfLy5q2v6Cqr8HIzKSpqpqfobe+wc/T1sbO08zQ0RoqL4CxwUJGSj5CRUFER2ZqbZaWl8a/wY9vcskiHjU2ODo9P1VXWUtMTlBJTF9dX32DhVkGBsDBw56anN/T1bCztN3d32wkJ9QJCce4uaBqbD8eH3JhYl1ERVIdHUtERm5naVMBAYyRk2sXF3BKSpdMTZIpKWlkZYxFR24DApxXV50EA5QeINbOzs7HyHFpansDA8tnaJSLjZMQD5IQEenf36wnLNJaYvtCDq8xE/QWFfwxHLRFKOUcBuva36Z5e9giH6+JjKEUF9RVSfdBQ6CisIhPiQ4AAABOdFJOUwQHCxsrFk0CBzcR9g0pCxItRBtoIJ4URny4sFqm8GJSFQ/9Xej+78qD5O2x1u3JkPGSz0p0zv2iG4+xnaKPLiVgX8I4Z6fN8Oux4+UvI/Wmz6gAAAELSURBVBjTDcjTlsMAFADAmzZumtrm2mbXPKdJ26S21rZt//FmHgcIQFgPptZo1BjNIkAAgcjo6cXlYHBpVo15WACQYTML10K9/hXz++S0DID2zQs398W7D7Hm18ilCM1d3D68R2ufz99nU+MAyES0chX4e3p9+a0eByYxUI1mDsvlytvjT0zcL47JQTWcLuRLl1XxvLS3ExuRYiCZ3T44Ojn1FnbX80NuYHr7U5GNrZyQ3cyteZ1uIHu6E3xqNRrJpFcifa5BIJVdnXEuHOa5eNJhdymlcFodPJeQTtHeYaOA1FI6a2ubQtHc1GAw4ygQjJ6yme0WS4uhUYejRiAI0qhHKROOmyhUy5D/T8Y4lZQQWWoAAAAASUVORK5CYII="
			}
		};

		// style contents
		styleText = styleText.concat([
			// global rules
			"h3, h4 {margin: 0 0 15px; text-align: center;}",
			"h5 {margin: 5px 0 8px;}",
			"p, .reg-KR p {margin: 0;}",
			".reg-KR p {line-height: 133%;}",
			"table {width: 100%;}",
			".b-profile-wrpr, .b-header-h1__profile {text-shadow: 0px 0px 1px rgba(27,27,28, 1), 0px 0px 2px rgba(27,27,28, 1), 0px 0px 3px rgba(27,27,28, 1), 0px 0px 4px rgba(27,27,28, 1);}",
			".b-hr-layoutfix__small-indent-bottom {margin: 0px 0 -10px;}",
			".js-account_game_ban_info_msg {display: none !important;}",
			// page/content-wrapper rules
			".page-wrapper__old .nav-submenu_item {padding: 0 1.25%;}",
			".content-wrapper__old p {margin: 0;}",
			".content-wrapper__old p.b-fame-message, .b-fame-message {display: table; color: #B1B2B2; margin: 0px auto 14px;}",
			// nav bar user info rules
			".b-user-data {position: absolute; top: 0; right: 10%;}",
			".t-user-data {margin: 6px 0; font: 14px robotocondensedbold,'Arial Narrow',Arial,sans-serif;}",
			".t-user-data td {padding: 0 5px;}",
			".t-user-data td:last-of-type {text-align: right;}",
			".currency-gold, .currency-credit, .currency-experience {font-weight: unset;}",
			// header rules
			".b-header {height: 194px;}",
			".b-logo {height: 175px; top: 45px;}",
			// container wrapper
			".l-container-wrapper {background: none;}",
			// content width
			".l-content {width: 955px}",
			// background rules
			".b-background {display: flex; opacity: 0.25; position: absolute; width: 100%; z-index: -1;}",
			".b-background img {width: 100%;}",
			// profile wrapper rules
			".b-profile-wrpr {margin: 20px 0 0;}",
			".b-profile-wrpr td {font-weight: bold; line-height: 133%;}",
			".b-profile-wrpr .t-profile-table a, .b-profile-wrpr #js-profile-clan-table a {background: url("+css.l[1]+") no-repeat 0 2px; color: #CACBCC; padding: 0 0 0 10px;}",
			".b-profile-wrpr .t-profile-table a:hover, .b-profile-wrpr #js-profile-clan-table a:hover {background: url("+css.l[1]+") no-repeat -244px 2px; color: #FFFFFF;}",
			".b-profile-wrpr .b-profile-header {position: absolute; width: 750px; top: -4px;}",
			".b-profile-wrpr .b-ratingsClip {display: inline-block;}",
			".b-profile-wrpr .b-ratingsButton {"+css.input+" display: block; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding: 7px 7px 6px;}",
			".b-profile-wrpr .b-ratingsButton:hover {background-color: #282828; cursor: pointer;}",
			".b-profile-wrpr .b-profile-error {background: rgba(81,0,0,0.5); border: 1px solid #510000; box-shadow: 0 0 3px #733232; color: #CACBCC; display: none; padding: 3px; text-align: center; margin: 0 auto;}",
			// b-info-block rules
			".b-profile-wrpr .b-info-block {display: inline-block; width: 745px;}",
			".b-profile-wrpr .b-info-block > div {min-height: 118px;}",
			// profile player rules
			".b-profile-wrpr .b-profile-name {display: table-cell; margin: 0; max-width: unset; width: 50%;}",
			".b-profile-wrpr .b-profile-name table {font-family: Arial;}",
			".b-profile-wrpr .b-profile-name td:first-child {white-space: nowrap;}",
			".b-profile-wrpr .b-header-h1__profile {display: inline-block; margin: 0; padding: 0 0 6px; max-width: 375px;}",
			".b-profile-wrpr .b-header-h1__profile.b-account-type__premium {background-position: right top; background-repeat: no-repeat; color: #FFC364; max-width: 350px; padding: 0 25px 6px 0;}",
			".b-profile-wrpr .b-header-h1__profile .i-profile-flag {border: 1px solid rgba(27,27,28, 0.5); margin-left: 2px; vertical-align: super;}",
			// profile clan rules
			".b-profile-wrpr #js-clan-block-container {display: table-cell; width: 50%;}",
			".b-profile-wrpr .b-profile-clan {display: flex; float: none; margin: 0; padding: 0;}",
			".b-profile-wrpr .b-photo {min-height: 52px;}",
			".b-profile-wrpr .b-profile-clan .b-text {margin: 3px 0 0 0;}",
			".b-profile-wrpr .b-profile-clan .b-text-wrpr {margin: 0; max-width: 310px; padding: 0 0 4px 0;}",
			".b-profile-wrpr a.b-link-clan, .b-link-clan a {display: inline;}",
			".b-profile-wrpr .b-statistic {margin: 0;}",
			".b-profile-wrpr .b-statistic_item {color: #979899;}",
			".b-profile-wrpr #js-clan-block-container table {font-family: Arial;}",
			".b-profile-wrpr #js-clan-block-container td:first-child {white-space: nowrap;}",
			".b-profile-wrpr .b-profile-noclan {margin: 16px 0 13px 0;}",
			// profile clan history rules
			".b-profile-wrpr .b-clanHistory-wrpr {font-family: Arial; margin: 0 0 10px 0; width: 715px;}",
			".b-profile-wrpr .b-clanHistory-wrpr span {display: inline-block; font-weight: bold; line-height: 133%;}",
			".b-profile-wrpr .b-clanHistory-wrpr .clanname {padding: 0 2px 0 0;}",
			".b-profile-wrpr .b-clanHistory-wrpr .clantag {padding: 0 2px;}",
			".b-profile-wrpr .b-clanHistory-wrpr .clantag.curr a {color: #F9D088;}",
			".b-profile-wrpr .b-clanHistory-wrpr a {color: #CACBCC;}",
			".b-profile-wrpr .b-clanHistory-wrpr a:hover {color: #FFFFFF;}",
			// campaign rating rules
			".b-profile-wrpr #js-knockout-fame-points {}",
			".b-profile-wrpr #js-knockout-fame-points.b-fame-points-empty {margin: 0 0 10px 0;}",
			".b-profile-wrpr .b-header-h3__user-account {display: none;}",
			".b-profile-wrpr .b-time {margin: 0;}",
			".b-profile-wrpr .b-tabs {padding-top: 0;}",
			".b-profile-wrpr .b-tabs-list {display: table; margin: 0 auto;}",
			".b-profile-wrpr .b-main-divider {margin: 0 auto; left: 0; right: 0;}",
			".b-profile-wrpr .l-tabs__top-indent {margin: 0;}",
			".b-profile-wrpr .b-fame-list {padding: 0; margin: 0 0 5px 0;}",
			".b-profile-wrpr .b-fame-indicators__one-country {background-color: unset; border-radius: 10px 10px 0 0; margin: 0 0 -1px 0; padding: 10px 20px 10px;}",
			".b-profile-wrpr .b-fame-list_item {padding: 0 10px; text-align: center;}",
			".b-profile-wrpr .b-fame-list_count {display: table; margin: 0 auto;}",
			".b-profile-wrpr .b-link-list {text-align: center;}",
			".b-profile-wrpr .b-link-list_item {padding: 0 8px;}",
			// sidebar rules
			".b-profile-wrpr .l-sidebar {margin: 0; position: absolute; right: 0; top: -1px; width: auto;}",
			".b-profile-wrpr .b-context-menu {background: url("+css.u.menu+") repeat-y; border-right: 1px solid black; margin: 0; width: 200px; z-index: 3;}",
			".b-profile-wrpr .b-context-menu_wrapper {padding: 10px 0 5px;}",
			".b-profile-wrpr .b-context-menu-list {line-height: 16px;}",
			".b-profile-wrpr .b-context-menu-list a {background-position: 0 50%;}",
			".b-profile-wrpr .b-context-menu-list a:hover {background-position: -244px 50%;}",
			".b-profile-wrpr .b-context-menu-list .current-page a {background-position: -244px 50%;}",
			".b-profile-wrpr .b-context-menu-list li {padding: 4px 3px 4px 12px;}",
			// sidebar messages wrapper rules
			".b-profile-wrpr .l-side-msg {position: absolute; left: 201px; text-align: center; top: 77px; width: 192px;}",
			".b-profile-wrpr .b-sidebar-widget__comparison {background-color: #000000; border: 1px solid #000000; margin: 0; position: absolute; left: 201px; top: 51px; width: 192px;}",
			".b-profile-wrpr .b-sidebar-widget {margin: 0;}",
			".b-profile-wrpr .b-sidebar-widget_inner {padding: 10px}",
			".b-profile-wrpr .b-sidebar-widget_inner__comparison {display: table; margin: 5px auto; padding: 0;}",
			".b-profile-wrpr .b-sidebar-widget_title {margin: 0 0 5px; text-align: center;}",
			".b-profile-wrpr .b-sidebar-widget_text {margin: 0 0 5px;}",
			".b-profile-wrpr .b-box-shadow.js-recruitstation-recommended-widget {margin: 0; width: 242px;}",
			".b-profile-wrpr .l-sidebar .b-b4r {height: 52px; overflow: hidden; position: absolute; top: 0; left: 201px;}",
			".b-profile-wrpr .l-sidebar .b-b4r_link img {width: 192px;}",
			// userblock wrapper rules
			".b-userblock-wrpr .b-user-block {background-color: unset; margin: 0;}",
			".b-userblock-wrpr .b-user-block:first-of-type {display: none;}",
			".b-userblock-wrpr .b-user-block__sparks {background-image: url("+css.u.sparks+"); border-radius: 0 0 10px 10px;}",
			".b-userblock-wrpr .b-user-block__sparks.b-user-block_sparks-radius {border-radius: 10px;}",
			".b-userblock-wrpr .b-personal-data {min-height: 180px; padding: 0 20px 15px;}",
			".b-userblock-wrpr .t-personal-data_ico {padding: 82px 5px 0;}",
			".b-userblock-wrpr .t-personal-data_ico__hitrate {background: url("+css.u.icon1+") no-repeat 50% 50px;}",
			".b-userblock-wrpr .t-personal-data_ico__tier {background: url("+css.u.icon2+") no-repeat 50% 50px;}",
			".b-userblock-wrpr .t-personal-data_value {font-size: 28px; line-height: 100%;}",
			".b-userblock-wrpr .t-personal-data_value.t-personal-data_value__pr {font-size: 36px;}",
			".b-userblock-wrpr .b-speedometer-body {background-color: unset; padding: 20px 50px;}",
			".b-userblock-wrpr .b-speedometer {width: 33.3333%}",
			".b-userblock-wrpr .b-message-ban-holder {display: none; position: absolute; width: 620px;}",
			".b-userblock-wrpr .b-message-error {margin: 0; min-height: 48px;}",
			".b-userblock-wrpr .b-message-battle-holder {display: none; position: absolute; width: 637px; right: 0;}",
			".b-userblock-wrpr .b-message-battle {background: url("+css.u.blueMsg+") no-repeat 0 0; margin: 0; min-height: 48px; text-align: right; padding: 15px 48px 13px 13px;}",
			".b-userblock-wrpr .t-ratings-info {table-layout: fixed;}",
			".b-userblock-wrpr .t-ratings-info th {font-size: 13px; font-weight: bold; line-height: 133%; padding: 20px 0 0;}",
			".b-userblock-wrpr .t-ratings-info td {font-family: 'WarHeliosCondCBold','Arial Narrow',arial,sans-serif; font-size: 36px; line-height: 133%}",
			".b-userblock-wrpr .t-ratings-info .rating-url_nm {background: url("+css.u.nmLogo+") no-repeat left center; padding: 0 0 0 20px;}",
			".b-userblock-wrpr .ratings-table {background: url("+css.l[3]+") no-repeat 50% 0; padding: 20px 25px 10px;}",
			".b-userblock-wrpr .t-table-ratings {width: 100%;}",
			".b-userblock-wrpr .t-table-ratings td {line-height: 130%; padding: 9px 12px 2px 0; vertical-align: bottom;}",
			".b-userblock-wrpr .t-table-ratings .td-center {line-height: 16px; padding: 9px 0 2px; text-align: center;}",
			".b-userblock-wrpr .t-table-ratings .td-rating-meter {background: url("+css.l[3]+") no-repeat 50% 100%;}",
			".b-userblock-wrpr .t-table-ratings .td-rating-meter td {padding: 0;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter {background: url("+css.u.rat+") no-repeat; border: 1px solid #252527; border-radius: 3px; height: 3px; margin: 0 7px;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter-dail_line {background: url("+css.u.rat+") no-repeat; box-shadow: 0 0 10px 1px rgba(221, 84, 12, 0.15), 0 0 3px 1px rgba(133, 18, 11, 0.25); height: 3px; width: 0;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter-marker {background: url("+css.u.ratMark+") no-repeat; float: right; height: 13px; margin: -5px -2px 0 0; width: 5px;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter_wn8 {background-position: 0 0;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter_wn8 .rating-meter-dail_line {background-position: 0 -3px;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter_wn7 {background-position: 0 -6px;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter_wn7 .rating-meter-dail_line {background-position: 0 -9px;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter_eff {background-position: 0 -12px;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter_eff .rating-meter-dail_line {background-position: 0 -15px;}",
			".b-userblock-wrpr .t-table-ratings .b-stat-fun {height: 16px;}",
			".b-userblock-wrpr .t-table-ratings .i-stat-fun {margin-top: -9px;}",
			".b-userblock-wrpr .wnelink {padding: 5px 25px 5px 0; text-align: right;}",
			".b-userblock-wrpr .wnelink_info {background-image: url("+css.l[4]+"), url("+css.l[2]+"); background-position: 4px 0px, right 0; padding: 0 9px 0 20px;}",
			".b-userblock-wrpr .wnelink_info:hover {background-position: 4px -17px, right -22px;}",
			// statistics wrapper rules
			".b-statistics-wrpr {margin: 0 0 35px;}",
			".b-statistics-wrpr .l-tabs__top-indent {margin: 0;}",
			".b-statistics-wrpr .b-tabs-list {display: table; margin: 0 auto;}",
			".b-statistics-wrpr .b-tabs-list_link {cursor: pointer;}",
			".b-statistics-wrpr .b-main-divider {margin: 0 auto; left: 0; right: 0;}",
			".b-statistics-wrpr .b-fame-indicators__one-country {background-color: unset; border-radius: 10px 10px 0 0; margin: 0 0 -1px 0; padding: 10px 20px 10px;}",
			".b-statistics-wrpr .b-fame-indicators {border-radius: 10px; padding: 20px 8px;}",
			".b-statistics-wrpr .b-tabs {padding-top: 0;}",
			".b-statistics-wrpr .b-tabs > div {display: none; margin: 0 auto}",
			".b-statistics-wrpr .b-tabs .js-stat_active {display: table;}",
			".b-statistics-wrpr .b-tab-clan .b-result {width: 296px;}",
			".b-statistics-wrpr .b-tab-more .b-result {width: 420.5px; padding: 0 18px;}",
			".b-statistics-wrpr .b-tab-strong .b-result {padding: 0 40px;}",
			".b-statistics-wrpr .b-tab-team .b-result {padding: 0 40px;}",
			".b-statistics-wrpr .b-tab-other .b-result {width: 296px;}",
			".b-statistics-wrpr .b-tab-more .b-result td:last-of-type {min-width: 45px;}",
			".b-statistics-wrpr .t-dotted td {line-height: 23px; padding: 0;}",
			".b-statistics-wrpr .t-dotted tr:hover td {color: #79797A;}",
			".b-statistics-wrpr .t-dotted td.t-dotted_class-ico {line-height: 13px;}",
			".b-statistics-wrpr .t-dotted td.t-dotted_class-ico img {margin: 2px 0 -1px;}",
			".b-statistics-wrpr .b-result, .b-result-classes {float: none; display: inline-block; margin: 0; padding: 0 8px; vertical-align: top; width: 317px;}",
			".b-statistics-wrpr .b-result .t-dotted__fixed {table-layout: auto;}",
			".b-statistics-wrpr .b-result-classes {width: 255px;}",
			".b-statistics-wrpr .b-result-classes span {color: #606061; display: inline-block; width: 48px;}",
			".b-statistics-wrpr .b-result-api h3 {background: url("+css.u.wgLogo+") no-repeat right 2px top 2px;}",
			".b-statistics-wrpr .t-dotted td {background: url("+css.l[3]+") no-repeat 50% 100%;}",
			".b-statistics-wrpr .b-stat-legend {line-height: 15px; margin-top: 20px; text-align: center;}",
			// cake diagram rules
			".b-diagrams-sector {margin: 0 0 35px;}",
			".b-diagrams-sector h3 {text-align: center;}",
			".b-diagrams-sector .b-diagram-block {display: table-cell; float: none; padding: 0 2px; width: 33.335%;}",
			".b-diagrams-sector .b-diagram-wrpr {float: none; margin: 0 auto;}",
			".b-diagrams-sector .t-dotted.t-dotted__diagram {margin-top: 0px; width: 100%;}",
			".b-diagrams-sector .t-dotted_diagram-bg {position: unset;}",
			".b-diagrams-sector .t-dotted_diagram-percent {display: inline-block; width: 40px;}",
			".b-diagrams-sector .b-diagram-total {margin: 25px 0 0;}",
			".b-diagrams-sector .b-diagram-tiers .js-results {display: inline-block; margin: 0 0 0 30px; text-align: right; width: 14px;}",
			".b-diagrams-sector .b-diagram-tiers .t-dotted_diagram-percent {margin: 0 0 0 3px; width: 52px;}",
			".b-diagrams-sector .b-diagram-ico_tier {background: url("+css.u.tiers+") no-repeat; padding-left: 30px;}",
			".b-diagrams-sector .b-diagram-ico_tier-1 {background-position: 4px 1px;}",
			".b-diagrams-sector .b-diagram-ico_tier-2 {background-position: 4px -14px;}",
			".b-diagrams-sector .b-diagram-ico_tier-3 {background-position: 4px -29px;}",
			".b-diagrams-sector .b-diagram-ico_tier-4 {background-position: 4px -45px;}",
			".b-diagrams-sector .b-diagram-ico_tier-5 {background-position: 4px -59px;}",
			".b-diagrams-sector .b-diagram-ico_tier-6 {background-position: 4px -74px;}",
			".b-diagrams-sector .b-diagram-ico_tier-7 {background-position: 4px -89px;}",
			".b-diagrams-sector .b-diagram-ico_tier-8 {background-position: 4px -104px;}",
			".b-diagrams-sector .b-diagram-ico_tier-9 {background-position: 4px -120px;}",
			".b-diagrams-sector .b-diagram-ico_tier-10 {background-position: 4px -134px;}",
			".b-diagrams-sector .t-dotted__diagram tr td.t-dotted_diagram-last {width: 0;}",
			// achievement wrapper rules
			".b-achievements-wrpr {margin: 0 0 50px;}",
			".b-achievements-wrpr .b-vertical-arrow {display: table; margin: 8px auto 0; padding: 2px 10px 0;}",
			".b-achievements-wrpr .js-short-achievements {margin: 15px 0 0;}",
			".b-achievements-wrpr .js-full-achievements {margin: 0 37px 0;}",
			".b-achievements-wrpr .b-achivements {display: table; margin: 0 auto; padding: 0 0 20px;}",
			".b-achievements-wrpr .b-achivements-head {margin-top: 15px;}",
			".b-achievements-wrpr .b-achivements_item {display: inline-table; float: unset; margin: 5px 5px 0;}",
			".b-achievements-wrpr .js-full-achievements #js-achivement-scout {margin-left: 325px;}",
			".b-achievements-wrpr .js-full-achievements #js-achivement-tankExpert1 {margin-left: 245px;}",
			".b-achievements-wrpr .js-full-achievements #js-achivement-medalTamadaYoshio {margin-left: 45px;}",
			".b-achievements-wrpr .js-full-achievements #js-achivement-noMansLand {margin-left: 85px;}",
			".b-achievements-wrpr .js-full-achievements #js-achivement-ironMan {margin-left: 205px;}",
			".b-achievements-wrpr .js-full-achievements #js-achivement-medalKay {margin-left: 85px;}",
			".b-achievements-wrpr .js-full-achievements #js-achivement-stormLord {margin-left: 125px;}",
			".b-achievements-wrpr .js-full-achievements #js-achivement-readyForBattleLT {margin-left: 245px;}",
			// global rating rules
			"#js-knockout-ratings {margin: 0 0 35px;}",
			"#js-knockout-ratings .b-composite-heading {margin: 21px 0 15px 400px; width: 553px;}",
			"#js-knockout-ratings .b-profile-ratings-date {margin-top: 1px}",
			"#js-knockout-ratings .b-leadership-info {display: table; margin: 0 auto;}",
			"#js-knockout-ratings .b-profile-link {display: table; margin: 14px auto 0}",
			"#js-knockout-ratings .b-msg-important__rating {display: table; margin: 5px auto 0;}",
			"#js-knockout-ratings .b-rating-dial__user {display: table; margin: 30px auto 22px;}",
			"#js-knockout-ratings .b-orange-arrow__leadership {display: table; margin: 25px auto 0;}",
			"#js-knockout-ratings .b-leadership-rating-text {text-align: center;}",
			"#js-knockout-ratings .l-leadership-info-alignment {text-align: center;}",
			// vehicle table rules
			".b-vehicles-wrpr {margin: 20px 0;}",
			".b-vehicles-wrpr .b-vehicles-header {display: table; margin: 0 auto 15px}",
			".b-vehicles-wrpr .b-profile-vehicles-tankstat {margin: 0; position: absolute; right: 15px;}",
			".b-vehicles-wrpr .b-profile-vehicles-tankstat_link {background-image: url("+css.u.vbLogo+"), url("+css.l[2]+"); background-position: left center, right 0px; padding: 0 9px 0 20px;}",
			".b-vehicles-wrpr .b-profile-vehicles-tankstat_link:hover {background-position: left center, right -22px;}",
			".b-vehicles-wrpr .t-profile__vehicle .t-profile_right {text-align: center;}",
			".b-vehicles-wrpr .t-profile_dropdown-ico .tablesorter-header-inner {display: inherit;}",
			".b-vehicles-wrpr .t-profile_tankstype-prem td {border-top: 2px dashed #212123;}",
			".b-vehicles-wrpr .t-profile_tankstype-prem .b-tankstype-text {color: #FFC363;}",
			".b-vehicles-wrpr .t-profile_tankstype-prem.t-profile_tankstype__empty .b-tankstype-text {color: rgba(255, 195, 99, 0.3);}",
			".b-vehicles-wrpr .t-profile_tankstype-miss .b-tankstype-text {color: #D00900;}",
			".b-vehicles-wrpr .b-tankstype-ico__miss {background: url("+css.u.miss+") no-repeat center center;}",
			".b-vehicles-wrpr .t-profile .t-profile_tankstype td {height: 50px; padding: 0; vertical-align: middle;}",
			".b-vehicles-wrpr .b-tankstype-ico {display: table-cell;}",
			".b-vehicles-wrpr .b-tankstype-ico__lighttank {background-position: 0 -114px;}",
			".b-vehicles-wrpr .b-tankstype-ico__mediumtank {background-position: 0 -173px;}",
			".b-vehicles-wrpr .b-tankstype-ico__heavytank {background-position: 0 5px;}",
			".b-vehicles-wrpr .b-tankstype-ico__at-spg {background-position: 0 -232px;}",
			".b-vehicles-wrpr .b-tankstype-ico__spg {background-position: 0 -54px;}",
			".b-vehicles-wrpr .b-tankstype-ico__prem {background-position: 0 -291px;}",
			".b-vehicles-wrpr .b-tankstype-ico__ten {background: none; color: #BBB7AC; font-size: 17px; font-weight: 100; padding: 0 0 3px; text-align: center;}",
			".b-vehicles-wrpr .b-tankstype-text {display: table-cell; height: inherit; vertical-align: middle;}",
			".b-vehicles-wrpr .t-profile .t-profile_tankstype__item td {height: 40px; padding: 0; vertical-align: middle;}",
			".b-vehicles-wrpr .t-profile .t-profile_tankstype__item:hover td {background: rgba(0, 0, 0, 0.04); border-bottom: 1px solid rgba(255, 255, 255, 0); color: #BABCBF;}",
			".b-vehicles-wrpr .t-profile .t-profile_tankstype td.t-profile_center div.hidden {display: none;}",
			".b-vehicles-wrpr .t-profile .t-profile_tankstype td.t-profile_center span:first-of-type {margin-right: 5px;}",
			".b-vehicles-wrpr .t-profile .t-profile_tankstype td.t-profile_center span:last-of-type {margin-left: 5px;}",
			".b-vehicles-wrpr .b-armory-wrapper {height: inherit; margin: 0; padding: 0; width: 160px;}",
			".b-vehicles-wrpr .b-armory-wrapper .b-armory-level {display: table-cell; font-size: unset; height: inherit; position: unset; vertical-align: middle; left: 0; top: 0;}",
			".b-vehicles-wrpr .b-armory-wrapper img.png {height: 64px; margin: -50px 0 0 24px;}",
			".b-vehicles-wrpr .b-name-vehicle {color: #BBB7AC; display: table-cell; height: inherit; vertical-align: middle;}",
			".b-vehicles-wrpr .b-name-vehicle.b-gold-name {color: #FFC363;}",
			".b-vehicles-wrpr .b-name-vehicle.b-red-name {color: #D00900;}",
			".b-vehicles-wrpr .t-profile_dropdown-link {display: inherit;}",
			".b-vehicles-wrpr .js-error-data {text-align: center;}",
			".b-vehicles-wrpr .b-msg-error {display: table; margin: 0 auto;}",
			".b-vehicles-wrpr .b-vehicle-detail_txt {margin: 0 auto 4px; text-align: center; width: 768px;}",
			".b-vehicles-wrpr .b-vehicle-detail_link {display: table; margin: 0 auto;}",
			".b-vehicles-wrpr .b-vehicle-slider {margin: 23px 64px 17px}",
			".b-vehicles-wrpr .b-vehicle-slider_inner {width: 741px;}",
			".b-vehicles-wrpr .b-vehicle-slider_prev {left: -12px;}",
			".b-vehicles-wrpr .b-vehicle-slider_next {right: -12px;}",
			".b-vehicles-wrpr .b-vehicle-minitable {margin: 0 43px; width: 350px;}",
			".b-vehicles-wrpr .b-vehicle-minitable__right {float: left;}",
			// profile navigator
			".b-profile-nav {font-family: Arial; font-size: 13px; text-align: center;}",
			".b-profile-nav-top {max-width: 135px; left: 0; margin: 0 auto; padding: 8px 0px 8px; position: absolute; right: 0; top: 0; z-index: 1000;}",
			".wrapper-dropdown .b-profile-nav {float: left; padding: 7px 0 0;}",
			".b-profile-nav a {background: url("+css.l[5]+") no-repeat; cursor: pointer; margin: 0 10px 0 0; padding: 0 10px;}",
			".b-profile-nav a.top {background-position: 100% 0px;}",
			".b-profile-nav a.top:hover {background-position: 100% -36px;}",
			".b-profile-nav a.bot {background-position: 100% -18px;}",
			".b-profile-nav a.bot:hover {background-position: 100% -54px;}",
			".b-profile-nav span {border-bottom: 1px dashed;}",
			// multiple usage rules
			".b-orange-arrow__heading, .b-profile-ratings_link {margin: 4px 0 0;}",
			// region spesific rules
			"body.reg-KR h1, body.reg-KR .b-header-h1 {line-height: 1;}",
			".b-diagrams-sector .reg-RUS .b-diagram-tiers .js-results {margin: 0 0 0 15px;}",
			".b-achievements-wrpr .reg-KR .js-full-achievements {margin: 0 34px 30px;}",
			// element display state rules
			".b-display-none, .b-profile-wrpr .b-clanHistory-wrpr span.b-display-none {display: none;}",
			".b-display-block {display: block !important;}",
			".b-display-table {display: table !important;}"
		]);
		// applies relevant style for own profile
		if (wg.own) {
			styleText.push(
				".b-context-menu-list__bottomindent {border-bottom: 1px dashed #212123; max-height: 115px; margin: 0; padding-bottom: 4px; overflow: hidden; transition: max-height 0.15s ease-out;}",
				".b-context-menu-list__bottomindent:hover {border: none; max-height: 300px; transition: max-height 0.25s ease-in;}"
			);
		}
		style.textContent = styleText.join("");
		// end style

		// formula calculations and variables
		// premium tanks up to 0.9.14
		var premArr = [
			// russian
			"tetrarch_ll", "bt-sv", "m3_stuart_ll", "t-127", "r86_ltp", "r105_bt_7a", "valentine_ll",
			"a-32", "r118_t28_f30", "matilda_ii_ll", "r108_t34_85m", "r117_t34_85_rudy", "t44_85", "t44_122", "r112_t54_45", "r127_t44_100_p", "object_907", "r120_t22sr_a22",
			"churchill_ll", "r38_kv-220_action", "r38_kv-220", "r114_object_244", "r71_is_2b", "object252", "r54_kv-5", "r113_object_730", "r115_is-3_auto", "r110_object_260",
			"su76i", "su_85i", "su100y", "su122_44", "r116_isu122c_berlin", "r111_isu130",
			// german
			"h39_captured", "g108_pzkpfwii_ausfd", "g36_pzii_j", "t-15", "g117_toldi_iii",
			"g34_s35_captured", "g100_gtraktor_krupp", "g46_t-25", "pziv_hydro", "g107_pzkpfwIII_ausfk", "pzv_pziv", "pzv_pziv_ausf_alfa", "pziv_schmalturm", "g78_panther_m10", "g106_pzkpfwpanther_ausff", "g119_pz58_mutz", "g105_t-55_nva_ddr",
			"b-1bis_captured", "lowe", "g92_vk7201",
			"g104_stug_iv", "dickermax", "g48_e-25", "g65_jagdtiger_sdkfz_185", "g112_kanonenjagdpanzer",
			// american
			"t2_lt", "t1_e6", "t7_combat_car", "m22_locust", "mtls_1g14",
			"a78_m4_improved", "ram-ii", "m4a2e4", "a104_m4a3e8a", "a86_t23e3", "a80_t26_e4_superpershing", "t95_e2", "a63_m46_patton_kr", "m60", "a95_t95_e6",
			"t14", "a13_t34_hvy", "a45_m6a2e1",
			"a101_m56", "a102_t28_concept",
			// french
			"f69_amx13_57_100", "f69_amx13_57_100_grandfinal",
			"f68_amx_chasseur_de_char_46", "f73_m4a1_revalorise",
			"f65_fcm_50t",
			"fcm_36pak40",
			"f28_105_lefh18b2",
			// british
			"gb76_mk_vic",
			"gb68_matilda_black_prince", "gb85_cromwell_berlin", "gb70_n_fv4202_105",
			"gb51_excelsior", "gb63_tog_ii", "gb52_a45",
			"gb71_at_15a",
			"gb78_sexton_i",
			// chinese
			"ch24_type64", "ch02_type62",
			"ch01_type59", "ch01_type59_gold", "ch14_t34_3", "ch26_59_patton",
			"ch03_wz-111", "ch23_112",
			// japanese
			"te_ke", "ke_ni_b",
			"chi_nu_kai", "j18_sta_2_3",
			"j19_tiger_i_jpn",
			// czechoslovakian
			"cz01_skoda_t40"
		];

		// variable for statistics
		var s = {
			b:[{c:0,p:0},{c:0,p:0},{c:0,p:0},{c:0,p:0},{c:0,p:0},{c:0,p:100}], // badges
			f:{wn8:{},wn7:{},eff:{},wgr:{}}, // formulas
			h:{}, // hex colours
			s:{e:{r:[],b:0,w:0,bg:0},p:{r:[],b:0,w:0,bg:0},t:{r:[],b:0,w:0,bg:0}}, // custom tank tables
			t:[{b:0,c:0,t:1},{b:0,c:0,t:2},{b:0,c:0,t:3},{b:0,c:0,t:4},{b:0,c:0,t:5},{b:0,c:0,t:6},{b:0,c:0,t:7},{b:0,c:0,t:8},{b:0,c:0,t:9},{b:0,c:0,t:10}], // tiers
			v:{a:0,bats:0,tier:0}, // vehicles
			w:{e:{frag:0,dmg:0,spot:0,def:0,win:0},c:{}} // wn8 expected values
		};

		// total mastery badge and colouring tank table category rows
		var typeRow_class = d.getElementsByClassName('t-profile_tankstype js-table-dropdown-link');
		for (var _tr=0, _tr_len = typeRow_class.length; _tr<_tr_len; _tr++) {
			var typeRow = typeRow_class[_tr],
			typeBats = sf.format(typeRow.cells[1].innerHTML,1),
			typeWinrate = sf.format(typeRow.cells[2].innerHTML,1),
			typeWins = typeBats*(typeWinrate/100);

			// modify table
			typeRow.cells[2].innerHTML = sf.color(typeWinrate, "wr", 0, "%")+"≈<span>"+sf.format(typeWins,2)+"</span>";
		}

		// average tier, colouring premium tanks and winrates in vehicle tables
		var vehRow_class = d.getElementsByClassName('t-profile_tankstype t-profile_tankstype__item'),
		vehRowStats_class = d.getElementsByClassName('t-profile_slidedown tablesorter-childRow');
		for (var _vr=0, _vr_len = vehRow_class.length; _vr<_vr_len; _vr++) {
			var vehRow = vehRow_class[_vr],
			vehRowStats = vehRowStats_class[_vr],
			vehImg = vehRow.cells[0].getElementsByTagName('img')[0],
			vehImgBdg = vehRow.cells[3].getElementsByTagName('img')[0],
			vehSpan = vehRow.cells[0].getElementsByTagName('span'),
			vehImgName = vehImg.src.match(/\w+\-([\w\-]+).png/),
			vehId = vehRowStats.getAttribute('data-vehicle-cd'),
			vehBats = sf.format(vehRow.cells[1].innerHTML,1),
			vehWinrate = sf.format(vehRow.cells[2].innerHTML,1),
			vehTier = vehSpan[0].getAttribute('data-veh_level'),
			vehWins = vehBats*(vehWinrate/100),
			vehBadge = (vehImgBdg) ? vehImgBdg.getAttribute('data-badge_code') : 0;

			// modify table
			vehImg.src = "http://"+wg.host+"/static/wot/encyclopedia/tankopedia/vehicle/"+vehImgName[0];
			vehRow.cells[2].innerHTML = sf.color(vehWinrate, "wr", 0, "%")+"≈<span>"+sf.format(vehWins,2)+"</span>";

			// vehicle badges
			s.b[vehBadge].c ++;

			// vehicle battles per tier and amount
			s.t[vehTier-1].b += vehBats;
			s.t[vehTier-1].c ++;
			s.v.tier += vehTier*vehBats;
			s.v.a ++;

			// check if vehicle exists in wnefficiency value array - report if not and exclude from wn8
			var vehStat = false;
			for (var _so=0, _so_len = statArr.length; _so<_so_len; _so++) {
				if (statArr[_so].IDNum == vehId) {
					vehStat = statArr[_so];
					break;
				}
			}
			if (vehStat) {
				// add to total vehicle battles if it exists in wnefficiency table
				s.v.bats += vehBats;
				// summarize expected stat from every vehicle for WN8
				s.w.e.frag += vehStat.expFrag    *vehBats;
				s.w.e.dmg  += vehStat.expDamage  *vehBats;
				s.w.e.spot += vehStat.expSpot    *vehBats;
				s.w.e.def  += vehStat.expDef     *vehBats;
				s.w.e.win  += vehStat.expWinRate *vehBats;
			}
			else {
				s.s.e.b += vehBats;
				s.s.e.w += vehWins;
				vehSpan[1].classList.add("b-red-name");
				console.error("Vehicle named "+vehImgName[1]+" doesn't exist in statArr, please report!");
				s.s.e.r.push([vehRow.cloneNode(true), vehRowStats.cloneNode(true)]);
				if (vehBadge !== 0) {
					s.s.e.bg ++;
				}
			}

			// get info for premium table
			if (premArr.indexOf(vehImgName[1]) > -1) {
				s.s.p.b += vehBats;
				s.s.p.w += vehWins;
				vehSpan[1].classList.add("b-gold-name");
				s.s.p.r.push([vehRow.cloneNode(true), vehRowStats.cloneNode(true)]);
				if (vehBadge !== 0) {
					s.s.p.bg ++;
				}
			}

			// get info for tier 10 table
			if (vehTier == 10) {
				s.s.t.b += vehBats;
				s.s.t.w += vehWins;
				s.s.t.r.push([vehRow.cloneNode(true), vehRowStats.cloneNode(true)]);
				if (vehBadge !== 0) {
					s.s.t.bg ++;
				}
			}
		}

		// finding statistic tables
		var mb_table = d.getElementsByClassName('b-result-classes')[0].getElementsByClassName('t-dotted')[0],
		or_table = d.getElementsByClassName('b-result')[0].getElementsByClassName('t-dotted')[0],
		bp_table = d.getElementsByClassName('b-result')[1].getElementsByClassName('t-dotted')[0],
		sm_ratio = d.getElementsByClassName('b-speedometer-ratio'),
		pd_table = d.getElementsByClassName('t-dotted');

		// fetching info, calculate averages, colourize and store into var s
		// r = raw stats
		s.r = {
			days: (new Date() - new Date(d.getElementsByClassName('js-date-format')[0].getAttribute('data-timestamp')*1000))/1000/60/60/24,
			bats: sf.format(or_table.rows[0].cells[1].innerHTML,1),
			wins: sf.format(or_table.rows[1].cells[1].innerHTML.match(/([\d.,\s|&nbsp;]+\d+)\s/)[1],1),
			loss: sf.format(or_table.rows[2].cells[1].innerHTML.match(/([\d.,\s|&nbsp;]+\d+)\s/)[1],1),
			surv: sf.format(or_table.rows[3].cells[1].innerHTML.match(/([\d.,\s|&nbsp;]+\d+)\s/)[1],1),
			exp: sf.format(or_table.rows[4].cells[1].innerHTML,1),
			expA: sf.format(or_table.rows[5].cells[1].innerHTML,1),
			frag: sf.format(bp_table.rows[0].cells[1].innerHTML,1),
			spot: sf.format(bp_table.rows[1].cells[1].innerHTML,1),
			hits: sf.format(bp_table.rows[2].cells[1].innerHTML,1),
			dmgD: sf.format(bp_table.rows[3].cells[1].innerHTML,1),
			caps: sf.format(bp_table.rows[5].cells[1].innerHTML,1),
			defs: sf.format(bp_table.rows[6].cells[1].innerHTML,1),
			dths: sf.format(sm_ratio[0].innerHTML.match(/\/(.+)$/)[1],1),
			dmgR: sf.format(sm_ratio[1].innerHTML.match(/\/(.+)$/)[1],1)
		};
		s.r.draw = s.r.bats-(s.r.wins+s.r.loss);
		s.r.winLR = s.r.wins/s.r.loss;
		// a = average stats
		s.a = {
			bats: s.r.bats/s.r.days,
			wins: (s.r.wins/s.r.bats)*100,
			loss: (s.r.loss/s.r.bats)*100,
			draw: (s.r.draw/s.r.bats)*100,
			surv: (s.r.surv/s.r.bats)*100,
			frag: s.r.frag/s.r.bats,
			dths: s.r.dths/s.r.bats,
			spot: s.r.spot/s.r.bats,
			dmgD: s.r.dmgD/s.r.bats,
			dmgR: s.r.dmgR/s.r.bats,
			caps: s.r.caps/s.r.bats,
			defs: s.r.defs/s.r.bats,
			tier: s.v.tier/s.v.bats
		};
		// c = coloured stats
		s.c = {
			winsR: sf.color(s.a.wins, "wr", 2, "%"),
			lossR: sf.color(s.a.loss, "lr", 2, "%"),
			survR: sf.color(s.a.surv, "sr", 2, "%"),
			hitsR: sf.color(s.r.hits, "hr", 2, "%"),
			drawR: sf.color(s.a.draw, "",   2, "%"),
			batsC: sf.color(s.r.bats, "bat", 0),
			dmgTier: sf.color(s.a.dmgD/s.a.tier, "dmg", 0, "", s.a.dmgD)
		};
		// p = personal stats - store to display on all profile pages
		var userData = sf.storage("wnExpUserdata", "", "get", "parse");
		if (wg.own) {
			s.p = {
				gold: [pd_table[0].rows[0].cells[0].textContent, pd_table[0].rows[0].cells[1].firstElementChild.textContent],
				cred: [pd_table[0].rows[1].cells[0].textContent, pd_table[0].rows[1].cells[1].firstElementChild.textContent],
				fxp:  pd_table[0].rows[2].cells[1].firstElementChild.textContent
			};
			if (pd_table[1].rows[1]) {
				s.p.prem = [pd_table[1].rows[1].cells[0].textContent, pd_table[1].rows[1].cells[1].textContent];
			}
			sf.storage("wnExpUserdata", s.p, "set", "string");
		}
		else if (userData) {
			s.p = userData;
		}
		// calculate badge percent
		s.b[5].c = s.v.a;
		for (var _b=0, _b_len = s.b.length; _b<_b_len; _b++) {
			s.b[_b].p = s.b[_b].c/s.b[5].c*100;
		}
		// prepare numbers for WN8 formula
		s.w.c.win = Math.max((s.a.wins/(s.w.e.win/s.v.bats)-0.71)/(1-0.71),0);
		s.w.c.dmg = Math.max((s.a.dmgD/(s.w.e.dmg/s.v.bats)-0.22)/(1-0.22),0);
		s.w.c.frag = Math.max(Math.min(s.w.c.dmg+0.2,(s.a.frag/(s.w.e.frag/s.v.bats)-0.12)/(1-0.12)),0);
		s.w.c.spot = Math.max(Math.min(s.w.c.dmg+0.1,(s.a.spot/(s.w.e.spot/s.v.bats)-0.38)/(1-0.38)),0);
		s.w.c.def = Math.max(Math.min(s.w.c.dmg+0.1,(s.a.defs/(s.w.e.def/s.v.bats)-0.10)/(1-0.10)),0);

		// calculate ratings
		// wg personal rating
		s.f.wgr = (function() {
			var rat = sf.format(d.getElementsByClassName("t-personal-data_value__pr")[0].innerHTML,1);
			return { rat: rat, ratCol: sf.color(rat,"wgr",0) };
		})();
		// WN8
		s.f.wn8 = (function() {
			var frag = 210*s.w.c.dmg*s.w.c.frag,
			dmg = 980*s.w.c.dmg,
			spot = 155*s.w.c.frag*s.w.c.spot,
			def = 75*s.w.c.def*s.w.c.frag,
			win = 145*Math.min(1.8,s.w.c.win),
			rat = frag+dmg+spot+def+win,
			pct = (rat<=sc.col.sUni[8]) ? (rat/sc.col.sUni[8])*100 : 100,
			scale = (rat<=sc.col.sUni[8]) ? Math.max(0,Math.min(100,rat*(rat*(rat*(rat*(rat*(-rat*0.00000000000000000004164+0.000000000000001176)-0.000000000009033)+0.000000027466)-0.00003804)+0.05819)-0.965)) : 100;
			return { frag: frag, dmg: dmg, spot: spot, def: def, win: win, rat: rat, pct: pct, scale: scale, ratCol: (isFinite(rat)) ? sf.color(rat,"wn8",2) : loc[18], scaleCol: (isFinite(rat)) ? sf.color(scale,"wn8",2) : loc[18]};
		})();
		// WN7 - legacy support
		s.f.wn7 = (function() {
			var frag = s.a.frag*(1240-1040/(Math.pow(Math.min(s.a.tier,6),0.164))),
			dmg = s.a.dmgD*530/(184*Math.exp(0.24*s.a.tier)+130),
			spot = s.a.spot*125*Math.min(s.a.tier,3)/3,
			def = Math.min(2.2,s.a.defs)*100,
			win = (((185/(0.17+Math.exp((s.a.wins-35)*-0.134)))-500)*0.45),
			norm = -Math.abs((((5-Math.min(s.a.tier,5))*125)/(1+Math.exp(s.a.tier-Math.pow(s.r.bats/220,3/s.a.tier))*1.5))),
			rat = frag+dmg+spot+def+win+norm,
			pct = (rat<=sc.col.sUni[9]) ? (rat/sc.col.sUni[9])*100 : 100,
			scale = (rat<=sc.col.sUni[9]) ? Math.max(0,Math.min(100,rat*(rat*(rat*(rat*(rat*(rat*0.000000000000000001225-0.000000000000007167)+0.000000000005501)+0.00000002368)-0.00003668)+0.05965)-5.297)) : 100;
			return { frag: frag, dmg: dmg, spot: spot, def: def, win: win, norm: norm, rat: rat, pct: pct, scale: scale, ratCol: sf.color(rat,"wn7",2), scaleCol: sf.color(scale,"wn7",2) };
		})();
		// efficiency - improved
		s.f.eff = (function() {
			var frag = s.a.frag*250,
				dmg = s.a.dmgD*(10/(s.a.tier+2))*(0.23+2*s.a.tier/100),
				spot = s.a.spot*150,
				cap = (Math.log(s.a.caps+1)/Math.log(1.732))*150,
				def = s.a.defs*150,
				rat = frag+dmg+spot+cap+def,
				pct = (rat<=sc.col.sUni[10]) ? (rat/sc.col.sUni[10])*100 : 100,
				scale = (rat<=sc.col.sUni[10]) ? Math.max(0,Math.min(100,rat*(rat*(rat*(rat*(rat*(rat*0.000000000000000013172 - 0.000000000000092286)+0.00000000023692)-0.00000027377)+0.00012983)+0.05935)-31.684)) : 100;
			return { frag: frag, dmg: dmg, spot: spot, cap: cap, def: def, rat: rat, pct: pct, scale: scale, ratCol: sf.color(rat,"eff",2), scaleCol: sf.color(scale,"eff",2) };
		})();
		// localized stats
		s.l = {
			veh: "<span style='color:#CD3333'>"+sf.format(s.v.bats,2)+"</span>",
			clip: loc[72]+" "+wg.name+": \n"+loc[73]+" "+s.r.bats+" \nWR: "+s.a.wins.toFixed(2)+" \nWN8: "+s.f.wn8.rat.toFixed(2)+" \nWN7: "+s.f.wn7.rat.toFixed(2)+" \nEff: "+s.f.eff.rat.toFixed(2)
		};
		// end formula calculations and variables

		// fun and giggles
		if (sc.fun[wg.name]) {
			s.f.wn8.ratCol = sc.fun[wg.name];
			s.f.wn7.ratCol = sc.fun[wg.name];
			s.f.eff.ratCol = sc.fun[wg.name];
		}

		// start modifying and enhancing the rest of the page
		// store userBlocks
		var userBlock_wprp = d.getElementsByClassName('b-userblock-wrpr')[0],
		userBlock_sparks = d.getElementsByClassName('b-user-block__sparks')[0];

		// add user treasury in navigation menu - personal data block will be hidden
		var subMenu_class = d.getElementsByClassName('nav-wrapper')[0];
		if (wg.login && s.p) {
			var userData_list = sf.elem("div", "b-user-data", "<table class='t-user-data'><tr><td>"+s.p.cred[0]+"</td><td><span class='currency-credit'>"+s.p.cred[1]+"</span></td></tr><tr><td>"+s.p.gold[0]+"</td><td><span class='currency-gold'>"+s.p.gold[1]+"</span></td></tr><tr><td>Free XP:</td><td><span class='currency-experience'>"+s.p.fxp+"</span></td></tr></table>");
			subMenu_class.appendChild(userData_list);
		}

		// modify sidebar structure
		var sidebar_class = d.getElementsByClassName('l-sidebar')[0],
		recBlock_class = d.getElementsByClassName('js-recruitsation-block')[0],
		sidemsg_class = sf.elem("div", "l-side-msg");
		fragment.appendChild(recBlock_class);
		if (locMiss_div) {
			fragment.appendChild(locMiss_div);
		}
		else if (locSup_div) {
			fragment.appendChild(locSup_div);
		}
		sidemsg_class.appendChild(fragment);
		sidebar_class.appendChild(sidemsg_class);

		// removing elements
		var layoutfix_class = d.getElementsByClassName('b-hr-layoutfix');
		layoutfix_class[0].parentNode.removeChild(layoutfix_class[0]);

		// page navigation
		var menu_class = d.getElementsByClassName('cm-holder')[0],
		content_class = d.getElementsByClassName('l-content')[0];
		content_class.appendChild(sf.elem("div", "b-profile-nav", "<a class='bot' onclick='window.scrollTo(0, 0)'><span>"+loc[2]+"</span></a>"));
		menu_class.appendChild(sf.elem("div", "b-profile-nav b-profile-nav-top", "<a class='top' onclick='window.scrollTo(0, 9999)'><span>"+loc[1]+"</span></a>"));

		// profile wrapper
		var profile_div = sf.elem("div", "b-profile-wrpr"),
		profileHead_div = sf.elem("div", "b-profile-header", "<div id='js-clipBoard' style='display:none;'>"+s.l.clip+"</div>"),
		profileError_div = sf.elem("div", "b-profile-error");
		if (s.v.bats !== s.r.bats) {
			profileError_div.classList.add("b-display-table");
			profileError_div.textContent = loc[69];
		}
		else {
			s.l.veh = " ";
		}
		profileName_class.lastElementChild.innerHTML += " - "+sf.format(s.r.days,2,0)+" "+loc[3];
		profileName_class.parentNode.insertBefore(profile_div, profileName_class.nextSibling);
		profileHead_div.appendChild(profileError_div);
		fragment.appendChild(profileHead_div);

		// add style if on own profile and has premium
		if (wg.own && s.p.prem) {
			var profileName_tooltip = d.getElementById('js-profile-name_tooltip');
			profileName_header.classList.add("b-account-type__premium");
			profileName_tooltip.firstElementChild.textContent += " - "+s.p.prem[0]+" "+s.p.prem[1];
		}

		// player statistic links
		var profileStat_table = sf.elem("table", "t-profile-table"),
		profileStat_table_cells = [
			[
				[loc[4]],
				[sc.srv.wl, "<a target='_blank' href='http://wotlabs.net/"+sc.srv.wl+"/player/"+wg.name+"'>WoTLabs</a>"],
				[sc.srv.nm, "<a target='_blank' href='"+sc.nm.url+"'>Noobmeter</a>"],
				[sc.srv.ct, "<a target='_blank' href='http://clantools.us/servers/"+sc.srv.ct+"/players?id="+wg.id+"'>Clan Tools</a>"]
			],
			[
				[""],
				[sc.srv.ws, "<a target='_blank' href='http://wotstats.org/stats/"+sc.srv.ws+"/"+wg.name+"/'>WoTstats</a>"],
				[sc.srv.vb, "<a target='_blank' href='http://www.vbaddict.net/player/"+wg.name.toLowerCase()+"-"+sc.srv.vb+"'>vBAddict</a>"],
				(wg.srv=="ru") ? [sc.srv.kttc, "<a target='_blank' href='http://kttc.ru/statistics/user/"+wg.name+"/'>KTTC</a>"] : [sc.srv.wlf, "<a target='_blank' href='http://en.wot-life.com/"+sc.srv.wlf+"/player/"+wg.name+"/'>WoT-Life</a>"]
			],
			[
				[loc[5]],
				[sc.srv.wl, "<a target='_blank' href='http://wotlabs.net/sig/"+sc.srv.wl+"/"+wg.name+"/signature.png'>"+loc[6]+"</a>"],
				[sc.srv.wl, "<a target='_blank' href='http://wotlabs.net/sig_dark/"+sc.srv.wl+"/"+wg.name+"/signature.png'>"+loc[7]+"</a>"]
			],
			[
				[loc[8]],
				[sc.srv.wr, "<a target='_blank' href='http://wotreplays."+sc.srv.wr+"/player/"+wg.name+"'>WoTReplays</a>"]
			]
		];
		sf.links(profileStat_table, profileStat_table_cells, "table");
		profileName_class.appendChild(profileStat_table);

		// clan handler
		var clanBlock = d.getElementById('js-clan-block-container'),
		cl_class = clanBlock.getElementsByTagName('a')[1],
		clanStat_table = sf.elem("table"),
		clanLook = new MutationObserver(function() {
			cl_class = clanBlock.getElementsByTagName('a')[1];
			sf.clan();
			clanLook.disconnect();
		});
		clanStat_table.id = "js-profile-clan-table";
		// apply changes if and when clanBlock is modified
		if(cl_class) {
			sf.clan();
		}
		else {
			clanLook.observe(clanBlock, {childList: true});
		}
		// clan history retrieval
		if (!!sc.srv.cs) {
			sf.request(sc.chApi, sf.ch.hnd, sf.ch.error);
		}

		// move player and clan blocks together
		var infoBlock_div = sf.elem("div", "b-info-block");
		infoBlock_div.appendChild(profileName_class);
		infoBlock_div.appendChild(clanBlock);
		fragment.appendChild(infoBlock_div);

		// player clan history
		var clanHist_div = sf.elem("div", "b-clanHistory-wrpr", "<span class='clanname'>"+loc[74]+"</span><span>"+loc[18]+"</span>");
		fragment.appendChild(clanHist_div);

		// move fame points block, if it exists
		var fameClass = d.getElementById('js-knockout-fame-points'),
		fameMessage = d.getElementsByClassName('b-fame-message')[0];
		if (fameClass) {
			var fameHeader = d.getElementsByClassName('b-header-h3__user-account')[0],
			fameIndicator = d.getElementsByClassName('b-fame-indicators')[0],
			fameTime = d.getElementsByClassName('b-time')[0],
			fameLinkList = d.getElementsByClassName('b-link-list')[0];
			fameClass.insertBefore(fameHeader, fameClass.firstElementChild);
			fameLinkList.appendChild(sf.elem("li", "b-link-list_item"));
			fameLinkList.lastElementChild.appendChild(fameTime);
			fameIndicator.dataset.bind = "";
			fameIndicator.classList.add("b-fame-indicators__one-country");
			fragment.appendChild(fameClass);
		}
		else if (fameMessage) {
			var fameDiv = fameMessage.parentNode;
			fameDiv.id = "js-knockout-fame-points";
			fameDiv.className = "b-fame-points-empty";
			fragment.appendChild(fameDiv);
			userBlock_sparks.classList.add("b-user-block_sparks-radius");
		}
		else {
			userBlock_sparks.classList.add("b-user-block_sparks-radius");
		}

		// move sidebar
		fragment.appendChild(sidebar_class);
		profile_div.appendChild(fragment);
		// end profile wrapper

		// add background
		var background_div = sf.elem("div", "b-background", "<img src='"+css.l[6]+"'>");
		background_div.style.background = s.h.wn8;
		userBlock_sparks.insertBefore(background_div, userBlock_sparks.firstChild);

		// add hidden divs for banned and last battle messages
		var banInfo_div = sf.elem("div", "b-message-ban-holder", "<div class='b-message-error'><span>"+loc[83]+" <span id='js-banInfo'></span>.</span></div>"),
		lastBattle_div = sf.elem("div", "b-message-battle-holder", "<div class='b-message-battle b-message-info'><span>"+loc[84]+" <span id='js-lastBattle'></span>.</span></div>");
		userBlock_sparks.insertBefore(lastBattle_div, userBlock_sparks.firstChild.nextSibling);
		userBlock_sparks.insertBefore(banInfo_div, userBlock_sparks.firstChild.nextSibling);

		// personal data - modify table - add ratings
		var persDataTable = d.getElementsByClassName('t-personal-data')[0];
		persDataTable.rows[0].cells[0].textContent = loc[9]; // winrate
		persDataTable.rows[1].cells[0].innerHTML = s.c.winsR;
		persDataTable.rows[0].cells[1].textContent = loc[10]; // battles
		persDataTable.rows[1].cells[1].innerHTML = s.c.batsC;
		persDataTable.rows[0].cells[1].parentNode.insertBefore(sf.elem("th", "t-personal-data_ico t-personal-data_ico__exp", loc[11]), persDataTable.rows[0].cells[1].nextSibling); // xp
		persDataTable.rows[1].cells[1].parentNode.insertBefore(sf.elem("td", "t-personal-data_value", sf.format(s.r.expA,2)), persDataTable.rows[1].cells[1].nextSibling);
		persDataTable.rows[0].cells[4].textContent = loc[70]; // hitrate
		persDataTable.rows[1].cells[3].innerHTML = s.c.hitsR;
		persDataTable.rows[0].cells[4].className = "t-personal-data_ico t-personal-data_ico__hitrate";
		persDataTable.rows[0].cells[5].textContent = loc[71]; // damage
		persDataTable.rows[1].cells[4].innerHTML = s.c.dmgTier;
		persDataTable.rows[0].appendChild(sf.elem("th", "t-personal-data_ico t-personal-data_ico__tier", loc[12])); // avg tier
		persDataTable.rows[1].appendChild(sf.elem("td", "t-personal-data_value", sf.format(s.a.tier,2,2)));
		persDataTable.appendChild(sf.elem("tbody", "t-ratings-info", "<tr><th colspan='2'><a href='http://www.wnefficiency.net/wnexpected/' target='_blank'>"+loc[15]+" v"+wn.vers[1]+"</a></th><th>"+loc[30]+"</th><th></th><th>"+loc[16]+"</th><th colspan='2'><a class='rating-url_nm' target='_blank' href="+sc.nm.url+">"+loc[17]+"</a></th></tr><tr><td colspan='2'>"+s.f.wn8.ratCol+"</td><td>"+s.f.wn7.ratCol+"</td><td></td><td>"+s.f.eff.ratCol+"</td><td colspan='2' id='js-noobmeter-stat'>"+loc[18]+"</td></tr>"));
		persDataTable.getElementsByClassName('t-personal-data_value__pr')[0].innerHTML = s.f.wgr.ratCol;

		// speedometer - win/loss ratio
		var smBody_class = d.getElementsByClassName('b-speedometer-body')[0],
		smWinWeight = (isFinite(s.r.winLR)) ? s.r.winLR.toFixed(2) : 1,
		smWinArrow = (isFinite(s.r.winLR)) ? Math.min(30*(s.r.winLR-1),31) : 0;
		smBody_class.appendChild(sf.elem("div", "b-speedometer", "<div class='b-speedometer_scale'></div><div class='b-speedometer-arrow' data-deg='"+smWinArrow+"' style='transform: rotate("+smWinArrow+"deg); -webkit-transform: rotate("+smWinArrow+"deg); -ms-transform: rotate("+smWinArrow+"deg);'></div><div class='b-speedometer-round'></div><p class='b-speedometer-title'>"+loc[13]+"</p><p class='b-speedometer-weight'>"+smWinWeight+"</p><p class='b-speedometer-ratio'>"+sf.format(s.r.wins,2)+" / "+sf.format(s.r.loss,2)+"</p>"));

		// performance ratings calculations table
		var ratingsTable_div = sf.elem("div", "ratings-table", "<h3>"+loc[19]+"</h3>"),
		ratingsTable = sf.elem("table", "t-table-ratings"),
		ratingsFragment = d.createDocumentFragment(),
		ratingsArr = [
			[loc[20], loc[21], loc[22], loc[23], loc[24], loc[25], loc[26], loc[27], loc[28]],
			["wn8", s.f.wn8.pct, loc[29], s.f.wn8.ratCol, s.f.wn8.scaleCol, sf.format(s.f.wn8.frag,2,2), sf.format(s.f.wn8.dmg,2,2), sf.format(s.f.wn8.spot,2,2), "–",                     sf.format(s.f.wn8.def,2,2), sf.format(s.f.wn8.win,2,2)],
			["wn7", s.f.wn7.pct, loc[30], s.f.wn7.ratCol, s.f.wn7.scaleCol, sf.format(s.f.wn7.frag,2,2), sf.format(s.f.wn7.dmg,2,2), sf.format(s.f.wn7.spot,2,2), "–",                     sf.format(s.f.wn7.def,2,2), sf.format(s.f.wn7.win,2,2)],
			["eff", s.f.eff.pct, loc[31], s.f.eff.ratCol, s.f.eff.scaleCol, sf.format(s.f.eff.frag,2,2), sf.format(s.f.eff.dmg,2,2), sf.format(s.f.eff.spot,2,2), sf.format(s.f.eff.cap,2,2), sf.format(s.f.eff.def,2,2), "–"                    ]
		];
		for (var _r=0, _r_len = ratingsArr.length; _r<_r_len; ++_r) {
			var ratingsRow = sf.elem("tr");
			ratingsFragment.appendChild(ratingsRow);
			if (_r === 0) {
				for (var _rh=0, _rh_len = ratingsArr[_r].length; _rh<_rh_len; ++_rh) {
					ratingsRow.appendChild(sf.elem("th", "", ratingsArr[_r][_rh]));
				}
			}
			else {
				for (var _rc=2, _rc_len = ratingsArr[_r].length; _rc<_rc_len; ++_rc) {
					ratingsRow.appendChild(sf.elem("td", "td-center", ratingsArr[_r][_rc]));
				}
				ratingsFragment.appendChild(sf.elem("tr", "td-rating-meter", "<td colspan='9'><div class='rating-meter rating-meter_"+ratingsArr[_r][0]+"'><div class='rating-meter-dail_line' style='width:"+ratingsArr[_r][1]+"%;'><div class='rating-meter-marker'></div></div></div></td>"));
			}
			ratingsTable.appendChild(ratingsFragment);
		}
		ratingsTable_div.appendChild(ratingsTable);
		fragment.appendChild(ratingsTable_div);
		// link to WN thread
		fragment.appendChild(sf.elem("div", "wnelink", "<a class ='b-orange-arrow wnelink_info' target='_blank' href='http://wiki.wnefficiency.net/pages/WN8:_Summary'>"+loc[32]+"</a>"));
		userBlock_sparks.appendChild(fragment);
		// end user block

		// statistics wrapper
		var statistics_wrpr = d.getElementsByClassName('b-result-classes')[0].parentNode;
		statistics_wrpr.className = "b-statistics-wrpr";
		userBlock_wprp.parentNode.insertBefore(statistics_wrpr, userBlock_wprp.nextSibling);

		// stat tabs framework
		var statTabs = sf.elem("div", "l-tabs l-tabs__top-indent", "<ul class='b-tabs-list'></ul><div class='b-main-divider'></div><div class='b-fame-indicators b-fame-indicators__no-margin b-fame-indicators__one-country'><div class='b-tabs'></div><div class='b-stat-legend'>"+loc[116]+"</br>"+loc[117]+"</div></div>"),
		statTabsMenu = statTabs.firstElementChild,
		statTabsParent = statTabs.lastElementChild.firstElementChild;
		statistics_wrpr.appendChild(statTabs);

		// stat tabs menu
		var statTabsMenuItems = [
			["user", loc[100]],
			["more", loc[101]],
			["clan", loc[102]],
			["strong", loc[106]],
			["team", loc[109]],
			["other", loc[111]]
		];
		for (var _tm=0, _tm_len = statTabsMenuItems.length; _tm<_tm_len; ++_tm) {
			var tabMenuItem = sf.elem("li", "b-tabs-list_item b-tabs-list_"+statTabsMenuItems[_tm][0], "<a class='b-tabs-list_link' href='#' onClick='return false;'>"+statTabsMenuItems[_tm][1]+"</a>");
			tabMenuItem.dataset.ref = "b-tab-"+statTabsMenuItems[_tm][0];
			if (statTabsMenuItems[_tm][0] == "user") {
				tabMenuItem.classList.add("js-tabs__active");
			}
			tabMenuItem.addEventListener('click', sf.tabs, false);
			statTabsMenu.appendChild(tabMenuItem);
		}

		// clean the old tables and populate them with new values (master badges, overall results and battle performance)
		var statTabUser = sf.elem("div", "b-tab-user js-stat_active"),
		statTables = [
			[
				["<img src='"+css.l[7]+"'>", loc[33], s.b[4].c+"<span>("+sf.format(s.b[4].p,2,0)+"%)</span>"],
				["<img src='"+css.l[8]+"'>", loc[34], s.b[3].c+"<span>("+sf.format(s.b[3].p,2,0)+"%)</span>"],
				["<img src='"+css.l[9]+"'>", loc[35], s.b[2].c+"<span>("+sf.format(s.b[2].p,2,0)+"%)</span>"],
				["<img src='"+css.l[10]+"'>", loc[36], s.b[1].c+"<span>("+sf.format(s.b[1].p,2,0)+"%)</span>"],
				["<img src='"+css.u.bad1+"'>", loc[37], s.b[0].c+"<span>("+sf.format(s.b[0].p,2,0)+"%)</span>"],
				["<img src='"+css.u.bad2+"'>", loc[38], s.b[5].c+"<span>("+sf.format(s.b[5].p,2,0)+"%)</span>"]
			],
			[
				[loc[39], s.l.veh, sf.format(s.r.bats,2)],
				[loc[40], s.c.winsR, sf.format(s.r.wins,2)],
				[loc[41], s.c.lossR, sf.format(s.r.loss,2)],
				[loc[42], s.c.drawR, sf.format(s.r.draw,2)],
				[loc[43], s.c.survR, sf.format(s.r.surv,2)],
				[loc[49], sf.color(s.a.dths*100, "", 2, "%"), sf.format(s.r.dths,2)],
				[loc[44], "", sf.format(s.a.bats,2,2)],
				[loc[45], sf.format(s.r.expA,2), sf.format(s.r.exp,2)]
			],
			[
				[loc[48], sf.format(s.a.frag,2,2), sf.format(s.r.frag,2)],
				[loc[50], sf.format(s.a.spot,2,2), sf.format(s.r.spot,2)],
				[loc[52], s.c.dmgTier, sf.format(s.r.dmgD,2)],
				[loc[53], sf.format(s.a.dmgR,2,0), sf.format(s.r.dmgR,2)],
				[loc[54], sf.format(s.a.caps,2,2), sf.format(s.r.caps,2)],
				[loc[55], sf.format(s.a.defs,2,2), sf.format(s.r.defs,2)],
				[loc[51], "", s.c.hitsR]
			],
			[
				mb_table,
				or_table,
				bp_table
			]
		];
		mb_table.removeChild(mb_table.firstElementChild);
		or_table.removeChild(or_table.firstElementChild);
		bp_table.removeChild(bp_table.firstElementChild);
		for (var _s=0, _s_len = statTables.length; _s<(_s_len-1); ++_s) {
			for (var _sr=0, _sr_len = statTables[_s].length; _sr<_sr_len; ++_sr) {
				fragment.appendChild(sf.elem("tr", "", "<td class='"+((statTables[3][_s] == mb_table) ? 't-dotted_class-ico t-dotted_minor__middle' : 't-dotted_minor')+"'>"+statTables[_s][_sr][0]+"</td><td class='"+((statTables[3][_s] == mb_table) ? 't-dotted_minor t-dotted_minor__middle' : 't-dotted_value')+"'>"+statTables[_s][_sr][1]+"</td><td class='"+((statTables[3][_s] == mb_table) ? 't-dotted_value t-dotted_minor__middle' : 't-dotted_value')+"'>"+statTables[_s][_sr][2]+"</td>"));
			}
			statTables[3][_s].appendChild(fragment);
			statTabUser.appendChild(statTables[3][_s].parentNode);
		}
		statTabsParent.appendChild(statTabUser);
		// end statistics wrapper

		// cake diagrams - adding tier diagram
		var diagSector_class = d.getElementsByClassName('b-diagrams-sector')[0],
		diagTier_div = sf.elem("div", "b-diagram-block b-diagram-tiers js-diagram-block", "<h3>"+loc[57]+"</h3><div class='b-diagram-wrpr'><div class='b-diagram' id='holder-mechanism-tier'></div><div class='b-diagram-round js-diagram-round'><span class='b-diagram-round_title'></span><span class='b-diagram-round_value js-result'>"+s.v.a+"</span></div></div>"),
		diagTier_table = sf.elem("table", "t-dotted t-dotted__diagram js-diagram-mechanism-legend"),
		diagTierCol = ["#831818","#814F07","#763D46","#496877","#303766","#2B591F","#471952","#936C19","#9B9B9B","#514A3C"];
		diagSector_class.insertBefore(diagTier_div, diagSector_class.firstElementChild.nextSibling);
		for (var _t=0, _t_len = s.t.length; _t<_t_len; ++_t) {
			if (s.t[_t].c !== 0) {
				diagTier_table.appendChild(sf.elem("tr", "t-diagram-tier", "<td class='t-dotted_diagram-first'><span class='t-dotted_diagram-bg'></span></td><td><span class='t-dotted_diagram-bg'><span class='t-dotted_diagram-info'><span class='t-diagram_battle'>"+sf.format(s.t[_t].b,2)+"</span><span class='t-dotted_diagram-percent'>(<span class=''>"+sf.format((s.t[_t].b/s.r.bats*100),2,2)+"%</span>)</span><span class='t-diagram_tiers js-results'>"+s.t[_t].c+"</span><span class='t-dotted_diagram-percent'>(<span class='js-value'>"+sf.format((s.t[_t].c/s.v.a*100),2,2)+"%</span>)</span></span><span class='b-diagram-ico b-diagram-ico_tier b-diagram-ico_tier-"+s.t[_t].t+"'>"+loc[58]+" "+s.t[_t].t+"</span></span></td><td class='t-dotted_diagram-last'><span class='t-dotted_diagram-bg'><span class='js-colors'>"+diagTierCol[_t]+"</span></span></td>"));
			}
		}
		diagTier_div.appendChild(diagTier_table);
		diagSector_class.firstElementChild.appendChild(sf.elem("div", "b-diagram-total", "<h3>"+loc[59]+" "+s.v.a+"</h3>"));
		// fix for cake diagram in chrome
		if (sc.web.chrome) {
			var diagItems = [], diagValues = [], diagResults = [],
			diagRows = diagTier_table.rows,
			diagResult = $('.js-result', diagTier_div);
			for (var _dt=0, _dt_len = diagRows.length; _dt<_dt_len; ++_dt) {
				diagItems.push($(diagRows[_dt]));
				diagValues.push(parseInt(diagRows[_dt].getElementsByClassName('js-value')[0].innerHTML, 10));
				diagResults.push(diagRows[_dt].getElementsByClassName('js-results')[0].innerHTML);
			}
			new Raphael("holder-mechanism-tier", 630, 630).pieChart(65, 65.5, 53.5, diagItems, diagValues, diagTierCol, diagResults, diagTier_table, diagResult);
		}

		// achievements wrapper
		var medal_div = sf.elem("div", "b-achievements-wrpr"),
		medalHeader_div = sf.elem("div", "b-head-block"),
		medalHeader_class = d.getElementsByClassName('js-achievements-header')[0],
		medalClassArr = ["b-profile-item-empty","js-achivements-showhide","js-short-achievements","js-full-achievements"];
		medalHeader_div.appendChild(medalHeader_class);
		fragment.appendChild(medalHeader_div);
		for (var _m=0, _m_len = medalClassArr.length; _m<_m_len; ++_m) {
			var medalChild = d.getElementsByClassName(medalClassArr[_m])[0];
			if (!!medalChild) {
				fragment.appendChild(medalChild);
			}
		}
		medal_div.appendChild(fragment);
		diagSector_class.parentNode.insertBefore(medal_div, diagSector_class.nextSibling);
		diagSector_class.parentNode.insertBefore(layoutfix_class[0], diagSector_class.nextSibling);

		// vehicles wrapper
		var vehTable_class = d.getElementsByClassName('t-profile t-profile__vehicle')[0],
		vehicles_div = sf.elem("div", "b-vehicles-wrpr"),
		vehiclesFragment = d.createDocumentFragment(),
		vehiclesHeader_div = sf.elem("div", "b-vehicles-header", "<a class='b-orange-arrow b-profile-ratings_link' target='_blank' href='/encyclopedia/vehicles/'>"+loc[60]+"</a><span class='b-profile-vehicles-tankstat'><a class='b-orange-arrow b-profile-ratings_link b-profile-vehicles-tankstat_link' target='_blank' href='http://www.vbaddict.net/statistics.php?server="+((wg.srv == "ru") ? "net" : sc.srv.vb)+"'>vBAddict: "+loc[61]+"</a></span>"),
		vehicles_h3_class = vehTable_class.previousElementSibling.previousElementSibling;
		vehicles_h3_class.className = "b-profile-ratings_title";
		vehiclesHeader_div.insertBefore(vehicles_h3_class, vehiclesHeader_div.firstChild);
		vehTable_class.parentNode.insertBefore(vehicles_div, vehTable_class);
		fragment.appendChild(vehiclesHeader_div);
		fragment.appendChild(vehTable_class);
		vehicles_div.appendChild(fragment);

		// add a premium tanks table to the vehicle table
		var premHBody = sf.elem("tbody"),
		premTBody = sf.elem("tbody", "sortable b-display-none"),
		_p_len = s.s.p.r.length;
		fragment.appendChild(premHBody);
		if (_p_len === 0) {
			premHBody.appendChild(sf.elem("tr", "t-profile_tankstype t-profile_tankstype-prem t-profile_tankstype__empty", "<td width='388' class='t-profile_head'><span class='b-tankstype-ico b-tankstype-ico__prem'></span><span class='b-tankstype-text'>"+loc[62]+" </span></td><td class='t-profile_right'>&ndash;</td><td class='t-profile_center'>&ndash;</td><td class='t-profile_center'>&ndash;</td><td class='t-profile_dropdown-ico'><!-- empty --></td>"));
		}
		else {
			premHBody.className = "tablesorter-no-sort";
			premHBody.appendChild(sf.elem("tr", "t-profile_tankstype t-profile_tankstype-prem js-table-dropdown-link", "<td width='388' class='t-profile_head'><span class='b-tankstype-ico b-tankstype-ico__prem'></span><span class='b-tankstype-text'>"+loc[62]+" <span class='b-armory-col'>"+_p_len+"</span></span></td><td class='t-profile_right'>"+sf.format(s.s.p.b,2)+"</td><td class='t-profile_center'>"+sf.color((s.s.p.w/s.s.p.b)*100, "wr", 0, "%")+"≈<span>"+sf.format(s.s.p.w,2)+"</span></td><td class='t-profile_center'>"+s.s.p.bg+"</td><td class='t-profile_dropdown-ico'><a title='Show/hide vehicles' class='t-profile_dropdown-link' href=''></a></td>"));
			for (var _p=0; _p<_p_len; ++_p) {
				vehiclesFragment.appendChild(s.s.p.r[_p][0]);
				vehiclesFragment.appendChild(s.s.p.r[_p][1]);
			}
			premTBody.appendChild(vehiclesFragment);
			fragment.appendChild(premTBody);
		}

		// add a tier 10 table to the vehicle table
		var tenHBody = sf.elem("tbody"),
		tenTBody = sf.elem("tbody", "sortable b-display-none"),
		_x_len = s.s.t.r.length;
		fragment.appendChild(tenHBody);
		if (_x_len === 0) {
			tenHBody.appendChild(sf.elem("tr", "t-profile_tankstype t-profile_tankstype__empty", "<td width='388' class='t-profile_head'><span class='b-tankstype-ico b-tankstype-ico__ten'>✖</span><span class='b-tankstype-text'>"+loc[68]+" </span></td><td class='t-profile_right'>&ndash;</td><td class='t-profile_center'>&ndash;</td><td class='t-profile_center'>&ndash;</td><td class='t-profile_dropdown-ico'><!-- empty --></td>"));
		}
		else {
			tenHBody.className = "tablesorter-no-sort";
			tenHBody.appendChild(sf.elem("tr", "t-profile_tankstype js-table-dropdown-link", "<td width='388' class='t-profile_head'><span class='b-tankstype-ico b-tankstype-ico__ten'>✖</span><span class='b-tankstype-text'>"+loc[68]+" <span class='b-armory-col'>"+_x_len+"</span></span></td><td class='t-profile_right'>"+sf.format(s.s.t.b,2)+"</td><td class='t-profile_center'>"+sf.color((s.s.t.w/s.s.t.b)*100, "wr", 0, "%")+"≈<span>"+sf.format(s.s.t.w,2)+"</span></td><td class='t-profile_center'>"+s.s.t.bg+"</td><td class='t-profile_dropdown-ico'><a title='Show/hide vehicles' class='t-profile_dropdown-link' href=''></a></td>"));
			for (var _x=0; _x<_x_len; ++_x) {
				vehiclesFragment.appendChild(s.s.t.r[_x][0]);
				vehiclesFragment.appendChild(s.s.t.r[_x][1]);
			}
			tenTBody.appendChild(vehiclesFragment);
			fragment.appendChild(tenTBody);
		}

		// add a missing tanks table to the vehicle table
		// only shown if a tank is missing from imported wn8 table
		var missHBody = sf.elem("tbody"),
		missTBody = sf.elem("tbody", "sortable b-display-none"),
		_e_len = s.s.e.r.length;
		fragment.appendChild(missHBody);
		if (_e_len !== 0) {
			profileError_div.textContent = loc[82];
			missHBody.className = "tablesorter-no-sort";
			missHBody.appendChild(sf.elem("tr", "t-profile_tankstype t-profile_tankstype-miss js-table-dropdown-link", "<td width='388' class='t-profile_head'><span class='b-tankstype-ico b-tankstype-ico__miss'></span><span class='b-tankstype-text'>"+loc[78]+" <span class='b-armory-col'>"+_e_len+"</span></span></td><td class='t-profile_right'>"+sf.format(s.s.e.b,2)+"</td><td class='t-profile_center'>"+sf.color((s.s.e.w/s.s.e.b)*100, "wr", 0, "%")+"≈<span>"+sf.format(s.s.e.w,2)+"</span></td><td class='t-profile_center'>"+s.s.e.bg+"</td><td class='t-profile_dropdown-ico'><a title='Show/hide vehicles' class='t-profile_dropdown-link' href=''></a></td>"));
			for (var _e=0; _e<_e_len; ++_e) {
				vehiclesFragment.appendChild(s.s.e.r[_e][0]);
				vehiclesFragment.appendChild(s.s.e.r[_e][1]);
			}
			missTBody.appendChild(vehiclesFragment);
			fragment.appendChild(missTBody);
		}
		vehTable_class.appendChild(fragment);
		// end vehicles wrapper

		// debugging to browser console
		if (sc.debug) {
			console.info("Browser Info:\n"+n.appCodeName+" - "+n.appName+"\n"+n.userAgent, sc.web);
			console.info(s.l.clip);
			console.info("Script Settings:", sc);
			console.info("Statistics:", s);
		}

		// retrieve and process info from external source
		// noobmeter retrieval
		if (!!sc.srv.nm) {
			sf.request(sc.nm.api, sf.nm.hnd, sf.nm.error);
		}
	}
	else {
		// hide animated loading gear
		loadGif.classList.add("js-hidden");
		// add a message informing that the script is disabled
		profileName_class.appendChild(sf.elem("div", "b-script-disabled", loc[65]));
		styleText.push(
			".b-script-disabled {background-color: rgb(27, 27, 28); border: 1px solid rgba(255,255,255,0.04); border-bottom: none; border-radius: 15px 15px 0px 0px; box-shadow: 0px 0px 5px 4px rgba(0, 0, 0, 0.15) inset; color: #CD3333; line-height: 25px; margin: 10px 0 -15px 0px; text-align: center; width: 684px;}",
			".b-profile-clan {margin: 0;}",
			".content-wrapper__old p.b-statistic_item {margin: 0;}"
		);
		style.textContent = styleText.join("");
	} // end tableBattles
}(window));