Last active
December 10, 2015 23:28
-
-
Save artzub/4509035 to your computer and use it in GitHub Desktop.
Work with github api.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.idea/ | |
*.iml | |
*.iws |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* User: ArtZub | |
* Date: 15.01.13 | |
* Time: 2:13 | |
*/ | |
'use strict'; | |
(function(window) { | |
var lastTime = 0; | |
var vendors = ['ms', 'moz', 'webkit', 'o']; | |
for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { | |
window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame']; | |
window.cancelAnimationFrame = | |
window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame']; | |
} | |
if (!window.requestAnimationFrame) | |
window.requestAnimationFrame = function(callback, element) { | |
var currTime = new Date().getTime(); | |
var timeToCall = Math.max(0, 16 - (currTime - lastTime)); | |
var id = window.setTimeout(function() { callback(currTime + timeToCall); }, | |
timeToCall); | |
lastTime = currTime + timeToCall; | |
return id; | |
}; | |
if (!window.cancelAnimationFrame) | |
window.cancelAnimationFrame = function(id) { | |
clearTimeout(id); | |
}; | |
})(window); | |
var ONE_SECOND = 1000, | |
ONE_MINUTE = 60 * ONE_SECOND, | |
ONE_HOUR = 60 * ONE_MINUTE, | |
ONE_DAY = 24 * ONE_HOUR, | |
PI_CIRCLE = 2 * Math.PI; | |
var ghcs = { | |
users: {}, | |
states: {cur:0, max:0}, | |
limits: { | |
commits : 100, | |
stepShow : 1, | |
stepType : ONE_DAY | |
}, | |
settings : { | |
access : { | |
client_id : "c45417c5d6249959a91d", | |
client_secret : "4634b3aa7549c3d6306961e819e5ec9b355a6548" | |
}, | |
cs : { | |
fileLife : 255 // number of steps of life a file | |
, userLife : 255 // number of steps of life a user | |
, edgeLife : 255 // number of steps of life a edge | |
, showCountExt : true // show table of file's extension | |
, onlyShownExt : true // show only extension which is shown | |
, showHistogram : true // displaying histogram of changed files | |
, showHalo : true // show a file's halo | |
, padding : 25 // padding around a user | |
, rateOpacity : .5 // rate of decrease of opacity | |
, rateFlash : 2.5 // rate of decrease of flash | |
, sizeFile : 2 // size of file | |
, sizeUser : 24 // size of user | |
, showPaddingCircle : false // show circle of padding | |
, useAvatar : true // show user's avatar | |
, showEdge : true // show a edge | |
, showFile : true // show a file | |
, showUser : true // show a user | |
, showLabel : true // show user name | |
, showFilename : true // show file name TODO: надо-ли? | |
, labelPattern : "%n <%e>" // pattern for label of user | |
, showCommitMessage : false // show commit message | |
, skipEmptyDate : true // skip empty date | |
} | |
}, | |
asyncForEach: function(items, fn, time) { | |
if (!(items instanceof Array)) | |
return; | |
var workArr = items.reverse().concat(); | |
function loop() { | |
if (workArr.length > 0) | |
fn(workArr.shift(), workArr); | |
if (workArr.length > 0) | |
setTimeout(loop, time || 1); | |
} | |
loop(); | |
}, | |
imageHash : d3.map({}) | |
}; | |
(function(ghcs) { | |
ghcs.storage = sessionStorage; | |
if (ghcs.storage) { | |
Storage.prototype.set = function(key, value) { | |
this.setItem(key, JSON.stringify(value)); | |
}; | |
Storage.prototype.get = function(key) { | |
var res = this.getItem(key); | |
return res ? JSON.parse(res) : res; | |
}; | |
Storage.prototype.setImageData = setImageData; | |
} | |
else { | |
ghcs.storage = d3.map({}); | |
ghcs.storage.clear = function() { | |
var ks = ghcs.storage.keys, | |
l = ks.length; | |
while(--l > -1) | |
ghcs.storage.remove(ks[l]); | |
}; | |
ghcs.storage.setImageData = setImageData; | |
} | |
var canvas = document.createElement("canvas"), | |
ctx = canvas.getContext("2d"); | |
/** | |
* @param url {String} | |
* @param image {Image} | |
*/ | |
function setImageData(url, image) { | |
canvas.width = image.width; | |
canvas.height = image.height; | |
ctx.drawImage(image, 0, 0); | |
ghcs.storage.set(url, canvas.toDataURL("image/png")); | |
canvas.width = 0; | |
canvas.height = 0; | |
} | |
})(ghcs); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* User: ArtZub | |
* Date: 15.01.13 | |
* Time: 1:36 | |
*/ | |
'use strict'; | |
var TYPE_REQUEST = { | |
repos : 1, | |
commits : 2 | |
} | |
, TYPE_STATUS_FILE = { | |
removed : 0, | |
modified : 1, | |
added : 2, | |
renamed : 3 | |
} | |
; | |
function makeUrl(url, type, limit) { | |
limit = limit || 0; | |
var sec = "client_id=" + ghcs.settings.access.client_id + "&client_secret=" + ghcs.settings.access.client_secret; | |
if (type == TYPE_REQUEST.repos) { | |
sec += (ghcs.rot ? "&per_page=100&type=" + ghcs.rot : "" ); | |
} | |
else if(type == TYPE_REQUEST.commits) { | |
limit = limit < 0 ? ghcs.limits.commits : limit; | |
sec += "&per_page=" + (limit > 100 ? 100 : limit) | |
} | |
return url ? (url + (url.indexOf('?') === -1 ? '?' : '&') + sec) : url; | |
} | |
function crossUrl(url, rt) { | |
return url; | |
/*var result = url, arr = /(.*)?\?(.*)/.exec(url); | |
if (arr) { | |
result = "http://artzub.com/cross/?" | |
+ ( rt ? "rt=" + rt + "&" : "" ) | |
+ "u=" + arr[1]; | |
if (arr.length > 2) | |
result += "&d=" + encodeURIComponent(arr[2]); | |
} | |
return result;*/ | |
} | |
function randTrue() { | |
return Math.round((Math.random() * 2) % 2); | |
} | |
function getDataFromRequest(req) { | |
return req && req.meta && req.meta.status == 200 && req.data ? req.data : (log(req) && null); | |
} | |
function parseCommit(org_commit, commit){ | |
if (!commit || !org_commit || commit.sha != org_commit.sha) | |
return; | |
var s = commit.stats = { | |
f : { | |
m : 0, | |
a : 0, | |
d : 0 | |
}, | |
changes : 0, | |
additions : 0, | |
deletions : 0 | |
}; | |
commit.files = org_commit.files.map(function(f) { | |
if (TYPE_STATUS_FILE[f.status] == undefined) | |
console.log(f.status); | |
f.status = TYPE_STATUS_FILE[f.status]; | |
if (f.changes > 0) { | |
s.changes += f.changes; | |
s.additions += f.additions; | |
s.deletions += f.deletions; | |
} | |
else if(f.status) { | |
commit.stats.changes++; | |
commit.stats.additions++; | |
} | |
else if(!f.status) { | |
commit.stats.changes -= commit.stats.changes ? 1 : 0; | |
commit.stats.additions -= commit.stats.additions ? 1 : 0; | |
} | |
(f.status == TYPE_STATUS_FILE.modified || f.status == TYPE_STATUS_FILE.renamed) && s.f.m++; | |
f.status == TYPE_STATUS_FILE.added && s.f.a++; | |
!f.status && s.f.d++; | |
return { | |
name : f.filename.toLowerCase(), | |
changes : f.changes || 0, | |
additions : f.additions || 0, | |
deletions : f.deletions || 0, | |
status : f.status | |
} | |
}); | |
ghcs.repo.stats = ghcs.repo.stats || {}; | |
ghcs.repo.stats.changes = d3.max([ghcs.repo.stats.changes || 0, commit.stats.deletions, commit.stats.additions]); | |
ghcs.repo.stats.files = d3.max([ghcs.repo.stats.files || 0, s.f.a + s.f.m, s.f.d]); | |
} | |
function upCommits() { | |
redrawStats(); | |
updateStatus(ghcs.states.cur++); | |
ldrTop.show(); | |
psBar.show(); | |
checkCompleted(); | |
} | |
function preloadImage(url) { | |
var ava, image; | |
image = ghcs.imageHash.get(url); | |
if (!image) { | |
image = new Image(); | |
//ava = ghcs.storage.get(url); | |
//if (!ava) { | |
image.onerror = function () { | |
return console.log(this); | |
}; | |
/*image.onload = (function (url) { | |
return function () { | |
if (url) | |
ghcs.storage.setImageData(url, this); | |
}; | |
})(url);*/ | |
image.src = crossUrl((url || (url = "https://secure.gravatar.com/avatar/" + Date.now() + Date.now() + "?d=identicon&f=y")) + "&s=48", "image"); | |
/*} | |
else { | |
image.src = ava; | |
}*/ | |
ghcs.imageHash.set(url, image); | |
} | |
return image; | |
} | |
function parseCommits(commits) { | |
ghcs.repo.commits = ghcs.repo.commits || d3.map({}); | |
if (commits && commits.length) { | |
updateStatus(ghcs.states.cur); | |
psBar.show(); | |
ldrTop.show(); | |
commits.forEach(function(d, i) { | |
var obj = ghcs.repo.commits.get(d.sha); | |
if (!obj) { | |
obj = { | |
url : d.url, | |
sha : d.sha, | |
author : { | |
name : d.commit.author.name, | |
email : d.commit.author.email, | |
login : d.author && d.author.login ? d.author.login : d.commit.author.email | |
}, | |
committer : { | |
name : d.commit.committer.name, | |
email : d.commit.committer.email, | |
login : d.committer && d.committer.login ? d.committer.login : d.commit.committer.email | |
}, | |
date : Date.parse(d.commit.author.date), | |
avatar_url : (d.author && d.author.avatar_url ? d.author.avatar_url : null), | |
message : d.commit.message, | |
parents : d.parents | |
}; | |
ghcs.repo.commits.set(obj.sha, obj); | |
obj.author.avatar = preloadImage(obj.avatar_url); | |
} | |
if (!obj.files) { | |
JSONP(makeUrl(obj.url), (function(c) { | |
ghcs.repo.dates.push(c.date); | |
ghcs.repo.dates.sort(d3.ascending); | |
return function(req) { | |
parseCommit(getDataFromRequest(req), ghcs.repo.commits.get(c.sha)); | |
upCommits(); | |
}; | |
})(obj), { | |
onerror : function(err) { | |
console.log(err); | |
upCommits(); | |
} | |
}); | |
} | |
else { | |
upCommits(); | |
} | |
}); | |
} | |
else { | |
upCommits(); | |
} | |
} | |
function clearUserRepos() { | |
if (ghcs.users.hasOwnProperty(ghcs.login) && ghcs.users[ghcs.login].hasOwnProperty("repos")) | |
delete ghcs.users[ghcs.login]["repos"] | |
} | |
function parseRepos(data) { | |
if (data) { | |
ghcs.users[ghcs.login] = ghcs.users[ghcs.login] || {}; | |
ghcs.users[ghcs.login].repos = (ghcs.users[ghcs.login].repos || []).concat( | |
data.filter(function (d) { | |
return !d.private && !d.hasOwnProperty("nodeValue"); | |
}).map(function (d) { | |
return { | |
x : (Math.random() * w) || 1, | |
y : (Math.random() * h) || 1, | |
nodeValue : { | |
id: d.id, | |
name: d.name, | |
url: d.url, | |
html_url: d.html_url, | |
commits_url : d.commits_url.replace(/{.*$/, ""), | |
size : d.size, | |
date : Date.parse(d.pushed_at || d.updated_at), | |
cdate : Date.parse(d.created_at), | |
desc : d.description, | |
lang : d.language || "Multi" | |
} | |
}; | |
}) | |
); | |
ghcs.states.cur = ghcs.users[ghcs.login].repos.length; | |
} | |
updateStatus(ghcs.states.cur, "loading ..."); | |
ldrTop.show(); | |
psBar.show(); | |
checkCompleted(); | |
redrawRepos(); | |
} | |
function chSelect(e) { | |
if (e) { | |
ghcs.repo = e.nodeValue; | |
ghcs.repo.dates = []; | |
ghcs.repo.changes = []; | |
runBtn.enable(); | |
curRep.setName(e); | |
} | |
else { | |
ghcs.repo = null; | |
runBtn.disable(); | |
curRep.setName(null); | |
stepsBar.secondStep(); | |
} | |
} | |
function chUser() { | |
if (ghcs.chUserTimer) { | |
clearTimeout(ghcs.chUserTimer); | |
delete ghcs.chUserTimer; | |
} | |
ghcs.chUserTimer = setTimeout((function (login) { | |
return function () { | |
if (login) { | |
stepsBar.firstStep(); | |
curRep.setName(null); | |
vis.clearRepos(); | |
userTxt.disable(); | |
showBtn.disable(); | |
runBtn.disable(); | |
ghcs.login = login; | |
ghcs.repo = null; | |
redrawStats(); | |
ghcs.states.complete = function() { | |
stepsBar.secondStep(); | |
ldrTop.hide(); | |
setTimeout(nextStepApplyParams, 500); | |
}; | |
cbDlr.check(); | |
if (!ghcs.users.hasOwnProperty(login) || !ghcs.users[login].hasOwnProperty("repos")) { | |
ldrTop.show(); | |
JSONP(makeUrl("https://api.github.com/users/" + login), function (req) { | |
var data = getDataFromRequest(req); | |
if (!data) { | |
parseRepos(null); | |
return; | |
} | |
var u = ghcs.users[data.login] = {info: data}; | |
u.info.avatar = new Image();//preloadeImage(u.info.avatar_url); | |
u.info.avatar.src = u.info.avatar_url; | |
ghcs.login = data.login; | |
ghcs.states.max = +u.info.public_repos; | |
ghcs.states.cur = 0; | |
updateStatus(ghcs.states.cur, "loading ..."); | |
psBar.show(); | |
if (data.repos_url) | |
JSONP(makeUrl(data.repos_url, TYPE_REQUEST.repos), function getAll(req) { | |
parseRepos(getDataFromRequest(req)); | |
getNext(req, function(next) { | |
if (next) { | |
ldrTop.show(); | |
JSONP(next, getAll); | |
} | |
}); | |
divStat.updateInfo(); | |
}, { | |
onerror : function(err) { | |
console.log(err); | |
} | |
}); | |
else | |
parseRepos(null); | |
divStat.updateInfo(); | |
}); | |
} | |
else { | |
ghcs.states.max = ghcs.users[login].repos ? ghcs.users[login].repos.length : 0; | |
parseRepos(ghcs.users[login].repos); | |
} | |
divStat.updateInfo(); | |
userTxt.enable(); | |
} | |
} | |
})(userTxt.property("value")), 300); | |
} | |
function getNext(req, fn) { | |
var next; | |
if (req && req.meta && req.meta.Link) { | |
next = req.meta.Link.reduce(function (a, b) { | |
if (!a && b[1].rel == "next") | |
return b[0]; | |
return a; | |
}, null); | |
} | |
fn && fn(next); | |
} | |
function analyseCommits() { | |
runBtn.disable(); | |
ldrTop.show(); | |
ghcs.states.max = ghcs.limits.commits; | |
ghcs.states.cur = 0; | |
ghcs.states.loaded = 0; | |
ghcs.states.complete = function() { | |
stepsBar.thirdStep(); | |
runBtn.enable(); | |
ldrTop.hide(); | |
visBtn.enable(); | |
if (ghcs.repo && ghcs.repo.commits) | |
ghcs.repo.commitsCount = ghcs.repo.commits.values().filter(function(d) { | |
return !!d.files; | |
}).length; | |
vis.redrawStat(ghcs.repo); | |
setTimeout(nextStepApplyParams, 500); | |
}; | |
vis.layers.stat.toFront(); | |
cbDlsr.check(); | |
if (!ghcs.repo || !ghcs.repo.commits_url || ghcs.repo.loadedAll) { | |
updateStatus(ghcs.states.cur = ghcs.states.max); | |
checkCompleted(); | |
return; | |
} | |
JSONP(makeUrl(ghcs.repo.commits_url, TYPE_REQUEST.commits, ghcs.limits.commits), function getAll(req) { | |
getNext(req, function(next) { | |
var l = req && req.data && req.data instanceof Array ? req.data.length : 0; | |
ghcs.states.loaded += l; | |
l = ghcs.states.max - ghcs.states.loaded; | |
if (next && l > 0) { | |
updateStatus(ghcs.states.cur); | |
psBar.show(); | |
ldrTop.show(); | |
JSONP(next.replace("per_page=100", "per_page=" + (l > 100 ? 100 : l)), | |
getAll, { | |
onerror : (function(len) { | |
return function() { | |
ghcs.states.max -= len; | |
}; | |
})(l) | |
}); | |
} | |
else { | |
if (!next) | |
ghcs.repo.loadedAll = true; | |
ghcs.states.max = | |
ghcs.states.loaded; | |
} | |
}); | |
parseCommits(getDataFromRequest(req)); | |
}); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" standalone="no"?> | |
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > | |
<svg xmlns="http://www.w3.org/2000/svg"> | |
<metadata></metadata> | |
<defs> | |
<font id="octiconsregular" horiz-adv-x="2048" > | |
<font-face units-per-em="2048" ascent="1638" descent="-410" /> | |
<missing-glyph horiz-adv-x="500" /> | |
<glyph /> | |
<glyph /> | |
<glyph unicode="
" /> | |
<glyph unicode="" horiz-adv-x="500" d="M0 0z" /> | |
<glyph unicode="" d="M1792 1664v-1536q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14h-640v-256l-192 192l-192 -192v256h-256q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7h1280q48 0 88 -40t40 -88zM384 512 h128v1152h-128v-1152zM896 768h512v384q0 96 -80 176t-176 80t-176 -80t-80 -176v-384zM1280 1152h-256q0 48 40 88t88 40t88 -40t40 -88zM1024 128h512q5 0 13.5 1t31 7.5t39 18.5t30.5 38.5t14 62.5v128h-1280v-128q0 -5 1 -13.5t7.5 -31t18.5 -39t38.5 -30.5t62.5 -14 h128v128h384v-128z" /> | |
<glyph unicode="" d="M1792 1664v-1536q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14h-640v-256l-192 192l-192 -192v256h-256q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7h1280q5 0 13.5 -1t31 -7.5t39 -18.5 t30.5 -38.5t14 -62.5zM1664 1664h-1024v-1152h1024v1152zM896 1408h-128v128h128v-128zM896 1152h-128v128h128v-128zM896 896h-128v128h128v-128zM896 640h-128v128h128v-128zM1024 128h512q5 0 13.5 1t31 7.5t39 18.5t30.5 38.5t14 62.5v128h-1280v-128q0 -5 1 -13.5 t7.5 -31t18.5 -39t38.5 -30.5t62.5 -14h128v128h384v-128z" /> | |
<glyph unicode="" d="M1792 1664v-1536q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14h-640v-256l-192 192l-192 -192v256h-256q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7h1280q48 0 88 -40t40 -88z M1664 1664h-1024v-1152h1024v1152zM1024 896l-256 256v384h256v-256l128 -128l128 128v256h256v-384l-256 -256v-256h-256v256zM1024 128h512q5 0 13.5 1t31 7.5t39 18.5t30.5 38.5t14 62.5v128h-1280v-128q0 -5 1 -13.5t7.5 -31t18.5 -39t38.5 -30.5t62.5 -14h128v128h384 v-128z" /> | |
<glyph unicode="" d="M1792 896v-768q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14h-640v-256l-192 192l-192 -192v256h-256q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7h768v-128h-512v-1152h1024v384h128z M1920 1536v-256h-256v-256h-256v256h-256v256h256v256h256v-256h256zM896 1408h-128v128h128v-128zM896 1152h-128v128h128v-128zM896 896h-128v128h128v-128zM768 768h128v-128h-128v128zM1024 128h512q5 0 13.5 1t31 7.5t39 18.5t30.5 38.5t14 62.5v128h-1280v-128 q0 -5 1 -13.5t7.5 -31t18.5 -39t38.5 -30.5t62.5 -14h128v128h384v-128z" /> | |
<glyph unicode="" d="M1536 1664h-1280l128 128h1152v-128zM640 1408h-384v128h384v-128zM896 1408h-128v128h128v-128zM1920 1536v-256h-768v256h768zM640 1152h-384v128h384v-128zM896 1152h-128v128h128v-128zM640 896h-384v128h384v-128zM896 896h-128v128h128v-128zM640 640h-384v128h384 v-128zM768 768h128v-128h-128v128zM1664 768h128v-128h-128v128zM256 512h1536v-128h-1536v128zM256 256h1536l-128 -128h-1280zM640 0h128l-128 -128v128zM896 0h128v-128z" /> | |
<glyph unicode="" d="M1792 1664v-1536q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14h-256v128h128q5 0 13.5 1t31 7.5t39 18.5t30.5 38.5t14 62.5v128h-256v128h256v1152h-1024v-1152h256v-128h-512v-128q0 -5 1 -13.5t7.5 -31t18.5 -39t38.5 -30.5t62.5 -14h128v128h256v-256 l-256 -256v256h-256q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7h1280q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5zM896 1408h-128v128h128v-128zM768 1280h128v-128h-128v128zM1536 640h-256 v-896h-256v896h-256l384 512z" /> | |
<glyph unicode="" d="M1536 896v-384v-384q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14h-640v-256l-192 192l-192 -192v256h-256q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7h1280q5 0 13.5 -1t31 -7.5 t39 -18.5t30.5 -38.5t14 -62.5v-256h-128v256h-1024v-1152h1024v384h128zM640 1408h-128v128h128v-128zM1664 768v256h-768v256h768v256l384 -384zM640 1152h-128v128h128v-128zM640 896h-128v128h128v-128zM512 768h128v-128h-128v128zM768 128h512q5 0 13.5 1t31 7.5 t39 18.5t30.5 38.5t14 62.5v128h-1280v-128q0 -5 1 -13.5t7.5 -31t18.5 -39t38.5 -30.5t62.5 -14h128v128h384v-128z" /> | |
<glyph unicode="" d="M2048 1280v-1152h-256l-128 128h-384l-128 -128h-256l-128 128h-384l-128 -128h-256v1152l256 256h640l128 -128l128 128h640zM1920 1280l-128 128h-640l-128 -128l-128 128h-640l-128 -128v-896l128 128h512l128 -128h128v-128h128v128l128 128h512l128 -128v896z M256 1280h512v-128h-512v128zM1024 1152v128h128v-128h-128zM1280 1280h512v-128h-512v128zM896 1152h128v-128h-128v128zM256 1024h512v-128h-512v128zM1024 896v128h128v-128h-128zM1280 1024h512v-128h-512v128zM896 896h128v-128h-128v128zM256 768h512v-128h-512v128z M1024 640v128h128v-128h-128zM1280 768h512v-128h-512v128zM896 640h128v-128h-128v128zM1152 512v-128h-128v128h128z" /> | |
<glyph unicode="" d="M1882 1237q166 -181 166 -429q0 -139 -26 -251.5t-72.5 -195.5t-118 -146t-155 -103t-190.5 -65t-218 -35t-245 -10q-133 0 -244 10t-217.5 35t-189.5 65t-154 103t-117 146t-72 195.5t-26 251.5q0 248 166 429q-9 24 -16.5 54.5t-14 87t5 130.5t42.5 151q6 2 16.5 3.5 t50.5 -2.5t86 -17.5t123.5 -52t162.5 -96.5q146 40 400 40q255 0 401 -40q85 58 161.5 96.5t125 52t85 18t52.5 1.5l15 -3q31 -77 42.5 -151t5 -130.5t-14 -87t-16.5 -54.5zM1019 128q107 0 176.5 2t158 11.5t145 26.5t116 48.5t93 76.5t55 111.5t21.5 152.5q0 146 -131 264 q-39 36 -91 54.5t-117.5 21t-125.5 -1t-148 -9.5t-152 -6t-152 6t-148 9.5t-125.5 1t-117.5 -21t-91 -54.5q-131 -120 -131 -264q0 -86 21.5 -152.5t55 -111.5t93 -76.5t116 -48.5t145 -26.5t158 -11.5t176.5 -2zM699 768q64 0 108.5 -66.5t44.5 -161.5t-44.5 -161.5 t-108.5 -66.5t-109 67t-45 161t45 161t109 67zM1341 768q64 0 109 -67t45 -161t-45 -161t-109 -67q-63 0 -108 67t-45 161t45 161t108 67z" /> | |
<glyph unicode="" d="M1022 1792q208 0 397 -81t325.5 -217.5t217.5 -326t81 -397.5t-81 -397.5t-217.5 -327.5t-325.5 -219.5t-397 -81.5t-397.5 81.5t-326 219.5t-217.5 327.5t-81 397.5t81 397.5t217.5 326t326 217.5t397.5 81zM1277 100v-164q268 96 437 323t169 511q0 175 -68.5 335 t-183.5 275t-274.5 183.5t-334.5 68.5t-335 -68.5t-275 -183.5t-183.5 -275t-68.5 -335q0 -288 172 -515.5t444 -318.5v164q0 122 82 178q-52 5 -95.5 14t-92 26t-87 40.5t-74 61t-59.5 85t-38 114t-14 146.5q0 155 101 264q-46 119 10 261q3 1 10 2t31.5 -1t53 -10.5 t76 -32t100.5 -59.5q117 33 246 33q128 0 247 -33q84 57 151.5 82t93.5 22l25 -3q56 -141 10 -261q101 -109 101 -264q0 -80 -14 -146.5t-38 -114t-59.5 -85t-74 -61t-87 -40.5t-92 -26t-95.5 -14q83 -57 83 -178z" /> | |
<glyph unicode="" d="M761 93v-285q-215 31 -390 169.5t-273 347t-98 443.5q0 208 81 397.5t217.5 326.5t326 218t397.5 81q207 0 396 -81t326 -218t218 -326.5t81 -397.5q0 -235 -98 -443.5t-273 -347t-390 -169.5v285q0 127 -86 186q78 8 139.5 23t127.5 51t110 88.5t72.5 140.5t28.5 204 q0 159 -105 274q47 126 -10 272q-4 1 -10.5 2t-32 -1.5t-55.5 -11t-79.5 -33t-104.5 -61.5q-125 34 -255 34q-131 0 -256 -34q-55 37 -104 61.5t-80 33t-54 11.5t-33 1l-10 -2q-58 -146 -11 -272q-105 -115 -105 -274q0 -116 28.5 -204t72.5 -140.5t110 -88.5t127.5 -51 t139.5 -23q-85 -59 -86 -186z" /> | |
<glyph unicode="" d="M768 521v-130q-160 23 -267 142q-60 -21 -117 -21q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5q8 0 51 -5q75 174 234.5 281.5t354.5 107.5t354.5 -107.5t234.5 -281.5q43 5 51 5q159 0 271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5 q-1 0 -3 0.5t-3 0.5q-131 -129 -314 -129q-22 0 -64 6v130q34 -8 64 -8q79 0 148 36.5t113 99.5q30 -8 59 -8q106 0 181 75t75 181t-75 181t-181 75q-73 0 -139 -41q-31 182 -172 303.5t-329 121.5t-329.5 -121t-173.5 -303q-64 40 -137 40q-106 0 -181 -75t-75 -181 t75 -181t181 -75q87 0 159 57q32 -68 91 -114t134 -62zM1152 256h256l-384 -384l-384 384h256v640h256v-640z" /> | |
<glyph unicode="" d="M768 393v-130q-160 23 -267 142q-60 -21 -117 -21q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5q8 0 51 -5q75 174 234.5 281.5t354.5 107.5t354.5 -107.5t234.5 -281.5q43 5 51 5q159 0 271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5 q-1 0 -3 0.5t-3 0.5q-131 -129 -314 -129q-22 0 -64 6v130q34 -8 64 -8q79 0 148 36.5t113 99.5q30 -8 59 -8q106 0 181 75t75 181t-75 181t-181 75q-73 0 -139 -41q-31 182 -172 303.5t-329 121.5t-329.5 -121t-173.5 -303q-64 40 -137 40q-106 0 -181 -75t-75 -181 t75 -181t181 -75q87 0 159 57q32 -68 91 -114t134 -62zM1408 640h-256v-640h-256v640h-256l384 384z" /> | |
<glyph unicode="" d="M2048 1536v-1536h-2048v1536h2048zM1920 1408h-1792v-1280h1792v1280zM512 1024h-256v256h256v-256zM768 1024h-128v256h128v-256zM1024 1024h-128v256h128v-256zM1280 1024h-128v256h128v-256zM1536 1024h-128v256h128v-256zM1536 896h128v384h128v-640h-256v256z M384 640h-128v256h128v-256zM512 896h128v-256h-128v256zM768 896h128v-256h-128v256zM1024 896h128v-256h-128v256zM1280 896h128v-256h-128v256zM384 256h-128v256h128v-256zM512 512h128v-256h-128v256zM768 512h640v-256h-640v256zM1536 512h256v-256h-256v256z" /> | |
<glyph unicode="" d="M1792 1664v-1664h-1536v1664h1536zM1664 1536h-1280v-1408h1280v1408zM1536 1280h-1024q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h768q26 0 47 -7t34 -18.5t23 -25t14 -27t6.5 -25t3.5 -18.5v-7zM832 384l-320 320l320 320l128 -128l-192 -192l192 -192zM1216 1024 l320 -320l-320 -320l-128 128l192 192l-192 192z" /> | |
<glyph unicode="" d="M1792 1664v-1664h-1536v1664h1536zM1664 1536h-1280v-1408h1280v1408zM1536 1280h-1024q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h768q26 0 47 -7t34 -18.5t23 -25t14 -27t6.5 -25t3.5 -18.5v-7zM768 384v384q0 96 80 176t176 80t176 -80t80 -176v-384h-512z M896 768h256q0 48 -40 88t-88 40t-88 -40t-40 -88z" /> | |
<glyph unicode="" d="M1792 1280v-1408h-1536v1792h1152zM1664 1152l-384 384h-896v-1536h1280v1152zM960 896l-192 -192l192 -192l-128 -128l-320 320l320 320zM1216 1024l320 -320l-320 -320l-128 128l192 192l-192 192z" /> | |
<glyph unicode="" d="M1792 1280v-1408h-1536v1792h1152zM1664 1152l-384 384h-896v-1536h1280v1152zM1152 1152h-640v128h640v-128zM512 896h1024v-128h-1024v128zM512 640h1024v-128h-1024v128zM512 384h1024v-128h-1024v128z" /> | |
<glyph unicode="" d="M1792 -128v1408l-384 384h-1152v-1792h1536zM1664 0h-1280v1536h896l384 -384v-1152zM512 256h256q0 96 80 176t176 80q-96 0 -176 80t-80 176t80 176t176 80t176 -80t80 -176t-80 -176t-176 -80q96 0 176 -80t80 -176h256v768l-256 256h-768v-1024z" /> | |
<glyph unicode="" d="M1792 1280v-1408h-1536v1792h1152zM1664 1152l-384 384h-384v-128h-128v128h-384v-1536h1280v1152zM640 1408h128v-128h-128v128zM768 1152v128h128v-128h-128zM640 1152h128v-128h-128v128zM768 896v128h128v-128h-128zM640 896h128v-128h-128v128zM768 640v128h128 v-128h-128zM640 640h128v-128h128l128 -128v-256h-512v256l128 128v128zM640 384v-128h256v128h-256z" /> | |
<glyph unicode="" d="M1792 1280v-1408h-1536v1792h1152zM384 1536v-1201q93 81 215 120q29 51 128.5 262.5t130.5 314.5q-34 117 -43 230.5t11 187.5q19 71 70 86h-512zM1664 1152l-384 384h-324q49 0 81 -36.5t23 -109.5q8 -140 -26 -347q18 -51 37 -95t38.5 -77.5t37 -60t38.5 -47.5 l34.5 -34.5t34 -26t28.5 -17.5t26.5 -13.5t20.5 -9.5q84 9 157 9q100 0 178 -50v531zM950 921q-35 -135 -186 -437l-8 -17q79 35 164.5 59t135.5 33t165 27q-8 4 -29.5 12.5t-31 13t-30 17.5t-33 26t-32.5 38t-36 55t-37 74t-42 99zM1664 0v397q-35 -5 -48 -4 q-65 4 -161 30.5t-174 65.5q-187 -19 -375 -66q-2 -1 -27 -9.5t-60.5 -21.5t-69.5 -27q-68 -115 -126.5 -192t-102 -112.5t-73.5 -48t-59 -12.5q-1 0 -2 0.5t-2 0.5v-1h1280z" /> | |
<glyph unicode="" d="M1920 640l-768 -768l-1024 1024v512l256 256h512zM1152 64l564 576l-896 896h-372l-192 -192v-384zM768 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM576 1152q26 0 45 19t19 45t-19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19z M1536 640l-384 -384l-512 512l384 384zM1152 452l196 188l-324 324l-192 -196z" /> | |
<glyph unicode="" d="M128 128v1280q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h640q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5q0 -5 1 -13.5t7.5 -31t18.5 -39t38.5 -30.5t62.5 -14h640q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5v-1024h-1792zM896 1408h-640v-128h640 v128z" /> | |
<glyph unicode="" d="M128 128v1280q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h640q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5q0 -5 1 -13.5t7.5 -31t18.5 -39t38.5 -30.5t62.5 -14h640q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5v-256h-384q0 5 -1 13.5t-7.5 31 t-18.5 39t-38.5 30.5t-62.5 14h-512q-5 0 -13.5 -1t-31 -7.5t-39 -18.5t-30.5 -38.5t-14 -62.5v-768h-640zM896 1408h-640v-128h640v128zM1408 768h384q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5v-512h-1024v640q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h256 q26 0 47 -7t34 -18.5t23 -25t14 -27t6.5 -25t3.5 -18.5v-7zM1280 768h-256v-128h256v128z" /> | |
<glyph unicode="" d="M1408 1408q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1024 1152q106 0 181 75t75 181t-75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75zM768 1024h512q106 0 181 -75t75 -181v-256 q0 -106 -75 -181t-181 -75v-512h-512v512q-106 0 -181 75t-75 181v256q0 106 75 181t181 75zM1408 512v256q0 53 -37.5 90.5t-90.5 37.5h-512q-53 0 -90.5 -37.5t-37.5 -90.5v-256q0 -53 37.5 -90.5t90.5 -37.5v256h128v-768h256v768h128v-256q53 0 90.5 37.5t37.5 90.5z " /> | |
<glyph unicode="" d="M735 1157q-33 -60 -92.5 -96.5t-130.5 -36.5q-106 0 -181 75t-75 181t75 181t181 75q76 0 139 -41q30 129 134 213t239 84t239 -84t134 -213q63 41 139 41q106 0 181 -75t75 -181t-75 -181t-181 -75q-71 0 -130.5 36.5t-92.5 96.5q-117 -133 -289 -133t-289 133z M1024 1664q-106 0 -181 -75t-75 -181t75 -181t181 -75t181 75t75 181t-75 181t-181 75zM512 1152q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5zM1536 1408q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5zM384 1024h1280q106 0 181 -75t75 -181v-128q0 -69 -35 -127.5t-93 -92.5v-420h-512v-256h-512v256h-512v420q-58 34 -93 92.5t-35 127.5v128q0 106 75 181t181 75zM640 128v164q-58 34 -93 92.5t-35 127.5v256q0 66 36 128h-164 q-53 0 -90.5 -37.5t-37.5 -90.5v-128h128v-512h256zM1280 640v-256q53 0 90.5 37.5t37.5 90.5v256q0 53 -37.5 90.5t-90.5 37.5h-512q-53 0 -90.5 -37.5t-37.5 -90.5v-256q0 -53 37.5 -90.5t90.5 -37.5v256h128v-768h256v768h128zM1792 640v128q0 53 -37.5 90.5t-90.5 37.5 h-164q36 -59 36 -128v-256q0 -69 -35 -127.5t-93 -92.5v-164h256v512h128z" /> | |
<glyph unicode="" d="M1024 1408q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM640 1152q106 0 181 75t75 181t-75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75zM1920 1408v-256h-256v-256h-256v256h-256v256h256 v256h256v-256h256zM384 1024h512q106 0 181 -75t75 -181v-256q0 -106 -75 -181t-181 -75v-512h-512v512q-106 0 -181 75t-75 181v256q0 106 75 181t181 75zM1024 512v256q0 53 -37.5 90.5t-90.5 37.5h-512q-53 0 -90.5 -37.5t-37.5 -90.5v-256q0 -53 37.5 -90.5t90.5 -37.5 v256h128v-768h256v768h128v-256q53 0 90.5 37.5t37.5 90.5z" /> | |
<glyph unicode="" d="M896 1664h-512l256 128zM256 1408l-2 123l130 5v-128h-128zM1024 1408h-128v128h128v-128zM1920 1408v-256h-768v256h768zM384 1280l128 -128h-128l-128 128h128zM896 1280h128l-128 -128h-128zM896 1024l256 -128h-1024l256 128h512zM128 768h128v-128h-128v128z M1024 768h128v-128h-128v128zM128 512h128v-128h-128v128zM512 384h-128v128h128v-128zM768 512h128v-128h-128v128zM1024 512h128v-128h-128v128zM384 256h128v-128h-128v128zM768 256h128v-128h-128v128zM384 0h512v-128h-512v128z" /> | |
<glyph unicode="" d="M1792 1408q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1408 1152q106 0 181 75t75 181t-75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75zM384 1152l384 -384l-384 -384v256h-256v256h256 v256zM1152 1024h512q106 0 181 -75t75 -181v-256q0 -106 -75 -181t-181 -75v-512h-512v512q-106 0 -181 75t-75 181v256q0 106 75 181t181 75zM1792 512v256q0 53 -37.5 90.5t-90.5 37.5h-512q-53 0 -90.5 -37.5t-37.5 -90.5v-256q0 -53 37.5 -90.5t90.5 -37.5v256h128v-768 h256v768h128v-256q53 0 90.5 37.5t37.5 90.5z" /> | |
<glyph unicode="" d="M2048 1536v-256h-256v-256h-256v256h-256v256h256v256h256v-256h256zM1920 896v125q40 -62 72 -125.5t44 -95.5l12 -32q-5 -13 -15.5 -36t-51 -89.5t-90.5 -127t-136.5 -134.5t-186 -127t-242.5 -89.5t-302 -36.5q-125 0 -240 22t-204 59t-168 85t-136.5 101t-105 106 t-78.5 101t-52.5 85t-30.5 59l-9 22q3 10 9.5 27t31 69.5t54 103.5t79.5 120t106.5 128.5t136.5 120t168 103t202 69.5t237 27h32l65 -260q-41 4 -97 4q-102 0 -193.5 -17.5t-160 -47t-128 -68t-100.5 -81t-74.5 -85t-54 -81t-34 -68t-18.5 -46.5l-5 -18q2 -7 5.5 -18 t18 -46t33.5 -69t53 -80t74.5 -85.5t100.5 -80t128 -69t160 -46.5t195 -18t195 17.5t160.5 47t128 68t100.5 81t74 85t53 81t33.5 68t18.5 46.5l5 18q-9 35 -34 87zM832 768q80 0 136 56t56 136q0 58 -31 105t-82 70q56 17 113 17q159 0 271.5 -112.5t112.5 -271.5 t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5q0 57 17 113q23 -51 70 -82t105 -31z" /> | |
<glyph unicode="" d="M1326 1203l205 205l-205 205l133 133l205 -205l205 205l133 -133l-205 -205l205 -205l-133 -133l-205 205l-205 -205zM1737 896h255q17 -34 31 -66t19 -47l6 -15q-5 -13 -15.5 -36t-51 -89.5t-90.5 -127t-136.5 -134.5t-186 -127t-242.5 -89.5t-302 -36.5q-125 0 -240 22 t-204 59t-168 85t-136.5 101t-105 106t-78.5 101t-52.5 85t-30.5 59l-9 22q3 10 9.5 27t31 69.5t54 103.5t79.5 120t106.5 128.5t136.5 120t168 103t202 69.5t237 27q62 0 128 -8v-248l14 -10q-75 10 -142 10q-102 0 -193.5 -17.5t-160 -47t-128 -68t-100.5 -81t-74.5 -85 t-54 -81t-34 -68t-18.5 -46.5l-5 -18q2 -7 5.5 -18t18 -46t33.5 -69t53 -80t74.5 -85.5t100.5 -80t128 -69t160 -46.5t195 -18t195 17.5t160.5 47t128 68t100.5 81t74 85t53 81t33.5 68t18.5 46.5l5 18q-14 55 -55 128zM913 1134q57 18 111 18q159 0 271.5 -112.5 t112.5 -271.5t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5q0 48 18 111q24 -50 70.5 -80.5t103.5 -30.5q80 0 136 56t56 136q0 57 -30.5 103.5t-80.5 70.5z" /> | |
<glyph unicode="" d="M1920 896v-256h-402q-43 -167 -180.5 -275.5t-313.5 -108.5t-313.5 108.5t-180.5 275.5h-402v256h402q43 167 180.5 275.5t313.5 108.5t313.5 -108.5t180.5 -275.5h402zM1024 512q106 0 181 75t75 181t-75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75z" /> | |
<glyph unicode="" d="M1280 896v36q-58 34 -93 92t-35 128q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128t-93 -92v-36q0 -7 -0.5 -18t-5.5 -46t-13.5 -69t-27 -80t-43 -85.5t-64.5 -80t-88.5 -69t-118 -46.5t-151.5 -18q-129 0 -196 -83q68 -73 68 -173q0 -98 -76 -177t-180 -79 t-180 79t-76 177q0 69 35 127.5t93 92.5v840q-58 34 -93 92t-35 128q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128t-93 -92v-606q111 58 256 58q52 0 94.5 14t68.5 36.5t45 50t28 55t14 50t6 36.5v14zM640 1536q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5 t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5zM1408 1024q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5zM640 0q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5 t90.5 -37.5z" /> | |
<glyph unicode="" d="M768 1188v-619q123 71 256 71q106 0 181 75t75 181h256q0 -212 -150 -362t-362 -150q-114 0 -192 -88q64 -74 64 -168q0 -98 -76 -177t-180 -79t-180 79t-76 177q0 69 35 127.5t93 92.5v840q-58 34 -93 92t-35 128q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128 t-93 -92zM1152 1024v384q0 106 75 181t181 75t181 -75t75 -181v-384h-512zM640 1536q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5zM1280 1408h256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5zM640 0 q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5z" /> | |
<glyph unicode="" d="M1152 1536h128q8 0 22 -1t53.5 -8.5t76 -20.5t81 -41.5t76 -67.5t53.5 -102.5t22 -142.5v-804q58 -34 93 -92.5t35 -127.5q0 -98 -76 -177t-180 -79t-180 79t-76 177q0 69 35 127.5t93 92.5v804q-1 5 -2.5 13.5t-10 31t-21.5 39t-37.5 30.5t-56.5 14h-128v-256l-384 384 l384 384v-256zM384 348v840q-58 34 -93 92t-35 128q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128t-93 -92v-840q58 -34 93 -92.5t35 -127.5q0 -98 -76 -177t-180 -79t-180 79t-76 177q0 69 35 127.5t93 92.5zM512 1280q53 0 90.5 37.5t37.5 90.5t-37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5zM512 0q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5zM1536 0q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5 t90.5 -37.5z" /> | |
<glyph unicode="" d="M384 348v840q-58 34 -93 92t-35 128q0 106 75 181t181 75t181 -75t75 -181q0 -116 -90 -193q69 -188 240.5 -317.5t361.5 -129.5l35 -2q34 59 92.5 94.5t128.5 35.5q106 0 181 -75t75 -181t-75 -181t-181 -75q-70 0 -128.5 35t-92.5 93h-35q-177 0 -326.5 76t-313.5 221 v-461q58 -34 93 -92t35 -128q0 -98 -76 -177t-180 -79t-180 79t-76 177q0 70 35 128t93 92zM512 1280q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5zM1536 512q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5zM512 0q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5z" /> | |
<glyph unicode="" d="M2048 1152v-1408l-1024 512l-1024 -512v1408l1024 640zM1920 1024l-768 512v-512h-256v512l-768 -512v-1024l768 384v128h256v-128l768 -384v1024zM640 896h768v256l384 -384l-384 -384v256h-768v-256l-384 384l384 384v-256z" /> | |
<glyph unicode="" d="M2048 1280v-1536l-1024 512l-1024 -512v1536l1024 512zM1920 1152l-768 384v-256h-256v256l-768 -384v-1152l768 384h256l768 -384v1152zM256 832l384 320v-640zM768 512v384q0 5 0.5 14.5t5.5 36t14 50.5t28 53.5t45 51t68.5 36t94.5 14.5t94.5 -14t68.5 -36.5t45 -50 t28 -55t14 -50t6 -36.5v-14v-384h-512zM1792 832l-384 -320v640zM896 896h256q0 5 -1 13.5t-7.5 31t-18.5 39t-38.5 30.5t-62.5 14q-26 0 -47 -7t-34 -18.5t-23 -25t-14 -27t-6.5 -25t-3.5 -18.5v-7z" /> | |
<glyph unicode="" d="M1024 1664q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1024 128q174 0 321 85.5t233 233t86 321.5q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51 t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5q0 -174 86 -321.5t233 -233t321 -85.5zM896 1280h256v-640h-256v640zM896 512h256v-256h-256v256z" /> | |
<glyph unicode="" d="M384 1536l64 -64q288 192 576 192q189 0 355.5 -68.5t285 -187t187 -285t68.5 -355.5q0 -69 -9.5 -130t-31.5 -121.5t-38.5 -96.5t-48.5 -100v192h-192q64 64 64 256q0 288 -176 464t-464 176q-60 0 -132.5 -21.5t-119.5 -42.5t-132 -64l128 -128h-384v384zM1152 640 h-256v640h256v-640zM256 1024h192q-64 -64 -64 -256q0 -288 176 -464t464 -176q60 0 132.5 21.5t119.5 42.5t132 64l-128 128h384v-384l-64 64q-288 -192 -576 -192q-189 0 -355.5 68.5t-285 187t-187 285t-68.5 355.5q0 69 9.5 130t31.5 121.5t38.5 96.5t48.5 100v-192z M896 512h256v-256h-256v256z" /> | |
<glyph unicode="" d="M1658 1401l-181 -181q-89 89 -206 138.5t-247 49.5t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5q0 -174 86 -321.5t233 -233t321 -85.5q91 0 175.5 24.5t140 58t98.5 70.5t62 59.5t21 28.5l399 399q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191 t-191 286t-71 348t71 348t191 286t286 191t348 71t345.5 -69t288.5 -194zM1538 1026l318 318l192 -192l-512 -512l-320 328l192 192zM1152 640h-256v640h256v-640zM896 512h256v-256h-256v256zM1520 368l1 1z" /> | |
<glyph unicode="" d="M1523 640l208 -195q-99 -255 -326 -414t-509 -159q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71q180 0 341.5 -67.5t285.5 -188.5h-627q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5q0 -174 86 -321.5t233 -233t321 -85.5 q231 0 406.5 145.5t220.5 366.5zM1024 640h-256v640h256v-640zM1660 768h-256q-5 0 -13.5 1.5t-30 9.5t-37.5 20t-29.5 37.5t-13.5 59.5v256q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h512q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5v-256q0 -35 -13 -61 t-32 -38t-38 -19.5t-32 -8.5l-13 -1v-256zM768 512h256v-256h-256v256z" /> | |
<glyph unicode="" d="M755 1105l-627 -77l461 -422l-119 -606l554 298l554 -298l-119 606l461 422l-627 77l-269 559z" /> | |
<glyph unicode="" d="M512 256h-128q-96 0 -176 80t-80 176v768q0 95 81 175.5t175 80.5h1280q95 0 175.5 -81t80.5 -175v-768q0 -91 -82 -173.5t-174 -82.5h-640l-512 -512v512z" /> | |
<glyph unicode="" d="M1024 1792q209 0 398.5 -81t326.5 -218t218 -326.5t81 -398.5q0 -208 -81 -397.5t-218 -327t-327 -218.5t-398 -81t-397.5 81t-327 218.5t-218.5 327t-81 397.5t81 398t218.5 327t327 218t397.5 81zM1024 0q209 0 385.5 103t279.5 279.5t103 385.5t-103 385.5 t-279.5 279.5t-385.5 103t-385.5 -103t-279.5 -279.5t-103 -385.5t103 -385.5t279.5 -279.5t385.5 -103zM896 896h-256q0 8 1 22t8.5 54.5t20.5 77t40.5 81.5t64.5 77.5t97 54.5t133 22q102 0 179 -23.5t118 -56t65.5 -76.5t31 -75.5t6.5 -62.5q0 -63 -18.5 -108.5 t-47 -68.5t-61 -43t-61 -33.5t-47 -38.5t-18.5 -59h-260q-3 42 9.5 74t35 51.5t51 34t57.5 25t53 19.5t39 22t15 30q0 67 -27 97.5t-101 30.5q-41 0 -69.5 -13t-39.5 -32t-16 -38t-4 -32zM896 512h256v-256h-256v256z" /> | |
<glyph unicode="" d="M2048 0h-2048l1024 1792zM256 128h1536l-768 1408zM1152 1024v-512h-256v512h256zM896 384h256v-128h-256v128z" /> | |
<glyph unicode="" d="M1422 626l498 -498q26 -26 26 -64t-26 -64l-128 -128q-26 -48 -64 -48t-64 48l-498 498q-186 -114 -398 -114q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5q0 -210 -114 -398zM768 512q212 0 362 150 t150 362t-150 362t-362 150t-362 -150t-150 -362t150 -362t362 -150z" /> | |
<glyph unicode="" d="M1024 1664q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1734 691v161l-196 64l-46 112l89 187l-114 115l-184 -94l-112 47l-70 195h-161l-64 -196l-112 -46 l-187 89l-115 -114l94 -184l-46 -111l-196 -71v-161l196 -64l46 -112l-89 -187l114 -115l184 94l112 -47l70 -195h161l64 196l112 46l187 -89l115 114l-94 184l47 111zM1024 1025q106 0 181 -75t75 -182t-75 -182t-181 -75t-181.5 75.5t-75.5 181.5t75.5 181.5t181.5 75.5z " /> | |
<glyph unicode="" d="M296 1726q25 -25 25 -60.5t-25 -60.5q-130 -133 -130 -324t130 -325q25 -25 25 -60t-25 -60q-24 -26 -58 -26t-59 26q-88 90 -133.5 206t-45.5 239q0 122 45.5 238t133.5 207q27 25 59 25q33 0 58 -25zM1865 1724q88 -90 134 -206t46 -239t-46 -238.5t-134 -206.5 q-25 -25 -58 -25q-32 0 -59 25q-24 25 -24 60t24 61q131 132 131 324q0 191 -131 325q-24 25 -24 60t24 60q25 26 59 26t58 -26zM612 1010q-24 -25 -57.5 -25t-57.5 25q-109 114 -109 271q0 158 109 270q24 25 58 25q33 0 57 -25q24 -24 24 -58.5t-24 -59.5 q-61 -62 -61 -152q0 -89 61 -153q24 -24 24 -58.5t-24 -59.5zM1433 1550q23 25 57 25t58 -25q109 -114 109 -271q0 -158 -109 -270q-24 -25 -58 -25q-33 0 -57 25q-24 24 -24 58.5t24 59.5q61 62 61 152q0 89 -61 153q-24 24 -24 58.5t24 59.5zM1024 1072q-86 0 -146.5 61 t-60.5 147t60.5 147t146.5 61t147 -61t61 -147t-61 -147t-147 -61zM468 -128l403 1073q72 -39 154 -39q79 0 152 38l402 -1072h-191l-108 128h-511l-110 -128h-191zM896 384h256l-128 460zM1280 128l-128 128h-256l-127 -128h511z" /> | |
<glyph unicode="" d="M459 59l-66 -123l-281 -192l-46 64l178 274l127 68l552 571l-112 116l923 955l313 -324l-923 -954l-113 116zM808 766l-72 -74q-129 136 -163 170q-112 -40 -234 -11t-211 121q-143 148 -112 437l247 -256l242 67l65 251l-247 255q108 32 223 1.5t200 -117.5 q85 -88 114 -208t-3 -233q-23 21 3 -6l52 -51l-216 -230zM1398 614l485 -503q60 -63 60 -159t-60 -144q-15 -23 -32 -37t-38.5 -19.5t-35.5 -6.5t-40 -1q-27 0 -41 1t-35.5 6.5t-38.5 19.5t-31 37l-492 511z" /> | |
<glyph unicode="" d="M1280 768h128v-640h-640v-384l-768 384v1664h1408v-512h-128v384h-1024l512 -256v-1152h512v512zM1536 640v256h-512v256h512v256l512 -384z" /> | |
<glyph unicode="" d="M1571 1617q119 59 237.5 102t177.5 57l60 14q-5 -23 -15.5 -65t-54.5 -166.5t-103 -243.5q-139 15 -212 90q-75 73 -90 212zM419 884l356 66q100 139 221 260q188 188 436 332q32 -151 124 -242q91 -92 242 -124q-142 -245 -332 -436q-124 -124 -260 -219l-66 -358 l-419 -419l-11 373l268 269q-86 -42 -167 -68.5t-119 -32.5l-39 -6l-118 118q1 14 5 40.5t29.5 110t66.5 169.5l-263 -263l-373 11z" /> | |
<glyph unicode="" d="M512 1536q174 0 340 -46t306.5 -128.5t258.5 -200.5t200.5 -258.5t128.5 -306.5t46 -340q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7q0 208 -81 397.5t-218.5 327t-327 218.5t-397.5 81 q-5 0 -13.5 1t-31 7.5t-39 18.5t-30.5 38.5t-14 62.5q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7zM512 1024q209 0 385.5 -103t279.5 -279.5t103 -385.5q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25 t-3.5 18.5v7q0 212 -150 362t-362 150q-5 0 -13.5 1t-31 8.5t-39 19.5t-30.5 38t-14 61t13 61t32 38t38 19.5t32 8.5zM512 512q106 0 181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181t75 181t181 75z" /> | |
<glyph unicode="" d="M1536 256h128v-256q0 -48 -40 -88t-88 -40h-1280q-48 0 -88 40t-40 88v1408q0 48 40 88t88 40h384q0 5 0.5 14.5t5.5 36t14 50.5t28 53.5t45 51t68.5 36t94.5 14.5t94.5 -14t68.5 -36.5t45 -50t28 -55t14 -50t6 -36.5v-14h384q48 0 88 -40t40 -88v-640h-128v384h-1280 v-1152h1280v256zM1408 1280l-384 256q0 48 -40 88t-88 40t-88 -40t-40 -88l-384 -256h1024zM1024 896h-640v128h640v-128zM1920 640v-256h-640v-256l-512 384l512 384v-256h640zM640 640h-256v128h256v-128zM384 512h256v-128h-256v128zM384 256h384v-128h-384v128z" /> | |
<glyph unicode="" d="M1273 1501q-48 -63 -123.5 -102.5t-151.5 -37.5q-13 73 13.5 148.5t75.5 135.5q50 60 126 101.5t147 45.5q22 -150 -87 -291zM1738 1191q-73 -40 -121.5 -102.5t-67 -131t-12 -142.5t37 -138.5t86.5 -118t130 -81.5q-57 -127 -116 -217q-35 -53 -64 -90.5t-70.5 -80.5 t-86.5 -66t-92 -23q-39 0 -75 11.5t-62 26t-71 26.5t-98 12t-98 -12.5t-71.5 -26.5t-63 -25.5t-75.5 -11.5q-47 0 -92 21t-84.5 60t-69 76.5t-62.5 88.5q-102 156 -148 329.5t-32.5 321.5t78.5 249q68 106 169.5 166.5t204.5 60.5q73 0 180.5 -38.5t162.5 -38.5q45 0 97 19 t114 38.5t130 19.5q91 0 182 -48t160 -134z" /> | |
<glyph unicode="" d="M968 943l-37 -19q-75 47 -136.5 71t-147.5 30q-200 14 -376 -73l-39 21l178 593q7 5 20 13t57 27.5t91 33t119.5 21.5t145.5 1q91 -8 156 -37t147 -85zM2047 1395l-181 -607q-68 -37 -204.5 -70t-266.5 -18q-62 7 -124 31.5t-98.5 45.5t-95.5 60l178 596l41 21 q101 -67 149 -87q62 -25 134 -34q104 -12 210.5 8.5t161.5 46.5l55 27zM1 149l181 605q7 5 20 13t57 27t91.5 32.5t120 21.5t145.5 2q90 -8 155 -36.5t148 -85.5l-183 -609l-37 -19q-75 47 -137 71t-147 30q-198 13 -375 -73zM1028 621l41 21q59 -40 87 -57t82 -37t114 -27 q71 -7 134.5 -2t117 19t92.5 28.5t61 25.5l22 11l41 -21l-185 -646q-14 0 -185 -32t-287 -32q-90 0 -164.5 37t-153.5 104z" /> | |
<glyph unicode="" d="M512 1792h1024q53 0 90.5 -37.5t37.5 -90.5v-1792q0 -49 -38 -88.5t-90 -39.5h-1024q-52 0 -90 39.5t-38 88.5v1792q0 53 37.5 90.5t90.5 37.5zM1088 1664h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128q26 0 45 19t19 45t-19 45t-45 19zM1536 1408h-1024v-1280h1024 v1280zM960 -128h128q17 0 25.5 1t19 6.5t15 19.5t4.5 37t-4.5 37t-15 19.5t-19 6.5t-25.5 1h-128q-17 0 -25.5 -1t-19 -6.5t-15 -19.5t-4.5 -37t4.5 -37t15 -19.5t19 -6.5t25.5 -1z" /> | |
<glyph unicode="" d="M1527 1559l-93 -179q102 -104 102 -228h-1024q0 124 102 228l-93 178q-14 25 -7 53t30 42q23 15 48.5 7.5t38.5 -32.5l89 -168q137 76 304 76q165 0 304 -76l89 170q13 25 38.5 32.5t48.5 -6.5q23 -15 30 -43.5t-7 -53.5zM832 1280q26 0 45 19t19 45t-19 45t-45 19 t-45 -19t-19 -45t19 -45t45 -19zM1216 1280q26 0 45 19t19 45t-19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19zM256 589v486q0 32 19 54.5t45 22.5t45 -22.5t19 -54.5v-486q0 -32 -19 -54.5t-45 -22.5t-45 22.5t-19 54.5zM1664 589v486q0 32 19 54.5t45 22.5t45 -22.5 t19 -54.5v-486q0 -32 -19 -54.5t-45 -22.5t-45 22.5t-19 54.5zM512 1024h1024v-768q0 -53 -37.5 -90.5t-90.5 -37.5h-128v-192q-3 -7 -9 -17.5t-22.5 -28.5t-32.5 -18t-32 16t-24 32l-8 16v192h-256v-192q-3 -7 -9 -17.5t-22.5 -28.5t-32.5 -18t-32 16t-24 32l-8 16v192 h-128q-53 0 -90.5 37.5t-37.5 90.5v768z" /> | |
<glyph unicode="" d="M1792 1152l-1024 -1024l-512 512l256 256l256 -256l768 768z" /> | |
<glyph unicode="" d="M1920 1408v-1280h-1792v1280h1792zM384 1280l640 -528l640 528h-1280zM256 384l504 385l-504 383v-768zM1792 1152l-505 -384l505 -384v768zM1664 256l-508 412l-132 -100l-132 100l-508 -412h1280z" /> | |
<glyph unicode="" d="M1920 1152v-1280h-1792v1280l256 183v201h282l358 256l358 -256h282v-201zM512 918l512 -422l512 422v490h-1024v-490zM896 1152h-256v128h256v-128zM1280 896h-640v128h640v-128zM256 128l504 385l-504 383v-768zM1792 896l-505 -384l505 -384v768zM1664 0l-508 412 l-132 -100l-132 100l-508 -412h1280z" /> | |
<glyph unicode="" d="M1664 640h-384v-512h-512v512h-384l640 768z" /> | |
<glyph unicode="" d="M896 128v384h-512v512h512v384l768 -640z" /> | |
<glyph unicode="" d="M1664 896l-640 -768l-640 768h384v512h512v-512h384z" /> | |
<glyph unicode="" d="M1664 1024v-512h-512v-384l-768 640l768 640v-384h512z" /> | |
<glyph unicode="" d="M1271 1156v153q21 36 56 75q48 43 48 90q0 83 -92.5 136.5t-258.5 53.5q-167 0 -266 -54t-99 -136q0 -47 47 -89q36 -39 65 -88v-129q-29 -56 -70.5 -108t-68.5 -76l-28 -24h1q-101 -69 -101 -153q0 -117 145.5 -206t374.5 -89t374 89t145 206q0 101 -139 176 q-82 80 -133 173zM1022 -256l129 640q-60 -6 -123 -6q-73 0 -133 7z" /> | |
<glyph unicode="" d="M1025 1024h-129q-133 31 -174 35q-126 14 -225 113t-113 224q-14 126 65 205t205 65q97 -10 180 -74.5t126 -156.5q43 92 126 156.5t180 74.5q126 14 205 -65t65 -205q-14 -125 -113 -224t-225 -113q-18 -2 -61.5 -10.5t-77.5 -16t-34 -8.5zM718 1183q67 -8 110.5 34.5 t35.5 110.5t-61.5 121.5t-121.5 61.5t-110 -35t-35 -111q8 -68 61 -121.5t121 -60.5zM1056 1328q-8 -68 35.5 -110.5t110.5 -34.5q68 7 121 60.5t61 121.5t-34.5 111t-110.5 35t-121.5 -61.5t-61.5 -121.5zM128 1024h768v-384h-768v384zM1792 1024v-384h-768v384h768z M256 512h640v-640h-640v640zM1024 512h640v-640h-640v640z" /> | |
<glyph unicode="" d="M2048 -128v-128h-2048v2048h256v-128h-128v-256h128v-128h-128v-256h128v-128h-128v-256h128v-128h-128v-256h128v-128h-128v-256h1920zM1408 0h-384v1280h384v-1280zM1920 0h-384v896h384v-896zM896 0h-384v640h384v-640z" /> | |
<glyph unicode="" d="M1920 1344v-64q0 -94 -55.5 -183.5t-145 -145t-183.5 -55.5h-128l-512 -512v-128q0 -94 -55.5 -183.5t-145 -145t-183.5 -55.5h-64l192 192l-64 256l-256 64l-192 -192v64q0 94 55.5 183.5t145 145t183.5 55.5h128l512 512v128q0 94 55.5 183.5t145 145t183.5 55.5h64 l-192 -192l64 -256l256 -64z" /> | |
<glyph unicode="" d="M128 1408h1792q48 0 88 -40t40 -88v-1024q0 -48 -40 -88t-88 -40h-1792q-48 0 -88 40t-40 88v1024q0 48 40 88t88 40zM1792 1280h-1536q-48 0 -88 -40t-40 -88h1792q0 48 -40 88t-88 40zM256 256h1536q48 0 88 40t40 88v512h-1792v-512q0 -48 40 -88t88 -40zM768 640 h-512v128h512v-128zM1280 640h-384v128h384v-128zM512 384h-256v128h256v-128zM640 512h256v-128h-256v128z" /> | |
<glyph unicode="" d="M1024 1664q189 0 355.5 -68.5t285 -187t187 -285t68.5 -355.5t-68.5 -355.5t-187 -285t-285 -187t-355.5 -68.5t-355.5 68.5t-285 187t-187 285t-68.5 355.5t68.5 355.5t187 285t285 187t355.5 68.5zM1024 128q288 0 464 176t176 464q0 120 -47 235t-128.5 205 t-203.5 145t-261 55t-261 -55t-203.5 -145t-128.5 -205t-47 -235q0 -288 176 -464t464 -176zM896 1280l128 128l128 -128v-384h256l128 -128l-128 -128h-512v640z" /> | |
<glyph unicode="" d="M2048 1024l-1024 -1024l-1024 1024l512 512h1024zM1024 256l768 768l-384 384h-768l-384 -384zM1664 1024l-640 -640v896h384z" /> | |
<glyph unicode="" d="M714 194l24 -143q-270 91 -440 322.5t-170 522.5q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348q0 -291 -170 -522.5t-440 -322.5l24 143q205 91 331.5 280.5t126.5 421.5q0 209 -103 385.5t-279.5 279.5t-385.5 103t-385.5 -103 t-279.5 -279.5t-103 -385.5q0 -232 126.5 -421.5t331.5 -280.5zM1360 354l31 185q145 150 145 357q0 212 -150 362t-362 150t-362 -150t-150 -362q0 -207 145 -357l31 -185q-139 86 -221.5 229.5t-82.5 312.5q0 130 51 248.5t136.5 204t204 136.5t248.5 51t248.5 -51 t204 -136.5t136.5 -204t51 -248.5q0 -169 -82.5 -312.5t-221.5 -229.5zM1280 1024q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM896 768h256q39 0 67 -13t39.5 -32t17 -38t4.5 -32v-13v-256q0 -3 0.5 -7.5t-1 -17.5t-5 -25.5t-13 -27 t-22.5 -25t-35.5 -18t-51.5 -7.5v-512h-256v512q-39 0 -67 13t-39.5 32t-17 38t-4.5 32v13v256q0 3 -0.5 7.5t1 17.5t5 25.5t13 27t22.5 25t35.5 18t51.5 7.5z" /> | |
<glyph unicode="" d="M2048 1024v-256l-128 -128l-256 256l-256 -256l-256 256l-256 -256h-128v-128h-128q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14h-256q-9 -1 -23 -0.5t-48 16.5t-57 48t-55 80t-53 80l-20 32v384q88 152 128 212q18 27 50 38t55 8l23 -2h256q37 0 64 -13 t38.5 -32t18 -38t7.5 -32v-13h128v-128h1280zM512 1152h-256l256 -128v128zM512 832l-192 192l-192 -192l192 -192zM512 640l-256 -128h256v128z" /> | |
<glyph unicode="" d="M1792 1664v-1536q0 -5 -0.5 -13.5t-7.5 -31t-19.5 -39t-39.5 -30.5t-65 -14h-252v128h124q5 0 14 1t32 8.5t40 20t31.5 38.5t14.5 60v128h-256v128h256v1152h-1024v-1152h256v-128h-512v-128q0 -5 0.5 -13.5t6.5 -31t17.5 -39t37.5 -30.5t62 -14h132v128h256v-256 l-256 -256v256h-256q-42 0 -70.5 16.5t-39.5 41.5t-14.5 41t-3.5 29v1536q0 36 13 63t32 38.5t38 18.5t32 8h13h1280q5 0 13.5 -0.5t30 -7.5t38 -19t31 -38.5t15.5 -62.5zM1536 640h-256v-896h-256v896h-256l288 384h-288l384 512l384 -512h-288z" /> | |
<glyph unicode="" d="M512 512h1152v-384q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14h-640v-256l-192 192l-192 -192v256h-256q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7h1280q5 0 13.5 -1t31 -7.5 t39 -18.5t30.5 -38.5t14 -62.5v-128h-128v128h-1024v-1152zM768 1408h-128v128h128v-128zM1280 1280v-128h192l-256 -320l-256 320h192v256h384v-128h-256zM768 1152h-128v128h128v-128zM1984 896h-192v-256h-384v128h256v128h-192l256 320zM768 896h-128v128h128v-128z M640 768h128v-128h-128v128zM896 128h512q5 0 13.5 1t31 7.5t39 18.5t30.5 38.5t14 62.5v128h-1280v-128q0 -5 1 -13.5t7.5 -31t18.5 -39t38.5 -30.5t62.5 -14h128v128h384v-128z" /> | |
<glyph unicode="" d="M384 512h1152v-384q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14h-640v-256l-192 192l-192 -192v256h-256q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7h768v-128h-512v-1152zM2048 1664 v-768l-128 -128h-384v-128h-128v128h-128l-128 128v768l128 128h640zM1920 1664h-512v-512h512v512zM640 1408h-128v128h128v-128zM768 1536l256 -320l-256 -320v640zM640 1152h-128v128h128v-128zM640 896h-128v128h128v-128zM1408 1024h-128v-128h128v128zM1920 1024h-384 v-128h384v128zM512 768h128v-128h-128v128zM768 128h512q5 0 13.5 1t31 7.5t39 18.5t30.5 38.5t14 62.5v128h-1280v-128q0 -5 1 -13.5t7.5 -31t18.5 -39t38.5 -30.5t62.5 -14h128v128h384v-128z" /> | |
<glyph unicode="" d="M1920 0v1408l-384 384h-1152v-128h1088l320 -320v-1344h128zM1280 1536h-1152v-1792h1536v1408zM1216 1408l320 -320v-1216h-1280v1536h960zM1024 768h256v256h-256v256h-256v-256h-256v-256h256v-256h256v256zM512 0h768v256h-768v-256z" /> | |
<glyph unicode="" d="M1024 1536q123 0 237 -26.5t202.5 -70.5t167.5 -102t136.5 -121.5t106 -127t80 -121.5t53.5 -102t31 -71l10 -26q-5 -13 -15.5 -36t-51 -89.5t-90.5 -127t-136.5 -134.5t-186 -127t-242.5 -89.5t-302 -36.5q-125 0 -240 22t-204 59t-168 85t-136.5 101t-105 106 t-78.5 101t-52.5 85t-30.5 59l-9 22q3 10 9.5 27t31 69.5t54 103.5t79.5 120t106.5 128.5t136.5 120t168 103t202 69.5t237 27zM1024 256q103 0 195 17.5t160.5 47t128 68t100.5 81t74 85t53 81t33.5 68t18.5 46.5l5 18q-3 11 -9 29.5t-32.5 71.5t-60.5 101.5t-97 107.5 t-138.5 101.5t-188 71.5t-242.5 29q-102 0 -193.5 -17.5t-160 -47t-128 -68t-100.5 -81t-74.5 -85t-54 -81t-34 -68t-18.5 -46.5l-5 -18q2 -7 5.5 -18t18 -46t33.5 -69t53 -80t74.5 -85.5t100.5 -80t128 -69t160 -46.5t195 -18zM1024 1152q159 0 271.5 -112.5t112.5 -271.5 t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5q0 57 17 113q23 -51 70 -82t105 -31q80 0 136 56t56 136q0 58 -31 105t-82 70q56 17 113 17z" /> | |
<glyph unicode="" d="M1276 640h-384q-5 0 -13.5 1.5t-30 9.5t-37.5 20t-29.5 37.5t-13.5 59.5v640q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h896q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5v-640q0 -35 -13 -61t-32 -38t-38 -19.5t-32 -8.5l-13 -1h-128v-384zM640 1152v-384 q0 -5 0.5 -14.5t5.5 -36t14 -50.5t28 -53.5t45 -51t68.5 -36t94.5 -14.5h384v-128q0 -34 -13 -59.5t-31 -38t-36 -20t-31 -8.5l-13 -2h-384l-388 -384v384h-128q-5 0 -13.5 1t-31 8.5t-39 19.5t-30.5 38t-14 61v640q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h384z" /> | |
<glyph unicode="" d="M1024 -128q182 0 348 71t286 191t191 286t71 348t-71 348t-191 286t-286 191t-348 71t-348 -71t-286 -191t-191 -286t-71 -348t71 -348t191 -286t286 -191t348 -71zM1024 1408q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5q0 -174 -86 -321.5t-233 -233t-321 -85.5 t-321 85.5t-233 233t-86 321.5q0 130 51 248.5t136.5 204t204 136.5t248.5 51zM1402 555l-213 213l213 213l-165 165l-213 -213l-213 213l-165 -165l213 -213l-213 -213l165 -165l213 213l213 -213z" /> | |
<glyph unicode="" d="M640 1088l-384 320l384 316v-188h384q5 1 13.5 2t31 -2.5t39 -14.5t30.5 -40t14 -73v-768h-256v640h-256v-192zM1920 1024v-1280h-1792v1280h640v-128h-384l640 -528l640 528h-384v128h640zM256 0l504 385l-504 383v-768zM1792 768l-505 -384l505 -384v768zM1664 -128 l-508 412l-132 -100l-132 100l-508 -412h1280z" /> | |
<glyph unicode="" d="M1024 248q-212 0 -362 150t-150 362t150 362t362 150t362 -150t150 -362t-150 -362t-362 -150z" /> | |
<glyph unicode="" d="M1536 1280v-1024h-1024v1024h1024z" /> | |
<glyph unicode="" d="M1792 768l128 -128l-768 -768l-1024 1024v512l256 256h512l128 -128q-3 -10 -8 -28t-11 -67t-1 -89l-184 184h-372l-192 -192v-384l896 -896l564 576l-128 128h204zM1920 1408v-256h-256v-256h-256v256h-256v256h256v256h256v-256h256zM576 1408q80 0 136 -56t56 -136 t-56 -136t-136 -56t-136 56t-56 136t56 136t136 56zM576 1152q26 0 45 19t19 45t-19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19zM1152 256l-512 512l384 384l512 -512zM832 768l320 -316l196 188l-324 324z" /> | |
<glyph unicode="" d="M1797 1408l205 -205l-133 -133l-205 205l-205 -205l-133 133l205 205l-205 205l133 133l205 -205l205 205l133 -133zM1664 896l256 -256l-768 -768l-1024 1024v512l256 256h512l256 -256v-204l-332 332h-372l-192 -192v-384l896 -896l564 576l-256 256h204zM576 1408 q80 0 136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136t56 136t136 56zM576 1152q26 0 45 19t19 45t-19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19zM1152 256l-512 512l384 384l512 -512zM832 768l320 -316l196 188l-324 324z" /> | |
<glyph unicode="" d="M1792 1536v-256h-256v-256h-256v256h-256v256h256v256h256v-256h256zM768 1188v-606q111 58 256 58q52 0 94.5 14t68.5 36.5t45 50t28 55t14 50t6 36.5v14h256q0 -7 -0.5 -18t-5.5 -46t-13.5 -69t-27 -80t-43 -85.5t-64.5 -80t-88.5 -69t-118 -46.5t-151.5 -18 q-129 0 -196 -83q68 -73 68 -173q0 -106 -75 -181t-181 -75t-181 75t-75 181q0 70 35 128t93 93v839q-58 34 -93 92.5t-35 127.5q0 106 75 181t181 75t181 -75t75 -181q0 -69 -35 -127.5t-93 -92.5zM640 1536q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5zM640 0q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5z" /> | |
<glyph unicode="" d="M1541 1408l205 -205l-133 -133l-205 205l-205 -205l-133 133l205 205l-205 205l133 133l205 -205l205 205l133 -133zM1408 1024l128 -128q0 -7 -0.5 -18t-5.5 -46t-13.5 -69t-27 -80t-43 -85.5t-64.5 -80t-88.5 -69t-118 -46.5t-151.5 -18q-129 0 -196 -83 q68 -73 68 -173q0 -106 -75 -181t-181 -75t-181 75t-75 181q0 70 35 128t93 93v839q-58 34 -93 92.5t-35 127.5q0 106 75 181t181 75t181 -75t75 -181q0 -69 -35 -127.5t-93 -92.5v-606q111 58 256 58q52 0 94.5 14t68.5 36.5t45 50t28 55t14 50t6 36.5v14zM640 1536 q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5zM640 0q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5z" /> | |
<glyph unicode="" d="M1920 1280l-256 -256l-384 384l256 256zM1152 1280l384 -384l-1024 -1025h-384v385zM512 128h-128v128h-128v-256h256v128z" /> | |
<glyph unicode="" d="M1024 1664q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1024 128q174 0 321.5 86t233 233t85.5 321q0 130 -50.5 248.5t-136.5 204.5t-204.5 136.5t-248.5 50.5 q-174 0 -321 -85.5t-233 -233t-86 -321.5q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51zM1024 1024q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5zM896 768h-128q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14 h128q5 0 13.5 -0.5t31 -7t39 -18.5t30.5 -38.5t14 -63.5v-384h128q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14h-128q-5 0 -13.5 1t-31 7.5t-39 18.5t-30.5 38.5t-14 62.5v384z" /> | |
<glyph unicode="" d="M1536 768l-768 -767v1535z" /> | |
<glyph unicode="" d="M1792 1024l-768 -767l-767 767h1535z" /> | |
<glyph unicode="" d="M1117 640h274q17 70 17 128q0 212 -137.5 362t-331.5 150h-470q-194 0 -331.5 -150t-137.5 -362t137.5 -362t331.5 -150h175q-39 35 -67 74.5t-40 70.5t-18.5 57t-6.5 40v14q-106 0 -181 75t-75 181t75 181t181 75h384q106 0 181 -75t75 -181q0 -68 -35 -128zM1109 256 h470q194 0 331.5 150t137.5 362t-137.5 362t-331.5 150h-171q36 -36 62.5 -75.5t38.5 -70.5t18.5 -56.5t7.5 -39.5l1 -14q106 0 181 -75t75 -181t-75 -181t-181 -75h-384q-106 0 -181 75t-75 181q0 66 36 128h-275q-17 -70 -17 -128q0 -212 137.5 -362t331.5 -150z" /> | |
<glyph unicode="" d="M1664 896v-256h-512v-512h-256v512h-512v256h512v512h256v-512h512z" /> | |
<glyph unicode="" d="M1664 1408v-256h-1280v256h1280zM1664 896v-256h-1280v256h1280zM1664 384v-256h-1280v256h1280z" /> | |
<glyph unicode="" d="M897 1226l-428 -458l428 -458l-171 -184l-599 642l599 642zM1922 768l-600 -642l-171 184l428 458l-428 458l171 184z" /> | |
<glyph unicode="" d="M1024 1792q130 0 248.5 -50.5t204.5 -136.5t136.5 -204.5t50.5 -248.5q0 -99 -66 -280.5t-160 -369.5t-188 -362t-160 -285l-66 -111q-26 43 -69 116t-153.5 274t-195 373.5t-153.5 359t-69 285.5q0 174 86 321.5t233 233t321 85.5zM1024 896q106 0 181 75t75 181 t-75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75z" /> | |
<glyph unicode="" d="M128 1664h256v-256h-256v256zM1920 1664v-256h-1280v256h1280zM128 1152h256v-256h-256v256zM640 1152h1280v-256h-1280v256zM128 640h256v-256h-256v256zM640 640h1280v-256h-1280v256zM128 128h256v-256h-256v256zM640 128h1280v-256h-1280v256z" /> | |
<glyph unicode="" d="M512 1664h128v-768h-128v512h-256v128h256v128zM1920 1664v-256h-1024v256h1024zM896 1152h1024v-256h-1024v256zM128 640h512v-332l-384 -308h384v-128h-512v208l384 308v124h-256v-128h-128v256zM896 640h1024v-256h-1024v256zM896 128h1024v-256h-1024v256z" /> | |
<glyph unicode="" d="M384 256v512q0 212 150 362t362 150v-256q-106 0 -181 -75t-75 -181h256v-512h-512zM1664 1280v-256q-106 0 -181 -75t-75 -181h256v-512h-512v512q0 212 150 362t362 150z" /> | |
<glyph unicode="" d="M1920 1408v-1280h-1024v1280h1024zM512 1280h256v-128h-128v-768h128v-128h-256v1024zM128 1152h256v-128h-128v-512h128v-128h-256v768zM1664 1152h-512v-768h512v768z" /> | |
<glyph unicode="" d="M1792 1536v-1536h-1536v1536h1536zM1664 1408h-1280v-1280z" /> | |
<glyph unicode="" d="M256 1024h-128v512h512v-128h-384v-384zM1920 1536v-512h-128v384h-384v128h512zM384 1280h1280v-1024h-1280v1024zM640 512h768v512h-768v-512zM256 128h384v-128h-512v512h128v-384zM1792 512h128v-512h-512v128h384v384z" /> | |
<glyph unicode="" d="M512 1280h-384v128h256v256h128v-384zM1920 1408v-128h-384v384h128v-256h256zM512 1152h1024v-768h-1024v768zM768 640h512v256h-512v-256zM128 256h384v-384h-128v256h-256v128zM1536 256h384v-128h-256v-256h-128v384z" /> | |
<glyph unicode="" d="M512 1536h-128v256h128v-256zM1536 1536h-128v256h128v-256zM1920 1664v-1792h-1920v1792h256v-256h384v256h640v-256h384v256h256zM1792 1280h-1664v-1280h1664v1280zM640 896h-128v256h128v-256zM896 896h-128v256h128v-256zM1152 896h-128v256h128v-256zM1408 896 h-128v256h128v-256zM1664 896h-128v256h128v-256zM384 512h-128v256h128v-256zM640 512h-128v256h128v-256zM896 512h-128v256h128v-256zM1152 512h-128v256h128v-256zM1408 512h-128v256h128v-256zM1664 512h-128v256h128v-256zM384 128h-128v256h128v-256zM640 128h-128 v256h128v-256zM896 128h-128v256h128v-256zM1152 128h-128v256h128v-256zM1408 128h-128v256h128v-256z" /> | |
<glyph unicode="" d="M1536 1280h384q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5v-768q0 -26 -7 -47t-18.5 -34t-25 -23t-27 -14t-25 -6.5t-18.5 -3.5h-7h-384v-256q0 -69 -94 -128t-256.5 -93.5t-353.5 -34.5t-353.5 34.5t-256.5 93.5t-94 128v1536q0 69 94 128t256.5 93.5 t353.5 34.5t353.5 -34.5t256.5 -93.5t94 -128v-256zM832 1408q186 0 317 37.5t131 90.5t-131 90.5t-317 37.5t-317 -37.5t-131 -90.5t131 -90.5t317 -37.5zM512 1152h-128v-1024h128v1024zM1280 1152h-128v-1024h128v1024zM896 1024h-128v-1024h128v1024zM1792 1024h-256 v-512h256v512z" /> | |
<glyph unicode="" d="M1536 896h128q53 0 90.5 -37.5t37.5 -90.5v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1280q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h128v384q0 212 150 362t362 150t362 -150t150 -362v-384zM1280 896v384q0 106 -75 181t-181 75t-181 -75t-75 -181v-384 h512zM1280 768h-896v-896h896v128h-768v128h768v128h-768v128h768v128h-768v128h768v128z" /> | |
<glyph unicode="" d="M256 1664h1536q35 0 61 -13t38 -32t19.5 -38t8.5 -32l1 -13v-1536q0 -35 -13 -61t-32 -38t-38 -19.5t-32 -8.5l-13 -1h-1536q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7zM1664 1408h-1280v-1280 h1280v1280zM896 640h-256v256h256v256h256v-256h256v-256h-256v-256h-256v256z" /> | |
<glyph unicode="" d="M256 1664h1536q35 0 61 -13t38 -32t19.5 -38t8.5 -32l1 -13v-1536q0 -35 -13 -61t-32 -38t-38 -19.5t-32 -8.5l-13 -1h-1536q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7zM1664 1408h-1280v-1280 h1280v1280zM1408 640h-768v256h768v-256z" /> | |
<glyph unicode="" d="M256 1664h1536q35 0 61 -13t38 -32t19.5 -38t8.5 -32l1 -13v-1536q0 -35 -13 -61t-32 -38t-38 -19.5t-32 -8.5l-13 -1h-1536q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7zM1664 1408h-1280v-1280 h1280v1280zM1024 512q-106 0 -181 75t-75 181t75 181t181 75t181 -75t75 -181t-75 -181t-181 -75z" /> | |
<glyph unicode="" d="M256 1664h1536q35 0 61 -13t38 -32t19.5 -38t8.5 -32l1 -13v-1536q0 -35 -13 -61t-32 -38t-38 -19.5t-32 -8.5l-13 -1h-1536q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7zM1664 1408h-1280v-1280 h1280v1280zM1024 640h-384v256h384v256l512 -384l-512 -384v256z" /> | |
<glyph unicode="" d="M384 1664h1280q96 0 176 -80t80 -176v-768q0 -52 -14 -94.5t-36.5 -68.5t-50 -45t-55 -28t-50 -14t-36.5 -6h-14h-128v-512l-512 512h-640q-96 0 -176 80t-80 176v768q0 96 80 176t176 80zM1408 1152h-256v256h-256v-256h-256v-256h256v-256h256v256h256v256z" /> | |
<glyph unicode="" d="M512 640h-128v768h128v-384h256v384h128v-768h-128v256h-256v-256zM1536 1024v-128h-256v-256h-128v768h384v-128h-256v-256h256zM1536 1024v256h128v-256h-128zM1536 640v256h128v-256h-128zM384 384h1280v-256h-1280v256z" /> | |
<glyph unicode="" d="M896 384v256h-256v256h256v256l512 -384z" /> | |
<glyph unicode="" d="M1024 641l-767 767h1535zM1792 384v-256h-1536v256h1536z" /> | |
<glyph unicode="" d="M1792 1408v-256h-1536v256h1536zM1792 128h-1535l767 768z" /> | |
<glyph unicode="" d="M0 1408h384v-1280h-384v1280zM2048 1024v-512h-640v-384l-768 640l768 640v-384h640z" /> | |
<glyph unicode="" d="M1152 1536h-256v256h256v-256zM1920 1152l-256 -256h-1408v512h1408zM1152 1280h-256v-256h256v256zM896 768h256v-1024h-256v1024z" /> | |
<glyph unicode="" d="M800 736l-96 -96q-48 -72 -48 -160t48 -160l192 -192h-640v1408h1152v-640l-224 -224l-64 64q-48 48 -148 48t-172 -48zM512 1408h-128v-128h128v128zM640 1280h640v128h-640v-128zM512 1152h-128v-128h128v128zM640 1024h640v128h-640v-128zM512 896h-128v-128h128v128z M640 768h128v128h-128v-128zM1792 768v-64l-576 -576h-64l-96 96l-192 224q-24 0 -24 16t24 16l96 128h32l192 -192l448 448h32z" /> | |
<glyph unicode="" d="M640 -128l-256 639q-41 1 -128 1q-69 0 -128 68.5t-93.5 186.5t-34.5 257t34.5 257t93.5 186.5t128 68.5q236 -1 428 13t314 36.5t216 49.5t153 55t106 50.5t93.5 37t97.5 14.5q104 0 192.5 -103t140 -279.5t51.5 -385.5t-51.5 -385.5t-140 -279.5t-192.5 -103 q-53 0 -101 14.5t-98 38.5t-109.5 50.5t-162 56t-227.5 49.5l186 -465l-128 -256zM1664 512q69 0 128 68.5t93.5 186.5t34.5 257t-34.5 257t-93.5 186.5t-128 68.5t-128 -68.5t-93.5 -186.5t-34.5 -257t34.5 -257t93.5 -186.5t128 -68.5zM640 1290v-277q396 -26 645 -115 q-5 68 -5 126q0 215 55 397q-257 -105 -695 -131zM512 1019v265q-104 -4 -256 -4q-4 0 -4 -47.5t2 -118.5t2 -90q126 0 256 -5z" /> | |
<glyph unicode="" d="M1537 768l-642 -640l-256 256l384 384l-384 384l256 256z" /> | |
<glyph unicode="" d="M1792 1664v-1664h-1536v1664h1536zM1664 1536h-1280v-1408h1280v1408zM1536 1280h-1024q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h768q35 0 61 -13t38 -32t19.5 -38t8.5 -32zM1152 1152h256v-384l-256 -256v-256h-256v256l-256 256v384h256v-260l128 -124l128 128 v256z" /> | |
<glyph unicode="" d="M1792 1664v-1664h-1536v1664h1536zM1664 1536h-1280v-1408h1280v1408zM1536 1280h-1024q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h768q35 0 61 -13t38 -32t19.5 -38t8.5 -32zM1152 896h256v-256h-256v-256h-256v256h-256v256h256v256h256v-256z" /> | |
<glyph unicode="" d="M1408 1536v-1536l-377 263l-391 -263v1536h768z" /> | |
<glyph unicode="" d="M768 896h-256v512h256v-512zM1536 1280h-256v128h256v-128zM1664 1152v-256h-512v256h512zM384 768h512v-256h-512v256zM1280 768h256v-640h-256v640zM512 384h256v-256h-256v256z" /> | |
<glyph unicode="" d="M1531 814l204 244q57 -143 57 -290q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103q148 0 290 -57l-244 -204q-40 5 -46 5q-212 0 -362 -150t-150 -362t150 -362t362 -150t362 150t150 362 q0 6 -5 46zM1664 1280l-387 -484q3 -27 3 -28q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75q1 0 28 -3l484 387h128v-128z" /> | |
<glyph unicode="" d="M384 1664l148 -148q224 148 492 148q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348q0 238 128 455v-199h182q-54 -124 -54 -256q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q174 0 321.5 86 t233 233t85.5 321q0 130 -50.5 248.5t-136.5 204.5t-204.5 136.5t-248.5 50.5q-155 0 -304 -80l176 -176h-512v512zM896 256v384l-128 128l256 256l128 -128h256l128 -128l-128 -128h-256v-384l-130 -126z" /> | |
<glyph unicode="" d="M1536 640h256v-640h-1536v1536h512v-256h-256v-1024h1024v384zM1792 1536v-768l-256 256l-384 -384l-256 256l384 384l-256 256h768z" /> | |
<glyph unicode="" d="M1024 1408h128v-1280h-128l-512 384h-256v512h256zM1792 768l190 -193l-129 -129l-189 194l-197 -194l-121 129l190 193l-190 193l125 125l193 -190l189 190l129 -125z" /> | |
<glyph unicode="" d="M1312 736l416 -416l-256 -256l-416 416l-416 -416l-256 256l416 416l-416 416l256 256l416 -416l416 416l256 -256z" /> | |
<glyph unicode="" d="M2048 1536v-256h-256v-256h-256v256h-256v256h256v256h256v-256h256zM1776 896l-317 -290l119 -606l-554 298l-554 -298l119 606l-461 423l627 77l269 558l128 -266v-246h256v-256h368z" /> | |
<glyph unicode="" d="M1797 1408l205 -205l-133 -133l-205 205l-205 -205l-133 133l205 205l-205 205l133 133l205 -205l205 205l133 -133zM1779 899l-320 -293l119 -606l-554 298l-554 -298l119 606l-461 423l627 76l269 559l128 -266v-118l128 -256z" /> | |
<glyph unicode="" d="M1024 1408q130 0 248.5 -50.5t204.5 -136.5t136.5 -204.5t50.5 -248.5q0 -174 -85.5 -321t-233 -233t-321.5 -86q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5q0 174 86 321.5t233 233t321 85.5zM673 613l506 506q-74 33 -155 33q-159 0 -271.5 -112.5 t-112.5 -271.5q0 -81 33 -155zM1375 924l-509 -506q74 -34 158 -34q159 0 271.5 112.5t112.5 271.5q0 81 -33 156z" /> | |
<glyph unicode="" d="M1294 700l189 -188h437v256h-331l-323 332l-293 -401l-143 884l-397 -815h-305v-255h463l116 229l112 -693z" /> | |
<glyph unicode="" d="M1824 -128v1408l-384 384h-1152v-1792h1536zM1696 0h-1280v1536h926l354 -352v-1184zM1184 640h256v256h-256v256h-256v-256h-256v-256h256v-256h256v256z" /> | |
<glyph unicode="" d="M480 704l-223 31q-7 158 49 307t173 264q135 133 313.5 187t360 23t330.5 -141l164 161l78 -538l-545 77l148 146q-159 106 -356 87.5t-337 -156.5q-95 -99 -136.5 -215t-18.5 -233zM1567 845l225 -44q6 -159 -50 -307.5t-173 -263.5q-135 -133 -313 -187.5t-359.5 -23 t-331.5 141.5l-164 -161l-78 538l545 -78l-147 -145q159 -106 355.5 -87.5t336.5 156.5q94 93 133 214.5t21 246.5z" /> | |
<glyph unicode="" d="M2015 1529q28 -103 -7 -190t-112 -107l-371 -100q-77 -20 -150.5 37.5t-100.5 160.5q-28 102 7 189t112 108l371 99q76 21 150 -37t101 -160zM1863 1355q25 7 34 48t-5 92q-14 52 -42 83t-53 24q-25 -6 -34 -47t5 -92q13 -51 41 -82.5t54 -25.5zM772 1063l-454 -122 q-52 -13 -97.5 13.5t-59.5 77.5q-14 52 12.5 97.5t77.5 59.5l495 133q-51 -14 -77.5 -60t-13.5 -97q11 -40 44 -65.5t74 -27.5q7 38 30 80q-16 19 -24 46q-14 52 12.5 98t77.5 59l338 223l62 16q-77 -21 -112 -108t-7 -189q27 -103 101 -160.5t151 -37.5l-62 -17l-98 6 q38 -36 38 -64q0 -106 -75 -181t-181 -75t-181 75t-75 181q0 13 4 39zM1152 512l640 -640h-256l-384 256v-256h-256v256l-384 -256h-256l640 640v128h256v-128z" /> | |
<glyph unicode="" d="M1536 0l256 -256h-1536l256 256h256v185q-72 33 -124 71h-388v128h768q0 159 112.5 271.5t271.5 112.5q0 102 -50.5 188.5t-135.5 137.5l-198 -198l-128 -256h-256l-128 128v256l256 128l512 512h128l128 128l128 -128l-128 -128v-128l-130 -130q120 -89 189 -222.5 t69 -287.5q0 -45 -8 -93q64 -55 100 -130t36 -161q0 -137 -85.5 -241.5t-216.5 -133.5zM1280 384q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" /> | |
<glyph unicode="" d="M512 1664q159 0 271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5zM2048 0l-256 -256l-576 576l-320 -320v896h896l-320 -320z" /> | |
<glyph unicode="" d="M1280 1280l-768 -768l-128 128l256 256l-512 512l256 256l512 -512l256 256zM1920 128l-256 -256l-512 512l-256 -256l-128 128l768 768l128 -128l-256 -256z" /> | |
<glyph unicode="" d="M1792 1664v-1664h-1536v1664h1536zM1664 1536h-1280v-1408h1280v1408zM1536 1280h-1024q0 5 1 13.5t8.5 31t19.5 39t38 30.5t61 14h768q26 0 47 -7t34 -18.5t23 -25t14 -27t6.5 -25t3.5 -18.5v-7zM1408 640h-768l128 384l256 -128l256 128zM1536 384h-1024l128 128h768z " /> | |
<glyph unicode="" d="M640 0h-256q-34 0 -59.5 11.5t-38 27t-20 36t-9 32t-1.5 20.5v1537q0 47 40 87.5t88 40.5h1280q48 0 88 -40t40 -88v-1536q0 -5 -0.5 -13.5t-6.5 -31t-18 -39t-38.5 -30.5t-64.5 -14h-640v-256l-192 192l-192 -192v256zM384 510h128v1154h-128v-1154zM896 766h512v383v3 q0 106 -75 181t-181 75t-181 -75t-75 -181v-3v-383zM1024 1149v3q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5v-3h-256zM1024 255v-128l576 1q3 0 7 0.5t15 4t19.5 9.5t15.5 19t7 31v191q-212 0 -687.5 0.5t-592.5 0.5v-192q0 -3 0.5 -7t4 -15t9.5 -19.5t19 -15.5 t31 -7q34 0 101.5 -0.5t90.5 -0.5v128h384z" /> | |
<glyph unicode="" d="M384 1792h1280q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5v-1536q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14h-640v-256l-192 192l-192 -192v256h-256q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23 t27 14t25 6.5t18.5 3.5h7zM1664 1664h-1024v-1152h1024v1152zM896 1408h-128v128h128v-128zM896 1152h-128v128h128v-128zM896 896h-128v128h128v-128zM896 640h-128v128h128v-128zM1024 128h576q3 0 7 0.5t15 4t19.5 9.5t15.5 19t7 31v192h-1280v-192q0 -3 0.5 -7t4 -15 t9.5 -19.5t19 -15.5t31 -7h192v128h384v-128z" /> | |
<glyph unicode="" d="M384 1792h1280q48 0 88 -40t40 -88v-1536q0 -5 -0.5 -13.5t-6.5 -31t-18 -39t-38.5 -30.5t-64.5 -14h-640v-256l-192 192l-192 -192v256h-256q-34 0 -59.5 11.5t-38 27t-20 36t-9 32t-1.5 20.5v1537q0 47 40 87.5t88 40.5zM1664 1664h-1024v-1154h1024v1154zM832 1216v82 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-22l192 -188l192 192v18q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-82l-256 -256v-82q29 -17 46.5 -46 t17.5 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5q0 35 17.5 64t46.5 46v82zM1024 255v-128l576 1q3 0 7 0.5t15 4t19.5 9.5t15.5 19t7 31v191q-212 0 -687.5 0.5t-592.5 0.5v-192q0 -3 0.5 -7t4 -15t9.5 -19.5t19 -15.5t31 -7q34 0 101.5 -0.5t90.5 -0.5v128 h384z" /> | |
<glyph unicode="" d="M1664 896h128v-768q0 -5 -0.5 -13.5t-6.5 -31t-18 -39t-38.5 -30.5t-64.5 -14h-640v-256l-192 192l-192 -192v256h-256q-42 0 -70.5 16.5t-39.5 41.5t-14.5 41t-3.5 29v1536q0 48 40.5 88t87.5 40h768v-128h-512v-1154h1024v386zM1920 1536v-256h-256v-256h-256v256h-256 v256h256v256h256v-256h256zM896 1408h-128v128h128v-128zM896 1152h-128v128h128v-128zM896 896h-128v128h128v-128zM768 768h128v-128h-128v128zM1024 128h576q3 0 7 0.5t15 4t19.5 10t15.5 19.5t7 30v192h-1280v-192q0 -3 0.5 -7t4 -15t9.5 -19.5t19 -15.5t31 -7l192 -1 v128h384v-127z" /> | |
<glyph unicode="" d="M1152 1728h-896l128 64h768v-64zM640 1600h-384v64h384v-64zM640 1472h-384v64h384v-64zM896 1472h-128v64h128v-64zM1920 1536v-256h-768v256h768zM640 1344h-384v64h384v-64zM640 1216h-384v64h384v-64zM896 1216h-128v64h128v-64zM640 1088h-384v64h384v-64zM640 960 h-384v64h384v-64zM896 960h-128v64h128v-64zM640 832h-384v64h384v-64zM1664 896h128v-64h-128v64zM640 704h-384v64h384v-64zM768 768h128v-64h-128v64zM1664 768h128v-64h-128v64zM640 576h-384v64h384v-64zM1664 640h128v-64h-128v64zM256 512h1536v-64h-1536v64z M384 320h-128v64h128v-64zM1664 384h128v-64h-128v64zM384 192h-128v64h128v-64zM1664 256h128v-64h-128v64zM1024 255v-63h-384v63h384zM256 128h1536l-64 -64h-1408zM640 0h384v-64h-384v64zM640 -128h128l-64 -64h-64v64zM896 -128h128v-64h-64z" /> | |
<glyph unicode="" d="M384 1790h1280q5 1 13.5 2t30 -2.5t38 -14.5t31 -40t15.5 -73v-1534q0 -5 -0.5 -13.5t-6.5 -31t-18 -39t-38.5 -30.5t-64.5 -14h-256v128h192q3 0 7 0.5t15 4t19.5 10t15.5 19.5t7 30v191h-256v128h256v1151h-1024v-1151h256v-128h-512v-191v-7t3.5 -15t9.5 -19.5 t19.5 -15.5t31.5 -7h192v127h256v-255l-256 -256v256h-256q-34 0 -59.5 11.5t-38 27t-20 36t-9 32t-1.5 20.5v1v1534q0 36 13 63t32 38.5t38 18.5t32 8h13zM896 1406h-128v128h128v-128zM768 1278h128v-127h-128v127zM1536 639h-256v-895h-256v895h-256l384 512z" /> | |
<glyph unicode="" d="M1408 894h128v-766q0 -5 -0.5 -13.5t-6.5 -31t-18 -39t-38.5 -30.5t-64.5 -14h-640v-256l-192 192l-192 -192v256h-256q-42 0 -70.5 16.5t-39.5 41.5t-14.5 41t-3.5 29v1536q0 36 13 63t32 38.5t38 18.5t32 8h13h1280q5 0 13.5 -1t30 -7.5t38.5 -18.5t31 -38.5t15 -62.5 v-256h-128v256h-1024v-1154h1024v384zM640 1408h-128v128h128v-128zM1664 768v256h-768v256h768v256l384 -384zM640 1152h-128v128h128v-128zM640 896h-128v128h128v-128zM512 766l128 2v-128h-128v126zM768 255v-128l576 1q3 0 7 0.5t15 4t19.5 10t15.5 19.5t7 30v192 h-1280v-192q0 -3 0.5 -7t4 -15t9.5 -19.5t19 -15.5t31 -7q34 0 101 -0.5t91 -0.5v128h384z" /> | |
<glyph unicode="" d="M0 128v1280q36 7 104 17.5t301 28.5t491 18q26 0 47 -7t34 -18.5t23 -25t14 -27t6.5 -25t3.5 -18.5v-7q0 5 1 13.5t8.5 31t19.5 39t38 30.5t61 14q257 0 481 -16t319 -32l96 -16v-1280q-12 3 -35.5 7t-107 15t-179 19.5t-251 15.5t-323.5 7q0 -29 -16 -45t-32 -17l-16 -2 h-128q-3 0 -7 0.5t-15 4t-19.5 9.5t-15.5 19t-7 31q-285 0 -509 -16t-305 -32zM128 1280v-960q36 7 99.5 17.5t248 28.5t356.5 18q35 0 61 -6.5t38 -14.5t19.5 -18.5t8.5 -15.5t1 -9v960q0 3 -1 7t-8.5 15t-19.5 19.5t-38 15.5t-61 7q-171 0 -347 -16t-267 -32zM1920 320 v960q-36 7 -99.5 17.5t-248.5 28.5t-356 18q-36 0 -62.5 -6.5t-38.5 -16t-18.5 -19t-7.5 -16.5l-1 -6v-960q0 3 1 7t8.5 15t19.5 19.5t38 15.5t61 7q198 0 374 -16t253 -32zM832 1152h-576q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7h448q28 0 44 -16t18 -32zM1792 1152h-576 q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7h448q28 0 44 -16t18 -32zM832 1024h-576q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7h448q28 0 44 -16t18 -32zM1792 1024h-576q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7h448q28 0 44 -16t18 -32zM832 896h-576q0 3 0.5 7t4 15t9.5 19.5 t19 15.5t31 7h448q28 0 44 -16t18 -32zM1792 896h-576q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7h448q28 0 44 -16t18 -32zM832 768h-576q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7h448q28 0 44 -16t18 -32zM1792 768h-576q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7h448q28 0 44 -16 t18 -32zM832 640h-576q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7h448q28 0 44 -16t18 -32zM1792 640h-576q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7h448q28 0 44 -16t18 -32zM832 512h-576q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7h448q28 0 44 -16t18 -32zM1792 512h-576 q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7h448q28 0 44 -16t18 -32z" /> | |
<glyph unicode="" d="M1829 1236q156 -180 156 -429q0 -139 -24.5 -252t-68 -196t-110.5 -145.5t-145.5 -103t-179 -65.5t-205 -35t-229.5 -10t-229 10t-204.5 35t-178.5 65.5t-144.5 103t-110 145.5t-67.5 196t-24 252q0 250 156 429q-9 23 -16 55t-13 88t5 130t40 151q5 2 15.5 3.5 t47.5 -2.5t80.5 -18t116 -52t152.5 -97q137 41 376 41t375 -41q80 59 152 97.5t117.5 51.5t79.5 18t49 2l15 -3q29 -77 39.5 -151t4.5 -130.5t-12.5 -87.5t-15.5 -55zM1024 128q98 0 162.5 2t146 11.5t133 26.5t106.5 48t85.5 76t50.5 111.5t20 151.5q0 145 -120 263 q-36 36 -84 54.5t-108.5 21t-115.5 -1t-136 -9.5t-140 -6t-140 6t-136 9.5t-115.5 1t-108 -21t-83.5 -54.5q-120 -118 -120 -263q0 -85 20 -151.5t50.5 -111.5t85.5 -76t106.5 -48t133 -26.5t145.5 -11.5t162 -2zM672 738q40 0 68 -46.5t28 -113.5q0 -66 -28 -113t-68 -47 t-68 47t-28 113q0 67 28 113.5t68 46.5zM1374 738q40 0 68 -46.5t28 -113.5q0 -66 -28 -113t-68 -47t-68 47t-28 113q0 67 28 113.5t68 46.5zM1023 384q-26 0 -45 9.5t-19 22.5t19 22.5t45 9.5t45 -9.5t19 -22.5t-19 -22.5t-45 -9.5zM1118 308q5 19 22 12q7 -2 10 -9.5 t1 -15.5q-14 -46 -49 -74.5t-78 -28.5t-78 28.5t-49 74.5q-2 8 1 15.5t10 9.5q17 7 22 -12q11 -34 37 -55t57 -21t57 21t37 55z" /> | |
<glyph unicode="" d="M1023 1792q208 0 398 -81t327 -218.5t218 -327t81 -397.5q0 -209 -81 -398.5t-218 -326.5t-326.5 -218t-398.5 -81q-208 0 -397.5 81t-326.5 218t-218 327t-81 398t81 397.5t218 327t326.5 218.5t397.5 81zM1280 139v-203q268 88 437.5 316.5t169.5 515.5 q0 176 -68.5 336t-184 275.5t-275.5 184t-336 68.5q-175 0 -335 -68.5t-275.5 -184t-184 -275.5t-68.5 -336q0 -287 170.5 -516t438.5 -316v163q-75 -15 -128.5 -9.5t-87.5 26.5t-54 43.5t-27 40.5l-8 17q-18 46 -42.5 78.5t-39.5 42.5l-16 9q-36 26 -34.5 38t20.5 14l20 2 q25 -2 48 -12t38.5 -23t27 -25.5t16.5 -21.5l6 -9q29 -50 69.5 -74.5t80.5 -23t66.5 8.5t49.5 18q12 61 78 81q-63 7 -114.5 18.5t-108 34t-98.5 59t-77 88t-53.5 128t-18.5 171.5q0 157 103 270q-47 123 10 267q3 1 10 2t32 -1.5t54.5 -11t78 -32.5t102.5 -60 q118 32 252 34q133 -2 252 -34q54 36 102 60t78.5 32.5t53 11.5t32.5 1l10 -2q25 -63 28.5 -125.5t-3 -91.5t-15.5 -50q104 -112 104 -270q0 -82 -14.5 -150t-38.5 -116.5t-60.5 -87t-75.5 -62.5t-89 -41.5t-94.5 -26t-97.5 -14.5q84 -57 84 -182z" /> | |
<glyph unicode="" d="M766 49v-241q-216 31 -392 169t-275 347t-99 445q0 208 81 397.5t218 326.5t327 218t398 81t397.5 -81t326.5 -218t218 -326.5t81 -397.5q0 -236 -99 -445t-275 -347t-392 -169v321q-1 127 -85 183q54 6 98.5 14.5t94.5 26t89 42t75.5 63t61 87.5t39 117.5t14.5 150.5 q0 158 -104 272q9 20 15.5 49.5t3 92t-27.5 125.5q-3 1 -10 2t-32.5 -1t-54.5 -10.5t-78.5 -32.5t-103.5 -61q-118 32 -253 34q-135 -2 -253 -34q-54 37 -103 61t-79.5 32t-53.5 11t-33 1l-10 -2q-25 -63 -28.5 -126t3 -91t15.5 -50q-104 -115 -104 -272q0 -114 28 -201 t72 -139.5t109.5 -87.5t126.5 -50t138 -23q-62 -41 -79 -122q-23 -11 -50 -18.5t-67.5 -9t-81 23t-69.5 74.5q-2 3 -5.5 9t-16.5 21t-28 27t-38.5 22.5t-48.5 12.5h-9t-16 -3t-14.5 -8t3.5 -16t30 -27q2 -1 6.5 -3.5t17 -13t24 -23.5t26 -37.5t25.5 -53.5q1 -2 2.5 -5.5 t7 -14.5t13.5 -21.5t21.5 -24t29.5 -24t40 -19.5t51 -14t63.5 -4t77.5 9z" /> | |
<glyph unicode="" d="M768 521v-130q-162 25 -267 142q-60 -21 -117 -21q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5q8 0 51 -5q75 174 234.5 281.5t354.5 107.5t354.5 -107.5t234.5 -281.5q43 5 51 5q159 0 271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5 q-1 0 -3 0.5t-3 0.5q-131 -129 -314 -129q-22 0 -64 6v130q34 -8 64 -8q79 0 148 36.5t113 99.5q30 -8 59 -8q106 0 181 75t75 181t-75 181t-181 75q-76 0 -139 -41q-31 182 -172 303.5t-329 121.5t-329.5 -121t-173.5 -303q-64 40 -137 40q-106 0 -181 -75t-75 -181 t75 -181t181 -75q87 0 159 57q32 -68 91 -114t134 -62zM1152 256h256l-384 -384l-384 384h256v640h256v-640z" /> | |
<glyph unicode="" d="M768 521v-130q-162 25 -267 142q-60 -21 -117 -21q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5q8 0 51 -5q75 174 234.5 281.5t354.5 107.5t354.5 -107.5t234.5 -281.5q43 5 51 5q159 0 271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5 q-1 0 -3 0.5t-3 0.5q-131 -129 -314 -129q-22 0 -64 6v130q34 -8 64 -8q79 0 148 36.5t113 99.5q30 -8 59 -8q106 0 181 75t75 181t-75 181t-181 75q-76 0 -139 -41q-31 182 -172 303.5t-329 121.5t-329.5 -121t-173.5 -303q-64 40 -137 40q-106 0 -181 -75t-75 -181 t75 -181t181 -75q87 0 159 57q32 -68 91 -114t134 -62zM1408 768h-256v-640h-256v640h-256l384 384z" /> | |
<glyph unicode="" d="M2048 1408v-1280h-2048v1280h2048zM1920 1280h-1792v-1024h1792v1024zM384 1024h-128v128h128v-128zM576 1024h-128v128h128v-128zM768 1024h-128v128h128v-128zM960 1024h-128v128h128v-128zM1152 1024h-128v128h128v-128zM1344 1024h-128v128h128v-128zM1536 1024h-128 v128h128v-128zM1792 1024h-192v128h192v-128zM448 768h-192v128h192v-128zM512 896h128v-128h-128v128zM704 896h128v-128h-128v128zM896 896h128v-128h-128v128zM1088 896h128v-128h-128v128zM1280 896h128v-128h-128v128zM1472 896h128v-128h-128v128zM1664 896h128v-320 h-256v128h128v192zM320 576h-64v128h64v-128zM512 576h-128v128h128v-128zM704 576h-128v128h128v-128zM896 704v-128h-128v128h128zM1088 704v-128h-128v128h128zM1280 704v-128h-128v128h128zM1344 704h128v-128h-128v128zM384 384h-128v128h128v-128zM448 512h128v-128 h-128v128zM640 512h832v-128h-832v128zM1536 512h256v-128h-256v128z" /> | |
<glyph unicode="" d="M1792 1664v-1664h-1536v1664h1536zM1664 1536h-1280v-1408h1280v1408zM1536 1280h-1024q0 5 1 13.5t8.5 31t19.5 39t38 30.5t61 14h768q26 0 47 -7t34 -18.5t23 -25t14 -27t6.5 -25t3.5 -18.5v-7zM864 356l-352 348l352 352l96 -96l-256 -256l256 -256zM1182 1056 l354 -352l-352 -352l-96 96l256 256l-256 256z" /> | |
<glyph unicode="" d="M1792 1664v-1664h-1536v1664h1536zM1664 1536h-1280v-1408h1280v1408zM1536 1280h-1024q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h768q35 0 61 -13t38 -32t19.5 -38t8.5 -32zM768 384v384q0 106 75 181t181 75t181 -75t75 -181v-384h-512zM896 768h256 q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" /> | |
<glyph unicode="" d="M1792 1280v-1408h-1536v1792h1152zM1664 1184l-354 352h-926v-1536h1280v1184zM960 960l-256 -256l256 -256l-96 -96l-352 352l350 354zM1184 1056l352 -352l-356 -350l-92 94l256 256l-256 256z" /> | |
<glyph unicode="" d="M1792 1280v-1408h-1536v1792h1152zM1664 1216l-320 320h-960v-1536h1280v1216zM768 1344h-256v64h256v-64zM896 1216h-384v64h384v-64zM704 1024h-192v64h192v-64zM768 1088h256v-64h-256v64zM1088 1088h384v-64h-384v64zM832 896h-320v64h320v-64zM896 960h384v-64h-384 v64zM1344 960h192v-64h-192v64zM640 768h-128v64h128v-64zM832 768h-128v64h128v-64zM1152 832v-64h-256v64h256zM1216 832h192v-64h-192v64zM768 640h-256v64h256v-64zM1216 640h-384v64h384v-64zM1280 704h192v-64h-192v64zM704 512h-192v64h192v-64zM768 576h256v-64 h-256v64zM1088 576h448v-64h-448v64zM832 384h-320v64h320v-64zM1280 384h-384v64h384v-64zM1408 448v-64h-64v64h64zM640 256h-128v64h128v-64zM704 256v64h128v-64h-128zM896 320h256v-64h-256v64zM1472 256h-256v64h256v-64zM512 192h256v-64h-256v64zM832 192h384v-64 h-384v64zM1280 192h256v-64h-256v64z" /> | |
<glyph unicode="" d="M1792 1280v-1408h-1536v1792h1152zM1664 1216l-320 320h-960v-1536h1280v1216zM576 1216h768l128 -128v-768h-192v192q0 53 -37.5 90.5t-90.5 37.5h-256q-53 0 -90.5 -37.5t-37.5 -90.5v-192h-192v896zM1024 1088q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136 t-56 136t-136 56z" /> | |
<glyph unicode="" d="M1792 1280v-1408h-1536v1792h1152zM1664 1216l-320 320h-448v-64h-128v64h-384v-1536h1280v1216zM640 1472h128v-64h-128v64zM768 1344v64h128v-64h-128zM640 1344h128v-64h-128v64zM768 1216v64h128v-64h-128zM640 1216h128v-64h-128v64zM768 1088v64h128v-64h-128z M640 1088h128v-64h-128v64zM768 960v64h128v-64h-128zM640 960h128v-64h-128v64zM768 832v64h128v-64h-128zM640 832h128v-64h-128v64zM768 704v64h128v-64h-128zM640 704h128v-64h-128v64zM768 576v64h128v-64h-128zM640 576h128v-64h128q26 0 47 -7t34 -18.5t23 -25 t14 -27t6.5 -25t3.5 -18.5v-7v-256h-512v256q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14v64zM640 384v-128h256v128h-256z" /> | |
<glyph unicode="" d="M1792 1280v-1408h-1536v1792h1152zM1664 1216l-320 320h-960v-1536h1280v1216zM1032 975q13 -38 27.5 -71.5t30 -58.5t29 -45.5t29.5 -36t27 -26.5t26 -20t21.5 -12.5t18.5 -9.5t13 -6q12 1 54 7t63 6q186 0 223 -84q7 -15 8.5 -36t-5 -45t-20.5 -43.5t-42 -31.5t-66 -9 q-47 2 -119 32.5t-132 73.5q-107 -11 -231.5 -42.5t-169.5 -50.5q-97 -163 -160 -218.5t-112 -55.5q-52 0 -78 27.5t-20 67.5q8 49 60 104t104 89.5t93 52.5q25 45 98.5 200.5t96.5 232.5q-72 190 -37 321q8 32 40 50t69.5 13.5t60.5 -30.5q6 -6 13 -18.5t16.5 -43t12 -67 t-7.5 -94.5t-34 -122zM965 1293q-11 1 -23.5 -7t-22 -28t-11.5 -49t12.5 -76.5t45.5 -104.5q45 71 47 165t-48 100zM792 518q185 82 395 113q-12 6 -33.5 22.5t-54.5 48t-68.5 87t-61.5 122.5q-20 -78 -81 -205t-96 -188zM1537 553q6 14 -4.5 29t-63.5 32.5t-177 -0.5 q19 -9 44.5 -23t44.5 -24t41.5 -21t39 -16t32 -6.5t26.5 6t17 23.5zM518 254q79 1 212 226q-23 -9 -59.5 -32t-75 -54.5t-62 -70t-15.5 -69.5z" /> | |
<glyph unicode="" d="M1920 640l-768 -768l-1024 1024v512l256 256h512zM1152 64l564 576l-896 896h-372l-192 -192v-384zM768 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM576 1152q26 0 45 19t19 45t-19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19z M1536 640l-384 -384l-512 512l384 384zM1152 452l196 188l-324 324l-192 -196z" /> | |
<glyph unicode="" d="M128 128v1280q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h640q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5q0 -5 1 -13.5t7.5 -31t18.5 -39t38.5 -30.5t62.5 -14h640q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5v-1024h-1792zM896 1408h-512h-128v-128 h640v128z" /> | |
<glyph unicode="" d="M128 384v1280q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h640q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5q0 -5 1 -13.5t7.5 -31t18.5 -39t38.5 -30.5t62.5 -14h640q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5v-384h-256q0 5 -1 13.5t-7.5 31 t-18.5 39t-38.5 30.5t-62.5 14h-640q-5 0 -13.5 -1t-31 -7.5t-39 -18.5t-30.5 -38.5t-14 -62.5v-640h-640zM256 1536h640q0 5 -1 13.5t-7.5 31t-18.5 39t-38.5 30.5t-62.5 14h-384q-26 0 -47 -7t-34 -18.5t-23 -25t-14 -27t-6.5 -25t-3.5 -18.5v-7zM1536 896h256 q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5v-384h-1024v512q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h384q26 0 47 -7t34 -18.5t23 -25t14 -27t6.5 -25t3.5 -18.5v-7zM1408 768v128h-128h-256v-128h384z" /> | |
<glyph unicode="" d="M1024 1088q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5zM1024 1599q-80 0 -135.5 -55.5t-55.5 -135.5t55.5 -135.5t135.5 -55.5t135.5 55.5t55.5 135.5t-55.5 135.5t-135.5 55.5zM768 1024h512 q106 0 181 -75t75 -181v-256q0 -106 -75 -181t-181 -75v-512h-512v512q-106 0 -181 75t-75 181v256q0 106 75 181t181 75zM1408 512v256q0 53 -37.5 90.5t-90.5 37.5h-512q-53 0 -90.5 -37.5t-37.5 -90.5v-256q0 -53 37.5 -90.5t90.5 -37.5v256h128v-768h256v768h128v-256 q53 0 90.5 37.5t37.5 90.5z" /> | |
<glyph unicode="" d="M749 1311q-29 -71 -93.5 -115t-143.5 -44q-106 0 -181 75t-75 181t75 181t181 75q63 0 116.5 -28t89.5 -77q29 102 113.5 167.5t192.5 65.5t192.5 -65.5t113.5 -167.5q36 49 89.5 77t116.5 28q106 0 181 -75t75 -181t-75 -181t-181 -75q-79 0 -143.5 44t-93.5 115 q-42 -73 -115 -116t-160 -43t-160 43t-115 116zM1024 1663q-80 0 -135.5 -55.5t-55.5 -135.5t55.5 -135.5t135.5 -55.5t135.5 55.5t55.5 135.5t-55.5 135.5t-135.5 55.5zM512 1280q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5 t90.5 -37.5zM1536 1536q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5zM1344 1152h320q106 0 181 -75t75 -181v-192q0 -69 -35 -127.5t-93 -92.5v-420h-512v-320h-512v320h-512v420q-58 34 -93 92.5t-35 127.5v192 q0 106 75 181t181 75h320q94 0 168 -64h304q74 64 168 64zM640 192v100q-58 34 -93 92.5t-35 127.5v320q0 114 88 192h-216q-53 0 -90.5 -37.5t-37.5 -90.5v-192h128v-512h256zM1792 704v192q0 53 -37.5 90.5t-90.5 37.5h-216q88 -78 88 -192v-320q0 -69 -35 -127.5 t-93 -92.5v-100h256v512h128zM1280 640v-256q53 0 90.5 37.5t37.5 90.5v320q0 53 -37.5 90.5t-90.5 37.5h-512q-53 0 -90.5 -37.5t-37.5 -90.5v-320q0 -53 37.5 -90.5t90.5 -37.5v256h128v-768h256v768h128z" /> | |
<glyph unicode="" d="M640 1088q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5zM1920 1408v-256h-256v-256h-256v256h-256v256h256v256h256v-256h256zM640 1600q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136t-56 136 t-136 56zM384 1024h512q106 0 181 -75t75 -181v-256q0 -106 -75 -181t-181 -75v-512h-512v512q-106 0 -181 75t-75 181v256q0 106 75 181t181 75zM1024 512v256q0 53 -37.5 90.5t-90.5 37.5h-512q-53 0 -90.5 -37.5t-37.5 -90.5v-256q0 -53 37.5 -90.5t90.5 -37.5v256h128 v-768h256v768h128v-256q53 0 90.5 37.5t37.5 90.5z" /> | |
<glyph unicode="" d="M849 1728h-418q96 64 209 64t209 -64zM357 1664h283q-94 0 -168 -64h-163q20 33 48 64zM971 1600h-163q-74 64 -168 64h283q28 -31 48 -64zM280 1536h140q-18 -30 -27 -64h-131q6 32 18 64zM1018 1472h-131q-9 34 -27 64h140q12 -32 18 -64zM393 1344h-131q-6 42 -6 64 h128q0 -26 9 -64zM896 1408h128q0 -22 -6 -64h-131q9 38 9 64zM1920 1408v-256h-768v256h768zM280 1280h140q17 -31 54 -64h-164q-18 31 -30 64zM860 1280h140q-12 -33 -30 -64h-165q37 32 55 64zM847 1088h-414q-45 29 -76 64h566q-31 -35 -76 -64zM384 1024h512 q94 0 168 -64h-848q74 64 168 64zM164 896h220q-35 0 -64 -17.5t-46 -46.5h-137q9 34 27 64zM1143 832h-137q-17 29 -46 46.5t-64 17.5h220q18 -30 27 -64zM256 704h-128v64h128v-64zM1024 768h128v-64h-128v64zM256 576h-128v64h128v-64zM512 576h-128v64h128v-64zM896 576 h-128v64h128v-64zM1024 640h128v-64h-128v64zM128 512h128q0 -33 18 -64h-137q-9 38 -9 64zM384 512h128v-64h-128v64zM768 512h128v-64h-128v64zM1143 448h-137q18 31 18 64h128q0 -26 -9 -64zM512 320h-294q-37 33 -54 64h348v-64zM768 384h348q-18 -32 -55 -64h-293v64z M512 192h-128v64h128v-64zM768 256h128v-64h-128v64zM512 64h-128v64h128v-64zM768 128h128v-64h-128v64zM384 0h128v-64h-128v64zM768 0h128v-64h-128v64zM384 -128h512v-64h-512v64z" /> | |
<glyph unicode="" d="M1408 1088q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5zM1408 1600q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136t-56 136t-136 56zM448 1152l384 -384l-384 -384v256h-320v256h320v256z M1152 1024h512q106 0 181 -75t75 -181v-256q0 -106 -75 -181t-181 -75v-512h-512v512q-106 0 -181 75t-75 181v256q0 106 75 181t181 75zM1792 512v256q0 53 -37.5 90.5t-90.5 37.5h-512q-53 0 -90.5 -37.5t-37.5 -90.5v-256q0 -53 37.5 -90.5t90.5 -37.5v256h128v-768h256 v768h128v-256q53 0 90.5 37.5t37.5 90.5z" /> | |
<glyph unicode="" d="M2048 1536v-256h-256v-256h-256v256h-256v256h256v256h256v-256h256zM1920 896v104q40 -57 72 -115t44 -87l12 -30q-5 -13 -15.5 -36t-51 -89.5t-90.5 -127t-136.5 -134.5t-186 -127t-242.5 -89.5t-302 -36.5q-125 0 -240 22t-204 59t-168 85t-136.5 101t-105 106 t-78.5 101t-52.5 85t-30.5 59l-9 22q3 9 9.5 24.5t31 63.5t54 95t79.5 110t106.5 117.5t136.5 110.5t168 95t202 63.5t237 24.5q71 0 128 -7v-192q-72 7 -128 7q-102 0 -196 -17.5t-166 -47t-136 -68t-110.5 -81t-85.5 -85t-64 -81t-42 -68t-24 -46.5l-8 -18 q4 -11 12.5 -29.5t41 -71.5t72.5 -101.5t110 -107.5t151 -101.5t197.5 -71.5t247.5 -29q103 0 197 17.5t166.5 47t136.5 68t110.5 81t85 85t63 81t42 68t24.5 46.5l7 18q-21 55 -71 128h135zM640 768q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5 t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5zM864 832q40 0 68 28t28 68t-28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28z" /> | |
<glyph unicode="" d="M1322 1207l209 209l-201 201l133 133l201 -201l201 201l133 -133l-201 -201l209 -209l-133 -133l-209 209l-209 -209zM1773 911l138 101q43 -60 77 -121t47 -92l13 -31q-5 -13 -15.5 -36t-51 -89.5t-90.5 -127t-136.5 -134.5t-186 -127t-242.5 -89.5t-302 -36.5 q-125 0 -240 22t-204 59t-168 85t-136.5 101t-105 106t-78.5 101t-52.5 85t-30.5 59l-9 22q3 9 9.5 24.5t31 63.5t54 95t79.5 110t106.5 117.5t136.5 110.5t168 95t202 63.5t237 24.5q99 0 193 -17l55 -77l-108 -108q-73 10 -140 10q-102 0 -196 -17.5t-166 -47t-136 -68 t-110.5 -81t-85.5 -85t-64 -81t-42 -68t-24 -46.5l-8 -18q4 -11 12.5 -29.5t41 -71.5t72.5 -101.5t110 -107.5t151 -101.5t197.5 -71.5t247.5 -29q103 0 197 17.5t166.5 47t136.5 68t110.5 81t85 85t63 81t42 68t24.5 46.5l7 18q-25 62 -83 143zM640 768q0 159 112.5 271.5 t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5zM864 832q40 0 68 28t28 68t-28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28z" /> | |
<glyph unicode="" d="M1920 896v-256h-467q-42 -140 -160.5 -230t-268.5 -90t-268.5 90t-160.5 230h-467v256h467q42 140 160.5 230t268.5 90t268.5 -90t160.5 -230h467zM1024 512q106 0 181 75t75 181t-75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75z" /> | |
<glyph unicode="" d="M1280 896v35q-58 35 -93 93t-35 128q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128t-93 -93v-35q0 -7 -0.5 -18t-5.5 -46t-13.5 -69t-27 -80t-43 -85.5t-64.5 -80t-88.5 -69t-118 -46.5t-151.5 -18q-128 0 -197 -83q69 -72 69 -173q0 -98 -76 -177t-180 -79 t-180 79t-76 177q0 69 35 127.5t93 92.5v840q-58 34 -93 92t-35 128q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128t-93 -92v-606q111 58 256 58q52 0 94.5 14t68.5 36.5t45 50t28 55t14 50t6 36.5v14zM640 1536q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5 t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5zM1408 1024q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5zM640 0q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5 t90.5 -37.5z" /> | |
<glyph unicode="" d="M768 1188v-606q57 30 112 44t144 14q52 0 94.5 14t68.5 36.5t45 50t28 55t14 50t6 36.5v14h256q0 -7 -0.5 -18t-5.5 -46t-13.5 -69t-27 -80t-43 -85.5t-64.5 -80t-88.5 -69t-118 -46.5t-151.5 -18q-128 0 -197 -83q69 -72 69 -173q0 -98 -76 -177t-180 -79t-180 79 t-76 177q0 69 35 127.5t93 92.5v840q-58 34 -93 92t-35 128q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128t-93 -92zM1152 1405v3q0 106 75 181t181 75t181 -75t75 -181v-384h-512v381zM640 1536q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5t-37.5 90.5t-90.5 37.5zM1280 1408h256q0 53 -37.5 90.5t-90.5 37.5q-52 0 -90 -39.5t-38 -88.5zM640 0q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5z" /> | |
<glyph unicode="" d="M1152 1536h128q8 0 22 -1t53.5 -8.5t76 -20.5t81 -41.5t76 -67.5t53.5 -102.5t22 -142.5v-804q58 -34 93 -92.5t35 -127.5q0 -98 -76 -177t-180 -79t-180 79t-76 177q0 69 35 127.5t93 92.5v804q-1 5 -2.5 13.5t-10 31t-21.5 39t-37.5 30.5t-56.5 14h-128v-256l-384 384 l384 384v-256zM384 348v840q-58 34 -93 92t-35 128q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128t-93 -92v-840q58 -34 93 -92.5t35 -127.5q0 -98 -76 -177t-180 -79t-180 79t-76 177q0 69 35 127.5t93 92.5zM512 1280q53 0 90.5 37.5t37.5 90.5t-37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5zM512 0q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5zM1536 0q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5 t90.5 -37.5z" /> | |
<glyph unicode="" d="M384 348v840q-58 34 -93 92t-35 128q0 106 75 181t181 75t181 -75t75 -181q0 -120 -95 -198q18 -63 45 -119t76.5 -117.5t113 -105t160 -72t212.5 -28.5h36q34 58 92 93t128 35q106 0 181 -75t75 -181t-75 -181t-181 -75q-70 0 -128 35t-92 93h-36q-407 0 -640 242v-406 q58 -34 93 -92.5t35 -127.5q0 -98 -76 -177t-180 -79t-180 79t-76 177q0 69 35 127.5t93 92.5zM512 1280q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5zM1536 512q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5zM512 0q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5z" /> | |
<glyph unicode="" d="M2048 1152v-1408l-1024 512l-1024 -512v1408l1024 640zM1920 1024l-768 512v-448h-256v448l-768 -512v-1024l768 384v192h256v-192l768 -384v1024zM640 960h768v256l384 -384l-384 -384v256h-768v-256l-384 384l384 384v-256z" /> | |
<glyph unicode="" d="M2048 1280v-1536l-1024 512l-1024 -512v1536l1024 512zM1920 1152l-768 384v-192h-256v192l-768 -384v-1152l768 384v64h256v-64l768 -384v1152zM768 576v384q0 106 75 181t181 75t181 -75t75 -181v-384h-512zM320 832l320 256v-512zM896 960h256q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5zM1728 832l-320 -256v512z" /> | |
<glyph unicode="" d="M1024 1664q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1024 51q146 0 278.5 57t228.5 153t153 228.5t57 278.5t-57 278.5t-153 228.5t-228.5 153t-278.5 57 t-278.5 -57t-228.5 -153t-153 -228.5t-57 -278.5t57 -278.5t153 -228.5t228.5 -153t278.5 -57zM960 1280h128q26 0 45 -19t19 -45v-576q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v576q0 26 19 45t45 19zM1024 512q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5 t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5z" /> | |
<glyph unicode="" d="M390 1583l99 -98q238 179 535 179q182 0 348 -71t286 -191t191 -286t71 -348q0 -186 -73 -355l-204 19q85 157 85 336q0 143 -55.5 273.5t-150 225t-225 150t-273.5 55.5q-219 0 -398 -125l81 -81l-341 -21zM1088 576h-128q-26 0 -45 19t-19 45v576q0 27 19 45.5t45 18.5 h128q26 0 45 -18.5t19 -45.5v-576q0 -26 -19 -45t-45 -19zM1341 270l341 21l-24 -338l-98 98q-240 -179 -536 -179q-182 0 -348 71t-286 191t-191 286t-71 348q0 186 73 355l204 -19q-85 -157 -85 -336q0 -143 55.5 -273.5t150 -225t225 -150t273.5 -55.5q219 0 398 125z M1024 256q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5z" /> | |
<glyph unicode="" d="M1592 1461l-107 -162q-199 173 -461 173q-143 0 -273.5 -55.5t-225 -150t-150 -225t-55.5 -273.5t55.5 -273.5t150 -225t225 -150t273.5 -55.5q137 0 262.5 51t218.5 138.5t152 209t68 256.5l195 49q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191 t-191 286t-71 348t71 348t191 286t286 191t348 71q159 0 304.5 -53t263.5 -150zM1536 1024l384 384l128 -128l-512 -512l-256 256l128 128zM1152 1216v-576q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v576q0 26 19 45t45 19h128q26 0 45 -19t19 -45zM1024 512 q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5z" /> | |
<glyph unicode="" d="M1577 1469h-611q-179 -15 -327 -111.5t-233.5 -252.5t-85.5 -337q0 -143 55.5 -273.5t150 -225t225 -150t273.5 -55.5q231 0 414.5 135t253.5 349l148 -148q-107 -237 -327.5 -382.5t-488.5 -145.5q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191 t348 71q312 0 553 -195zM1660 832h-256q-5 0 -13.5 1.5t-30 9.5t-37.5 20t-29.5 37.5t-13.5 59.5v256q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h512q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5v-256q0 -35 -13 -61t-32 -38t-38 -19.5t-32 -8.5l-13 -1v-256z M1152 1216v-576q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v576q0 26 19 45t45 19h128q26 0 45 -19t19 -45zM1024 512q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5z" /> | |
<glyph unicode="" d="M1459 606l119 -606l-554 298l-554 -298l119 606l-461 422l627 77l269 559l269 -559l627 -77z" /> | |
<glyph unicode="" d="M384 1664h1280q96 0 176 -80t80 -176v-768q0 -96 -80 -176t-176 -80h-640l-512 -512v512h-128q-5 0 -14.5 0.5t-36 5.5t-50.5 14t-53.5 28t-51 45t-36 68.5t-14.5 94.5v768q0 96 80 176t176 80z" /> | |
<glyph unicode="" d="M1024 1664q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1024 64q143 0 273.5 55.5t225 150t150 225t55.5 273.5t-55.5 273.5t-150 225t-225 150t-273.5 55.5 t-273.5 -55.5t-225 -150t-150 -225t-55.5 -273.5t55.5 -273.5t150 -225t225 -150t273.5 -55.5zM868 955h-217q9 214 149 304q88 57 218 57q170 0 282 -81t112 -241q0 -98 -48 -164q-29 -41 -110 -104l-53 -41q-44 -35 -57 -79q-10 -32 -10 -89h-204q4 126 24 176 q19 47 101 111l54 43q30 23 44 45q30 40 30 90q0 58 -34 104q-32 47 -121 47q-88 0 -124 -57q-36 -58 -36 -121zM925 415h225v-218h-225v218z" /> | |
<glyph unicode="" d="M2048 0h-2048l1024 1792zM256 128h1536l-768 1408zM1152 1088v-512h-256v512h256zM896 448h256v-192h-256v192z" /> | |
<glyph unicode="" d="M1454 530l530 -530q28 -48 28 -64t-28 -64l-64 -64q-28 -48 -64 -48t-64 48l-530 530q-209 -147 -462 -147q-217 0 -401.5 107.5t-291.5 292t-107 401.5q0 163 63.5 311t170.5 255t255 170.5t311 63.5t311.5 -63.5t255.5 -170.5t170.5 -255t63.5 -311q0 -253 -147 -462z M799 384q124 0 236.5 48.5t194 130t130 194t48.5 236.5q0 165 -81.5 305t-222 221.5t-305.5 81.5t-305 -81.5t-221.5 -221.5t-81.5 -305t81.5 -305.5t221.5 -222t305 -81.5z" /> | |
<glyph unicode="" d="M1024 1664q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1728 691v161l-194 63l-46 110l88 187l-113 113l-182 -93l-111 46l-69 194h-160l-64 -194l-110 -46 l-187 88l-113 -113l93 -182l-46 -111l-194 -69v-161l194 -63l46 -110l-88 -187l113 -113l182 93l111 -46l69 -194h161l63 194l110 46l187 -88l113 113l-93 182l46 111zM1024 1025q106 0 181 -75t75 -182t-75 -182t-181 -75t-181.5 75.5t-75.5 181.5t75.5 181.5t181.5 75.5z M1024 640q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5z" /> | |
<glyph unicode="" d="M394 953q21 -23 21 -54t-21 -54q-22 -22 -53 -22t-52 22q-79 81 -120 184.5t-41 213.5t41 214t120 185q22 22 52.5 22t52.5 -22q21 -22 21 -54t-21 -54q-118 -119 -118 -291q0 -171 118 -290zM1759 1642q79 -81 120 -185t41 -214t-41 -213.5t-120 -184.5q-21 -22 -52 -22 t-52 22q-22 23 -22 54t22 54q117 120 117 290q0 171 -117 291q-22 22 -22 54t22 54t52 22t52 -22zM578 975q-31 0 -52 22q-100 103 -100 246q0 144 100 247q22 22 52.5 22t52.5 -22q22 -23 22 -54.5t-22 -53.5q-56 -56 -56 -139q0 -82 56 -139q22 -22 22 -53t-22 -54 q-22 -22 -53 -22zM1417 1490q22 22 52.5 22t52.5 -22q101 -104 99 -247q2 -142 -99 -246q-21 -22 -52 -22t-53 22t-22 53.5t22 53.5q56 57 56 139q0 83 -56 139q-22 22 -22 54t22 54zM1023 1017q-91 0 -155.5 66t-64.5 160t64.5 160.5t155.5 66.5t155.5 -66.5t64.5 -160.5 t-64.5 -160t-155.5 -66zM1024 906h1q81 0 151 39l403 -1073h-191l-44 128h-640l-46 -128h-190l402 1073q72 -39 154 -39zM960 704h128l-65 140zM832 384l194 67l190 -67l-64 192h-256zM1273 178l-248 155l-249 -148l-8 -57h512z" /> | |
<glyph unicode="" d="M1011 666l-552 -553l-66 -113l-281 -192l-46 64l178 264l127 65l552 553l-112 113l128 128q102 -11 175 62q72 74 61 175l559 560l313 -314l-559 -560q-102 12 -175 -61t-61 -175l-128 -128zM574 890l-1 1q-112 -38 -234 -10.5t-211 116.5q-143 144 -112 424l247 -248 l242 65l65 243l-247 247q108 31 223 1.5t200 -113.5q85 -86 114 -202t-3 -225l105 -104q-16 -7 -35.5 -7.5t-30.5 2.5l-12 4l-180 -180l112 -113l-72 -72zM1280 1216l64 -64l448 448l-64 64zM1152 1024l128 -128l64 64l-128 128zM960 768l128 128l-64 64l-128 -128z M1348 699l535 -536q60 -60 60 -151.5t-60 -139.5q-15 -23 -32 -37t-38.5 -19.5t-35.5 -6.5t-40 -1q-27 0 -41 1t-35.5 6.5t-38.5 19.5t-31 37l-608 609l71 72l113 -113l180 180q-14 40 1 79zM1835 43l-84 84l-103 -28l-28 -99l84 -64h103z" /> | |
<glyph unicode="" d="M1280 704h128v-576h-640v-384l-768 384v1664h1408v-576h-128v448h-1024l512 -256v-1152h512v448zM1536 576v256h-512v256h512v256l512 -384z" /> | |
<glyph unicode="" d="M1571 1617q119 59 237.5 102t177.5 57l60 14q-5 -23 -15.5 -65t-54.5 -166.5t-103 -243.5q-139 15 -212 90q-75 73 -90 212zM1728 1472l192 192q-53 -10 -117 -42t-101 -59l-38 -27zM419 884l356 66q100 139 221 260q191 190 436 332q32 -151 124 -242q91 -92 242 -124 q-142 -245 -332 -436q-124 -124 -260 -219l-66 -358l-419 -419l-11 373l268 269q-86 -42 -167 -68.5t-119 -32.5l-39 -6l-118 118q1 14 5 40.5t29.5 110t66.5 169.5l-263 -263l-373 11zM1159 780q80 75 140.5 142t241.5 284q-52 36 -85 86.5t-40 83.5l-8 32 q-100 -64 -212 -160t-174 -160l-62 -64q42 -128 199 -244zM704 640l128 -128q112 91 175 147q-60 48 -104 107t-57 94l-14 36zM768 448l-128 128v-128l64 -64z" /> | |
<glyph unicode="" d="M512 1536q174 0 340 -46t306.5 -128.5t258.5 -200.5t200.5 -258.5t128.5 -306.5t46 -340q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7q0 209 -81 398.5t-218 326.5t-326.5 218t-398.5 81 q-5 0 -13.5 1t-31 7.5t-39 18.5t-30.5 38.5t-14 62.5q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7zM512 1024q209 0 385.5 -103t279.5 -279.5t103 -385.5q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25 t-3.5 18.5v7q0 212 -150 362t-362 150q-5 0 -13.5 1t-31 8.5t-39 19.5t-30.5 38t-14 61t13 61t32 38t38 19.5t32 8.5zM512 512q106 0 181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181t75 181t181 75z" /> | |
<glyph unicode="" d="M1600 256h128v-320q0 -49 -38 -88.5t-90 -39.5h-1280q-52 0 -90 39.5t-38 88.5v1472q0 53 37.5 90.5t90.5 37.5h384q0 106 75 181t181 75t181 -75t75 -181h384q53 0 90.5 -37.5t37.5 -90.5v-640h-128v384h-1280v-1216h1280v320zM448 1280h1024l-384 256q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5zM960 1472q-26 0 -45 19t-19 45t19 45t45 19t45 -19t19 -45t-19 -45t-45 -19zM1152 1344h-384q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7h256q28 0 44 -16t18 -32zM448 1024h256v-64h-256v64zM960 960h-192v64h192v-64zM1344 960h-320v64 h320v-64zM448 896h64v-64h-64v64zM576 896h320v-64h-320v64zM1984 640v-256h-512v-256l-512 384l512 384v-256h512zM1152 832h-192v64h192v-64zM448 768h192v-64h-192v64zM960 704h-256v64h256v-64zM448 640h128v-64h-128v64zM640 640h192v-64h-192v64zM448 512h384v-64 h-384v64zM448 384h192v-64h-192v64zM704 384h256v-64h-256v64zM448 256h128v-64h-128v64zM768 192h-128v64h128v-64zM832 256h256v-64h-256v64zM448 128h256v-64h-256v64zM1024 64h-256v64h256v-64zM1088 128h192v-64h-192v64z" /> | |
<glyph unicode="" d="M1273 1501q-48 -63 -123.5 -102.5t-151.5 -37.5q-13 73 13.5 148.5t75.5 135.5q50 60 126 101.5t147 45.5q22 -150 -87 -291zM1738 1191q-73 -40 -121.5 -102.5t-67 -131t-12 -142.5t36.5 -138.5t86 -118t130 -81.5q-53 -119 -115 -217q-35 -53 -64 -90.5t-70.5 -80.5 t-86.5 -66t-92 -23q-39 0 -75 11.5t-62 26t-71 26.5t-98 12t-98 -12.5t-71.5 -26.5t-63 -25.5t-75.5 -11.5q-47 0 -92 21t-84.5 60t-69 76.5t-62.5 88.5q-102 156 -148 329.5t-32.5 321.5t78.5 249q68 106 169.5 166.5t204.5 60.5q73 0 180.5 -38.5t162.5 -38.5q45 0 97 19 t113.5 38.5t130.5 19.5q91 0 182 -48t160 -134z" /> | |
<glyph unicode="" d="M976 487l-37 -19q-80 50 -150 79t-154 34q-197 14 -376 -73l-39 21l190 653q7 5 20 13t57 27.5t91 33t119.5 21.5t145.5 1q90 -8 164 -42t159 -92zM1227 1053l41 21q163 -108 311 -125q104 -12 210.5 8.5t161.5 46.5l55 27l41 -20l-193 -667q-68 -37 -204.5 -70 t-267.5 -18q-160 20 -345 141zM1 -256l189 674q7 5 20 13t57 27t91.5 32.5t119.5 21.5t145 2q90 -8 164 -42t159 -92l-190 -636l-37 -64q-56 41 -92.5 63.5t-95 43.5t-116.5 21q-109 0 -162 -2t-116.5 -17t-97.5 -45h-38zM1008 289l41 21q160 -107 311 -125q71 -7 134.5 -2 t117 19t92 28.5t60.5 25.5l22 11l42 -21l-194 -694q-22 0 -99.5 -16t-181.5 -32t-190 -16q-166 0 -346 128z" /> | |
<glyph unicode="" d="M576 1792h896q53 0 90.5 -37.5t37.5 -90.5v-1792q0 -49 -38 -88.5t-90 -39.5h-896q-52 0 -90 39.5t-38 88.5v1792q0 53 37.5 90.5t90.5 37.5zM1152 1664h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45t-19 45t-45 19zM1472 1408h-896v-1280h896v1280z M1024 -192q52 0 90 39.5t38 88.5q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5q0 -49 38 -88.5t90 -39.5z" /> | |
<glyph unicode="" d="M1527 1556l-100 -192q109 -122 109 -276h-1024q0 155 109 277l-100 189q-14 25 -7 53t30 42q23 15 48.5 7.5t38.5 -32.5l92 -173q136 85 301 85t301 -85l92 175q13 25 38.5 32.5t48.5 -6.5q23 -15 30 -43t-7 -53zM832 1213q26 0 45 18.5t19 45.5q0 26 -19 45t-45 19 t-45 -19t-19 -45q0 -27 19 -45.5t45 -18.5zM1216 1213q26 0 45 18.5t19 45.5q0 26 -19 45t-45 19t-45 -19t-19 -45q0 -27 19 -45.5t45 -18.5zM256 421v567q0 41 28 70t68 29t68 -29t28 -70v-567q0 -41 -28 -70.5t-68 -29.5t-68 29.5t-28 70.5zM1600 421v567q0 41 28 70 t68 29t68 -29t28 -70v-567q0 -41 -28 -70.5t-68 -29.5t-68 29.5t-28 70.5zM512 1021h1024v-766q0 -53 -37.5 -90.5t-90.5 -37.5h-128v-191q0 -49 -28.5 -88.5t-67.5 -39.5t-67.5 39.5t-28.5 88.5v191h-128v-191q0 -49 -28.5 -88.5t-67.5 -39.5t-67.5 39.5t-28.5 88.5v191 h-128q-53 0 -90.5 37.5t-37.5 90.5v766z" /> | |
<glyph unicode="" d="M1728 1152l-896 -896l-448 448l192 192l256 -256l704 704z" /> | |
<glyph unicode="" d="M1920 1408v-1280h-1792v1280h1792zM348 1280l676 -528l672 528h-1348zM256 348l543 426l-543 412v-838zM1792 1186l-543 -412l543 -426v838zM1696 256l-560 433l-112 -85l-114 86l-562 -434h1348z" /> | |
<glyph unicode="" d="M1920 -128h-1792v1280l128 91v293h410l358 256l358 -256h410v-293l128 -91v-1280zM888 1536h272l-136 100zM384 996l640 -500l640 503v409h-1280v-412zM768 1216h-256v64h256v-64zM1536 1088h-1024v64h1024v-64zM1408 960h-768v64h768v-64zM256 92l543 426l-543 412v-838 zM1792 930l-543 -412l543 -426v838zM1280 832h-512v64h512v-64zM1088 704h-128v64h128v-64zM1696 0l-560 433l-112 -85l-114 86l-562 -434h1348z" /> | |
<glyph unicode="" d="M1664 640h-384v-512h-512v512h-384l640 768z" /> | |
<glyph unicode="" d="M896 128v384h-512v512h512v384l768 -640z" /> | |
<glyph unicode="" d="M1664 896l-640 -768l-640 768h384v512h512v-512h384z" /> | |
<glyph unicode="" d="M1664 1024v-512h-512v-384l-768 640l768 640v-384h512z" /> | |
<glyph unicode="" d="M612 896q-100 -70 -100 -153q0 -117 143.5 -206t368.5 -89t368 89t143 206q0 101 -137 176q-58 56 -118 169v192q0 13 1 24t4 20.5t4.5 15t7.5 14t7 10t9 10.5t9 10q47 42 47 90q0 83 -91 136.5t-254 53.5q-164 0 -261.5 -54t-97.5 -136q0 -48 46 -89q5 -6 19 -19t20 -21 t12 -25t6 -40v-192q-10 -20 -22 -39.5t-23.5 -35.5t-23.5 -30.5t-23 -26t-21 -21.5t-18 -17t-13.5 -12t-8.5 -8zM1022 -256l127 576q-60 -6 -122 -6q-70 0 -130 7z" /> | |
<glyph unicode="" d="M1792 1021v-383h-768v328h-64v-328h-768v383h493q-94 42 -160 126t-77 182q-14 125 65 204t205 65q80 -9 153 -56t121 -118q48 71 121 118t153 56q126 14 205 -65t65 -204q-11 -98 -77 -182t-160 -126h493zM768 1109q79 -9 129 41t41 130t-71.5 143t-141.5 71 q-80 9 -130 -41t-41 -130q9 -79 71.5 -142t142.5 -72zM1046 1280q-9 -80 41 -130t129 -41t142 72t72 142q9 80 -41 130t-130 41q-79 -8 -141.5 -71t-71.5 -143zM320 575h640v-639h-640v639zM1024 575h640v-639h-640v639z" /> | |
<glyph unicode="" d="M2048 -128v-128h-2048v2048h256v-64h-128v-128h128v-64h-128v-128h128v-64h-128v-128h128v-64h-128v-128h128v-64h-128v-128h128v-64h-128v-128h128v-64h-128v-128h128v-64h-128v-128h128v-64h-128v-128h128v-64h-128v-128h1920zM1408 0h-384v1472h384v-1472zM1920 0 h-384v1088h384v-1088zM896 0h-384v832h384v-832z" /> | |
<glyph unicode="" d="M1734 1160l180 180q6 -40 6 -60q0 -159 -112.5 -271.5t-271.5 -112.5q-53 0 -110 18l-548 -548q18 -57 18 -110q0 -159 -112.5 -271.5t-271.5 -112.5h-60l180 186l-68 253l-253 68l-178 -177q-5 45 -5 54q0 159 112.5 271.5t271.5 112.5q53 0 110 -18l548 548 q-18 57 -18 110q0 159 112.5 271.5t271.5 112.5q9 0 54 -5l-177 -178l68 -253z" /> | |
<glyph unicode="" d="M128 1408h1792q53 0 90.5 -37.5t37.5 -90.5v-1024q0 -53 -37.5 -90.5t-90.5 -37.5h-1792q-53 0 -90.5 37.5t-37.5 90.5v1024q0 53 37.5 90.5t90.5 37.5zM627 896l205 256h1088v64q-1 1 0 7t-2.5 15.5t-8.5 19t-19 16t-34 6.5h-1664q-20 0 -34 -6.5t-19.5 -16t-8.5 -19 t-2 -16.5v-6v-64h397l-205 -256h-192v-576q1 -1 0 -7t2.5 -15.5t8.5 -19t19 -16t34 -6.5h1664q20 0 34 6.5t19.5 16t8.5 19t2 16.5v6v576h-1293zM640 1152h77l-205 -256h-77zM256 768h1088v-128h-1088v128zM1792 640h-320v128h320v-128zM768 512h-512v64h512v-64zM832 576 h256v-64h-256v64zM256 448h256v-64h-256v64zM576 448h256v-64h-256v64zM1664 448h128v-64h-128v64z" /> | |
<glyph unicode="" d="M1024 1664q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1024 66q191 0 352.5 94t255.5 255.5t94 352.5t-94 352.5t-255.5 255.5t-352.5 94t-352.5 -94 t-255.5 -255.5t-94 -352.5t94 -352.5t255.5 -255.5t352.5 -94zM1408 832l64 -64l-64 -64h-448v640l64 64l64 -64v-512h320z" /> | |
<glyph unicode="" d="M2048 1024l-1024 -1024l-1024 1024l512 512h1024zM1024 192l832 832l-384 384h-896l-384 -384zM1728 1024l-704 -704v1024h384z" /> | |
<glyph unicode="" d="M613 248l11 -153q-224 112 -360 327t-136 474q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348q0 -259 -136 -474t-360 -327l11 153q164 104 260.5 275.5t96.5 372.5q0 209 -103 385.5t-279.5 279.5t-385.5 103t-385.5 -103t-279.5 -279.5 t-103 -385.5q0 -201 96.5 -372.5t260.5 -275.5zM1447 416l15 215q75 124 75 265q0 139 -68.5 257t-187 186.5t-257.5 68.5q-212 0 -362 -150t-150 -362q0 -142 74 -265l15 -215q-102 90 -159.5 214.5t-57.5 265.5q0 130 51 248.5t136.5 204t204 136.5t248.5 51t248.5 -51 t204 -136.5t136.5 -204t51 -248.5q0 -141 -57.5 -265.5t-159.5 -214.5zM1216 1024q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 768h256q39 0 67 -13t39.5 -32t17 -38t4.5 -32v-13v-256q0 -3 0.5 -7.5t-1 -17.5t-5 -25.5t-13 -27 t-22.5 -25t-35.5 -18t-51.5 -7.5v-512h-256v512q-39 0 -67 13t-39.5 32t-17 38t-4.5 32v13v256q0 3 -0.5 7.5t1 17.5t5 25.5t13 27t22.5 25t35.5 18t51.5 7.5z" /> | |
<glyph unicode="" d="M1920 896v-128l-64 -64h-64l-64 64h-64l-64 64l-128 -128h-64l-128 128l-128 -128l-64 64l-64 -64h-128v-128q0 -3 -0.5 -7t-4 -15t-10 -19.5t-19.5 -15.5t-30 -7h-64q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14h-256q-9 -1 -23 0t-48 16.5t-57 47.5 q-42 58 -67.5 95.5t-58.5 93.5t-49.5 104.5t-16.5 90.5q0 36 9.5 72.5t36 84t40 70.5t56 84.5t50.5 72.5q18 26 50 41t55 17l23 2q124 4 256 4q37 0 64 -13t38.5 -32t18 -38t7.5 -32v-13h64q3 0 7 -0.5t15 -4t19.5 -9.5t15.5 -19t7 -31v-128h960zM640 959l-64 193h-192z M384 704l128 128l-128 128l-128 -128zM640 705l-256 -193h192z" /> | |
<glyph unicode="" d="M384 1790h1280q5 1 13.5 2t30 -2.5t38 -14.5t31 -40t15.5 -73v-1534q0 -5 -0.5 -13.5t-6.5 -31t-18 -39t-38.5 -30.5t-64.5 -14h-256v128h192q3 0 7 0.5t15 4t19.5 10t15.5 19.5t7 30v191h-256v128h256v1151h-1024v-1151h256v-128h-512v-191v-7t3.5 -15t9.5 -19.5 t19.5 -15.5t31.5 -7h192v127h256v-255l-256 -256v256h-256q-34 0 -59.5 11.5t-38 27t-20 36t-9 32t-1.5 20.5v1535q0 36 13 63t32 38.5t38 18.5t32 8h13zM1536 639h-256v-895h-256v895h-256l288 384h-288l384 511l384 -511h-288z" /> | |
<glyph unicode="" d="M384 512h1152v-384q0 -5 -0.5 -13.5t-6.5 -31t-18 -39t-38.5 -30.5t-64.5 -14h-640v-256l-192 192l-192 -192v256h-256q-42 0 -70.5 16.5t-39.5 41.5t-14.5 41t-3.5 29v1536q0 36 13 63t32 38.5t38 18.5t32 8h13h1280q5 0 13.5 -1t30 -7.5t38.5 -18.5t31 -38.5t15 -62.5 h-1152v-1152zM1110 1541l95 -96q130 100 297.5 89t286.5 -129q137 -139 129 -336l-130 -26q10 74 -13 145.5t-77 125.5q-81 82 -195.5 92.5t-206.5 -51.5l85 -86l-316 -45zM640 1408h-128v128h128v-128zM640 1152h-128v128h128v-128zM1563 907l316 45l-45 -317l-95 96 q-130 -100 -297.5 -89t-286.5 129q-137 139 -129 336l130 26q-10 -74 13 -145.5t77 -125.5q81 -82 195.5 -92.5t206.5 51.5zM640 896h-128v128h128v-128zM512 766l128 2v-128h-128v126zM128 384v-192q0 -3 0.5 -7t4 -15t9.5 -19.5t19 -15.5t31 -7q34 0 101 -0.5t91 -0.5v128 h384v-128l576 1q3 0 7 0.5t15 4t19.5 10t15.5 19.5t7 30v192h-1280z" /> | |
<glyph unicode="" d="M384 512h1152v-384q0 -5 -0.5 -13.5t-6.5 -31t-18 -39t-38.5 -30.5t-64.5 -14h-640v-256l-192 192l-192 -192v256h-256q-42 0 -70.5 16.5t-39.5 41.5t-14.5 41t-3.5 29v1536q0 36 13 63t32 38.5t38 18.5t32 8h13h960v-128h-704v-1152zM1280 1792h704q3 0 7 -0.5t15 -4 t19.5 -10t15.5 -19.5t7 -30v-896q0 -28 -16 -44t-32 -18l-16 -2h-384v-128l-98 64l-94 -64v128h-128q-3 0 -7 0.5t-15 4t-19.5 10t-15.5 19.5t-7 30v896q0 28 16 44t32 18zM1920 1664h-448v-512h448v512zM640 1408h-128v128h128v-128zM832 960v512l256 -256zM640 1152h-128 v128h128v-128zM640 896h-128v128h128v-128zM1920 1024h-576v-128h64v64h192v-64h320v128zM512 766l128 2v-128h-128v126zM128 384v-192q0 -3 0.5 -7t4 -15t9.5 -19.5t19 -15.5t31 -7q34 0 101 -0.5t91 -0.5v128h384v-128l576 1q3 0 7 0.5t15 4t19.5 10t15.5 19.5t7 30v192 h-1280z" /> | |
<glyph unicode="" d="M1920 1408v-1408h-128v1344l-320 320h-1088v128h1152zM1280 1536l384 -384v-1408h-1536v1792h1152zM1536 1088l-320 320h-960v-1536h1280v1216zM1024 960h256v-256h-256v-256h-256v256h-256v256h256v256h256v-256zM512 320h768v-256h-768v256z" /> | |
<glyph unicode="" d="M1024 1472q157 0 298 -39t241.5 -101t185.5 -137t138.5 -150t91 -137t53.5 -101l16 -39q-5 -13 -15.5 -36t-51 -89.5t-90.5 -127t-136.5 -134.5t-186 -127t-242.5 -89.5t-302 -36.5q-125 0 -240 22t-204 59t-168 85t-136.5 101t-105 106t-78.5 101t-52.5 85t-30.5 59 l-9 22q3 9 9.5 24.5t31 63.5t54 95t79.5 110t106.5 117.5t136.5 110.5t168 95t202 63.5t237 24.5zM1024 256q103 0 197 17.5t166.5 47t136.5 68t110.5 81t85 85t63 81t42 68t24.5 46.5l7 18q-4 11 -12.5 29.5t-41.5 71.5t-73 101.5t-110.5 107.5t-151 101.5t-197 71.5 t-246.5 29q-102 0 -196 -17.5t-166 -47t-136 -68t-110.5 -81t-85.5 -85t-64 -81t-42 -68t-24 -46.5l-8 -18q4 -11 12.5 -29.5t41 -71.5t72.5 -101.5t110 -107.5t151 -101.5t197.5 -71.5t247.5 -29zM1024 1152q159 0 271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5 t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5zM864 832q40 0 68 28t28 68t-28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28z" /> | |
<glyph unicode="" d="M1472 704h-512q-8 0 -21 1t-46 11t-58 28t-46 58t-21 94v512q0 8 1 21t11 46t28 58t58 46t94 21h896q8 0 21 -1t46 -11.5t58 -28.5t46 -57.5t21 -93.5v-512q0 -53 -20 -92.5t-48 -57.5t-56 -28.5t-48 -11.5l-20 -2h-64v-320zM640 1216v-320q0 -7 0.5 -18.5t6.5 -44.5 t17 -63.5t35 -67t56.5 -63.5t85.5 -45t119 -18h320v-64q0 -54 -20 -93.5t-48 -57.5t-56 -28.5t-48 -11.5l-20 -1h-512l-320 -320v320h-64q-8 0 -21 1.5t-46 12.5t-58 29t-46 57t-21 92v512q0 54 20 93.5t48 57.5t56 28.5t48 11.5l20 1h448z" /> | |
<glyph unicode="" d="M1024 1664q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1024 64q143 0 273.5 55.5t225 150t150 225t55.5 273.5t-55.5 273.5t-150 225t-225 150t-273.5 55.5 t-273.5 -55.5t-225 -150t-150 -225t-55.5 -273.5t55.5 -273.5t150 -225t225 -150t273.5 -55.5zM1409 994l-225 -225l225 -223l-159 -163l-226 226l-226 -226l-159 159l225 227l-225 225l159 159l226 -224l222 224z" /> | |
<glyph unicode="" d="M640 1155l-384 320l384 317v-188h384q3 1 7.5 1.5t17.5 0.5t25.5 -3t27 -11.5t25 -22t18 -38t7.5 -56.5v-769h-256v641h-256v-192zM1920 1088v-1280h-1792v1280h640v-128h-420l676 -528l672 528h-416v128h640zM256 28l544 426l-544 412v-838zM1792 866l-543 -412 l543 -426v838zM1696 -64l-560 433l-112 -85l-114 86l-562 -434h1348z" /> | |
<glyph unicode="" d="M1024 251q-212 0 -362 150t-150 362t150 362t362 150t362 -150t150 -362t-150 -362t-362 -150z" /> | |
<glyph unicode="" d="M1536 1280v-1024h-1024v1024h1024z" /> | |
<glyph unicode="" d="M1792 768l128 -128l-768 -768l-1024 1024v512l256 256h512l128 -128v-204l-204 204h-372l-192 -192v-384l896 -896l564 576l-128 128h204zM1920 1408v-256h-256v-256h-256v256h-256v256h256v256h256v-256h256zM576 1408q80 0 136 -56t56 -136t-56 -136t-136 -56t-136 56 t-56 136t56 136t136 56zM576 1152q26 0 45 19t19 45t-19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19zM1152 256l-512 512l384 384l512 -512zM832 768l320 -316l196 188l-324 324z" /> | |
<glyph unicode="" d="M1322 1207l209 209l-201 201l133 133l201 -201l201 201l133 -133l-201 -201l209 -209l-133 -133l-209 209l-209 -209zM1600 960l320 -320l-768 -768l-1024 1024v512l256 256h512l320 -320l-96 -96l-288 288h-384l-192 -192v-384l896 -896l576 576l-224 224zM576 1408 q80 0 136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136t56 136t136 56zM576 1152q26 0 45 19t19 45t-19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19zM1152 256l-512 512l384 384l512 -512zM832 768l320 -316l196 188l-324 324z" /> | |
<glyph unicode="" d="M1792 1536v-256h-256v-256h-256v256h-256v256h256v256h256v-256h256zM768 1188v-606q111 58 256 58q52 0 94.5 14t68.5 36.5t45 50t28 55t14 50t6 36.5v14h256q0 -7 -0.5 -18t-5.5 -46t-13.5 -69t-27 -80t-43 -85.5t-64.5 -80t-88.5 -69t-118 -46.5t-151.5 -18 q-128 0 -197 -83q69 -72 69 -173q0 -106 -75 -181t-181 -75t-181 75t-75 181q0 70 35 128t93 93v839q-58 34 -93 92.5t-35 127.5q0 106 75 181t181 75t181 -75t75 -181q0 -69 -35 -127.5t-93 -92.5zM640 1536q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5zM640 0q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5z" /> | |
<glyph unicode="" d="M1750 1207l-133 -133l-209 209l-209 -209l-133 133l209 209l-201 201l133 133l201 -201l201 201l133 -133l-201 -201zM1408 1088l128 -128v-64q0 -7 -0.5 -18t-5.5 -46t-13.5 -69t-27 -80t-43 -85.5t-64.5 -80t-88.5 -69t-118 -46.5t-151.5 -18q-128 0 -197 -83 q69 -72 69 -173q0 -106 -75 -181t-181 -75t-181 75t-75 181q0 70 35 128t93 93v839q-58 34 -93 92.5t-35 127.5q0 106 75 181t181 75t181 -75t75 -181q0 -69 -35 -127.5t-93 -92.5v-606q111 58 256 58q52 0 94.5 14t68.5 36.5t45 50t28 55t14 50t6 36.5v14v64zM640 1536 q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5zM640 0q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5z" /> | |
<glyph unicode="" d="M1920 1280l-192 -192l-384 384l192 192zM1280 1408l384 -384l-1152 -1153h-384v385zM512 128h-128v128h-128v-256h256v128z" /> | |
<glyph unicode="" d="M1024 1664q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1024 64q143 0 273.5 55.5t225 150t150 225t55.5 273.5t-55.5 273.5t-150 225t-225 150t-273.5 55.5 t-273.5 -55.5t-225 -150t-150 -225t-55.5 -273.5t55.5 -273.5t150 -225t225 -150t273.5 -55.5zM1024 1024q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5zM1152 768v-320q0 -35 13 -61.5t32 -38.5t38 -19t32 -8l13 -1 v-64h-256q-5 0 -13.5 1t-31 7.5t-39 18.5t-30.5 38.5t-14 62.5v320q0 35 -13 61.5t-32 38.5t-38 19t-32 8l-13 1v64h256q5 0 13.5 -0.5t31 -7t39 -18.5t30.5 -38.5t14 -63.5z" /> | |
<glyph unicode="" d="M1536 768l-768 -767v1535z" /> | |
<glyph unicode="" d="M1792 1024l-768 -767l-767 767h1535z" /> | |
<glyph unicode="" d="M512 448h86q66 -113 171 -192h-257q-212 0 -362 150t-150 362t150 362t362 150h384q212 0 362 -150t150 -362q0 -102 -38 -192h-219q65 88 65 192q0 133 -93.5 226.5t-226.5 93.5h-384q-133 0 -226.5 -93.5t-93.5 -226.5t93.5 -226.5t226.5 -93.5zM1279 1280h257 q212 0 362 -150t150 -362t-150 -362t-362 -150h-384q-212 0 -362 150t-150 362q0 99 38 192h219q-65 -88 -65 -192q0 -133 93.5 -226.5t226.5 -93.5h384q133 0 226.5 93.5t93.5 226.5t-93.5 226.5t-226.5 93.5h-86q-66 113 -171 192z" /> | |
<glyph unicode="" d="M1664 896v-256h-512v-512h-256v512h-512v256h512v512h256v-512h512z" /> | |
<glyph unicode="" d="M1664 1408v-256h-1280v256h1280zM1664 896v-256h-1280v256h1280zM1664 384v-256h-1280v256h1280z" /> | |
<glyph unicode="" d="M897 1226l-428 -458l428 -458l-171 -184l-599 642l599 642zM1922 768l-600 -642l-171 184l428 458l-428 458l171 184z" /> | |
<glyph unicode="" d="M1024 1792q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5q0 -99 -66 -280.5t-160 -369.5t-188 -362t-160 -285l-66 -111q-26 43 -69 116t-153.5 274t-195 373.5t-153.5 359t-69 285.5q0 130 51 248.5t136.5 204t204 136.5t248.5 51zM1024 896q106 0 181 75t75 181 t-75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75z" /> | |
<glyph unicode="" d="M256 1408h256v-256h-256v256zM1792 1408v-256h-1152v256h1152zM256 896h256v-256h-256v256zM640 896h1152v-256h-1152v256zM256 384h256v-256h-256v256zM640 384h1152v-256h-1152v256z" /> | |
<glyph unicode="" d="M256 1664h128v-384h-128v192h-128v128h128v64zM1920 1664v-256h-1344v256h1344zM128 1152h256v-166l-128 -154h128v-64h-256v104l128 154v62h-64v-64h-64v128zM576 1152h1344v-256h-1344v256zM320 640l64 -64v-64l-64 -64l64 -64v-64l-64 -64h-192v64h64l64 64l-64 64 h-64v64h64l64 64h-128v64h192zM576 640h1344v-256h-1344v256zM256 128h128v-384h-128v128h-128v256h64v-192h64v192zM576 128h1344v-256h-1344v256z" /> | |
<glyph unicode="" d="M384 256v512q0 212 150 362t362 150v-256q-106 0 -181 -75t-75 -181h256v-512h-512zM1664 1280v-256q-106 0 -181 -75t-75 -181h256v-512h-512v512q0 212 150 362t362 150z" /> | |
<glyph unicode="" d="M1920 1408v-1280h-1024v1280h1024zM512 1280h256v-128h-128v-768h128v-128h-256v1024zM128 1152h256v-128h-128v-512h128v-128h-256v768zM1664 1152h-512v-768h512v768z" /> | |
<glyph unicode="" d="M1792 1536v-1536h-1536v1536h1536zM1664 1408h-1280v-1280z" /> | |
<glyph unicode="" d="M256 1024h-128v512h512v-128h-384v-384zM1920 1536v-512h-128v384h-384v128h512zM384 1280h1280v-1024h-1280v1024zM640 512h768v512h-768v-512zM256 128h384v-128h-512v512h128v-384zM1792 512h128v-512h-512v128h384v384z" /> | |
<glyph unicode="" d="M384 1664h128v-384h-384v128h256v256zM1920 1408v-128h-384v384h128v-256h256zM512 1152h1024v-768h-1024v768zM768 640h512v256h-512v-256zM128 256h384v-384h-128v256h-256v128zM1536 256h384v-128h-256v-256h-128v384z" /> | |
<glyph unicode="" d="M640 1728v-128q0 -3 -0.5 -7t-5 -15t-11 -19.5t-20 -15.5t-31.5 -7q-28 0 -43 16t-16 32l-1 16v128q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7q28 0 44 -16t18 -32zM1536 1728v-128q0 -3 -0.5 -7t-5 -15t-11 -19.5t-20 -15.5t-31.5 -7q-28 0 -43 16t-16 32l-1 16v128 q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7q28 0 44 -16t18 -32zM1984 1664v-1792h-1920v1792h320v-64q0 -8 0.5 -21t10 -46t27 -58t58 -46t96.5 -21t96.5 20t58 48t27 56t10.5 48v20v64h512v-64q0 -8 0.5 -21t10 -46t27 -58t58 -46t96.5 -21t96.5 20t58 48t27 56t10.5 48v20v64 h320zM1856 1280h-1664v-1280h1664v1280zM960 896h-256v256h256v-256zM1344 896h-256v256h256v-256zM1728 896h-256v256h256v-256zM576 512h-256v256h256v-256zM960 512h-256v256h256v-256zM1344 512h-256v256h256v-256zM1728 512h-256v256h256v-256zM576 128h-256v256h256 v-256zM960 128h-256v256h256v-256zM1344 128h-256v256h256v-256z" /> | |
<glyph unicode="" d="M1536 1280h384q5 0 13.5 -1t31 -7.5t39 -18.5t30.5 -38.5t14 -62.5v-768q0 -26 -7 -47t-18.5 -34t-25 -23t-27 -14t-25 -6.5t-18.5 -3.5h-7h-384v-256q0 -69 -94 -128t-256.5 -93.5t-353.5 -34.5t-353.5 34.5t-256.5 93.5t-94 128v1536q0 69 94 128t256.5 93.5 t353.5 34.5t353.5 -34.5t256.5 -93.5t94 -128v-256zM832 1408q212 0 362 37.5t150 90.5t-150 90.5t-362 37.5t-362 -37.5t-150 -90.5t150 -90.5t362 -37.5zM512 1088l-128 64v-1024l128 -64v1024zM1280 1152l-128 -64v-1024l128 64v1024zM896 1024h-128v-1024h128v1024z M1792 1024h-256v-512h256v512z" /> | |
<glyph unicode="" d="M1472 960h128q53 0 90.5 -37.5t37.5 -90.5v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1152q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h128v333q0 180 131.5 307.5t316.5 127.5t316.5 -127.5t131.5 -307.5v-333zM1280 960v320q0 106 -75 181t-181 75 t-181 -75t-75 -181v-320h512zM1280 832h-768q-28 0 -44 -16t-18 -32l-2 -16v-768q0 -3 0.5 -7t4 -15t9.5 -19.5t19 -15.5t31 -7h768v128h-704v128h704v128h-704v128h704v128h-704v128h704v128z" /> | |
<glyph unicode="" d="M256 1664h1536q35 0 61 -13t38 -32t19.5 -38t8.5 -32l1 -13v-1536q0 -35 -13 -61t-32 -38t-38 -19.5t-32 -8.5l-13 -1h-1536q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7zM1728 128v1280q0 3 -0.5 7 t-4 15t-9.5 19.5t-19 15.5t-31 7h-1280q-3 0 -7 -0.5t-15 -4t-19.5 -9.5t-15.5 -19t-7 -31v-1280q0 -3 0.5 -7t4 -15t9.5 -19.5t19 -15.5t31 -7h1280q3 0 7 0.5t15 4t19.5 9.5t15.5 19t7 31zM1152 896h256v-256h-256v-256h-256v256h-256v256h256v256h256v-256z" /> | |
<glyph unicode="" d="M256 1664h1536q35 0 61 -13t38 -32t19.5 -38t8.5 -32l1 -13v-1536q0 -35 -13 -61t-32 -38t-38 -19.5t-32 -8.5l-13 -1h-1536q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7zM1728 128v1280q0 3 -0.5 7 t-4 15t-9.5 19.5t-19 15.5t-31 7h-1280q-3 0 -7 -0.5t-15 -4t-19.5 -9.5t-15.5 -19t-7 -31v-1280q0 -3 0.5 -7t4 -15t9.5 -19.5t19 -15.5t31 -7h1280q3 0 7 0.5t15 4t19.5 9.5t15.5 19t7 31zM640 896h768v-256h-768v256z" /> | |
<glyph unicode="" d="M256 1664h1536q35 0 61 -13t38 -32t19.5 -38t8.5 -32l1 -13v-1536q0 -35 -13 -61t-32 -38t-38 -19.5t-32 -8.5l-13 -1h-1536q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7zM1728 128v1280q0 3 -0.5 7 t-4 15t-9.5 19.5t-19 15.5t-31 7h-1280q-3 0 -7 -0.5t-15 -4t-19.5 -9.5t-15.5 -19t-7 -31v-1280q0 -3 0.5 -7t4 -15t9.5 -19.5t19 -15.5t31 -7h1280q3 0 7 0.5t15 4t19.5 9.5t15.5 19t7 31zM1024 1024q106 0 181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181t75 181 t181 75z" /> | |
<glyph unicode="" d="M256 1664h1536q35 0 61 -13t38 -32t19.5 -38t8.5 -32l1 -13v-1536q0 -35 -13 -61t-32 -38t-38 -19.5t-32 -8.5l-13 -1h-1536q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v1536q0 26 7 47t18.5 34t25 23t27 14t25 6.5t18.5 3.5h7zM1728 128v1280q0 3 -0.5 7 t-4 15t-9.5 19.5t-19 15.5t-31 7h-1280q-3 0 -7 -0.5t-15 -4t-19.5 -9.5t-15.5 -19t-7 -31v-1280q0 -3 0.5 -7t4 -15t9.5 -19.5t19 -15.5t31 -7h1280q3 0 7 0.5t15 4t19.5 9.5t15.5 19t7 31zM1024 1152l448 -384l-448 -384v256h-384v256h384v256z" /> | |
<glyph unicode="" d="M320 1536h1408q8 0 21 -1t46 -11.5t58 -28.5t46 -57.5t21 -93.5v-896q0 -54 -20 -93.5t-48 -57.5t-56 -28.5t-48 -11.5l-20 -1h-256v-384l-384 384h-768q-8 0 -21 1t-46 11.5t-58 28.5t-46 57.5t-21 93.5v896q0 54 20 93.5t48 57.5t56 28.5t48 11.5zM1408 1024h-256v256 h-256v-256h-256v-256h256v-256h256v256h256v256z" /> | |
<glyph unicode="" d="M512 640h-128v768h128v-384h256v384h128v-768h-128v256h-256v-256zM1536 1024v-128h-256v-256h-128v768h384v-128h-256v-256h256zM1536 1024v256h128v-256h-128zM1536 640v256h128v-256h-128zM384 384h1280v-256h-1280v256z" /> | |
<glyph unicode="" d="M896 384v256h-256v256h256v256l512 -384z" /> | |
<glyph unicode="" d="M1024 641l-767 767h1535zM1792 384v-256h-1536v256h1536z" /> | |
<glyph unicode="" d="M1792 1408v-256h-1536v256h1536zM1792 128h-1535l767 768z" /> | |
<glyph unicode="" d="M0 1408h384v-1280h-384v1280zM2048 1024v-512h-640v-384l-768 640l768 640v-384h640z" /> | |
<glyph unicode="" d="M1152 1536h-256v256h256v-256zM1920 1152l-256 -256h-1408v512h1408zM1088 1216h-128v-128h128v128zM896 768h256v-1024h-256v1024z" /> | |
<glyph unicode="" d="M876 578l-108 -108q-39 -39 -39 -93q0 -55 39 -94l192 -219h-704q-29 0 -45 16t-17 32l-2 16v1344q0 3 0.5 7t4 15t9.5 19.5t19 15.5t31 7h1152q27 0 43 -16t19 -32l2 -16v-768l-275 -260l-134 134q-37 38 -93 38t-94 -38zM512 1280h-128v-128h128v128zM576 1152h704v128 h-704v-128zM512 1088h-128v-128h128v128zM576 960h704v128h-704v-128zM512 896h-128l-4 -131l132 3v128zM576 768h448v128h-448v-128zM1737 797l108 -108q11 -10 11 -25.5t-11 -25.5l-622 -623q-11 -11 -26 -11t-26 11l-69 69l-39 39l-227 228q-10 11 -10 26t10 25l108 108 q10 10 25 10t26 -10l202 -202l489 489q10 11 25 11t26 -11z" /> | |
<glyph unicode="" d="M512 -128l-128 575q-41 1 -128 1q-69 0 -128 68.5t-93.5 186.5t-34.5 257t34.5 257t93.5 186.5t128 68.5q236 -1 428 13t314 36.5t216 49.5t153 55t106 50.5t93.5 37t97.5 14.5q104 0 192.5 -103t140 -279.5t51.5 -385.5t-51.5 -385.5t-140 -279.5t-192.5 -103 q-65 0 -131 24t-124.5 55.5t-185 71t-289.5 63.5l90 -406l-128 -192zM1216 960q0 -192 50.5 -343.5t129.5 -206.5q-116 227 -116 550q0 326 116 550q-79 -55 -129.5 -206.5t-50.5 -343.5zM522 820q386 -22 647 -87q-17 110 -17 227q0 280 89 491q-247 -79 -637 -99 q-92 -153 -92 -392q0 -76 10 -140zM1664 384q69 0 128 77t93.5 210t34.5 289q0 266 -90 439q-65 -24 -115.5 -69.5t-81.5 -101t-51 -125t-27.5 -136.5t-7.5 -142.5t5 -136t14 -122.5t15.5 -96.5t13.5 -64.5q33 -21 69 -21zM393 826q-9 64 -9 134q0 234 88 387 q-100 -3 -216 -3q-51 0 -89.5 -122.5t-38.5 -261.5q0 -67 11 -128q135 -1 254 -6z" /> | |
<glyph unicode="" d="M1537 768l-642 -640l-256 256l384 384l-384 384l256 256z" /> | |
<glyph unicode="" d="M1792 1664v-1664h-1536v1664h1536zM1664 1536h-1280v-1408h1280v1408zM640 1408h768q35 0 61 -13t38 -32t19.5 -38t8.5 -32l1 -13h-1024q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14zM1216 896v18q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5 t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-82l-256 -256v-82q29 -17 46.5 -46t17.5 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5q0 35 17.5 64t46.5 46v82l-256 256v82q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5 q0 -35 -17.5 -64t-46.5 -46v-22l192 -188z" /> | |
<glyph unicode="" d="M1792 1664v-1664h-1536v1664h1536zM1664 1536h-1280v-1408h1280v1408zM1536 1280h-1024q0 5 1 13.5t7.5 31t18.5 39t38.5 30.5t62.5 14h768q35 0 61 -13t38 -32t19.5 -38t8.5 -32zM1152 832h256v-256h-256v-256h-256v256h-256v256h256v256h256v-256z" /> | |
<glyph unicode="" d="M1408 1472v-1472l-377 252l-391 -252v1472h768zM1129 975l144 104q9 7 7 12.5t-15 5.5h-176l-55 166q-2 9 -6 12t-8 0t-6 -12l-55 -166h-176q-13 0 -15 -5.5t7 -12.5l144 -104l-54 -167q-4 -13 0 -16.5t15 3.5l144 104l144 -104q11 -7 15 -3.5t0 16.5z" /> | |
<glyph unicode="" d="M640 960h-192v448h192v-448zM1152 768h-192v640h192v-640zM1664 1152h-192v256h192v-256zM1728 1088v-192h-320v192h320zM384 896h320v-192h-320v192zM1472 832h192v-704h-192v704zM896 704h320v-192h-320v192zM448 640h192v-512h-192v512zM960 448h192v-320h-192v320z " /> | |
<glyph unicode="" d="M1640 939l138 180q78 -170 78 -351q0 -169 -66 -323t-177 -265.5t-265.5 -177.5t-323.5 -66t-323 66t-265.5 177.5t-177.5 265.5t-66 323t66 323.5t177.5 265.5t265.5 177t323 66q289 0 514 -179l-158 -121q-162 108 -356 108q-130 0 -248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5q0 83 -24 171zM1024 863q26 0 50 -6q412 353 654 551q28 23 53 18t28 -28.5t-17 -53.5q-162 -201 -551 -655q6 -22 6 -49q0 -92 -65.5 -157.5t-157.5 -65.5t-157.5 65.5 t-65.5 157.5t65.5 157.5t157.5 65.5zM1088 1280q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 19.5q26 0 45 -19t19 -46zM1344 1216q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM768 1280 q26 0 45 -18.5t19 -45.5q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5zM640 1024q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM1472 768q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5 t19 -45.5q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45zM448 768q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45z" /> | |
<glyph unicode="" d="M384 1600l100 -119q241 183 540 183q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348q0 164 60 320h212q-78 -150 -78 -320q0 -191 94 -352.5t255.5 -255.5t352.5 -94t352.5 94t255.5 255.5t94 352.5 t-94 352.5t-255.5 255.5t-352.5 94q-229 0 -417 -138l97 -116h-384zM896 256v466q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5q35 0 64 -17.5t46 -46.5h274l64 -64l-64 -64h-274q-17 -29 -46 -46v-466l-64 -64z" /> | |
<glyph unicode="" d="M1536 640h256v-640h-1537v1536h513v-256h-256v-1024h1024v384zM1792 1536v-768l-256 256l-388 -388l-252 260l384 384l-256 256h768z" /> | |
<glyph unicode="" d="M256 960h256q7 6 18 16t47 40.5t70.5 60t83 70t91 75t88 70t80 60.5t61.5 40.5t37 15.5q28 0 44 -16t18 -32l2 -16v-1216q0 -3 -0.5 -7t-4 -15t-9.5 -19.5t-19 -15.5t-31 -7q-28 0 -172 112t-274 224l-130 112h-256v448zM1728 768l192 -192l-128 -128l-192 192l-192 -192 l-128 128l192 192l-192 192l128 128l192 -192l192 192l128 -128z" /> | |
<glyph unicode="" d="M1312 736l416 -416l-256 -256l-416 416l-416 -416l-256 256l416 416l-416 416l256 256l416 -416l416 416l256 -256z" /> | |
<glyph unicode="" d="M1984 1536v-256h-256v-256h-256v256h-256v256h256v256h256v-256h256zM1395 414l119 -606l-554 298l-554 -298l119 606l-461 422l627 77l269 559l269 -559l628 -77zM680 460l-59 -310q75 117 165.5 215.5t169 161.5t164 113t143 74.5t112.5 42.5l-242 30l-173 365 l-173 -365l-403 -51z" /> | |
<glyph unicode="" d="M1942 1207l-133 -133l-209 209l-209 -209l-133 133l209 209l-201 201l133 133l201 -201l201 201l133 -133l-201 -201zM1395 414l119 -606l-554 298l-554 -298l119 606l-461 422l627 77l269 559l269 -559l628 -77zM680 460l-59 -310q75 117 165.5 215.5t169 161.5t164 113 t143 74.5t112.5 42.5l-242 30l-173 365l-173 -365l-403 -51z" /> | |
<glyph unicode="" d="M1024 1408q174 0 321.5 -86t233 -233t85.5 -321t-85.5 -321t-233 -233t-321.5 -86q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51zM674 610l508 508q-74 34 -158 34q-159 0 -271.5 -112.5t-112.5 -271.5q0 -84 34 -158z M1374 926l-508 -508q74 -34 158 -34q159 0 271.5 112.5t112.5 271.5q0 84 -34 158z" /> | |
<glyph unicode="" d="M1184 704l96 -128h640v192h-512l-288 256l-128 -288l-192 864l-288 -832h-384v-192h512l96 320l192 -768z" /> | |
<glyph unicode="" d="M1824 -128v1408l-384 384h-1152v-1792h1536zM1696 0h-1280v1536h926l354 -352v-1184zM1184 640h256v256h-256v256h-256v-256h-256v-256h256v-256h256v256z" /> | |
<glyph unicode="" d="M481 691l-224 44q-7 158 49 307t173 264q135 133 313.5 188t358 24t321.5 -142l175 160l78 -538l-545 77l148 146q-159 106 -356 87.5t-337 -156.5q-94 -93 -133 -214.5t-21 -246.5zM1567 845l225 -44q0 -156 -55 -309.5t-169 -267.5q-217 -193 -497 -212t-506 149 l-164 -161l-77 537l544 -76l-147 -146q159 -106 355.5 -87.5t336.5 156.5q94 93 133 214.5t21 246.5z" /> | |
<glyph unicode="" d="M2015 1528q17 -70 8.5 -131t-43 -106.5t-84.5 -58.5l-371 -100q-77 -20 -150.5 37.5t-101.5 160.5q-27 102 8 189t112 108l371 99q77 21 150.5 -37t100.5 -161zM1863 1355q25 7 34 48t-5 92q-14 52 -42 83t-53 24q-26 -7 -34 -47.5t5 -92.5q13 -51 41 -82.5t54 -24.5z M1340 1082l-404 26q-52 -14 -97.5 12.5t-59.5 77.5t12.5 97.5t77.5 59.5l338 223l62 16q-77 -21 -112 -108t-7 -189q27 -103 101 -160.5t151 -37.5zM812 1074l-495 -132q-51 -14 -97 12.5t-59 78.5q-14 51 12.5 96.5t77.5 59.5l495 133q-52 -14 -78.5 -60t-12.5 -97 t60 -77.5t97 -13.5zM1152 577l640 -576l13 -16q24 -40 -46 -47q-14 -1 -31 -1q-60 0 -108 16t-66 32l-18 16l-384 320v-384q0 -5 -1 -13.5t-7.5 -31t-18.5 -39t-38.5 -30.5t-62.5 -14q-26 0 -47 7t-34 18.5t-23 25t-14 27t-6.5 25t-3.5 18.5v7v384l-384 -320 q-7 -7 -21.5 -17.5t-64.5 -28.5t-106 -18t-72 16t-4 32l12 16l640 576v320q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5v-320z" /> | |
<glyph unicode="" d="M1536 0l256 -256h-1536l256 256h256v184q-76 34 -126 72h-386v128h768q0 159 112.5 271.5t271.5 112.5q0 102 -50.5 188.5t-135.5 137.5l-198 -198l-128 -256h-256l-128 128v256l256 128l448 448q18 18 38 25t35.5 3.5t28 -9.5t19.5 -13l7 -6l128 128q3 3 7.5 7t19 11.5 t28.5 10t34.5 -4t38.5 -24.5t25 -38t3.5 -35.5t-9.5 -28t-13 -19.5l-6 -7l-128 -128q3 -3 6.5 -7.5t11.5 -19t10 -29t-4 -34.5t-24 -38l-66 -66q120 -89 189 -222.5t69 -287.5q0 -45 -8 -93q64 -55 100 -130t36 -161q0 -137 -85.5 -241.5t-216.5 -133.5zM1280 384 q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" /> | |
<glyph unicode="" d="M512 1664q159 0 271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5zM2048 0l-256 -256l-576 576l-320 -320v896h896l-320 -320z" /> | |
<glyph unicode="" d="M1280 1280l-768 -768l-128 128l256 256l-512 512l256 256l512 -512l256 256zM1920 128l-256 -256l-512 512l-256 -256l-128 128l768 768l128 -128l-256 -256z" /> | |
<glyph unicode="" d="M1792 1600v-1664h-1536v1664h1536zM1664 1472h-1280v-1408h1280v1408zM1536 1216h-1024q0 5 1 13.5t8.5 31t19.5 39t38 30.5t61 14h768q26 0 47 -7t34 -18.5t23 -25t14 -27t6.5 -25t3.5 -18.5v-7zM1280 832h-512l128 256l128 -64l128 64zM1408 704h-768l128 64h512z M768 448l128 -256h-320l-64 320l320 64zM1088 448l64 -256h-256l64 256l-64 128h256zM1536 512l-64 -320h-320l128 256l-64 128z" /> | |
</font> | |
</defs></svg> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html xmlns="http://www.w3.org/1999/html"> | |
<head> | |
<meta charset="utf-8"> | |
<link rel="stylesheet" href="style.css"> | |
<script src="http://d3js.org/d3.v3.js"></script> | |
<script src="jsonp.js"></script> | |
<script src="ghcs.js"></script> | |
<script src="main.js"></script> | |
<script src="github.js"></script> | |
<script src="vis.js"></script> | |
<script src="stat.js"></script> | |
<script src="repo.js"></script> | |
<script src="langhg.js"></script> | |
<script src="show.js"></script> | |
</head> | |
<body onload="init()"> | |
<header> | |
<div id="controls" class="popup"> | |
<div class="row"> | |
<ul class="steps sfirst"> | |
<li style="z-index: 2" class="first"> | |
<label><strong>1.</strong></label> | |
<input placeholder="User" type="text" id="user"> | |
<button id="showBtn" title="Press for loading data about user repositories." class="btn" disabled="disabled">Show</button> | |
<div class="sub"> | |
<div class="row"> | |
<blockquote>Enter user's login of github.</blockquote> | |
<div class="row"> | |
<ul class="setting"> | |
<li class="field"><h1>Display:</h1> | |
<ul class="group"> | |
<li class="field"> | |
<input id="cb-dllh" type="checkbox" checked="checked"> | |
<label for="cb-dllh">Layer histogram languages</label> | |
</li> | |
</ul> | |
</li> | |
</ul> | |
</div> | |
</div> | |
</div> | |
</li> | |
<li style="z-index: 1" class="second"> | |
<label><strong>2.</strong></label> | |
<label id="curRep"><span>Select Repo...</span></label> | |
<button id="runBtn" title="Press for analyse repository." class="btn" disabled="disabled">Analyse</button> | |
<div class="sub"> | |
<div class="row"> | |
<blockquote>Click to repo in graph of repos.</blockquote> | |
<div class="row"> | |
<ul class="setting"> | |
<li class="field"><h1>Display:</h1> | |
<ul class="group"> | |
<li class="field"> | |
<input id="cb-dlr" type="checkbox" checked="checked"> | |
<label for="cb-dlr">Layer repos</label> | |
</li> | |
<li class="field"> | |
<input id="cb-dlsr" type="checkbox" checked="checked"> | |
<label for="cb-dlsr">Layer stat repo</label> | |
</li> | |
</ul> | |
<ul class="group"> | |
<li class="field"> | |
<input id="cb-dlcmrs" type="checkbox" checked="checked"> | |
<label for="cb-dlcmrs">Layer committers</label> | |
</li> | |
</ul> | |
</li> | |
<li class="field"><h1>Settings:</h1> | |
<ul class="group"> | |
<li class="field"> | |
<label for="txt-lc">Limit of commits</label> | |
<input id="txt-lc" type="number" value="100" max="10000000" min="0" step="1"> | |
</li> | |
</ul> | |
</li> | |
</ul> | |
</div> | |
</div> | |
</div> | |
</li> | |
<li class="third"> | |
<label><strong>3.</strong></label> | |
<button id="visBtn" title="Press for dynamic visualization." class="btn" disabled="disabled"><span class="mono">►</span> Run</button> | |
<button id="visBtnPause" title="Pause" class="btn" style="display: none" disabled="disabled"><span class="mono">▌▌</span>Pause</button> | |
<button id="visBtnStop" title="Stop" class="btn" style="display: none" disabled="disabled"><span class="mono">■</span> Stop</button> | |
<button id="visBtnResume" title="Restart" class="btn" style="display: none" disabled="disabled"><span class="mini-icon mini-icon-history"></span> Restart</button> | |
<div class="sub"> | |
<div class="row"> | |
<blockquote>Select type visualization, change setting and press button run.</blockquote> | |
<div class="row"> | |
<ul class="setting"> | |
<li class="field"><h1>Display:</h1> | |
<ul class="group"> | |
<li class="field"> | |
<input id="cb-dlvml" type="checkbox" checked="checked"> | |
<label for="cb-dlvml">Layer canvas</label> | |
</li> | |
</ul> | |
</li> | |
<li class="field"><h1>Type visualization:</h1> | |
<ul class="group"> | |
<li class="field"> | |
<input name="typeVis" id="rb_lacs" checked="checked" type="radio"> | |
<label for="rb_lacs">Code_swarm</label> | |
</li> | |
<li class="field"> | |
<input name="typeVis" id="rb_lag" type="radio"> | |
<label for="rb_lag">Gource</label> | |
</li> | |
</ul> | |
</li> | |
<li class="field"><h1>Settings:</h1> | |
<ul class="setting" id="st-cs"> | |
<li class="field"><h1>Code_swarm:</h1> | |
<ul class="setting"> | |
<li class="field"><h1>The number of cycles of life element:</h1> | |
<ul class="group"> | |
<li class="field"> | |
<label for="n-cs-userLife">User</label> | |
<input data-ns="cs" id="n-cs-userLife" type="number" step="1" min="0" max="1000000"> | |
</li> | |
<li class="field"> | |
<input data-ns="cs" id="cb-cs-showUser" type="checkbox" checked="checked"> | |
<label for="cb-cs-showUser">visible</label> | |
</li> | |
</ul> | |
<ul class="group"> | |
<li class="field"> | |
<label for="n-cs-fileLife"> File</label> | |
<input data-ns="cs" id="n-cs-fileLife" type="number" step="1" min="0" max="1000000"> | |
</li> | |
<li class="field"> | |
<input data-ns="cs" id="cb-cs-showFile" type="checkbox" checked="checked"> | |
<label for="cb-cs-showFile">visible</label> | |
</li> | |
</ul> | |
<ul class="group"> | |
<li class="field"> | |
<label for="n-cs-edgeLife">Edge</label> | |
<input data-ns="cs" id="n-cs-edgeLife" type="number" step="1" min="0" max="1000000"> | |
</li> | |
<li class="field"> | |
<input data-ns="cs" id="cb-cs-showEdge" type="checkbox"> | |
<label for="cb-cs-showEdge">visible</label> | |
</li> | |
</ul> | |
</li> | |
</ul> | |
<ul class="setting"> | |
<li class="field"><h1>Display:</h1> | |
<ul class="group"> | |
<li class="field"> | |
<input data-ns="cs" id="cb-cs-showCountExt" type="checkbox" checked="checked"> | |
<label for="cb-cs-showCountExt">Legend extension</label> | |
</li> | |
</ul> | |
<ul class="group"> | |
<li class="field"> | |
<input data-ns="cs" id="cb-cs-showHistogram" type="checkbox" checked="checked"> | |
<label for="cb-cs-showHistogram">Changes Histogram</label> | |
</li> | |
</ul> | |
<ul class="group"> | |
<li class="field"> | |
<input data-ns="cs" id="cb-cs-showCommitMessage" type="checkbox" checked="checked"> | |
<label for="cb-cs-showCommitMessage">Commit Messages</label> | |
</li> | |
</ul> | |
<ul class="group"> | |
<li class="field"> | |
<input data-ns="cs" id="cb-cs-onlyShownExt" type="checkbox"> | |
<label for="cb-cs-onlyShownExt">Only current commit extensions</label> | |
</li> | |
</ul> | |
<ul class="group"> | |
<li class="field"> | |
<input data-ns="cs" id="cb-cs-showLabel" type="checkbox" checked="checked"> | |
<label for="cb-cs-showLabel">User's name</label> | |
</li> | |
<li class="field"> | |
<input data-ns="cs" id="cb-cs-showHalo" type="checkbox" checked="checked"> | |
<label for="cb-cs-showHalo">Halo</label> | |
</li> | |
</ul> | |
<ul class="group"> | |
<!--<li class="field"> | |
<input id="cb-cs-showFilename" type="checkbox" checked="checked"> | |
<label for="cb-cs-showFilename">Show file's name</label> | |
</li>--> | |
</ul> | |
<ul class="group"> | |
<li class="field"> | |
<input data-ns="cs" id="cb-cs-showPaddingCircle" type="checkbox"> | |
<label for="cb-cs-showPaddingCircle">Circle of padding</label> | |
</li> | |
</ul> | |
</li> | |
</ul> | |
<ul class="setting"> | |
<li class="field"><h1>Rate of decrease of:</h1> | |
<ul class="group"> | |
<li class="field"> | |
<label for="n-cs-rateFlash">Flash</label> | |
<input data-ns="cs" id="n-cs-rateFlash" type="number" step="0.5" min="0" max="100"> | |
</li> | |
</ul> | |
<ul class="group"> | |
<li class="field"> | |
<label for="n-cs-rateOpacity">Opacity</label> | |
<input data-ns="cs" id="n-cs-rateOpacity" type="number" step="0.5" min="0" max="100"> | |
</li> | |
</ul> | |
</li> | |
</ul> | |
<ul class="setting"> | |
<li class="field"><h1>Size of:</h1> | |
<ul class="group"> | |
<li class="field"> | |
<label for="n-cs-sizeUser">User</label> | |
<input data-ns="cs" id="n-cs-sizeUser" type="number" step="0.1" min="0.1" max="100"> | |
</li> | |
</ul> | |
<ul class="group"> | |
<li class="field"> | |
<label for="n-cs-sizeFile">File (initial)</label> | |
<input data-ns="cs" id="n-cs-sizeFile" type="number" step="0.1" min="0.1" max="100"> | |
</li> | |
</ul> | |
</li> | |
</ul> | |
<ul class="group"> | |
<li class="field"> | |
<label for="n-cs-padding">Padding around a user</label> | |
<input data-ns="cs" id="n-cs-padding" type="number" step="0.1" min="0" max="100"> | |
</li> | |
</ul> | |
<ul class="group"> | |
<li class="field"> | |
<label for="txt-cs-labelPattern">Pattern for label of user</label> | |
<input data-ns="cs" id="txt-cs-labelPattern" type="text" value="%n <%e>"> | |
<blockquote>%n - name; %e - email; %l - login</blockquote> | |
</li> | |
</ul> | |
<ul class="group"> | |
<li class="field"> | |
<input data-ns="cs" id="cb-cs-useAvatar" type="checkbox" checked="checked"> | |
<label for="cb-cs-useAvatar">Use user's avatar</label> | |
</li> | |
</ul> | |
<ul class="group"> | |
<li class="field"> | |
<input data-ns="cs" id="cb-cs-skipEmptyDate" type="checkbox" checked="checked"> | |
<label for="cb-cs-skipEmptyDate">Skip empty date</label> | |
</li> | |
</ul> | |
</li> | |
</ul> | |
</li> | |
</ul> | |
</div> | |
</div> | |
</div> | |
</li> | |
</ul> | |
</div> | |
</div> | |
<div id="userInfo" class="popup tooltip"> | |
<div class="row" id="divStat"></div> | |
</div> | |
</header> | |
<!--https://github.com/images/spinners/octocat-spinner-128.gif--> | |
<!--data:image/gif;base64,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--> | |
<div id="ldrCont" class="popup" style="display: none"><img id="ldrTop" src="octocat-spinner-128.gif"></div> | |
<div id="about" class="popup" style="display: none;"> | |
<div class="row"> | |
<h1>The visualization the history of repositories from the Github</h1> | |
</div> | |
<div class="row"> | |
</div> | |
<div class="row"> | |
<hr> | |
Create by <a href="http://artzub.com">Artem Zubkov</a> (<a href="mailto:[email protected]" title="Write me...">[email protected]</a>) | |
<br /> | |
Powered by <a href="http://d3js.org" title="Perfect javascript framework">D3.js</a> | |
</div> | |
</div> | |
<div id="tooltip" class="popup tooltip"></div> | |
<div id="layers"> | |
<div id="canvas"></div> | |
<div id="svg"></div> | |
</div> | |
<footer> | |
<div id="statusBar" class="popup"> | |
<ul> | |
<li class="progressBar"> | |
<div class="meter orange" style="display: none"> | |
<span id="progressBar" style="width: 0%"></span> | |
</div> | |
</li> | |
</ul> | |
</div> | |
<div id="console" class="popup"></div> | |
</footer> | |
</body> | |
</html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* repo https://github.com/artzub/JSONP | |
*/ | |
(function(window) { | |
if (!window || !window.document) | |
return; | |
var seq = 0, // sequent | |
document = window.document; | |
/** | |
* JSONP | |
* @param {String} uri The URL you are requesting with the JSON data (you may include URL params). | |
* @param {Function} callback The callback function which you want to execute for JSON data (JSON response is first argument). | |
* @param {Object} params The params contains data about callback param's name, onload function and onerror function. | |
* Params have next structure: | |
* params = { | |
* callbackParam : '', default is callback | |
* onerror_callback : function() {}, | |
* onload_callback : function() {}, | |
* script_order : 'defer' | 'async' (is default) | |
*} | |
*/ | |
window.JSONP = function(uri, callback, params) { | |
if (!arguments.length || arguments.length < 2) | |
return; | |
uri = uri || ''; | |
callback = callback || function() {}; | |
params = params || {}; | |
params.callbackParam = params.callbackParam || 'callback' | |
uri += uri.indexOf('?') === -1 ? '?' : '&'; | |
function clear() { | |
try { | |
delete window[id]; | |
} catch(e) { | |
window[id] = null; | |
} | |
document.documentElement.removeChild(script); | |
} | |
function response() { | |
clear(); | |
callback.apply(this, arguments); | |
} | |
function doError() { | |
clear(); | |
params.onerror && params.onerror.apply(this, arguments); | |
} | |
function doLoad() { | |
params.onload && params.onload.apply(this, arguments); | |
} | |
var id = '_JSONP_' + seq++, | |
script = document.createElement('script'); | |
window[id] = response; | |
params.script_order = params.script_order || 'async'; | |
script.onload = doLoad; | |
script.onerror = doError; | |
script.setAttribute(params.script_order, params.script_order); | |
script.setAttribute('src', uri + params.callbackParam + '=' + id); | |
document.documentElement.insertBefore( | |
script, | |
document.documentElement.lastChild | |
); | |
} | |
})(window); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Created with IntelliJ IDEA. | |
* User: ArtZub | |
* Date: 23.01.13 | |
* Time: 13:32 | |
* To change this template use File | Settings | File Templates. | |
*/ | |
'use strict'; | |
(function(vis) { | |
vis.clearLangHg = function() { | |
vis.layers && vis.layers.repo && vis.layers.repo.langHg && vis.layers.repo.langHg.selectAll("*") | |
.transition() | |
.duration(750) | |
.ease("elastic") | |
.remove(); | |
}; | |
vis.redrawLangHg = function(data, layout) { | |
layout = layout || vis.layers.repo; | |
if (!data) { | |
vis.clearLangHg(); | |
return; | |
} | |
data = data.sort(function(a, b) { | |
return d3.ascending(a.key, b.key); | |
}); | |
var w_hg = w / 4, | |
h_hg = h / 6, | |
m = {left : 10, top : 10, right : 10, bottom : 10}, | |
pos = {top : h - h_hg - m.bottom - m.top - margin.bottom, left : margin.left}; | |
var x = d3.scale.ordinal() | |
.rangeRoundBands([0, 28 * data.length], .2) | |
.domain(data.map(function(d) { return d.key; })); | |
var xc = x.rangeBand() / 2; | |
var y = d3.scale.linear() | |
.domain([0, d3.max(data, function(d) { return d.values.length; })]) | |
.range([h_hg, 0]); | |
if (layout.langHg && layout.langHg.empty()) | |
layout.langHg = null; | |
layout.langHg = (layout.langHg || layout.insert("g", ":first-child")) | |
.attr("class", "langHg") | |
.attr("width", w_hg + m.left + m.right) | |
.attr("height", h_hg + m.top + m.bottom) | |
.attr("transform", "translate(" + pos.left + "," + pos.top + ")"); | |
function mei(d) { | |
d._g | |
&& d._g.selectAll("circle") | |
.style("stroke", d3.rgb(colors.decolor).darker()) | |
.style("fill", toRgba(colors.decolor, vis.forceRep.opt(vis.forceRep.radO(d)))) | |
&& d._g.selectAll("text") | |
.style("fill", d3.rgb(colors.decolor).darker()); | |
} | |
function moi(d) { | |
d._g | |
&& d._g.selectAll("circle") | |
.style("stroke", d3.rgb(vis.forceRep.colors(d.nodeValue.lang))) | |
.style("fill", toRgba(vis.forceRep.colors(d.nodeValue.lang), vis.forceRep.opt(vis.forceRep.radO(d)))) | |
&& d._g.selectAll("text") | |
.style("fill", d3.rgb(vis.forceRep.colors(d.nodeValue.lang)).brighter()); | |
} | |
function me(d) { | |
vis.forceRep.nodes().filter(function(k) { | |
return k.nodeValue.lang != d.key; | |
}).forEach(mei); | |
} | |
function mo(d) { | |
vis.forceRep.nodes().filter(function(k) { | |
return k.nodeValue.lang != d.key; | |
}).forEach(moi); | |
} | |
function appendItems(g) { | |
g.append("path") | |
.attr("class", "hLine") | |
.style("stroke", "rgba(255, 255, 255, .3)"); | |
g.append("text") | |
.attr("class", "tLang") | |
.style("fill", function(d) { return d3.rgb(vis.forceRep.colors(d.key)); }) | |
.attr("dy", ".33em") | |
.attr("dx", "-6px") | |
.attr("transform", "rotate(90)") | |
.style("text-anchor", "end") | |
.text(function(d) { return d.key; }) | |
.each(function() { | |
var pr = d3.select(this.parentNode); | |
pr.insert("rect", ":first-child") | |
.attr("class", "barSelect") | |
.attr("fill", "rgba(244, 244, 244, .2)"); | |
}); | |
var gg = g.append("g") | |
.attr("class", "barChain"); | |
gg.append("path") | |
.attr("class", "vLine") | |
.style("stroke", function(d) { return d3.rgb(vis.forceRep.colors(d.key)).darker(); }) | |
.attr("d", "M0,0 L0,0"); | |
gg.append("circle") | |
.style("fill", function(d) { return d3.rgb(vis.forceRep.colors(d.key)).darker(); }) | |
.attr("r", 2); | |
var dg = gg.append("g") | |
.attr("class", "dCircle") | |
.attr("transform", "translate(" + [0 , 0] + ")"); | |
dg.append("circle") | |
.style("fill", function(d) { return d3.rgb(vis.forceRep.colors(d.key)); }) | |
.style("stoke", function(d) { return d3.rgb(vis.forceRep.colors(d.key)).darker(); }) | |
; | |
dg.append("text") | |
.attr("text-anchor", "middle") | |
.attr("dy", ".32em") | |
.style("fill", function(d) { return d3.rgb(vis.forceRep.colors(d.key)).brighter(); }) | |
; | |
} | |
var bar = layout.langHg.selectAll(".barLang") | |
.data(data, function(d) { return d.key; }); | |
bar.exit().remove(); | |
bar.enter() | |
.append("g") | |
.attr("transform", "translate(" + [0 , -xc * 2] + ")") | |
.attr("class", "barLang") | |
.on("mouseover", me) | |
.on("mouseout", mo) | |
.call(appendItems); | |
bar.transition() | |
.duration(3500) | |
.ease("elastic") | |
.attr("transform", function(d) { return "translate(" + [x(d.key) , -xc * 2] + ")"; }) | |
bar.each(function(k) { | |
d3.select(this).selectAll("*") | |
.datum(k); | |
}); | |
bar.selectAll("path.hLine") | |
.attr("d", "M0,0 L" + (xc * 2) + ",0"); | |
bar.selectAll("text.tLang") | |
.attr("y", -xc) | |
.each(function(d) { | |
var pr = d3.select(this.parentNode); | |
pr.selectAll("rect.barSelect") | |
.attr("transform", "translate(" + [-xc * .2 , -(this.clientWidth + 6 + xc * .4) ] + ")") | |
.attr("width", xc * 2.4 ) | |
.attr("height", (this.clientWidth + 6 + xc * .4) + h_hg - y(d.values.length) + xc * 2.4); | |
}); | |
var gg = bar.selectAll("g.barChain") | |
.attr("transform", "translate(" + [x.rangeBand() / 2 , 0] + ")"); | |
var dg = gg.selectAll("g.dCircle"); | |
dg.selectAll("circle") | |
.attr("r", xc); | |
dg.selectAll("text") | |
.text(function(d) { return d.values.length; }); | |
dg.transition() | |
.delay(100) | |
.duration(3500) | |
.ease("elastic") | |
.attr("transform", function(d) { | |
return "translate(" + [0 , h_hg - y(d.values.length) + xc] + ")"; | |
}); | |
gg.selectAll("path.vLine").transition() | |
.duration(3500) | |
.ease("elastic") | |
.attr("d", function(d) { return "M0,0 L0," + (h_hg - y(d.values.length) + xc); }); | |
} | |
})(vis || (vis = {})); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* User: ArtZub | |
* Date: 11.01.13 | |
* Time: 21:41 | |
*/ | |
'use strict'; | |
var timeFormat = (function() { | |
var fd = d3.time.format("%b %d, %Y"); | |
return function(ms) { | |
return fd(new Date(ms)); | |
} | |
})(); | |
var log; | |
var cs, svg_cs, svg, | |
margin = {top: 20, right: 20, bottom: 20, left: 20}, | |
w, h, stackLoad = 0, | |
psBar, runBtn, ldrTop, toolTip, showBtn, visBtn, | |
userTxt, curRep, divStat, stepsBar, cbDlr, cbDlsr; | |
function updateStatus(pos, label) { | |
pos = pos > ghcs.states.max ? ghcs.states.max : pos; | |
psBar.setPos((pos * 100 / (ghcs.states.max || 1)) + "%") | |
.setLabel(label || "Completed " + pos + " of " + ghcs.states.max + " commits ..."); | |
} | |
d3.select(window).on("hashchange", applyParams); | |
function parseParams(hash) { | |
var params = {}; | |
hash.replace(/^#/, "").split("&").forEach(function(item) { | |
var values = item.split("="); | |
var key = values[0].toLowerCase(); | |
params[key] = values.length > 1 ? values[1] : ""; | |
}); | |
ghcs.params = params; | |
ghcs.params.climit = params.climit || ghcs.limits.commits; | |
} | |
function rewriteHash() { | |
var step, | |
hash = []; | |
if (this == showBtn.node() && ghcs.params) { | |
step = 0; | |
} | |
else if (this == runBtn.node() && ghcs.params) { | |
step = 1; | |
} | |
switch (step) { | |
case 1: | |
ghcs.params.repo = ghcs.repo ? ghcs.repo.name : null; | |
ghcs.params.repo && hash.push("repo=" + ghcs.params.repo); | |
ghcs.params.climit > 0 && hash.push("climit=" + ghcs.params.climit); | |
case 0: | |
ghcs.params.user && hash.push("user=" + ghcs.params.user); | |
ghcs.params.rot && hash.push("rot=" + ghcs.params.rot); | |
break; | |
} | |
document.location.hash = "#" + hash.join("&"); | |
} | |
function applyParams() { | |
d3.event && d3.event.preventDefault(); | |
parseParams(document.location.hash); | |
stackLoad = stackLoad-- < 1 ? 0 : stackLoad; | |
if (ghcs.rot != ghcs.params.rot || ghcs.login != ghcs.params.user) { | |
ghcs.rot = ghcs.params.rot; | |
userTxt.property("value", ghcs.params.user); | |
ghcs.user = null; | |
if (ghcs.params.repo) | |
stackLoad++; | |
chUser(); | |
} | |
else if (ghcs.user && ghcs.user.repos) { | |
// && (!ghcs.repo || ghcs.repo.name != ghcs.params.repo || (ghcs.params.climit > 0 && ghcs.limits.commits != ghcs.params.climit)) | |
var r; | |
ghcs.limits.commits = ghcs.params.climit || ghcs.limits.commits; | |
d3.select("#txt-lc").property("value", ghcs.limits.commits); | |
if (!ghcs.repo | |
|| ghcs.repo.name != ghcs.params.repo | |
|| !ghcs.repo.commits | |
|| (!ghcs.repo.loadedAll && ghcs.repo.commitsCount < ghcs.limits.commits)) { | |
if (ghcs.repo && ghcs.repo.name == ghcs.params.repo) | |
r = ghcs.repo; | |
else | |
r = ghcs.user.repos.reduce(function(a, b) { | |
if (!a && b.nodeValue.name == ghcs.params.repo) | |
a = b; | |
return a; | |
}, null) | |
; | |
} | |
if (r) { | |
if (ghcs.repo != r) { | |
vis.meRepo(r); | |
vis.clRepo(r); | |
vis.mlRepo(r); | |
} | |
} | |
analyseCommits(); | |
} | |
} | |
function nextStepApplyParams() { | |
if (stackLoad) | |
applyParams(); | |
} | |
function chRadio(d) { | |
switch(this.name) { | |
case "participation" : { | |
} | |
} | |
} | |
function chCheckbox(d) { | |
var ln; | |
d = d3.select(this); | |
switch(d.attr("id")) { | |
case "cb-dlr": | |
case "cb-dlsr": | |
ln = d.datum(); | |
vis.layers[ln] | |
&& ((d.property("checked") && vis.layers[ln].show()) || vis.layers[ln].hide()); | |
break; | |
case "cb-dllh": | |
vis.layers.repo | |
&& vis.layers.repo.langHg | |
&& vis.layers.repo.langHg.style("display", d.property("checked") ? null : "none"); | |
break; | |
case "cb-dlvml": | |
d.property("checked") ? cs.show() : cs.hide(); | |
break; | |
default : | |
(ln = d.datum()) && ln.ns | |
&& (ln.ns[ln.key] = d.property("checked")); | |
break; | |
} | |
} | |
function chValue(d) { | |
var ln; | |
d = d3.select(this); | |
(ln = d.datum()) && ln.ns | |
&& (ln.ns[ln.key] = d.property("value")); | |
} | |
function checkCompleted() { | |
if (ghcs.states.cur >= ghcs.states.max) { | |
psBar.setPos("100%").hide(); | |
if (ghcs.states.complete) | |
ghcs.states.complete(); | |
return true; | |
} | |
return false; | |
} | |
function redrawStats() { | |
if (ghcs.redrawStatsTimer) { | |
clearTimeout(ghcs.redrawStatsTimer); | |
ghcs.redrawStatsTimer = null; | |
} | |
ghcs.redrawStatsTimer = setTimeout(function () { | |
vis.redrawStat(ghcs.repo); | |
ghcs.redrawStatsTimer = null; | |
}, 100); | |
} | |
function runShow() { | |
if (ghcs.repo && ghcs.repo.commits) { | |
visBtn.disable(); | |
vis.runShow(ghcs.repo); | |
} | |
} | |
function redrawRepos() { | |
if (ghcs.redrawReposTimer) { | |
clearTimeout(ghcs.redrawReposTimer); | |
ghcs.redrawReposTimer = null; | |
} | |
ghcs.redrawReposTimer = setTimeout(function () { | |
vis.redrawRepos(ghcs.users | |
&& ghcs.users[ghcs.login] | |
&& ghcs.users[ghcs.login].repos | |
? ghcs.users[ghcs.login].repos | |
: null | |
); | |
vis.redrawLangHg(ghcs.users | |
&& ghcs.users[ghcs.login] | |
&& ghcs.users[ghcs.login].repos | |
? d3.nest().key(function(d) { return d.nodeValue.lang; }).entries(ghcs.users[ghcs.login].repos) | |
: null); | |
ghcs.redrawReposTimer = null; | |
}, 100); | |
} | |
function init() { | |
log = (function () { | |
var logCont = d3.select("#console") | |
.append("ul"); | |
return function (msg) { | |
logCont.append("li").text(msg instanceof Object ? JSON.stringify(msg) : msg); | |
} | |
})(); | |
cs = d3.select("#canvas"); | |
cs.hide = function() { | |
this.style("display", "none"); | |
vis.inited && vis.layers.show.hide(); | |
return this; | |
}; | |
cs.show = function() { | |
this.style("display", null); | |
vis.inited && vis.layers.show.show(); | |
return this; | |
}; | |
svg_cs = d3.select("#svg"); | |
svg = svg_cs.append("svg"); | |
w = svg.property("clientWidth") || document.body.clientWidth; | |
h = svg.property("clientHeight")|| document.body.clientHeight; | |
svg.attr("width", w).attr("height", h); | |
d3.selectAll("input").datum(function() { | |
var obj = null; | |
if (this.dataset && this.dataset.ns) { | |
var reg = new RegExp("(cb|n|txt)-" + this.dataset.ns + "-"); | |
obj = { | |
ns : ghcs.settings[this.dataset.ns], | |
key : this.id.replace(reg, "") | |
}; | |
if (this.type == "checkbox") { | |
this.checked = obj.ns[obj.key]; | |
} | |
else { | |
this.value = obj.ns[obj.key]; | |
} | |
} | |
return obj; | |
}); | |
d3.selectAll("input[type=checkbox]").on("change", chCheckbox); | |
d3.selectAll("input[type=number], input[type=text]").on("change", chValue); | |
psBar = d3.select("#progressBar"); | |
psBar.pntNode = d3.select(psBar.node().parentNode); | |
psBar.show = function() { | |
this.pntNode.style("display", null); | |
return this; | |
}; | |
psBar.hide = function() { | |
this.pntNode.style("display", "none"); | |
return this; | |
}; | |
psBar.setLabel = function(lbl) { | |
this.text(lbl); | |
return this; | |
}; | |
psBar.setPos = function(pos) { | |
this.style("width", pos); | |
return this; | |
}; | |
stepsBar = d3.select(".steps"); | |
stepsBar.firstStep = function() { | |
this.attr("class", "steps sfirst"); | |
return this; | |
}; | |
stepsBar.secondStep = function() { | |
this.attr("class", "steps ssecond"); | |
return this; | |
}; | |
stepsBar.thirdStep = function() { | |
this.attr("class", "steps"); | |
return this; | |
}; | |
runBtn = d3.select("#runBtn"); | |
showBtn = d3.select("#showBtn"); | |
visBtn = d3.select("#visBtn"); | |
userTxt = d3.select("#user").on("change", function() { | |
stepsBar.firstStep(); | |
showBtn.disable(); | |
if (this.value) { | |
if (this.value != ghcs.login) | |
showBtn.enable(); | |
else | |
stepsBar.secondStep(); | |
} | |
(ghcs.params || (ghcs.params = {})).user = this.value; | |
}); | |
[runBtn, showBtn, userTxt, visBtn].forEach(function(item) { | |
item.enable = function () { | |
this.attr("disabled", null); | |
return this; | |
}; | |
item.disable = function () { | |
this.attr("disabled", "disabled"); | |
return this; | |
}; | |
}); | |
runBtn.on("click", rewriteHash); | |
showBtn.on("click", rewriteHash); | |
visBtn.on("click", runShow); | |
ldrTop = d3.select("#ldrTop"); | |
ldrTop.pntNode = d3.select(ldrTop.node().parentNode); | |
ldrTop.show = function () { | |
this.pntNode.style("display", null); | |
return this; | |
}; | |
ldrTop.hide = function () { | |
this.pntNode.style("display", "none"); | |
return this; | |
}; | |
toolTip = d3.select("#tooltip"); | |
toolTip.show = function () { | |
this.style("display", "block"); | |
return this; | |
}; | |
toolTip.hide = function () { | |
this.style("display", null); | |
return this; | |
}; | |
cbDlr = d3.select("#cb-dlr").datum("repo"); | |
cbDlsr = d3.select("#cb-dlsr").datum("stat"); | |
[cbDlr, cbDlsr].forEach(function(item) { | |
item.check = function() { | |
this.property("checked", true); | |
chCheckbox.apply(this.node()); | |
}; | |
item.uncheck = function() { | |
this.property("checked", false); | |
chCheckbox.apply(this.node()); | |
}; | |
item.trigger = function() { | |
this.property("checked", !this.property("checked")); | |
chCheckbox.apply(this.node()); | |
}; | |
}); | |
d3.select("#txt-lc").on("change", function() { | |
(ghcs.params || (ghcs.params = {})).climit = +this.value; | |
if (ghcs.params.climit < 1) | |
ghcs.params.climit = ghcs.limits.commits; | |
}); | |
initGraphics(svg); | |
curRep = d3.select("#curRep") | |
.on("mouseover", function(d) { | |
if (d) { | |
vis.meRepo(d); | |
vis.mtt(d, null, null, {pageX : d.x, pageY : d.y}); | |
} | |
}) | |
.on("mouseout", function(d) { | |
if (d) | |
vis.mlRepo(d); | |
}); | |
curRep.setName = function(r) { | |
this.selectAll("*").remove(); | |
this.datum(r); | |
if (!r) | |
this.append("span") | |
.text("Select Repo..."); | |
else { | |
this.append("span") | |
.style("color", d3.rgb(vis.forceRep.colors(r.nodeValue.lang)).brighter()) | |
.attr("class", "mega-icon mega-icon-public-repo"); | |
this.append("strong") | |
.style("margin-right", "5px") | |
.style("text-shadow", "0 0 3px rgba(0, 0, 0, 1)") | |
.style("color", d3.rgb(vis.forceRep.colors(r.nodeValue.lang)).brighter()) | |
.text((r.nodeValue.name || "")); | |
this.append("a") | |
.attr("target", "_blank") | |
.attr("title", "Go to Github") | |
.attr("href", (r.nodeValue.html_url || "#")) | |
.attr("class", "mega-icon mini-icon-link a-icon"); | |
} | |
return this; | |
}; | |
divStat = d3.select("#divStat"); | |
divStat.updateInfo = function() { | |
var user; | |
if (ghcs.login && (user = ghcs.user = ghcs.users[ghcs.login]) && user.info) { | |
divStat.selectAll("*").remove(); | |
user.info.avatar && divStat.node().appendChild(user.info.avatar); | |
divStat.append("ul") | |
.call(function(ul) { | |
(user.info.name || user.info.login) && ul.append("li").call(function(li) { | |
li.append("h1") | |
.text((user.info.name || user.info.login)) | |
.append("a") | |
.attr("class", "a-icon") | |
.attr("target", "_blank") | |
.attr("title", "Go to GitHub") | |
.attr("href", user.info.html_url) | |
.append("span") | |
.attr("class", "mini-icon mini-icon-octocat") | |
; | |
li.append("hr"); | |
}); | |
user.info.location && ul.append("li") | |
.html("<span class='mini-icon mini-icon-location'></span><strong>" + user.info.location + "</strong>") | |
user.info.blog && ul.append("li") | |
.call(function(li) { | |
li.append("span") | |
.attr("class", "mini-icon mini-icon-link"); | |
li.append("a") | |
.attr("target", "_blank") | |
.attr("href", user.info.blog) | |
.text(user.info.blog) | |
}); | |
ul.append("li") | |
.call(function(li) { | |
li.append("span") | |
.attr("class", "mini-icon mini-icon-public-repo") | |
li.append("strong") | |
.text(user.info.public_repos) | |
}); | |
user.info.updated_at && ul.append("li") | |
.call(function(li) { | |
li.append("span") | |
.attr("class", "mini-icon mini-icon-time"); | |
li.append("strong") | |
.text(timeFormat(Date.parse(user.info.updated_at))) | |
}); | |
}) | |
} | |
}; | |
applyParams(); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* User: ArtZub | |
* Date: 23.01.13 | |
* Time: 13:29 | |
*/ | |
'use strict'; | |
(function(vis) { | |
vis.mdRepo = function(d) { | |
}; | |
vis.meRepo = function(d) { | |
vis.layers.repo.langHg | |
&& vis.layers.repo.langHg.style("pointer-events", "none"); | |
vis.layers.repo.toFront(); | |
d._tg = (d._g || (d._g = d3.select(this))); | |
d._tg.selectAll("circle") | |
.style("fill", d3.rgb(vis.forceRep.colors(d.nodeValue.lang)).brighter()); | |
d._tg.selectAll("text") | |
.style("fill", function(d) { | |
return d3.rgb(vis.forceRep.colors(d.nodeValue.lang)).darker(); | |
}) | |
.style("visibility", "visible"); | |
toolTip.selectAll("*").remove(); | |
toolTip.append("h1") | |
.text(d.nodeValue.name); | |
toolTip.append("hr"); | |
d.nodeValue.desc | |
&& toolTip.append("blockquote") | |
.text(d.nodeValue.desc) | |
&& toolTip.append("br") | |
; | |
toolTip.append("span") | |
.attr("class", "mini-icon mini-icon-time") | |
toolTip.append("strong") | |
.style("margin-left", "5px") | |
.text(timeFormat(d.nodeValue.date)); | |
toolTip.append("br"); | |
toolTip.append("span") | |
.text("Primary language: ") | |
.append("strong") | |
.style("color", vis.forceRep.colors(d.nodeValue.lang)) | |
.style("text-shadow", "0 0 3px rgba(0, 0, 0, 0.8)") | |
.text(d.nodeValue.lang); | |
toolTip.show(); | |
}; | |
vis.mlRepo = function(d, i) { | |
if (vis.forceRep.selected && vis.forceRep.selected == d && i !== "deselect") { | |
vis.muRepo(d); | |
} | |
else { | |
var g = d._tg || d._g; | |
if (!g) | |
return; | |
g.selectAll("circle") | |
.style("fill", toRgba(vis.forceRep.colors(d.nodeValue.lang), vis.forceRep.opt(vis.forceRep.radO(d)))); | |
g.selectAll("text") | |
.style("fill", function(d) { | |
return d3.rgb(vis.forceRep.colors(d.nodeValue.lang)).brighter(); | |
}) | |
.style("visibility", vis.forceRep.visible); | |
d._tg = null; | |
} | |
vis.layers.repo.langHg | |
&& vis.layers.repo.langHg.style("pointer-events", "all"); | |
toolTip.hide(); | |
}; | |
vis.clRepo = function(d) { | |
if (vis.forceRep.selected && vis.forceRep.selected == d) { | |
vis.forceRep.selected = null; | |
d && (d.fixed = 4); | |
} | |
else { | |
if (vis.forceRep.selected) { | |
vis.forceRep.selected.fixed = 0; | |
vis.mlRepo(vis.forceRep.selected, "deselect"); | |
toolTip.show(); | |
vis.layers.repo.langHg | |
&& vis.layers.repo.langHg.style("pointer-events", "none"); | |
} | |
vis.forceRep.selected = d; | |
d && (d.fixed = true); | |
} | |
chSelect(vis.forceRep.selected); | |
}; | |
vis.muRepo = function(d){ | |
}; | |
vis.clearRepos = function() { | |
if (vis.forceRep) { | |
vis.forceRep.stop().nodes([]); | |
delete vis.forceRep; | |
} | |
vis.layers && vis.layers.repo && vis.layers.repo.selectAll("*") | |
.transition() | |
.duration(750) | |
.ease("elastic") | |
.remove(); | |
vis.layers.repo.langHg = null; | |
}; | |
vis.redrawRepos = function(data, layout) { | |
layout = layout || vis.layers.repo; | |
if (!data) { | |
vis.clearRepos(); | |
return; | |
} | |
function tr(d) { | |
return "translate(" + [d.x, d.y] + ")"; | |
} | |
vis.forceRep = vis.forceRep || d3.layout.force() | |
.size([w, h]) | |
.friction(.99) | |
.gravity(.005) | |
.charge(function(d) { return -vis.forceRep.radius(vis.forceRep.rad(d)) / 2; }) | |
.on("tick", tick) | |
; | |
vis.forceRep.dateNow = Date.now(); | |
vis.forceRep.rad = vis.forceRep.rad || function (d) { | |
return d.nodeValue.cdate; | |
}; | |
vis.forceRep.radO = vis.forceRep.radO || function (d) { | |
return d.nodeValue.date - vis.forceRep.dateNow; | |
}; | |
data = data.sort(function(a, b) { return a.nodeValue.date - b.nodeValue.date; }); | |
var kof = (h > w ? h : w) / (4 * ((Math.log(data.length || 1) / Math.log(1.5)) || 1)); | |
var r = [kof / 5, kof]; | |
(vis.forceRep.radius || (vis.forceRep.radius = d3.scale.linear())) | |
.range(r) | |
.domain(d3.extent(data, vis.forceRep.rad)); | |
data.length == 1 && vis.forceRep.radius.domain([vis.forceRep.radius.domain()[0] - 1, vis.forceRep.radius.domain()[1]]); | |
(vis.forceRep.opt || (vis.forceRep.opt = d3.scale.log().range([.01,.9]))) | |
.domain( | |
d3.extent(data, vis.forceRep.radO) | |
// [d3.min(data, vis.forceRep.radO), vis.forceRep.dateNow] | |
); | |
vis.forceRep.colors = vis.reposColors || (vis.reposColors = d3.scale.category20()); | |
vis.forceRep.visible = vis.forceRep.visible || function(d) { | |
return this.clientWidth < vis.forceRep.radius(vis.forceRep.rad(d)) * 2.1 ? null : "hidden"; | |
}; | |
vis.forceRep.appCT = vis.forceRep.appCT || function(g) { | |
g.each(function(d) { | |
d._g = d3.select(this); | |
}); | |
g.append("circle") | |
.attr("r", 0); | |
g.append("text") | |
.attr("text-anchor", "middle") | |
.attr("dy", ".31em") | |
.text(function(d) { return d.nodeValue.name; }); | |
}; | |
vis.forceRep.upCT = vis.forceRep.upCT || function(g) { | |
g.selectAll("circle") | |
.style("stroke-width", 1) | |
.style("stroke", function(d) { return d3.rgb(vis.forceRep.colors(d.nodeValue.lang)); }) | |
.style("fill", function(d) { return toRgba(d3.rgb(vis.forceRep.colors(d.nodeValue.lang)), vis.forceRep.opt(vis.forceRep.radO(d))); }) | |
.transition() | |
.duration(2500) | |
.ease("elastic") | |
.attr("r", function(d) { return vis.forceRep.radius(vis.forceRep.rad(d)); }) | |
g.selectAll("text") | |
.style("fill", function(d) { | |
return d3.rgb(vis.forceRep.colors(d.nodeValue.lang)).brighter(); | |
}) | |
.style("visibility", vis.forceRep.visible); | |
}; | |
vis.forceRep | |
.stop() | |
.nodes(data) | |
.start() | |
; | |
vis.forceRep.circle = layout.selectAll(".cRepo") | |
.data(data, function(d) { return d.nodeValue.id }) | |
; | |
vis.forceRep.circle.enter() | |
.append("g") | |
.attr("class", "cRepo") | |
.attr("transform", tr) | |
.call(vis.forceRep.drag) | |
.on("mouseover.select", vis.meRepo) | |
.on("mouseout.select", vis.mlRepo) | |
.on("mousedown.select", vis.mdRepo) | |
.on("mouseup.select", vis.muRepo) | |
.on("mousemove.mtt", vis.mtt) | |
.on("click.select", vis.clRepo) | |
.call(vis.forceRep.appCT); | |
vis.forceRep.circle.call(vis.forceRep.upCT); | |
vis.forceRep.circle.exit().remove(); | |
function tick(e) { | |
var quadtree = d3.geom.quadtree(vis.forceRep.nodes()); | |
vis.forceRep.circle | |
.each(cluster(.025/*10 * e.alpha * e.alpha*/)) | |
.each(collide(.5, quadtree)) | |
.attr("transform", tr); | |
vis.forceRep.resume(); | |
} | |
// Move d to be adjacent to the cluster node. | |
function cluster(alpha) { | |
vis.forceRep.cenralNodes = vis.forceRep.cenralNodes || {}; | |
// Find the largest node for each cluster. | |
vis.forceRep.nodes().forEach(function(d, n) { | |
n = vis.forceRep.cenralNodes[d.nodeValue.lang]; | |
(!n || vis.forceRep.radO(d) > vis.forceRep.radO(n)) && | |
(vis.forceRep.cenralNodes[d.nodeValue.lang] = d); | |
}); | |
return function(d) { | |
var node = vis.forceRep.cenralNodes[d.nodeValue.lang], | |
l, | |
r, | |
x, | |
y; | |
if (node == d) return; | |
x = d.x - node.x; | |
y = d.y - node.y; | |
l = Math.sqrt(x * x + y * y); | |
r = vis.forceRep.radius(vis.forceRep.rad(d)) + vis.forceRep.radius(vis.forceRep.rad(node)) * 1.5; | |
if (l != r) { | |
l = (l - r) / (l || 1) * (alpha || 1); | |
x *= l; | |
y *= l; | |
//if (!d.fixed) { | |
if (true) { | |
d.x -= x; | |
d.y -= y; | |
} | |
//if (!node.fixed) { | |
if (true) { | |
node.x += x; | |
node.y += y; | |
} | |
} | |
}; | |
} | |
// Resolves collisions between d and all other circles. | |
function collide(alpha, quadtree) { | |
return function(d) { | |
var padding = vis.forceRep.radius.range()[1] / 2, | |
r = vis.forceRep.radius(vis.forceRep.rad(d)) + 3 * padding, | |
nx1 = d.x - r, | |
nx2 = d.x + r, | |
ny1 = d.y - r, | |
ny2 = d.y + r; | |
quadtree.visit(function(quad, x1, y1, x2, y2) { | |
if (quad.point && (quad.point !== d)) { | |
var x = d.x - quad.point.x, | |
y = d.y - quad.point.y, | |
l = Math.sqrt(x * x + y * y), | |
r = (vis.forceRep.radius(vis.forceRep.rad(d)) + vis.forceRep.radius(vis.forceRep.rad(quad.point))) * 1.02 /*+ (d.nodeValue.lang !== quad.point.nodeValue.lang) * padding*/; | |
if (l < r) { | |
l = (l - r) / (l || 1) * (alpha || 1); | |
x *= l; | |
y *= l; | |
//if (!d.fixed) { | |
if (true) { | |
d.x -= x; | |
d.y -= y; | |
} | |
//if (!quad.point.fixed) { | |
if (true) { | |
quad.point.x += x; | |
quad.point.y += y; | |
} | |
} | |
} | |
return x1 > nx2 | |
|| x2 < nx1 | |
|| y1 > ny2 | |
|| y2 < ny1; | |
}); | |
}; | |
} | |
}; | |
})(vis || (vis = {})); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* User: ArtZub | |
* Date: 23.01.13 | |
* Time: 15:00 | |
*/ | |
"use strict"; | |
(function(vis) { | |
var _worker, | |
_data, | |
nodes, | |
dateRange, | |
authorHash, | |
filesHash, | |
extHash, | |
extMax, | |
_force, | |
_forceAuthor, | |
links, | |
lCom, lLeg, lHis, | |
canvas, ctx, | |
bufCanvas, bufCtx, | |
layer, | |
valid, | |
pause, | |
stop, | |
particle, | |
defImg, | |
lastEvent, | |
zoomScale, | |
xW, | |
yH, | |
setting, | |
rd3 = d3.random.irwinHall(8); | |
var extColor = d3.scale.category20(), | |
userColor = d3.scale.category20b(); | |
var typeNode = { | |
author : 0, | |
file : 1 | |
}; | |
function reCalc(d) { | |
if (stop) | |
return; | |
lCom.showCommitMessage(d.message); | |
appendExtLegend(d.sha); | |
var l = d.nodes.length, | |
n, a, fn; | |
a = d.cuserNode ? d.cuserNode : d.userNode; | |
a.fixed = false; | |
if (!l) | |
console.log(d); | |
else { | |
a.alive = setting.userLife > 0 ? setting.userLife : 1; | |
a.opacity = 100; | |
a.flash = 100; | |
a.visible = true; | |
} | |
while(--l > -1) { | |
n = d.nodes[l]; | |
if (n.fixed) { | |
n.x = xW(n.x); | |
n.y = yH(n.y); | |
} | |
n.size += 2; | |
n.fixed = false; | |
n.author = a.nodeValue.email; | |
n.visible = !!n.statuses[d.sha].status; | |
fn = n.nodeValue.name.toLowerCase(); | |
if (n.visible) { | |
n.ext.now.indexOf(fn) < 0 | |
&& n.ext.now.push(fn); | |
n.flash = 100; | |
n.alive = setting.fileLife > 0 ? setting.fileLife : 1; | |
n.opacity = 100; | |
} | |
else { | |
(fn = n.ext.now.indexOf(fn)) > -1 | |
&& n.ext.now.splice(fn, 1); | |
n.alive = (setting.fileLife > 0 ? setting.fileLife : 1) * .2; | |
n.opacity = 50; | |
} | |
/*data.push(n); | |
if (d.cuserNode) { | |
links.push({ | |
source : n, | |
target : d.cuserNode | |
}); | |
} | |
links.push({ | |
source : n, | |
target : d.userNode | |
});*/ | |
} | |
updateLegend(d.sha); | |
_force.nodes(nodes.filter(function(d) { | |
return d.type != typeNode.author && (d.visible || d.opacity); | |
}).sort(sortBySize) | |
).start(); | |
_forceAuthor.nodes(nodes.filter(function(d) { | |
return d.type == typeNode.author && (d.visible || d.opacity); | |
})).start(); | |
} | |
function loop() { | |
if (pause) | |
return; | |
var dl, dr; | |
dl = dateRange[0]; | |
dr = dl + ghcs.limits.stepShow * ghcs.limits.stepType; | |
dateRange[0] = dr; | |
var visTurn = _data.filter(function (d) { | |
return d.date >= dl && d.date < dr; | |
}); | |
ghcs.asyncForEach(visTurn, reCalc, ONE_SECOND / (visTurn.length > 1 ? visTurn.length : ONE_SECOND)); | |
//visTurn.forEach(reCalc); | |
updateStatus(ghcs.states.cur += ghcs.limits.stepShow * ghcs.limits.stepType, timeFormat(new Date(dr))); | |
if (dl >= dateRange[1]) { | |
if (_worker) | |
clearInterval(_worker); | |
} else { | |
if (!visTurn.length && setting.skipEmptyDate) | |
loop(); | |
} | |
updateExtHistogram(); | |
} | |
function run() { | |
if (_worker) | |
clearInterval(_worker); | |
anim(); | |
_worker = setInterval(loop, ONE_SECOND); | |
} | |
function nr(d) { | |
return d.size > 0 ? d.size : 0; | |
} | |
function ncb(d) { | |
return d3.rgb(d.color).brighter().brighter(); | |
} | |
function nc(d) { | |
return d.color; | |
} | |
function randomTrue() { | |
return Math.floor(rd3() * 8) % 2; | |
} | |
function radius(d) { | |
return Math.sqrt(d); | |
} | |
function node(d, type) { | |
var c = type == typeNode.file ? d.name : userColor(d.email), | |
ext, x, y, | |
w2 = w/2, | |
w5 = w/5, | |
h2 = h/2, | |
h5 = h/5; | |
if (type == typeNode.file) { | |
c = c && c.match(/.*(\.\w+)$/) ? c.replace(/.*(\.\w+)$/, "$1").toLowerCase() : "Mics"; | |
ext = extHash.get(c); | |
if (!ext) { | |
ext = { | |
all : 0, | |
currents : {}, | |
color : extColor(c), | |
now : [] | |
}; | |
extHash.set(c, ext); | |
} | |
ext.all++; | |
c = ext.color; | |
} | |
x = w * Math.random(); | |
y = h * Math.random(); | |
if (type == typeNode.author) { | |
if (randomTrue()) { | |
x = x > w5 && x < w2 | |
? x / 5 | |
: x > w2 && x < w - w5 | |
? w - x / 5 | |
: x | |
; | |
} | |
else { | |
y = y > h5 && y < h2 | |
? y / 5 | |
: y > h2 && y < h - h5 | |
? h - y / 5 | |
: y | |
; | |
} | |
} | |
return { | |
x : x, | |
y : y, | |
id : type + (type == typeNode.file ? d.name : d.email), | |
size : type != typeNode.file ? 24 : 2, | |
weight : type != typeNode.file ? 24 : 2, | |
fixed : true, | |
visible : false, | |
links : 0, | |
type : type, | |
color : c, | |
ext : ext, | |
author : type == typeNode.author ? d.email : null, | |
img : type == typeNode.author ? d.avatar : null, | |
nodeValue : d | |
} | |
} | |
function getAuthor(d) { | |
if (!d || !d.author) | |
return null; | |
var n = authorHash.get(d.author.email); | |
if (!n) { | |
n = node(d.author, typeNode.author); | |
authorHash.set(d.author.email, n); | |
} | |
return n; | |
} | |
function getFile(d) { | |
if (!d || !d.name) | |
return null; | |
var n = filesHash.get(d.name); | |
if (!n) { | |
n = node(d, typeNode.file); | |
n.links = 1; | |
filesHash.set(d.name, n); | |
} | |
return n; | |
} | |
function initNodes(data) { | |
var ns = [], | |
i, j, n, d, df; | |
authorHash = d3.map({}); | |
filesHash = d3.map({}); | |
extHash = d3.map({}); | |
extMax = 0; | |
if (data) { | |
i = data.length; | |
while(--i > -1) { | |
d = data[i]; | |
d.nodes = []; | |
if (!d) continue; | |
n = getAuthor(d); | |
d.userNode = n; | |
!n.inserted && (n.inserted = ns.push(n)); | |
if (d.author.login != d.committer.login) { | |
n = getAuthor(d); | |
d.cuserNode = n; | |
!n.inserted && (n.inserted = ns.push(n)); | |
/*links.push({ | |
source : d.userNode, | |
target : d.cuserNode | |
})*/ | |
} | |
if (!d.files) continue; | |
j = d.files.length; | |
while(--j > -1) { | |
df = d.files[j]; | |
if (!df) continue; | |
n = getFile(df); | |
d.nodes.push(n); | |
n.size = 2; | |
n.statuses = n.statuses || {}; | |
n.statuses[d.sha] = df; | |
n.ext.currents[d.sha] = (n.ext.currents[d.sha] || 0); | |
n.ext.currents[d.sha]++; | |
!n.inserted && (n.inserted = ns.push(n)); | |
} | |
j = extHash.values().reduce(function(a, b) { | |
return a += b.currents[d.sha] || 0; | |
}, null); | |
extMax = j > extMax ? j : extMax; | |
} | |
} | |
return ns; | |
} | |
var tempCanvas, tempFileCanvas; | |
function setOpacity(img, a, f) { | |
if (!img || !img.width) | |
img = defImg; | |
return img; | |
} | |
function colorize(img, r, g, b, a) { | |
if (!img) | |
return img; | |
if (!tempFileCanvas) { | |
tempFileCanvas = document.createElement("canvas"); | |
tempFileCanvas.width = img.width; | |
tempFileCanvas.height = img.height; | |
} | |
var imgCtx = tempFileCanvas.getContext("2d"), imgdata, i; | |
imgCtx.clearRect(0, 0, img.width, img.height); | |
imgCtx.save(); | |
imgCtx.drawImage(img, 0, 0); | |
imgdata = imgCtx.getImageData(0, 0, img.width, img.height); | |
i = imgdata.data.length; | |
while((i -= 4) > -1) { | |
imgdata.data[i + 3] = imgdata.data[i] * a; | |
if (imgdata.data[i + 3]) { | |
imgdata.data[i] = r; | |
imgdata.data[i + 1] = g; | |
imgdata.data[i + 2] = b; | |
} | |
} | |
imgCtx.putImageData(imgdata, 0, 0); | |
imgCtx.restore(); | |
return tempFileCanvas; | |
} | |
function blink(d, aliveCheck, i, l) { | |
d.flash = (d.flash -= setting.rateFlash) > 0 ? d.flash : 0; | |
!d.flash && aliveCheck | |
&& (d.alive = (d.alive-- > 0 ? d.alive : 0)) | |
; | |
d.opacity = !d.alive | |
? ((d.opacity -= setting.rateOpacity) > 0 ? d.opacity : 0) | |
: d.opacity | |
; | |
d.visible && !d.opacity | |
&& (d.visible = false); | |
} | |
function sortBySize(a, b) { | |
return d3.descending(b.size, a.size); | |
} | |
function checkVisible(d, offsetx, offsety) { | |
var tx = lastEvent.translate[0]/lastEvent.scale, | |
ty = lastEvent.translate[1]/lastEvent.scale | |
; | |
offsetx = offsetx || 0; | |
if (!(offsetx instanceof Array)) | |
offsetx = [offsetx, offsetx]; | |
offsety = offsety || 0; | |
if (!(offsety instanceof Array)) | |
offsety = [offsety, offsety]; | |
return ( | |
d.x + d.size > -tx + offsetx[0] | |
&& d.x - d.size < -tx + offsetx[1] + w/lastEvent.scale | |
&& d.y + d.size > -ty + offsety[0] | |
&& d.y - d.size < -ty + offsety[1] + h/lastEvent.scale | |
); | |
} | |
function redrawCanvas() { | |
bufCtx.save(); | |
bufCtx.clearRect(0, 0, w, h); | |
bufCtx.translate(lastEvent.translate[0], lastEvent.translate[1]); | |
bufCtx.scale(lastEvent.scale, lastEvent.scale); | |
var n, l, i, j, | |
img, | |
d, d1, d2, | |
c, x, y, s; | |
if (setting.showFile) { | |
n = d3.nest() | |
.key(function(d) { | |
return d.opacity; | |
}) | |
.key(function(d) { | |
return d.flash ? ncb(d) : d3.rgb(nc(d)); | |
}) | |
.entries(_force.nodes().filter(function(d) { return checkVisible(d) && (d.visible || d.alive); })); | |
l = n.length; | |
while(--l > -1) { | |
d1 = n[l]; | |
i = d1.values.length; | |
while(--i > -1) { | |
d2 = d1.values[i]; | |
j = d2.values.length; | |
c = d3.rgb(d2.key); | |
if (!setting.showHalo) { | |
bufCtx.beginPath(); | |
bufCtx.strokeStyle = "none"; | |
bufCtx.fillStyle = toRgba(c, d1.key * .01); | |
} | |
else | |
img = colorize(particle, c.r, c.g, c.b, d1.key * .01); | |
while(--j > -1) { | |
d = d2.values[j]; | |
if (d.visible || d.alive) { | |
//blink(d, setting.fileLife > 0); | |
x = Math.floor(d.x); | |
y = Math.floor(d.y); | |
s = radius(nr(d)) * (setting.showHalo ? 8 : 1); | |
setting.showHalo | |
? bufCtx.drawImage(img, x - s / 2, y - s / 2, s, s) | |
: bufCtx.arc(x, y, s, 0, PI_CIRCLE, true) | |
; | |
} | |
} | |
if (!setting.showHalo) { | |
bufCtx.fill(); | |
bufCtx.stroke(); | |
bufCtx.closePath(); | |
} | |
} | |
} | |
} | |
if (setting.showUser || setting.showLabel) { | |
n = _forceAuthor.nodes(); | |
l = n.length; | |
while(--l > -1) { | |
d = n[l]; | |
if (checkVisible(d) && (d.visible || d.opacity)) { | |
//blink(d, !d.links && setting.userLife > 0); | |
x = Math.floor(d.x); | |
y = Math.floor(d.y); | |
if (setting.showUser) { | |
c = d.flash ? ncb(d) : d3.rgb(nc(d)); | |
bufCtx.save(); | |
if (setting.showPaddingCircle) { | |
bufCtx.beginPath(); | |
bufCtx.strokeStyle = "none"; | |
bufCtx.fillStyle = toRgba("#ff0000", .1); | |
bufCtx.arc(x, y, nr(d) + setting.padding, 0, PI_CIRCLE, true); | |
bufCtx.fill(); | |
bufCtx.stroke(); | |
} | |
bufCtx.beginPath(); | |
bufCtx.strokeStyle = "none"; | |
bufCtx.fillStyle = setting.useAvatar ? "none" : toRgba(c, d.opacity * .01); | |
bufCtx.arc(x, y, nr(d), 0, PI_CIRCLE, true); | |
bufCtx.fill(); | |
bufCtx.stroke(); | |
if (setting.useAvatar && d.img) { | |
bufCtx.clip(); | |
bufCtx.drawImage(setOpacity(d.img, d.opacity * .01, d.flash), x - nr(d), y - nr(d), nr(d) * 2, nr(d) * 2); | |
} | |
bufCtx.closePath(); | |
bufCtx.restore(); | |
} | |
if (setting.showLabel) { | |
c = d.flash ? "white" : "gray"; | |
bufCtx.save(); | |
bufCtx.fillStyle = toRgba(c, d.opacity * .01); | |
bufCtx.fillText(setting.labelPattern | |
.replace("%l", d.nodeValue.login) | |
.replace("%n", d.nodeValue.name != "unknown" ? d.nodeValue.name : d.nodeValue.login) | |
.replace("%e", d.nodeValue.email), x, y + nr(d) * 1.5); | |
bufCtx.restore(); | |
} | |
} | |
} | |
} | |
bufCtx.restore(); | |
} | |
function anim() { | |
requestAnimationFrame(anim); | |
lHis && lHis.style("display", setting.showHistogram ? null : "none"); | |
lLeg && lLeg.style("display", setting.showCountExt ? null : "none"); | |
if (valid) | |
return; | |
valid = true; | |
ctx.save(); | |
ctx.clearRect(0, 0, w, h); | |
redrawCanvas(); | |
ctx.drawImage(bufCanvas, 0, 0); | |
ctx.restore(); | |
valid = false; | |
} | |
function tick() { | |
if (_force.nodes()) { | |
_force.nodes() | |
.forEach(cluster(0.025)); | |
_forceAuthor.nodes( | |
_forceAuthor.nodes() | |
.filter(function(d, i) { | |
blink(d, !d.links && setting.userLife > 0, i, _forceAuthor.nodes().length); | |
if (d.visible && d.links === 0 && setting.userLife > 0) { | |
d.flash = 0; | |
d.alive = d.alive / 10; | |
} | |
return d.visible; | |
}) | |
); | |
} | |
_forceAuthor.resume(); | |
_force.resume(); | |
} | |
// Move d to be adjacent to the cluster node. | |
function cluster(alpha) { | |
authorHash.forEach(function(k, d) { | |
d.links = 0; | |
}); | |
return function(d, i) { | |
blink(d, setting.fileLife > 0, i, _force.nodes().length); | |
if (!d.author || !d.visible) | |
return; | |
var node = authorHash.get(d.author), | |
l, | |
r, | |
x, | |
y; | |
if (node == d) return; | |
node.links++; | |
x = d.x - node.x; | |
y = d.y - node.y; | |
l = Math.sqrt(x * x + y * y); | |
r = radius(nr(d)) / 2 + (nr(node) + setting.padding); | |
if (l != r) { | |
l = (l - r) / (l || 1) * (alpha || 1); | |
x *= l; | |
y *= l; | |
d.x -= x; | |
d.y -= y; | |
} | |
}; | |
} | |
function appendExtLegend(sha){ | |
if (!layer) | |
return; | |
var data = [], | |
w3 = w / 3, | |
ml = w * .01, | |
mb = 18, | |
h2 = (h / 2) - mb, | |
bw = 2, | |
i, ny | |
; | |
var y = d3.scale.linear() | |
.range([0, h2]) | |
.domain([0, extMax]); | |
lHis = (lHis || layer.append("g")) | |
.attr("width", w3) | |
.attr("height", h2) | |
.attr("transform", "translate(" + [ ml , h - h2 - mb ] + ")"); | |
if (!sha) | |
return; | |
ny = h2; | |
extHash.forEach(function(k, d) { | |
var obj = { | |
key : k, | |
h : y(d.currents[sha] || 0), | |
color : d.color | |
}; | |
obj.y = ny -= obj.h; | |
data.push(obj); | |
}); | |
updateExtHistogram(); | |
var g = lHis.append("g") | |
.attr("class", "colStack") | |
.datum({ x : w3, w : bw }) | |
.style("opacity", 0); | |
g.selectAll("rect") | |
.data(data) | |
.enter() | |
.append("rect") | |
.attr("x", 0) | |
.attr("y", function(d) { return d.y; }) | |
.attr("width", bw) | |
.attr("height", function(d) { return d.h; }) | |
.attr("fill", function(d) { return d.color; }) | |
; | |
g.style("opacity", 1) | |
.attr("transform", function(d) { | |
return "translate(" + [ d.x, 0] + ")"; | |
}); | |
} | |
function updateExtHistogram() { | |
if (!lHis || lHis.selectAll(".colStack").empty()) | |
return; | |
lHis.selectAll(".colStack") | |
.attr("transform", function(d) { | |
return "translate(" + [ d.x -= d.w - 1, 0] + ")"; | |
}) | |
.filter(function(d) { | |
return d.x < 0; | |
}) | |
.remove(); | |
} | |
function initLegend() { | |
if (!layer) | |
return; | |
var mt = 48, | |
ml = w * .01, | |
h2 = h / 2 - mt, | |
w3 = w / 3 | |
; | |
lLeg = (lLeg || layer.append("g")) | |
.attr("width", w3) | |
.attr("height", h2) | |
.attr("transform", "translate(" + [ml, mt] + ")"); | |
lLeg.selectAll("*").remove(); | |
var g = lLeg.selectAll(".gLeg") | |
.data(extHash.entries(), function(d) { return d.key; }); | |
g.exit().remove(); | |
g.enter().append("g") | |
.attr("class", "gLeg") | |
.attr("transform", function(d, i) { | |
return "translate(" + [0, i * 18] + ")"; | |
}) | |
.style("visibility", "hidden") | |
; | |
g.append("rect") | |
.attr("height", 16) | |
.style("fill", function(d) { return d.value.color; }) | |
; | |
g.append("text") | |
.attr("class", "gttLeg") | |
.style("font-size", "13px") | |
.text(function(d) { return d.key.substr(1); }) | |
.style("fill", function(d) { return d3.rgb(d.value.color).brighter().brighter(); }) | |
; | |
g.append("text") | |
.attr("class", "gtLeg") | |
.style("font-size", "11px") | |
.attr("transform", "translate(" + [2, 12] + ")") | |
; | |
} | |
function sortLeg(b, a) { | |
return d3.ascending(a.value.now.length, b.value.now.length); | |
} | |
function sortLegK(b, a) { | |
return d3.ascending(a.key, b.key); | |
} | |
function updateLegend(sha) { | |
if (!lLeg || lLeg.empty()) | |
return; | |
var g = lLeg.selectAll(".gLeg"); | |
function wl(d) { | |
return d.value.now.length; | |
} | |
var wb = 9 * d3.max(g.data(), function(d) { | |
return ((wl(d) || "") + "").length; | |
}); | |
g.selectAll("rect") | |
.attr("width", wb) | |
; | |
g.selectAll(".gttLeg") | |
.attr("transform", "translate(" + [wb + 2, 12] + ")") | |
; | |
g.selectAll(".gtLeg") | |
.text(wl) | |
; | |
g.sort(sortLegK).sort(sortLeg) | |
.style("visibility", function(d, i) { | |
return !wl(d) || i * 18 > lLeg.attr("height") ? "hidden" : "visible"; | |
}) | |
.transition() | |
.duration(500) | |
.attr("transform", function(d, i) { | |
return "translate(" + [0, i * 18] + ")"; | |
}) | |
; | |
} | |
vis.runShow = function(data, svg, params) { | |
if (_worker) | |
clearInterval(_worker); | |
_data = data && data.commits ? data.commits.values().sort(vis.sC) : null; | |
if (!_data || !_data.length) | |
return; | |
setting = ghcs.settings.cs; | |
vis.layers.repo && cbDlr.uncheck(); | |
vis.layers.stat && cbDlsr.uncheck(); | |
dateRange = d3.extent(data.dates); | |
layer = d3.select("#canvas"); | |
layer.select("#mainCanvas").remove(); | |
lastEvent = { | |
translate: [0, 0], | |
scale : 1 | |
}; | |
xW = d3.scale.linear() | |
.range([0, w]) | |
.domain([0, w]); | |
yH = d3.scale.linear() | |
.range([0, h]) | |
.domain([0, h]); | |
var zoom = d3.behavior.zoom() | |
.scaleExtent([.1, 8]) | |
.scale(1) | |
.translate([0, 0]) | |
.on("zoom", function() { | |
lastEvent.translate = d3.event.translate.slice(0); | |
lastEvent.scale = d3.event.scale; | |
var tl = lastEvent.translate[0] / lastEvent.scale, | |
tt = lastEvent.translate[1] / lastEvent.scale; | |
xW.range([-tl, -tl + w / lastEvent.scale]) | |
.domain([0, w]); | |
yH.range([-tt, -tt + h / lastEvent.scale]) | |
.domain([0, h]); | |
valid = false; | |
}); | |
canvas = layer.append("canvas") | |
.text("This browser don't support element type of Canvas.") | |
.attr("id", "mainCanvas") | |
.attr("width", w) | |
.attr("height", h) | |
.call(zoom) | |
.node(); | |
ctx = canvas.getContext("2d"); | |
bufCanvas = document.createElement("canvas"); | |
bufCanvas.width = w; | |
bufCanvas.height = h; | |
bufCtx = bufCanvas.getContext("2d"); | |
bufCtx.font = "normal normal " + setting.sizeUser / 2 + "px Tahoma"; | |
bufCtx.textAlign = "center"; | |
layer = svg || vis.layers.show; | |
layer && layer.show && layer.show(); | |
layer.append("g") | |
.call(zoom) | |
.append("rect") | |
.attr("width", w) | |
.attr("height", h) | |
.attr("x", 0) | |
.attr("y", 0) | |
.style("fill", "#ffffff") | |
.style("fill-opacity", 0); | |
lHis && lHis.selectAll("*").remove(); | |
lCom = ( | |
lCom || layer.append("g") | |
.attr("width", 10) | |
.attr("height", 14) | |
) | |
.attr("transform", "translate(" + [w/2, h - 18] + ")") | |
; | |
lCom.visible = !setting.showCommitMessage; | |
lCom.selectAll("text").remove(); | |
lCom.showCommitMessage = lCom.showCommitMessage || function(text) { | |
if (setting.showCommitMessage && !lCom.visible) { | |
lCom.visible = true; | |
lCom.style("display", null); | |
} | |
else if (!setting.showCommitMessage && lCom.visible) { | |
lCom.visible = false; | |
lCom.style("display", "none"); | |
} | |
lCom.append("text") | |
.attr("text-anchor", "middle") | |
.attr("class", "com-mess") | |
.attr("transform", "translate("+ [0, -lCom.node().childElementCount * 14] +")") | |
.text(text.split("\n")[0].substr(0, 100)) | |
.transition() | |
.delay(500) | |
.duration(2000) | |
.style("fill-opacity", 1) | |
.duration(200) | |
.style("font-size", "11.2pt") | |
.transition() | |
.duration(1500) | |
.style("fill-opacity", .3) | |
.style("font-size", "11pt") | |
.each("end", function() { | |
lCom.selectAll("text").each(function(d, i) { | |
d3.select(this) | |
.attr("transform", "translate("+ [0, -i * 14] +")"); | |
}); | |
}) | |
.remove(); | |
}; | |
psBar.show(); | |
ghcs.states.cur = 0; | |
ghcs.states.max = dateRange[1] - dateRange[0]; | |
updateStatus(ghcs.states.cur, timeFormat(new Date(dateRange[0]))); | |
links = []; | |
nodes = initNodes(_data); | |
defImg = new Image(); | |
defImg.src = "default.png"; | |
particle = new Image(); | |
particle.src = "particle.png"; | |
_force = (_force || d3.layout.force() | |
.stop() | |
.size([w, h]) | |
.friction(.75) | |
.gravity(0) | |
.charge(function(d) {return -3 * radius(nr(d)); } ) | |
.on("tick", tick)) | |
.nodes([]) | |
; | |
zoomScale = d3.scale.linear() | |
.range([5, 1]) | |
.domain([.1, 1]); | |
_forceAuthor = (_forceAuthor || d3.layout.force() | |
.stop() | |
.size([w, h]) | |
.gravity(setting.padding * .001) | |
.charge(function(d) { return -(setting.padding + d.size) * 8 | |
* (Math.sqrt(d.links / lastEvent.scale) || 1) | |
; | |
})) | |
.nodes([]) | |
; | |
initLegend(); | |
stop = false; | |
pause = false; | |
run(); | |
_force.start(); | |
_forceAuthor.start(); | |
}; | |
vis.pauseShow = function() { | |
pause = true; | |
}; | |
vis.stopShow = function() { | |
stop = true; | |
if (_worker) | |
clearInterval(_worker); | |
}; | |
vis.resumeShow = function() { | |
pause = false; | |
}; | |
})(vis || (vis = {})); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* User: ArtZub | |
* Date: 23.01.13 | |
* Time: 12:54 | |
*/ | |
'use strict'; | |
(function (vis) { | |
var textFormat = d3.format(","); | |
vis.meArc = function(d) { | |
vis.layers.stat.toFront(); | |
if (!d._g) | |
return; | |
d._g.selectAll("path.bar") | |
.style({ | |
"fill-opacity" : .6, | |
"stroke-width" : 1, | |
"stroke" : function() { return toRgba("#000000", 1); } | |
}); | |
var self = d._g.node(); | |
self.barDel && self.barDel | |
.transition() | |
.attr("d", self.delArc.startAngle(PIdiv2 + smallRad ) | |
.endAngle(PIdiv2 * 3 - smallRad)()) | |
; | |
self.barAdd && self.barAdd | |
.transition() | |
.attr("d", self.addArc.startAngle(-PIdiv2 + smallRad ) | |
.endAngle(PIdiv2 - smallRad)()) | |
; | |
d._g.selectAll("text.del, text.add") | |
.style("visibility", "visible"); | |
toolTip.selectAll("*").remove(); | |
toolTip.append("div").attr("class", "row") | |
.append("blockquote") | |
.text(d.message.split("\n")[0]); | |
toolTip.append("div").attr("class", "row userInfo open").call(function(div) { | |
div = div.append("div").attr("class", "statInfo"); | |
div.node().appendChild(d.author.avatar); | |
div.append("ul").call(function(ul) { | |
(d.author.name || d.author.login) && ul.append("li").call(function(li) { | |
li.append("h1") | |
.text((d.author.name || d.author.login)) | |
; | |
li.append("hr"); | |
}); | |
ul.append("li").call(function(li) { | |
li.append("span") | |
.attr("class", "mini-icon mini-icon-time"); | |
li.append("strong") | |
.text(timeFormat(d.date)) | |
}); | |
d.files.length && ul.append("li") | |
.call(function(li) { | |
var stat = d.files.reduce(function(a, b) { | |
for(var key in TYPE_STATUS_FILE) { | |
if (TYPE_STATUS_FILE.hasOwnProperty(key) | |
&& b.status == TYPE_STATUS_FILE[key]) { | |
a[key] = (a[key] || 0); | |
a[key]++; | |
break; | |
} | |
} | |
return a; | |
}, {}); | |
li = li.append("ul") | |
.attr("class", "setting"); | |
li = li.append("li").attr("class", "field"); | |
li.append("h1") | |
.text("Changed files:"); | |
for(var key in stat) { | |
stat.hasOwnProperty(key) | |
&& li.append("ul") | |
.attr("class", "group") | |
.append("li") | |
.attr("class", "field") | |
.append("span") | |
.text(key + ": ") | |
.append("strong") | |
.text(stat[key]); | |
} | |
}); | |
ul.append("li") | |
.call(function(li) { | |
li = li.append("ul") | |
.attr("class", "setting"); | |
li = li.append("li").attr("class", "field"); | |
li.append("h1") | |
.text("Changed lines:"); | |
var stat = {changes : "", additions : " + ", deletions : " - "}; | |
for(var key in stat) { | |
d.stats.hasOwnProperty(key) | |
&& li.append("ul") | |
.attr("class", "group") | |
.append("li") | |
.attr("class", "field") | |
.append("span") | |
.text(key + ": ") | |
.append("strong") | |
.style("color", d3.rgb(colors[key]).darker(.2)) | |
.text(stat[key] + textFormat(d.stats[key])); | |
} | |
}); | |
}); | |
}); | |
toolTip.show(); | |
}; | |
vis.mlArc = function(d) { | |
if (!d._g) | |
return; | |
d._g.selectAll("path.bar") | |
.style({ | |
"fill-opacity" : .3, | |
"stroke" : null | |
}); | |
var self = d._g.node(); | |
if (!self) | |
return; | |
self.barDel && self.barDel | |
.transition() | |
.duration(750) | |
.ease("elastic") | |
.attr("d", self.delArc.startAngle(Math.PI - smallRad) | |
.endAngle(Math.PI + smallRad)()) | |
; | |
self.barAdd && self.barAdd | |
.transition() | |
.duration(750) | |
.ease("elastic") | |
.attr("d", self.addArc.startAngle(- smallRad ) | |
.endAngle(smallRad)()) | |
; | |
d._g.selectAll("text.del") | |
.style("visibility", d.stats && d.stats.delTextVis ? d.stats.delTextVis : "hidden"); | |
d._g.selectAll("text.add") | |
.style("visibility", d.stats && d.stats.addTextVis ? d.stats.addTextVis : "hidden"); | |
toolTip.hide(); | |
}; | |
vis.mmArc = function(d) { | |
vis.mtt(d); | |
}; | |
vis.clearStat = function() { | |
if (vis.layers && vis.layers.stat) { | |
vis.layers.stat.selectAll("*").remove(); | |
vis.layers.stat.cont && (vis.layers.stat.cont = null); | |
} | |
}; | |
vis.redrawStat = function(data, layout) { | |
layout = layout || vis.layers.stat; | |
var _commits = data && data.commits ? data.commits.values() : null; | |
if (!_commits || !_commits.length) { | |
vis.clearStat(); | |
return; | |
} | |
var bd = d3.extent(data.dates); | |
var delta = (bd[1] - bd[0]) * 0.1; | |
delta = delta || ONE_DAY; | |
bd = [bd[0] - delta, bd[1] + delta]; | |
var x = d3.time.scale() | |
.domain(d3.extent(bd)) | |
.range([0, w - margin.left - margin.right]) | |
; | |
var h6 = h/6; | |
var y = d3.scale.linear() | |
.range([2, h6 * 2]) | |
.domain([0, data.stats.changes || 1]); | |
var sorted = _commits.slice(0).concat([ | |
{ date : bd[0] + delta / 2, f : { d : 0, a : 0, m : 0 } }, | |
{ date : bd[1] - delta / 2, f : { d : 0, a : 0, m : 0 } } | |
]).sort(vis.sC); | |
var layers = | |
[ | |
{ | |
color: colors.deletedFile, | |
values: sorted.map(function (d) { | |
return {t : 1, x: d.date, y0 : 0, y: (d.stats ? -d.stats.f.d : 0)} | |
}) | |
}, | |
{ | |
color: colors.modifiedFile, | |
values: sorted.map(function (d) { | |
return {x: d.date, y0 : 0, y: (d.stats ? d.stats.f.m : 0)} | |
}) | |
}, | |
{ | |
color: colors.addedFile, | |
values: sorted.map(function (d) { | |
return {x: d.date, y0: (d.stats ? d.stats.f.m : 0), y : (d.stats ? d.stats.f.a : 0)} | |
}) | |
} | |
] | |
; | |
function interpolateSankey(points) { | |
var x0 = points[0][0], y0 = points[0][1], x1, y1, x2, | |
path = [x0, ",", y0], | |
i = 0, | |
n = points.length; | |
while (++i < n) { | |
x1 = points[i][0]; | |
y1 = points[i][1]; | |
x2 = (x0 + x1) / 2; | |
path.push("C", x2, ",", y0, " ", x2, ",", y1, " ", x1, ",", y1); | |
x0 = x1; | |
y0 = y1; | |
} | |
return path.join(""); | |
} | |
var y1 = d3.scale.linear() | |
.range([h6 * 4.5, h6 * 3, h6 * 1.5]) | |
.domain([-data.stats.files, 0, data.stats.files]), | |
area = d3.svg.area() | |
.interpolate(interpolateSankey /*true ? "linear" : "basis"*/) | |
.x(function(d) { return x(d.x); }) | |
.y0(function(d) { return y1(d.y0); }) | |
.y1(function(d) { return y1(d.y0 + d.y); }) | |
; | |
var xAxis = d3.svg.axis() | |
.scale(x) | |
; | |
layout.cont = layout.cont || layout | |
.append("g") | |
.attr("transform", "translate(" + margin.left + "," + margin.top + ")") | |
; | |
layout.cont.selectAll("path.areaFile").remove(); | |
layout.cont.selectAll("path.areaFile") | |
.data(layers) | |
.enter() | |
.insert("path", ":first-child") | |
.attr("class", "areaFile") | |
.style("fill-opacity",.1) | |
.style("fill", function(d) { return d.color; }) | |
.transition() | |
.duration(750) | |
.attr("d", function(d) { return area(d.values); }) | |
; | |
layout.cont.axis = layout.cont.axis || layout.cont.append("g") | |
.attr("class", "x axis") | |
.attr("transform", "translate(0," + h/2 + ")") | |
; | |
layout.cont.axis | |
.selectAll("*").remove(); | |
layout.cont.axis | |
.call(xAxis) | |
.selectAll("text") | |
.attr("y", 0) | |
.attr("x", 9) | |
.attr("dy", ".35em") | |
.attr("transform", "rotate(90)") | |
.style("text-anchor", "start") | |
; | |
layout.cont.points = layout.cont.points || layout.cont.append("g") | |
.attr("transform", "translate(0," + h/2 + ")") | |
; | |
var cData = layout.cont.points.selectAll("g.com") | |
.data(_commits, function(d) { return d.sha; }); | |
cData.enter() | |
.append("g") | |
.attr("class", "com") | |
.on("mouseover", vis.meArc) | |
.on("mouseout", vis.mlArc) | |
.on("mousemove", vis.mmArc) | |
; | |
cData.each(function(d, g) { | |
g = d._g = d3.select(this); | |
g.transition() | |
.duration(1500) | |
.ease("elastic") | |
.attr("transform", "translate(" + [ x(d.date), 0] + ")"); | |
this.center = this.center || g.append("circle") | |
.attr("r", 2) | |
.style("fill", colors.center) | |
; | |
if (!d.stats) | |
return; | |
var add = this.addArc = d3.svg.arc() | |
.innerRadius(1) | |
.outerRadius(1) | |
.startAngle(- smallRad ) | |
.endAngle(smallRad) | |
; | |
var del = this.delArc = d3.svg.arc() | |
.innerRadius(1) | |
.outerRadius(1) | |
.startAngle(Math.PI - smallRad) | |
.endAngle(Math.PI + smallRad) | |
; | |
(this.barAdd || ( | |
this.barAdd = g.append("path") | |
.attr("class", "bar") | |
.style({ | |
"fill" : colors.additions, | |
"fill-opacity" : .3 | |
}) | |
.attr("d", add()) | |
)) | |
.transition() | |
.duration(750) | |
.ease("elastic") | |
.attr("d", add.outerRadius(y(d.stats.additions))()) | |
; | |
(this.barDel || ( | |
this.barDel = g.append("path") | |
.attr("class", "bar") | |
.style({ | |
"fill" : colors.deletions, | |
"fill-opacity" : .3 | |
}) | |
.attr("d", del()) | |
)) | |
.transition() | |
.duration(750) | |
.ease("elastic") | |
.attr("d", del.outerRadius(y(d.stats.deletions))()) | |
; | |
function sized(s, k) { | |
return s * (1 + k); | |
} | |
var addTop = this.addArcTop = d3.svg.arc() | |
.innerRadius(sized(y(d.stats.additions), .015)) | |
.outerRadius(sized(y(d.stats.additions), .025)) | |
.startAngle(- smallRad ) | |
.endAngle(smallRad) | |
; | |
var delTop = this.delArcTop = d3.svg.arc() | |
.innerRadius(sized(y(d.stats.deletions), .015)) | |
.outerRadius(sized(y(d.stats.deletions), .025)) | |
.startAngle(Math.PI - smallRad) | |
.endAngle(Math.PI + smallRad) | |
; | |
(this.barAddTop || ( | |
this.barAddTop = g.append("path") | |
.style("fill", toRgba(colors.additions)) | |
)) | |
.attr("d", addTop()) | |
; | |
(this.barDelTop || ( | |
this.barDelTop = g.append("path") | |
.style("fill", toRgba(colors.deletions)) | |
)) | |
.attr("d", delTop()) | |
; | |
if (d.stats.additions) { | |
d.stats.addTextVis = sized(y(d.stats.additions), .029) > h6 / 2 ? "visible" : "hidden"; | |
(this.labelAdd || ( | |
this.labelAdd = g.append("text") | |
.attr("class", "add") | |
.attr("dy", "-.31em") | |
.attr("text-anchor", "middle") | |
.style("fill", colors.additions) | |
.text(" + " + textFormat(d.stats.additions)) | |
)) | |
.attr("transform", "translate(" + [0, -sized(y(d.stats.additions), .027)] + ")") | |
.attr("visibility", d.stats.addTextVis) | |
; | |
} | |
if (d.stats.deletions) { | |
d.stats.delTextVis = sized(y(d.stats.deletions), .029) > h6 / 2 ? "visible" : "hidden"; | |
(this.labelDel || ( | |
this.labelDel = g.append("text") | |
.attr("class", "del") | |
.attr("dy", ".93em") | |
.attr("text-anchor", "middle") | |
.style("fill", colors.deletions) | |
.text(" - " + textFormat(d.stats.deletions)) | |
)) | |
.attr("transform", "translate(" + [0, sized(y(d.stats.deletions), .027)] + ")") | |
//rotate(180) | |
.attr("visibility", d.stats.delTextVis) | |
; | |
} | |
}); | |
cData.sort(function(a, b) { | |
return a.stats && b.stats ? d3.ascending(b.stats.changes, a.stats.changes) : 0; | |
}); | |
cData.exit().remove(); | |
}; | |
})(vis || (vis = {})); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* html5doctor.com Reset v1.6.1 - http://cssreset.com */ | |
html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}nav ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:none}a{margin:0;padding:0;font-size:100%;vertical-align:baseline;background:transparent}ins{background-color:#ff9;color:#000;text-decoration:none}mark{background-color:#ff9;color:#000;font-style:italic;font-weight:bold}del{text-decoration:line-through}abbr[title],dfn[title]{border-bottom:1px dotted;cursor:help}table{border-collapse:collapse;border-spacing:0}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}input,select{vertical-align:middle} | |
/** взято с github.com */ | |
@font-face { | |
font-family: 'Octicons Regular'; | |
src: url(github_webfont.eot); | |
src: url(github_webfont_ie.eot) format("embedded-opentype"), | |
url(github_webfont.woff) format("woff"), | |
url(github_webfont.ttf) format("truetype"), | |
url(github_webfont.svg) format("svg"); | |
font-weight: normal; | |
font-style: normal | |
} | |
.mini-icon, .mega-icon { | |
font-family: 'Octicons Regular'; | |
font-weight: normal; | |
font-style: normal; | |
display: inline-block; | |
text-decoration: inherit; | |
line-height: 1; | |
-webkit-font-smoothing: antialiased; | |
line-height: 1; | |
text-decoration: none; | |
} | |
.mini-icon { | |
font-size: 16px; | |
width: 16px; | |
height: 16px; | |
} | |
.mega-icon { | |
font-size: 32px; | |
width: 32px; | |
height: 32px; | |
} | |
.mini-icon-octocat:before { | |
content: "\f008"; | |
} | |
.mini-icon-public-repo:before { | |
content: "\f001"; | |
} | |
.mini-icon-time:before { | |
content: "\f046"; | |
} | |
.mini-icon-link:before { | |
content: "\f05c"; | |
} | |
.mini-icon-location:before { | |
content: "\f060"; | |
} | |
.mini-icon-history:before { | |
content: "\f07e"; | |
} | |
.mega-icon-public-repo:before { | |
content: "\f201"; | |
} | |
/** end */ | |
html, | |
body { | |
width: 100%; | |
height: 100%; | |
overflow: hidden; | |
} | |
body { | |
background: url('data:image/png;base64,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'); | |
} | |
label { | |
color: #f9f9f9; | |
} | |
.popup { | |
position: absolute; | |
overflow: hidden; | |
z-index: 10; | |
} | |
#controls { | |
left: -1px; | |
top: -1px; | |
z-index: 11; | |
padding: 5px; | |
vertical-align: middle; | |
border-radius: 0 0 3px 0; | |
width: 100%; | |
} | |
#controls input, | |
#controls button, | |
#controls label { | |
display: inline-block; | |
} | |
input[type=text], | |
input[type=number] { | |
border: 1px solid #b9b9b9; | |
display: block; | |
padding: 5px; | |
font-size: 14px; | |
margin: 0; | |
outline: 0; | |
} | |
input[type=text]:hover, | |
input[type=number]:hover, | |
input[type=text]:focus, | |
input[type=number]:focus { | |
border-color: #000; | |
-webkit-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3); | |
-moz-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3); | |
-o-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3); | |
-ms-box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3); | |
box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.3); | |
} | |
#controls input { | |
font-family: sans-serif; | |
font-weight: bolder; | |
} | |
#console { | |
bottom: 0; | |
left: 0; | |
z-index: 100; | |
} | |
/* progress bar */ | |
.meter { | |
overflow: hidden; | |
position: relative; | |
background: #555; | |
padding: 10px; | |
-webkit-box-shadow: inset 0 -1px 1px rgba(255, 255, 255, 0.3); | |
-moz-box-shadow: inset 0 -1px 1px rgba(255, 255, 255, 0.3); | |
box-shadow: inset 0 -1px 1px rgba(255, 255, 255, 0.3); | |
} | |
.meter > span { | |
display: block; | |
background-color: rgb(43, 194, 83); | |
/*background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, rgb(43, 194, 83)), color-stop(1, rgb(84, 240, 84))); | |
background-image: -moz-linear-gradient(center bottom, rgb(43, 194, 83) 37%, rgb(84, 240, 84) 69%);*/ | |
-webkit-box-shadow: inset 0 2px 9px rgba(255, 255, 255, 0.3), inset 0 -2px 6px rgba(0, 0, 0, 0.4); | |
-moz-box-shadow: inset 0 2px 9px rgba(255, 255, 255, 0.3), inset 0 -2px 6px rgba(0, 0, 0, 0.4); | |
box-shadow: inset 0 2px 9px rgba(255, 255, 255, 0.3), inset 0 -2px 6px rgba(0, 0, 0, 0.4); | |
position: relative; | |
overflow: hidden; | |
min-height: 10px | |
} | |
.orange > span { | |
background-color: #f1a165; | |
background: rgb(241,161,101); | |
/*background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2YxYTE2NSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmMzZkMGEiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); | |
background: -moz-linear-gradient(top, rgba(241,161,101,1) 0%, rgba(243,109,10,1) 100%); | |
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(241,161,101,1)), color-stop(100%,rgba(243,109,10,1))); | |
background: -webkit-linear-gradient(top, rgba(241,161,101,1) 0%,rgba(243,109,10,1) 100%); | |
background: -o-linear-gradient(top, rgba(241,161,101,1) 0%,rgba(243,109,10,1) 100%); | |
background: -ms-linear-gradient(top, rgba(241,161,101,1) 0%,rgba(243,109,10,1) 100%); | |
background: linear-gradient(to bottom, rgba(241,161,101,1) 0%,rgba(243,109,10,1) 100%); | |
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f1a165', endColorstr='#f36d0a',GradientType=0 );*/ | |
} | |
.red > span { | |
background-color: #f0a3a3; | |
/*background-image: -moz-linear-gradient(top, #f0a3a3, #f42323); | |
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #f0a3a3), color-stop(1, #f42323)); | |
background-image: -webkit-linear-gradient(#f0a3a3, #f42323);*/ | |
} | |
.progressBar { | |
font-size: 11px; | |
width: 100%; | |
} | |
.progressBar .meter { | |
margin: 0; | |
padding: 1px; | |
} | |
/*.progressBar .meter > span*/ | |
#progressBar { | |
text-align: right; | |
vertical-align: middle; | |
color: white; | |
text-shadow: 0 1px 1px black; | |
word-wrap: normal; | |
white-space: nowrap; | |
text-overflow: ellipsis; | |
} | |
/* end progress bar */ | |
#statusBar { | |
bottom: 0; | |
left: 0; | |
z-index: 12; | |
width: 100%; | |
position: fixed; | |
border: 0; | |
border-top: 1px solid #CACACA; | |
background: rgb(239,239,239); | |
/*background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2VmZWZlZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjQxJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNjYWNhY2EiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); | |
background: -moz-linear-gradient(top, rgba(239,239,239,1) 0%, rgba(221,221,221,1) 41%, rgba(202,202,202,1) 100%); | |
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(239,239,239,1)), color-stop(41%,rgba(221,221,221,1)), color-stop(100%,rgba(202,202,202,1))); | |
background: -webkit-linear-gradient(top, rgba(239,239,239,1) 0%,rgba(221,221,221,1) 41%,rgba(202,202,202,1) 100%); | |
background: -o-linear-gradient(top, rgba(239,239,239,1) 0%,rgba(221,221,221,1) 41%,rgba(202,202,202,1) 100%); | |
background: -ms-linear-gradient(top, rgba(239,239,239,1) 0%,rgba(221,221,221,1) 41%,rgba(202,202,202,1) 100%); | |
background: linear-gradient(to bottom, rgba(239,239,239,1) 0%,rgba(221,221,221,1) 41%,rgba(202,202,202,1) 100%); | |
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#efefef', endColorstr='#cacaca',GradientType=0 );*/ | |
} | |
#statusBar ul { | |
padding: 2px 3px; | |
overflow: hidden; | |
margin: 0; | |
list-style: none; | |
} | |
#statusBar li { | |
display: block; | |
vertical-align: middle; | |
float: left; | |
margin-right: 2px; | |
border: 0; | |
border-right: 1px solid #444; | |
} | |
#statusBar li:last-child { | |
margin-right: 0; | |
border-right: 0; | |
} | |
#layers, | |
#canvas, | |
#svg, | |
canvas, | |
svg { | |
position: relative; | |
width: 100%; | |
height: 100%; | |
} | |
#svg, #canvas { | |
position: absolute; | |
top: 0; | |
left : 0; | |
} | |
#svg { | |
z-index: 1; | |
} | |
#canvas { | |
z-index: 0; | |
} | |
#layers { | |
background: rgba(224, 224, 224, .1); | |
} | |
.axis text { | |
font: 10px sans-serif; | |
fill: #ccc; | |
} | |
.axis line, | |
.axis path { | |
fill: none; | |
stroke: #ccc; | |
shape-rendering: crispEdges; | |
} | |
#ldrCont { | |
z-index: 100; | |
top: 0; | |
left: 0; | |
text-align: center; | |
width: 100%; | |
height: 100%; | |
} | |
#ldrCont > img { | |
display: inline-block; | |
position:relative; | |
top:49%; | |
width: 48px; | |
height: auto; | |
} | |
.lineFiles { | |
fill: none; | |
shape-rendering: crispEdges; | |
stroke-width: 2px; | |
} | |
.lineFiles .M { | |
stroke: rgba(255, 184, 119, .5); | |
} | |
.lineFiles .A { | |
stroke: rgba(165, 236, 110, .5); | |
} | |
.lineFiles .D { | |
stroke: rgba(255, 119, 255, .5); | |
} | |
.cRepo { | |
cursor: pointer; | |
} | |
.cRepo text { | |
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); | |
pointer-events: none; | |
} | |
.cRepo:hover text { | |
text-shadow: 0 1px 2px rgba(255, 255, 255, 1); | |
} | |
.tooltip { | |
color: #f9f9f9; | |
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); | |
background: rgba(110, 130, 163, 0.7); | |
border: 1px dotted #8D9DB6; | |
padding: 5px; | |
border-radius: 3px; | |
} | |
#tooltip { | |
z-index: 50; | |
display: none; | |
max-width: 25%; | |
pointer-events: none; | |
} | |
/* http://xbreaker.github.com/plusstrap/base-css.html#buttons */ | |
.btn { | |
display: inline-block; | |
*display: inline; | |
*zoom: 1; | |
padding: 0px 8px; | |
font-weight: bold; | |
margin-bottom: 0; | |
font-size: 11px; | |
line-height: 22px; | |
*line-height: 22px; | |
text-align: center; | |
vertical-align: middle; | |
cursor: default; | |
color: #333333; | |
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); | |
background-color: #f3f3f3; | |
background-image: -moz-linear-gradient(top, #f5f5f5, #f1f1f1); | |
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f1f1f1)); | |
background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1); | |
background-image: -o-linear-gradient(top, #f5f5f5, #f1f1f1); | |
background-image: linear-gradient(to bottom, #f5f5f5, #f1f1f1); | |
background-repeat: repeat-x; | |
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff1f1f1', GradientType=0); | |
border-color: #e4e4e4; | |
*background-color: #f1f1f1; | |
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); | |
border: 1px solid rgba(0, 0, 0, 0.1); | |
*border: 0; | |
border-bottom-color: rgba(0, 0, 0, 0.1); | |
-webkit-border-radius: 2px; | |
-moz-border-radius: 2px; | |
border-radius: 2px; | |
*margin-left: .3em; | |
} | |
.btn:not(.active):hover { | |
background-color: #f5f5f5; | |
background-image: -moz-linear-gradient(top, #f9f9f9, #eeeeee); | |
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f9f9f9), to(#eeeeee)); | |
background-image: -webkit-linear-gradient(top, #f9f9f9, #eeeeee); | |
background-image: -o-linear-gradient(top, #f9f9f9, #eeeeee); | |
background-image: linear-gradient(to bottom, #f9f9f9, #eeeeee); | |
background-repeat: repeat-x; | |
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#ffeeeeee', GradientType=0); | |
} | |
.btn:hover, | |
.btn:active, | |
.btn.active, | |
.btn.disabled, | |
.btn[disabled] { | |
color: #333333; | |
background-color: #eeeeee; | |
*background-color: #e4e4e4; | |
-webkit-box-shadow: 0 1px 0px #dedede; | |
-moz-box-shadow: 0 1px 0px #dedede; | |
box-shadow: 0 1px 0px #dedede; | |
border-color: #cbcbcb; | |
} | |
.btn:active, | |
.btn.active { | |
background-color: #d8d8d8 \9; | |
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2); | |
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2); | |
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2); | |
} | |
.btn:first-child { | |
*margin-left: 0; | |
} | |
.btn:hover { | |
color: #333333; | |
text-decoration: none; | |
background-color: #e6e6e6; | |
*background-color: #d9d9d9; | |
-webkit-transition: background-position 0.1s linear; | |
-moz-transition: background-position 0.1s linear; | |
-o-transition: background-position 0.1s linear; | |
transition: background-position 0.1s linear; | |
} | |
.btn:focus { | |
outline: thin dotted #333; | |
outline: 5px auto -webkit-focus-ring-color; | |
outline-offset: -2px; | |
} | |
.btn.active, | |
.btn:active { | |
background-color: #e6e6e6; | |
background-color: #d9d9d9 \9; | |
background-image: none; | |
outline: 0; | |
} | |
.btn.disabled, | |
.btn[disabled] { | |
cursor: default; | |
background-color: #e6e6e6; | |
background-image: none; | |
opacity: 0.65; | |
filter: alpha(opacity=65); | |
-webkit-box-shadow: none; | |
-moz-box-shadow: none; | |
box-shadow: none; | |
} | |
/** end **/ | |
#controls .btn { | |
padding: 2px 8px; | |
margin: 0; | |
} | |
.row { | |
display: block; | |
max-width: 100%; | |
} | |
#divStat img, | |
.statInfo img { | |
float: left; | |
margin: 0 0 0 0; | |
padding: 1px; | |
background: #fff; | |
box-shadow: 0 1px 2px rgba(0,0,0,0.15); | |
} | |
#divStat ul, | |
.statInfo ul { | |
overflow: hidden; | |
padding: 0; | |
list-style: none; | |
} | |
#divStat li, | |
.statInfo li { | |
color: #ccc; | |
} | |
hr { | |
margin: 5px 0; | |
} | |
#divStat li strong, | |
#divStat li a, | |
.statInfo li strong, | |
.statInfo li a { | |
margin-left: 5px; | |
} | |
#divStat li strong, | |
#divStat h1, | |
.statInfo li strong, | |
.statInfo h1 { | |
color: #f9f9f9; | |
} | |
#curRep .a-icon, | |
#divStat .a-icon, | |
.statInfo .a-icon { | |
text-decoration: none; | |
color: rgba(172, 213, 229, 1); | |
} | |
#divStat a, | |
.statInfo a { | |
color: rgba(172, 213, 229, 1); | |
} | |
#curRep .a-icon:hover, | |
#divStat .a-icon:hover, | |
#divStat a:hover, | |
.statInfo .a-icon:hover, | |
.statInfo a:hover { | |
color: rgba(221, 246, 255, 1); | |
} | |
#curRep { | |
vertical-align: middle; | |
text-align: left; | |
} | |
#curRep .mega-icon { | |
font-size: 24px; | |
width: 24px; | |
height: inherit; | |
position: relative; | |
} | |
#curRep .mini-icon-link:before, | |
#curRep .mega-icon-public-repo:before { | |
position: absolute; | |
top: -16px; | |
} | |
#userInfo, | |
.userInfo { | |
right: -2px; | |
top: -2px; | |
padding: 7px 7px 5px 5px; | |
z-index: 52; | |
} | |
#userInfo ul, | |
.userInfo ul { | |
white-space: nowrap; | |
-webkit-transition: all .4s; | |
-moz-transition: all .4s; | |
-o-transition: all .4s; | |
transition: all .4s; | |
max-width: 0; | |
max-height: 0; | |
} | |
#userInfo img, | |
.userInfo img { | |
-webkit-transition: all .5s ease-in-out .4s; | |
-moz-transition: all .5s ease-in-out .4s; | |
-o-transition: all .5s ease-in-out .4s; | |
transition: all .5s ease-in-out .4s; | |
width : 48px; | |
height : auto; | |
} | |
#userInfo.open img, | |
#userInfo:hover img, | |
.userInfo.open img, | |
.userInfo:hover img { | |
-webkit-transition: all .5s; | |
-moz-transition: all .5s; | |
-o-transition: all .5s; | |
transition: all .5s; | |
margin-right: 10px; | |
width : 96px; | |
height : auto; | |
} | |
#userInfo.open ul, | |
#userInfo:hover ul, | |
.userInfo.open ul, | |
.userInfo:hover ul { | |
-webkit-transition: all .5s ease-in-out .5s; | |
-moz-transition: all .5s ease-in-out .5s; | |
-o-transition: all .5s ease-in-out .5s; | |
transition: all .5s ease-in-out .5s; | |
max-width: 960px; | |
max-height: 1280px; | |
} | |
/** stepbar */ | |
.steps { | |
list-style: none; | |
margin: 0; | |
} | |
.steps > li { | |
display: block; | |
float: left; | |
position: relative; | |
padding: 4px; | |
border: 1px solid white; | |
border-right-style: dotted; | |
border-left-style: dotted; | |
margin-right: 1em; | |
background: #50617F; | |
padding-right: 2px; | |
margin-left: -17px; | |
padding-left: 24px; | |
/*text-align: right;*/ | |
box-shadow: 2px 4px 5px rgba(0, 0, 0, .5); | |
} | |
.steps > li .sub { | |
text-align: left; | |
display: block; | |
overflow: hidden; | |
margin-left: -22px; | |
} | |
.steps > li:first-child .sub { | |
margin-left: 0; | |
} | |
.steps > li .sub { | |
max-height: 0; | |
max-width: 0; | |
-webkit-transition: max-height .7s ease-in-out .2s, max-width .2s ease-in-out .9s; | |
-moz-transition: max-height .7s ease-in-out .2s, max-width .2s ease-in-out .9s; | |
-o-transition: max-height .7s ease-in-out .2s, max-width .2s ease-in-out .9s; | |
transition: max-height .7s ease-in-out .2s, max-width .2s ease-in-out .9s; | |
} | |
.steps > li:hover .sub { | |
max-height: 960px; | |
max-width: 960px; | |
-webkit-transition: max-height .5s ease-in-out .3s, max-width .2s ease-in-out .1s; | |
-moz-transition: max-height .5s ease-in-out .3s, max-width .2s ease-in-out .1s; | |
-o-transition: max-height .5s ease-in-out .3s, max-width .2s ease-in-out .1s; | |
transition: max-height .5s ease-in-out .3s, max-width .2s ease-in-out .1s; | |
} | |
.steps > li:first-child { | |
border-radius: 5px 0 0 5px; | |
border-left: 1px solid #ffffff; | |
margin-left: 0; | |
padding-left: 4px; | |
} | |
.steps > li:hover { | |
border-right-style: solid; | |
border-left-style: solid; | |
} | |
.steps > li:after, | |
.steps > li:before { | |
width: 0; | |
height: 0; | |
content: ""; | |
display: inline-block; | |
position: absolute; | |
} | |
.steps > li:after { | |
border: 1.248em solid transparent; | |
border-left-color: #ffffff; | |
top: -0.05em; | |
right: -2.45em; | |
z-index: 0; | |
} | |
.steps > li:before { | |
border: 1.13em solid transparent; | |
border-left-color: #50617F; | |
top: .02em; | |
right: -2.25em; | |
z-index: 1; | |
} | |
.steps.sfirst > li:not(.first) { | |
border-color: #ccc; | |
background: #858689; | |
} | |
.steps.sfirst > li:not(.first):after { | |
border-left-color: #ccc; | |
} | |
.steps.sfirst > li:not(.first):before { | |
border-left-color: #858689; | |
} | |
.steps.ssecond > li.third { | |
border-color: #ccc; | |
background: #858689; | |
} | |
.steps.ssecond > li.third:after { | |
border-left-color: #ccc; | |
} | |
.steps.ssecond > li.third:before { | |
border-left-color: #858689; | |
} | |
.steps > li > label { | |
vertical-align: middle; | |
} | |
.sub > div { | |
padding: 5px; | |
} | |
.sub blockquote { | |
padding: 3px; | |
margin: 2px 0; | |
background: rgba(255, 252, 196, .6); | |
border-left: 2px solid rgba(255, 252, 196, 1); | |
font-style: italic; | |
color: rgba(255, 252, 196, 1); | |
text-shadow: 0 1px 2px rgba(0, 0, 0, .5); | |
} | |
blockquote.green { | |
/*background: rgba(161, 237, 144, .3); | |
color: rgb(198, 244, 188); | |
border-left: 2px solid rgb(198, 244, 188);*/ | |
background: rgba(198, 245, 188, .6); | |
color: rgb(31, 166, 31); | |
border-left: 2px solid rgb(31, 166, 31); | |
} | |
/** end stepbar */ | |
.barLang circle, | |
.barLang path { | |
} | |
.barLang path { | |
fill: none; | |
stroke-width: 1px; | |
} | |
.barLang text { | |
pointer-events: none; | |
text-shadow : 0 0 3px rgba(0, 0, 0, 1); | |
} | |
.barLang .barSelect { | |
stroke: #000; | |
stroke-opacity: 0; | |
stroke-width: 1px; | |
fill: #f9f9f9; | |
fill-opacity: 0; | |
-webkit-transition: all 1.5s; | |
-moz-transition: all 1.5s; | |
-o-transition: all 1.5s; | |
transition: all 1.5s; | |
} | |
.barLang:hover .barSelect { | |
fill-opacity: .6; | |
stroke-opacity: .6; | |
-webkit-transition: all .5s; | |
-moz-transition: all .5s; | |
-o-transition: all .5s; | |
transition: all .5s; | |
} | |
.field { | |
padding: 3px; | |
} | |
.setting { | |
list-style: none; | |
text-shadow: 0 1px 2px rgba(0, 0, 0, .5); | |
} | |
.setting input { | |
padding: 0; | |
margin: 0; | |
} | |
.setting h1 { | |
color: rgba(0, 0, 0, .8); | |
text-shadow: 0 1px 1px rgba(255, 255, 255, .5); | |
} | |
.setting > li { | |
border: 1px dotted rgba(255, 255, 255, .5); | |
background: rgba(255, 255, 255, .2); | |
} | |
.setting > li .group { | |
list-style: none; | |
vertical-align: middle; | |
} | |
.group > li { | |
display: inline-block; | |
} | |
.com-mess { | |
font-size: 11pt; | |
font-family: Verdana,serif; | |
fill: #ffffff; | |
fill-opacity: .3; | |
} | |
.mono { | |
font-family: monospace; | |
font-size: 10pt; | |
} | |
#visBtnResume .mini-icon-history { | |
position: relative; | |
height: 0; | |
} | |
#visBtnResume .mini-icon-history:before { | |
position: absolute; | |
top: -12px; | |
left: 0; | |
} | |
.gtLeg, .gttLeg { | |
fill : #f9f9f9; | |
text-shadow: 0 1px 2px rgba(0, 0, 0, .5); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* User: ArtZub | |
* Date: 15.01.13 | |
* Time: 1:34 | |
*/ | |
'use strict'; | |
var PIdiv2 = Math.PI / 2, | |
smallRad = PIdiv2 * (1 / 15), | |
TT_PAD = 8 | |
; | |
var colors = { | |
additions : "#ddffdd", | |
deletions : "#ffdddd", | |
changes : "#FFF1DD", | |
center : "#FF6600", | |
stroked : "#f9f9f9", | |
addedFile : "#A5EC6E", | |
modifiedFile : "#FFB877", | |
deletedFile : "#FF77B5", | |
decolor : "#888888" | |
}; | |
function toRgba(color, a) { | |
color = d3.rgb(color); | |
return "rgba(" + [color.r, color.g, color.b, a || 1] + ")"; | |
} | |
var vis = { | |
sC : function(a, b) { | |
return d3.ascending(b.date, a.date); | |
}, | |
mtt : function(d) { | |
if (toolTip) { | |
var e = d3.event; | |
if (arguments.length > 3) | |
e = arguments[3]; | |
toolTip | |
.style("top", e.pageY > h / 2 ? (e.pageY - toolTip.node().clientHeight - TT_PAD) + "px" : (e.pageY + TT_PAD) + "px") | |
.style("left", e.pageX > w / 2 ? (e.pageX - toolTip.node().clientWidth - TT_PAD) + "px" : (e.pageX + TT_PAD) + "px") | |
; | |
} | |
} | |
}; | |
function initGraphics(svg) { | |
vis.layers = (function(data) { | |
var ls = { _data : data }; | |
svg.selectAll("g.layer") | |
.data(data, function(d) {return d.name}) | |
.enter() | |
.append("g") | |
.each(function(d) { | |
ls[d.name] = d3.select(this).attr("class", "layer").attr("width", w).attr("height", h); | |
ls[d.name].getOrder = function() { | |
return d.order; | |
return this; | |
}; | |
ls[d.name].toFront = function() { | |
d.order && | |
vis.layers.ordering(this, 0); | |
return this; | |
}; | |
ls[d.name].hide = function() { | |
ls[d.name].visible = false; | |
this.style("display", "none"); | |
return this; | |
}; | |
ls[d.name].show = function() { | |
ls[d.name].visible = true; | |
this.style("display", null); | |
return this; | |
}; | |
ls[d.name].visible = true; | |
}); | |
return ls; | |
})([ | |
{name : "repo", order : 2}, | |
{name : "stat", order : 1}, | |
{name : "show", order : 0} | |
]); | |
vis.layers.ordering = function(layer, order) { | |
function s(a, b) { | |
return d3.ascending(b.order, a.order); | |
} | |
var _d = (layer instanceof Array || layer instanceof Object ? layer : this[layer]); | |
_d = _d ? (_d instanceof Array ? _d.datum() : _d) : null; | |
if (_d) { | |
this._data.forEach(function(d) { | |
_d != d && d.order >= order && d.order++; | |
}); | |
_d.order = order; | |
svg.selectAll("g.layer").sort(s); | |
} | |
return this; | |
}; | |
vis.resources = { | |
}; | |
vis.inited = true; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment