<\/div>/gi,"
").replace(/
/gi,"
").replace(/
/gi,"\n").replace(/ /gi," "),t.textContent.trim()},m=function(e){return e=r(e),e.replace(/\n\n/gi,"
").replace(/\n/gi,"
")};try{localStorage.setItem("x","y"),localStorage.removeItem("x"),t=localStorage}catch(e){t=function(e){return{setItem:function(t,n){e[t]=n},getItem:function(t){return void 0!==e[t]?e[t]:null},removeItem:function(t){delete e[t]}}}({})}return{cookie:n,pad:o,ago:i,text:s,detext:m,localStorageImpl:t}}),function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define("libjs-jade-runtime",[],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.jade=e()}}(function(){return function e(t,n,o){function i(r,s){if(!n[r]){if(!t[r]){var m="function"==typeof require&&require;if(!s&&m)return m(r,!0);if(a)return a(r,!0);var c=new Error("Cannot find module '"+r+"'");throw c.code="MODULE_NOT_FOUND",c}var d=n[r]={exports:{}};t[r][0].call(d.exports,function(e){var n=t[r][1][e];return i(n||e)},d,d.exports,e,t,n,o)}return n[r].exports}for(var a="function"==typeof require&&require,r=0;r
":">",'"':"""},m=/[&<>"]/g;n.escape=r,n.rethrow=function t(n,o,i,a){if(!(n instanceof Error))throw n;if(!("undefined"==typeof window&&o||a))throw n.message+=" on line "+i,n;try{a=a||e("fs").readFileSync(o,"utf8")}catch(e){t(n,null,i)}var r=3,s=a.split("\n"),m=Math.max(i-r,0),c=Math.min(s.length,i+r),r=s.slice(m,c).map(function(e,t){var n=t+m+1;return(n==i?" > ":" ")+n+"| "+e}).join("\n");throw n.path=o,n.message=(o||"Jade")+":"+i+"\n"+r+"\n\n"+n.message,n},n.DebugItem=function(e,t){this.lineno=e,this.filename=t}},{fs:2}],2:[function(e,t,n){},{}]},{},[1])(1)}),define("jade",{load:function(e){throw new Error("Dynamic load not allowed: "+e)}}),define("jade!app/text/postbox",function(){var e=function(e){return function(t){var n,o=[],i=t||{};return function(t,i,a,r){o.push('")}.call(this,"author"in i?i.author:"undefined"!=typeof author?author:void 0,"email"in i?i.email:"undefined"!=typeof email?email:void 0,"i18n"in i?i.i18n:"undefined"!=typeof i18n?i18n:void 0,"website"in i?i.website:"undefined"!=typeof website?website:void 0),o.join("")}};return e.compiled=!0,e}),define("jade!app/text/comment",function(){var e=function(e){return function(t){var n,o=[],i=t||{};return function(t,i,a,r,s,m,c){o.push("')}.call(this,"bool"in i?i.bool:"undefined"!=typeof bool?bool:void 0,"comment"in i?i.comment:"undefined"!=typeof comment?comment:void 0,"conf"in i?i.conf:"undefined"!=typeof conf?conf:void 0,"datetime"in i?i.datetime:"undefined"!=typeof datetime?datetime:void 0,"humanize"in i?i.humanize:"undefined"!=typeof humanize?humanize:void 0,"i18n"in i?i.i18n:"undefined"!=typeof i18n?i18n:void 0,"svg"in i?i.svg:"undefined"!=typeof svg?svg:void 0),o.join("")}};return e.compiled=!0,e}),define("jade!app/text/comment-loader",function(){var e=function(e){return function(t){var n,o=[],i=t||{};return function(t,i){o.push("")}.call(this,"comment"in i?i.comment:"undefined"!=typeof comment?comment:void 0,"pluralize"in i?i.pluralize:"undefined"!=typeof pluralize?pluralize:void 0),o.join("")}};return e.compiled=!0,e}),define("app/jade",["libjs-jade-runtime","app/utils","jade!app/text/postbox","jade!app/text/comment","jade!app/text/comment-loader"],function(runtime,utils,tt_postbox,tt_comment,tt_comment_loader){"use strict";var globals={},templates={},load=function(name,js){templates[name]=function(jade){var fn;return js.compiled?js(jade):(eval("fn = "+js),fn)}(runtime)},set=function(e,t){globals[e]=t};return load("postbox",tt_postbox),load("comment",tt_comment),load("comment-loader",tt_comment_loader),set("bool",function(e){return!!e}),set("humanize",function(e){return"object"!=typeof e&&(e=new Date(1e3*parseInt(e,10))),e.toString()}),set("datetime",function(e){return"object"!=typeof e&&(e=new Date(1e3*parseInt(e,10))),[e.getUTCFullYear(),utils.pad(e.getUTCMonth(),2),utils.pad(e.getUTCDay(),2)].join("-")+"T"+[utils.pad(e.getUTCHours(),2),utils.pad(e.getUTCMinutes(),2),utils.pad(e.getUTCSeconds(),2)].join(":")+"Z"}),{set:set,render:function(e,t){var n;if(!templates[e])throw new Error("Template not found: '"+e+"'");t=t||{};var o=[];for(var i in t)t.hasOwnProperty(i)&&!globals.hasOwnProperty(i)&&(o.push(i),globals[i]=t[i]);n=templates[e](globals);for(var a=0;a=t?e:new Array(t-e.length+1).join("0")+e},o=function(e,t,n,o,i,a){var r=document.createElementNS("http://www.w3.org/2000/svg","rect");r.setAttribute("x",o+t*i),r.setAttribute("y",o+n*i),r.setAttribute("width",i),r.setAttribute("height",i),r.setAttribute("style","fill: "+a),e.appendChild(r)},i=function(i,a,r){var s=document.createElementNS("http://www.w3.org/2000/svg","svg");return s.setAttribute("version","1.1"),s.setAttribute("viewBox","0 0 "+r+" "+r),s.setAttribute("preserveAspectRatio","xMinYMin meet"),s.setAttribute("shape-rendering","crispEdges"),o(s,0,0,0,r+2*a,t["avatar-bg"]),null===typeof i?s:(e.when(i,function(e){var i=n((parseInt(e.substr(-16),16)%Math.pow(2,18)).toString(2),18),r=0;s.setAttribute("data-hash",e);for(var m=parseInt(i.substring(i.length-3,i.length),2),c=t["avatar-fg"][m%t["avatar-fg"].length],d=0;d0?e(".notification-section",m).show():e(".notification-section",m).hide()};e("[name='email']",m).on("input",c),c(),n["require-email"]&&e("[name='email']",m).setAttribute("placeholder",e("[name='email']",m).getAttribute("placeholder").replace(/ \(.*\)/,"")),n["require-author"]&&(e("[name='author']",m).placeholder=e("[name='author']",m).placeholder.replace(/ \(.*\)/,"")),e("[name='preview']",m).on("click",function(){o.preview(t.text(e(".textarea",m).innerHTML)).then(function(t){e(".preview .text",m).innerHTML=t,m.classList.add("preview-mode")})});var p=function(){e(".preview .text",m).innerHTML="",m.classList.remove("preview-mode")};return e("[name='edit']",m).on("click",p),e(".preview",m).on("click",p),e("[type=submit]",m).on("click",function(){if(p(),m.validate()){var n=e("[name=author]",m).value||null,i=e("[name=email]",m).value||null,r=e("[name=website]",m).value||null;s.setItem("author",JSON.stringify(n)),s.setItem("email",JSON.stringify(i)),s.setItem("website",JSON.stringify(r)),o.create(e("#isso-thread").getAttribute("data-isso-id"),{author:n,email:i,website:r,text:t.text(e(".textarea",m).innerHTML),parent:a||null,title:e("#isso-thread").getAttribute("data-title")||null,notification:e("[name=notification]",m).checked()?1:0}).then(function(t){e(".textarea",m).innerHTML="",e(".textarea",m).blur(),d(t,!0),null!==a&&m.onsuccess()})}}),r.editorify(e(".textarea",m)),m},c=function(t,a){var r;null===t.id?(r=e("#isso-root"),t.name="null"):(r=e("#isso-"+t.id+" > .text-wrapper > .isso-follow-up"),t.name=t.id);var s=e.htmlify(i.render("comment-loader",{comment:t}));r.append(s),e("a.load_hidden",s).on("click",function(){s.remove(),o.fetch(e("#isso-thread").getAttribute("data-isso-id"),n["reveal-on-click"],n["max-comments-nested"],t.id,a).then(function(e){if(0!==e.total_replies){var t=0;e.replies.forEach(function(e){d(e,!1),e.created>t&&(t=e.created)}),e.hidden_replies>0&&c(e,t)}},function(e){console.log(e)})})},d=function(p,l){var u=e.htmlify(i.render("comment",{comment:p})),f=function(){e(".permalink > time",u).textContent=t.ago(s.offset.localTime(),new Date(1e3*parseInt(p.created,10))),setTimeout(f,6e4)};f(),n.avatar&&e("div.avatar > svg",u).replace(r.identicons.generate(p.hash,4,48));var h;h=e(null===p.parent?"#isso-root":"#isso-"+p.parent+" > .text-wrapper > .isso-follow-up"),h.append(u),l&&u.scrollIntoView();var v=e("#isso-"+p.id+" > .text-wrapper > .isso-comment-footer"),b=e("#isso-"+p.id+" > .text-wrapper > .isso-comment-header"),x=e("#isso-"+p.id+" > .text-wrapper > .text"),w=null;if(e("a.reply",v).toggle("click",function(t){w=v.insertAfter(new m(null===p.parent?p.id:p.parent)),w.onsuccess=function(){t.next()},e(".textarea",w).focus(),e("a.reply",v).textContent=a.translate("comment-close")},function(){w.remove(),e("a.reply",v).textContent=a.translate("comment-reply")}),n.vote){var g=n["vote-levels"];"string"==typeof g&&(g=g.split(","));var y=function(t){var n=e("span.votes",v);if(null===n?v.prepend(e.new("span.votes",t)):n.textContent=t,t?u.classList.remove("isso-no-votes"):u.classList.add("isso-no-votes"),g)for(var o=!0,i=0;i<=g.length;i++)o&&(i>=g.length||t ",e("a.edit",v).remove(),e("a.delete",v).remove()),t.textContent=a.translate("comment-delete")})});var k=function(n){t.cookie("isso-"+p.id)?setTimeout(function(){k(n)},15e3):null!==e(n,v)&&e(n,v).remove()};k("a.edit"),k("a.delete");var j=function(e){t.cookie("isso-"+p.id)?setTimeout(function(){j(e)},15e3):v.append(e)};if(!n["reply-to-self"]&&t.cookie("isso-"+p.id)&&j(e("a.reply",v).detach()),p.hasOwnProperty("replies")){var z=0;p.replies.forEach(function(e){d(e,!1),e.created>z&&(z=e.created)}),p.hidden_replies>0&&c(p,z)}};return{insert:d,insert_loader:c,Postbox:m}}),define("app/count",["app/api","app/dom","app/i18n"],function(e,t,n){return function(){var o={};t.each("a",function(e){if(e.href.match&&e.href.match(/#isso-thread$/)){var t=e.getAttribute("data-isso-id")||e.href.match(/^(.+)#isso-thread$/)[1].replace(/^.*\/\/[^\/]+/,"");t in o?o[t].push(e):o[t]=[e]}});var i=Object.keys(o);e.count(i).then(function(e){for(var t in o)if(o.hasOwnProperty(t))for(var a=i.indexOf(t),r=0;r h4 {\n color: #555;\n font-weight: bold;\n}\n#isso-thread > .isso-feedlink {\n float: right;\n padding-left: 1em;\n}\n#isso-thread > .isso-feedlink > a {\n font-size: 0.8em;\n vertical-align: bottom;\n}\n#isso-thread .textarea {\n min-height: 58px;\n outline: 0;\n}\n#isso-thread .textarea.placeholder {\n color: #757575;\n}\n\n#isso-root .isso-comment {\n max-width: 68em;\n padding-top: 0.95em;\n margin: 0.95em auto;\n}\n#isso-root .preview .isso-comment {\n padding-top: 0;\n margin: 0;\n}\n#isso-root .isso-comment:not(:first-of-type),\n.isso-follow-up .isso-comment {\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n.isso-comment > div.avatar {\n display: block;\n float: left;\n width: 7%;\n margin: 3px 15px 0 0;\n}\n.isso-comment > div.avatar > svg {\n max-width: 48px;\n max-height: 48px;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 3px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.isso-comment > div.text-wrapper {\n display: block;\n}\n.isso-comment .isso-follow-up {\n padding-left: calc(7% + 20px);\n}\n.isso-comment > div.text-wrapper > .isso-comment-header, .isso-comment > div.text-wrapper > .isso-comment-footer {\n font-size: 0.95em;\n}\n.isso-comment > div.text-wrapper > .isso-comment-header {\n font-size: 0.85em;\n}\n.isso-comment > div.text-wrapper > .isso-comment-header .spacer {\n padding: 0 6px;\n}\n.isso-comment > div.text-wrapper > .isso-comment-header .spacer,\n.isso-comment > div.text-wrapper > .isso-comment-header a.permalink,\n.isso-comment > div.text-wrapper > .isso-comment-header .note,\n.isso-comment > div.text-wrapper > .isso-comment-header a.parent {\n color: gray !important;\n font-weight: normal;\n text-shadow: none !important;\n}\n.isso-comment > div.text-wrapper > .isso-comment-header .spacer:hover,\n.isso-comment > div.text-wrapper > .isso-comment-header a.permalink:hover,\n.isso-comment > div.text-wrapper > .isso-comment-header .note:hover,\n.isso-comment > div.text-wrapper > .isso-comment-header a.parent:hover {\n color: #606060 !important;\n}\n.isso-comment > div.text-wrapper > .isso-comment-header .note {\n float: right;\n}\n.isso-comment > div.text-wrapper > .isso-comment-header .author {\n font-weight: bold;\n color: #555;\n}\n.isso-comment > div.text-wrapper > .textarea-wrapper .textarea,\n.isso-comment > div.text-wrapper > .textarea-wrapper .preview {\n margin-top: 0.2em;\n}\n.isso-comment > div.text-wrapper > div.text p {\n margin-top: 0.2em;\n}\n.isso-comment > div.text-wrapper > div.text p:last-child {\n margin-bottom: 0.2em;\n}\n.isso-comment > div.text-wrapper > div.text h1,\n.isso-comment > div.text-wrapper > div.text h2,\n.isso-comment > div.text-wrapper > div.text h3,\n.isso-comment > div.text-wrapper > div.text h4,\n.isso-comment > div.text-wrapper > div.text h5,\n.isso-comment > div.text-wrapper > div.text h6 {\n font-size: 130%;\n font-weight: bold;\n}\n.isso-comment > div.text-wrapper > div.textarea-wrapper .textarea,\n.isso-comment > div.text-wrapper > div.textarea-wrapper .preview {\n width: 100%;\n border: 1px solid #f0f0f0;\n border-radius: 2px;\n box-shadow: 0 0 2px #888;\n}\n.isso-comment > div.text-wrapper > .isso-comment-footer {\n font-size: 0.80em;\n color: gray !important;\n clear: left;\n}\n.isso-feedlink,\n.isso-comment > div.text-wrapper > .isso-comment-footer a {\n font-weight: bold;\n text-decoration: none;\n}\n.isso-feedlink:hover,\n.isso-comment > div.text-wrapper > .isso-comment-footer a:hover {\n color: #111111 !important;\n text-shadow: #aaaaaa 0 0 1px !important;\n}\n.isso-comment > div.text-wrapper > .isso-comment-footer > a {\n position: relative;\n top: .2em;\n}\n.isso-comment > div.text-wrapper > .isso-comment-footer > a + a {\n padding-left: 1em;\n}\n.isso-comment > div.text-wrapper > .isso-comment-footer .votes {\n color: gray;\n}\n.isso-comment > div.text-wrapper > .isso-comment-footer .upvote svg,\n.isso-comment > div.text-wrapper > .isso-comment-footer .downvote svg {\n position: relative;\n top: .2em;\n}\n.isso-comment .isso-postbox {\n margin-top: 0.8em;\n}\n.isso-comment.isso-no-votes span.votes {\n display: none;\n}\n\n.isso-postbox {\n max-width: 68em;\n margin: 0 auto 2em;\n clear: right;\n}\n.isso-postbox > .form-wrapper {\n display: block;\n padding: 0;\n}\n.isso-postbox > .form-wrapper > .auth-section,\n.isso-postbox > .form-wrapper > .auth-section .post-action {\n display: block;\n}\n.isso-postbox > .form-wrapper .textarea,\n.isso-postbox > .form-wrapper .preview {\n margin: 0 0 .3em;\n padding: .4em .8em;\n border-radius: 3px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.isso-postbox > .form-wrapper input[type=checkbox] {\n vertical-align: middle;\n position: relative;\n bottom: 1px;\n margin-left: 0;\n}\n.isso-postbox > .form-wrapper .notification-section {\n font-size: 0.90em;\n padding-top: .3em;\n}\n#isso-thread .textarea:focus,\n#isso-thread input:focus {\n border-color: rgba(0, 0, 0, 0.8);\n}\n.isso-postbox > .form-wrapper > .auth-section .input-wrapper {\n display: inline-block;\n position: relative;\n max-width: 25%;\n margin: 0;\n}\n.isso-postbox > .form-wrapper > .auth-section .input-wrapper input {\n padding: .3em 10px;\n max-width: 100%;\n border-radius: 3px;\n background-color: #fff;\n line-height: 1.4em;\n border: 1px solid rgba(0, 0, 0, 0.2);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.isso-postbox > .form-wrapper > .auth-section .post-action {\n display: inline-block;\n float: right;\n margin: 0 0 0 5px;\n}\n.isso-postbox > .form-wrapper > .auth-section .post-action > input {\n padding: calc(.3em - 1px);\n border-radius: 2px;\n border: 1px solid #CCC;\n background-color: #DDD;\n cursor: pointer;\n outline: 0;\n line-height: 1.4em;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.isso-postbox > .form-wrapper > .auth-section .post-action > input:hover {\n background-color: #CCC;\n}\n.isso-postbox > .form-wrapper > .auth-section .post-action > input:active {\n background-color: #BBB;\n}\n.isso-postbox > .form-wrapper .preview,\n.isso-postbox > .form-wrapper input[name="edit"],\n.isso-postbox.preview-mode > .form-wrapper input[name="preview"],\n.isso-postbox.preview-mode > .form-wrapper .textarea {\n display: none;\n}\n.isso-postbox.preview-mode > .form-wrapper .preview {\n display: block;\n}\n.isso-postbox.preview-mode > .form-wrapper input[name="edit"] {\n display: inline;\n}\n.isso-postbox > .form-wrapper .preview {\n background-color: #f8f8f8;\n background: repeating-linear-gradient(\n -45deg,\n #f8f8f8,\n #f8f8f8 10px,\n #fff 10px,\n #fff 20px\n );\n}\n.isso-postbox > .form-wrapper > .notification-section {\n display: none;\n padding-bottom: 10px;\n}\n@media screen and (max-width:600px) {\n .isso-postbox > .form-wrapper > .auth-section .input-wrapper {\n display: block;\n max-width: 100%;\n margin: 0 0 .3em;\n }\n .isso-postbox > .form-wrapper > .auth-section .input-wrapper input {\n width: 100%;\n }\n}\n'}),define("app/text/css",["text!../../../css/isso.css"],function(e){return{inline:e}}),define("text!app/text/arrow-down.svg",[],function(){return'\x3c!-- Generator: IcoMoon.io --\x3e\n'}),define("text!app/text/arrow-up.svg",[],function(){return'\x3c!-- Generator: IcoMoon.io --\x3e\n'}),define("app/text/svg",["text!./arrow-down.svg","text!./arrow-up.svg"],function(e,t){return{"arrow-down":e,"arrow-up":t}}),require(["app/lib/ready","app/config","app/i18n","app/api","app/isso","app/count","app/dom","app/text/css","app/text/svg","app/jade"],function(e,t,n,o,i,a,r,s,m,c){"use strict";function d(){if(l=r("#isso-thread"),u=r.new("h4"),t.css&&null===r("style#isso-style")){var e=r.new("style");e.id="isso-style",e.type="text/css",e.textContent=s.inline,r("head").append(e)}if(a(),null===l)return console.log("abort, #isso-thread is missing");if(t.feed){var m=r.new("a",n.translate("atom-feed")),c=r.new("span.isso-feedlink");m.href=o.feed(l.getAttribute("data-isso-id")),c.appendChild(m),l.append(c)}l.append(u),l.append(new i.Postbox(null)),l.append('')}function p(){0!=r("#isso-root").length&&(r("#isso-root").textContent="",o.fetch(l.getAttribute("data-isso-id")||location.pathname,t["max-comments-top"],t["max-comments-nested"]).then(function(e){if(0===e.total_replies)return void(u.textContent=n.translate("no-comments"));var t=0,o=e.total_replies;e.replies.forEach(function(e){i.insert(e,!1),e.created>t&&(t=e.created),o+=e.total_replies}),u.textContent=n.pluralize("num-comments",o),e.hidden_replies>0&&i.insert_loader(e,t),window.location.hash.length>0&&window.location.hash.match("^#isso-[0-9]+$")&&r(window.location.hash).scrollIntoView()},function(e){console.log(e)}))}c.set("conf",t),c.set("i18n",n.translate),c.set("pluralize",n.pluralize),c.set("svg",m);var l,u;e(function(){d(),p()}),window.Isso={init:d,fetchComments:p}}),define("embed",function(){})}();
\ No newline at end of file
diff --git a/flex/static/pygments/abap.css b/flex/static/pygments/abap.css
new file mode 100644
index 0000000..8564d98
--- /dev/null
+++ b/flex/static/pygments/abap.css
@@ -0,0 +1,120 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #888888; font-style: italic } /* Comment */
+.highlight .err { color: #FF0000 } /* Error */
+.highlight .k { color: #0000ff } /* Keyword */
+.highlight .n { color: #000000 } /* Name */
+.highlight .ch { color: #888888; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #888888; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #888888; font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: #888888; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #888888; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #888888; font-style: italic } /* Comment.Special */
+.highlight .kc { color: #0000ff } /* Keyword.Constant */
+.highlight .kd { color: #0000ff } /* Keyword.Declaration */
+.highlight .kn { color: #0000ff } /* Keyword.Namespace */
+.highlight .kp { color: #0000ff } /* Keyword.Pseudo */
+.highlight .kr { color: #0000ff } /* Keyword.Reserved */
+.highlight .kt { color: #0000ff } /* Keyword.Type */
+.highlight .m { color: #33aaff } /* Literal.Number */
+.highlight .s { color: #55aa22 } /* Literal.String */
+.highlight .na { color: #000000 } /* Name.Attribute */
+.highlight .nb { color: #000000 } /* Name.Builtin */
+.highlight .nc { color: #000000 } /* Name.Class */
+.highlight .no { color: #000000 } /* Name.Constant */
+.highlight .nd { color: #000000 } /* Name.Decorator */
+.highlight .ni { color: #000000 } /* Name.Entity */
+.highlight .ne { color: #000000 } /* Name.Exception */
+.highlight .nf { color: #000000 } /* Name.Function */
+.highlight .nl { color: #000000 } /* Name.Label */
+.highlight .nn { color: #000000 } /* Name.Namespace */
+.highlight .nx { color: #000000 } /* Name.Other */
+.highlight .py { color: #000000 } /* Name.Property */
+.highlight .nt { color: #000000 } /* Name.Tag */
+.highlight .nv { color: #000000 } /* Name.Variable */
+.highlight .ow { color: #0000ff } /* Operator.Word */
+.highlight .mb { color: #33aaff } /* Literal.Number.Bin */
+.highlight .mf { color: #33aaff } /* Literal.Number.Float */
+.highlight .mh { color: #33aaff } /* Literal.Number.Hex */
+.highlight .mi { color: #33aaff } /* Literal.Number.Integer */
+.highlight .mo { color: #33aaff } /* Literal.Number.Oct */
+.highlight .sa { color: #55aa22 } /* Literal.String.Affix */
+.highlight .sb { color: #55aa22 } /* Literal.String.Backtick */
+.highlight .sc { color: #55aa22 } /* Literal.String.Char */
+.highlight .dl { color: #55aa22 } /* Literal.String.Delimiter */
+.highlight .sd { color: #55aa22 } /* Literal.String.Doc */
+.highlight .s2 { color: #55aa22 } /* Literal.String.Double */
+.highlight .se { color: #55aa22 } /* Literal.String.Escape */
+.highlight .sh { color: #55aa22 } /* Literal.String.Heredoc */
+.highlight .si { color: #55aa22 } /* Literal.String.Interpol */
+.highlight .sx { color: #55aa22 } /* Literal.String.Other */
+.highlight .sr { color: #55aa22 } /* Literal.String.Regex */
+.highlight .s1 { color: #55aa22 } /* Literal.String.Single */
+.highlight .ss { color: #55aa22 } /* Literal.String.Symbol */
+.highlight .bp { color: #000000 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #000000 } /* Name.Function.Magic */
+.highlight .vc { color: #000000 } /* Name.Variable.Class */
+.highlight .vg { color: #000000 } /* Name.Variable.Global */
+.highlight .vi { color: #000000 } /* Name.Variable.Instance */
+.highlight .vm { color: #000000 } /* Name.Variable.Magic */
+.highlight .il { color: #33aaff } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #888888; font-style: italic } /* Comment */
+.literal-block .err { color: #FF0000 } /* Error */
+.literal-block .k { color: #0000ff } /* Keyword */
+.literal-block .n { color: #000000 } /* Name */
+.literal-block .ch { color: #888888; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #888888; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #888888; font-style: italic } /* Comment.Preproc */
+.literal-block .cpf { color: #888888; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #888888; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #888888; font-style: italic } /* Comment.Special */
+.literal-block .kc { color: #0000ff } /* Keyword.Constant */
+.literal-block .kd { color: #0000ff } /* Keyword.Declaration */
+.literal-block .kn { color: #0000ff } /* Keyword.Namespace */
+.literal-block .kp { color: #0000ff } /* Keyword.Pseudo */
+.literal-block .kr { color: #0000ff } /* Keyword.Reserved */
+.literal-block .kt { color: #0000ff } /* Keyword.Type */
+.literal-block .m { color: #33aaff } /* Literal.Number */
+.literal-block .s { color: #55aa22 } /* Literal.String */
+.literal-block .na { color: #000000 } /* Name.Attribute */
+.literal-block .nb { color: #000000 } /* Name.Builtin */
+.literal-block .nc { color: #000000 } /* Name.Class */
+.literal-block .no { color: #000000 } /* Name.Constant */
+.literal-block .nd { color: #000000 } /* Name.Decorator */
+.literal-block .ni { color: #000000 } /* Name.Entity */
+.literal-block .ne { color: #000000 } /* Name.Exception */
+.literal-block .nf { color: #000000 } /* Name.Function */
+.literal-block .nl { color: #000000 } /* Name.Label */
+.literal-block .nn { color: #000000 } /* Name.Namespace */
+.literal-block .nx { color: #000000 } /* Name.Other */
+.literal-block .py { color: #000000 } /* Name.Property */
+.literal-block .nt { color: #000000 } /* Name.Tag */
+.literal-block .nv { color: #000000 } /* Name.Variable */
+.literal-block .ow { color: #0000ff } /* Operator.Word */
+.literal-block .mb { color: #33aaff } /* Literal.Number.Bin */
+.literal-block .mf { color: #33aaff } /* Literal.Number.Float */
+.literal-block .mh { color: #33aaff } /* Literal.Number.Hex */
+.literal-block .mi { color: #33aaff } /* Literal.Number.Integer */
+.literal-block .mo { color: #33aaff } /* Literal.Number.Oct */
+.literal-block .sa { color: #55aa22 } /* Literal.String.Affix */
+.literal-block .sb { color: #55aa22 } /* Literal.String.Backtick */
+.literal-block .sc { color: #55aa22 } /* Literal.String.Char */
+.literal-block .dl { color: #55aa22 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #55aa22 } /* Literal.String.Doc */
+.literal-block .s2 { color: #55aa22 } /* Literal.String.Double */
+.literal-block .se { color: #55aa22 } /* Literal.String.Escape */
+.literal-block .sh { color: #55aa22 } /* Literal.String.Heredoc */
+.literal-block .si { color: #55aa22 } /* Literal.String.Interpol */
+.literal-block .sx { color: #55aa22 } /* Literal.String.Other */
+.literal-block .sr { color: #55aa22 } /* Literal.String.Regex */
+.literal-block .s1 { color: #55aa22 } /* Literal.String.Single */
+.literal-block .ss { color: #55aa22 } /* Literal.String.Symbol */
+.literal-block .bp { color: #000000 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #000000 } /* Name.Function.Magic */
+.literal-block .vc { color: #000000 } /* Name.Variable.Class */
+.literal-block .vg { color: #000000 } /* Name.Variable.Global */
+.literal-block .vi { color: #000000 } /* Name.Variable.Instance */
+.literal-block .vm { color: #000000 } /* Name.Variable.Magic */
+.literal-block .il { color: #33aaff } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/abap.min.css b/flex/static/pygments/abap.min.css
new file mode 100644
index 0000000..84f7e50
--- /dev/null
+++ b/flex/static/pygments/abap.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:#888;font-style:italic}.highlight .err{color:red}.highlight .k{color:#00f}.highlight .n{color:#000}.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cp,.highlight .cpf,.highlight .cs{color:#888;font-style:italic}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:#00f}.highlight .m{color:#3af}.highlight .s{color:#5a2}.highlight .na,.highlight .nb,.highlight .nc,.highlight .nd,.highlight .ne,.highlight .nf,.highlight .ni,.highlight .nl,.highlight .nn,.highlight .no,.highlight .nt,.highlight .nv,.highlight .nx,.highlight .py{color:#000}.highlight .ow{color:#00f}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#3af}.highlight .dl,.highlight .s1,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#5a2}.highlight .bp,.highlight .fm,.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#000}.highlight .il{color:#3af}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:#888;font-style:italic}.literal-block .err{color:red}.literal-block .k{color:#00f}.literal-block .n{color:#000}.literal-block .c1,.literal-block .ch,.literal-block .cm,.literal-block .cp,.literal-block .cpf,.literal-block .cs{color:#888;font-style:italic}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr,.literal-block .kt{color:#00f}.literal-block .m{color:#3af}.literal-block .s{color:#5a2}.literal-block .na,.literal-block .nb,.literal-block .nc,.literal-block .nd,.literal-block .ne,.literal-block .nf,.literal-block .ni,.literal-block .nl,.literal-block .nn,.literal-block .no,.literal-block .nt,.literal-block .nv,.literal-block .nx,.literal-block .py{color:#000}.literal-block .ow{color:#00f}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#3af}.literal-block .dl,.literal-block .s1,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#5a2}.literal-block .bp,.literal-block .fm,.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#000}.literal-block .il{color:#3af}
\ No newline at end of file
diff --git a/flex/static/pygments/algol.css b/flex/static/pygments/algol.css
new file mode 100644
index 0000000..07a1f9f
--- /dev/null
+++ b/flex/static/pygments/algol.css
@@ -0,0 +1,88 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #888888; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { font-weight: bold; text-decoration: underline } /* Keyword */
+.highlight .ch { color: #888888; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #888888; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #888888; font-weight: bold } /* Comment.Preproc */
+.highlight .cpf { color: #888888; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #888888; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #888888; font-weight: bold } /* Comment.Special */
+.highlight .kc { font-weight: bold; text-decoration: underline } /* Keyword.Constant */
+.highlight .kd { font-weight: bold; font-style: italic; text-decoration: underline } /* Keyword.Declaration */
+.highlight .kn { font-weight: bold; text-decoration: underline } /* Keyword.Namespace */
+.highlight .kp { font-weight: bold; text-decoration: underline } /* Keyword.Pseudo */
+.highlight .kr { font-weight: bold; text-decoration: underline } /* Keyword.Reserved */
+.highlight .kt { font-weight: bold; text-decoration: underline } /* Keyword.Type */
+.highlight .s { color: #666666; font-style: italic } /* Literal.String */
+.highlight .nb { font-weight: bold; font-style: italic } /* Name.Builtin */
+.highlight .nc { color: #666666; font-weight: bold; font-style: italic } /* Name.Class */
+.highlight .no { color: #666666; font-weight: bold; font-style: italic } /* Name.Constant */
+.highlight .nf { color: #666666; font-weight: bold; font-style: italic } /* Name.Function */
+.highlight .nn { color: #666666; font-weight: bold; font-style: italic } /* Name.Namespace */
+.highlight .nv { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable */
+.highlight .ow { font-weight: bold } /* Operator.Word */
+.highlight .sa { color: #666666; font-style: italic } /* Literal.String.Affix */
+.highlight .sb { color: #666666; font-style: italic } /* Literal.String.Backtick */
+.highlight .sc { color: #666666; font-style: italic } /* Literal.String.Char */
+.highlight .dl { color: #666666; font-style: italic } /* Literal.String.Delimiter */
+.highlight .sd { color: #666666; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #666666; font-style: italic } /* Literal.String.Double */
+.highlight .se { color: #666666; font-style: italic } /* Literal.String.Escape */
+.highlight .sh { color: #666666; font-style: italic } /* Literal.String.Heredoc */
+.highlight .si { color: #666666; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #666666; font-style: italic } /* Literal.String.Other */
+.highlight .sr { color: #666666; font-style: italic } /* Literal.String.Regex */
+.highlight .s1 { color: #666666; font-style: italic } /* Literal.String.Single */
+.highlight .ss { color: #666666; font-style: italic } /* Literal.String.Symbol */
+.highlight .bp { font-weight: bold; font-style: italic } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #666666; font-weight: bold; font-style: italic } /* Name.Function.Magic */
+.highlight .vc { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Class */
+.highlight .vg { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Global */
+.highlight .vi { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Instance */
+.highlight .vm { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Magic */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #888888; font-style: italic } /* Comment */
+.literal-block .err { border: 1px solid #FF0000 } /* Error */
+.literal-block .k { font-weight: bold; text-decoration: underline } /* Keyword */
+.literal-block .ch { color: #888888; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #888888; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #888888; font-weight: bold } /* Comment.Preproc */
+.literal-block .cpf { color: #888888; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #888888; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #888888; font-weight: bold } /* Comment.Special */
+.literal-block .kc { font-weight: bold; text-decoration: underline } /* Keyword.Constant */
+.literal-block .kd { font-weight: bold; font-style: italic; text-decoration: underline } /* Keyword.Declaration */
+.literal-block .kn { font-weight: bold; text-decoration: underline } /* Keyword.Namespace */
+.literal-block .kp { font-weight: bold; text-decoration: underline } /* Keyword.Pseudo */
+.literal-block .kr { font-weight: bold; text-decoration: underline } /* Keyword.Reserved */
+.literal-block .kt { font-weight: bold; text-decoration: underline } /* Keyword.Type */
+.literal-block .s { color: #666666; font-style: italic } /* Literal.String */
+.literal-block .nb { font-weight: bold; font-style: italic } /* Name.Builtin */
+.literal-block .nc { color: #666666; font-weight: bold; font-style: italic } /* Name.Class */
+.literal-block .no { color: #666666; font-weight: bold; font-style: italic } /* Name.Constant */
+.literal-block .nf { color: #666666; font-weight: bold; font-style: italic } /* Name.Function */
+.literal-block .nn { color: #666666; font-weight: bold; font-style: italic } /* Name.Namespace */
+.literal-block .nv { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable */
+.literal-block .ow { font-weight: bold } /* Operator.Word */
+.literal-block .sa { color: #666666; font-style: italic } /* Literal.String.Affix */
+.literal-block .sb { color: #666666; font-style: italic } /* Literal.String.Backtick */
+.literal-block .sc { color: #666666; font-style: italic } /* Literal.String.Char */
+.literal-block .dl { color: #666666; font-style: italic } /* Literal.String.Delimiter */
+.literal-block .sd { color: #666666; font-style: italic } /* Literal.String.Doc */
+.literal-block .s2 { color: #666666; font-style: italic } /* Literal.String.Double */
+.literal-block .se { color: #666666; font-style: italic } /* Literal.String.Escape */
+.literal-block .sh { color: #666666; font-style: italic } /* Literal.String.Heredoc */
+.literal-block .si { color: #666666; font-style: italic } /* Literal.String.Interpol */
+.literal-block .sx { color: #666666; font-style: italic } /* Literal.String.Other */
+.literal-block .sr { color: #666666; font-style: italic } /* Literal.String.Regex */
+.literal-block .s1 { color: #666666; font-style: italic } /* Literal.String.Single */
+.literal-block .ss { color: #666666; font-style: italic } /* Literal.String.Symbol */
+.literal-block .bp { font-weight: bold; font-style: italic } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #666666; font-weight: bold; font-style: italic } /* Name.Function.Magic */
+.literal-block .vc { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Class */
+.literal-block .vg { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Global */
+.literal-block .vi { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Instance */
+.literal-block .vm { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Magic */
\ No newline at end of file
diff --git a/flex/static/pygments/algol.min.css b/flex/static/pygments/algol.min.css
new file mode 100644
index 0000000..9f59c51
--- /dev/null
+++ b/flex/static/pygments/algol.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:#888;font-style:italic}.highlight .err{border:1px solid red}.highlight .k{font-weight:700;text-decoration:underline}.highlight .ch,.highlight .cm{color:#888;font-style:italic}.highlight .cp{color:#888;font-weight:700}.highlight .c1,.highlight .cpf{color:#888;font-style:italic}.highlight .cs{color:#888;font-weight:700}.highlight .kc,.highlight .kd{font-weight:700;text-decoration:underline}.highlight .kd{font-style:italic}.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{font-weight:700;text-decoration:underline}.highlight .s{color:#666;font-style:italic}.highlight .nb,.highlight .nc{font-weight:700;font-style:italic}.highlight .nc{color:#666}.highlight .nf,.highlight .nn,.highlight .no,.highlight .nv{color:#666;font-weight:700;font-style:italic}.highlight .ow{font-weight:700}.highlight .dl,.highlight .s1,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#666;font-style:italic}.highlight .bp,.highlight .fm{font-weight:700;font-style:italic}.highlight .fm{color:#666}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#666;font-weight:700;font-style:italic}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:#888;font-style:italic}.literal-block .err{border:1px solid red}.literal-block .k{font-weight:700;text-decoration:underline}.literal-block .ch,.literal-block .cm{color:#888;font-style:italic}.literal-block .cp{color:#888;font-weight:700}.literal-block .c1,.literal-block .cpf{color:#888;font-style:italic}.literal-block .cs{color:#888;font-weight:700}.literal-block .kc,.literal-block .kd{font-weight:700;text-decoration:underline}.literal-block .kd{font-style:italic}.literal-block .kn,.literal-block .kp,.literal-block .kr,.literal-block .kt{font-weight:700;text-decoration:underline}.literal-block .s{color:#666;font-style:italic}.literal-block .nb,.literal-block .nc{font-weight:700;font-style:italic}.literal-block .nc{color:#666}.literal-block .nf,.literal-block .nn,.literal-block .no,.literal-block .nv{color:#666;font-weight:700;font-style:italic}.literal-block .ow{font-weight:700}.literal-block .dl,.literal-block .s1,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#666;font-style:italic}.literal-block .bp,.literal-block .fm{font-weight:700;font-style:italic}.literal-block .fm{color:#666}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#666;font-weight:700;font-style:italic}
\ No newline at end of file
diff --git a/flex/static/pygments/algol_nu.css b/flex/static/pygments/algol_nu.css
new file mode 100644
index 0000000..ece43ad
--- /dev/null
+++ b/flex/static/pygments/algol_nu.css
@@ -0,0 +1,88 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #888888; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { font-weight: bold } /* Keyword */
+.highlight .ch { color: #888888; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #888888; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #888888; font-weight: bold } /* Comment.Preproc */
+.highlight .cpf { color: #888888; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #888888; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #888888; font-weight: bold } /* Comment.Special */
+.highlight .kc { font-weight: bold } /* Keyword.Constant */
+.highlight .kd { font-weight: bold; font-style: italic } /* Keyword.Declaration */
+.highlight .kn { font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { font-weight: bold } /* Keyword.Type */
+.highlight .s { color: #666666; font-style: italic } /* Literal.String */
+.highlight .nb { font-weight: bold; font-style: italic } /* Name.Builtin */
+.highlight .nc { color: #666666; font-weight: bold; font-style: italic } /* Name.Class */
+.highlight .no { color: #666666; font-weight: bold; font-style: italic } /* Name.Constant */
+.highlight .nf { color: #666666; font-weight: bold; font-style: italic } /* Name.Function */
+.highlight .nn { color: #666666; font-weight: bold; font-style: italic } /* Name.Namespace */
+.highlight .nv { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable */
+.highlight .ow { font-weight: bold } /* Operator.Word */
+.highlight .sa { color: #666666; font-style: italic } /* Literal.String.Affix */
+.highlight .sb { color: #666666; font-style: italic } /* Literal.String.Backtick */
+.highlight .sc { color: #666666; font-style: italic } /* Literal.String.Char */
+.highlight .dl { color: #666666; font-style: italic } /* Literal.String.Delimiter */
+.highlight .sd { color: #666666; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #666666; font-style: italic } /* Literal.String.Double */
+.highlight .se { color: #666666; font-style: italic } /* Literal.String.Escape */
+.highlight .sh { color: #666666; font-style: italic } /* Literal.String.Heredoc */
+.highlight .si { color: #666666; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #666666; font-style: italic } /* Literal.String.Other */
+.highlight .sr { color: #666666; font-style: italic } /* Literal.String.Regex */
+.highlight .s1 { color: #666666; font-style: italic } /* Literal.String.Single */
+.highlight .ss { color: #666666; font-style: italic } /* Literal.String.Symbol */
+.highlight .bp { font-weight: bold; font-style: italic } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #666666; font-weight: bold; font-style: italic } /* Name.Function.Magic */
+.highlight .vc { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Class */
+.highlight .vg { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Global */
+.highlight .vi { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Instance */
+.highlight .vm { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Magic */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #888888; font-style: italic } /* Comment */
+.literal-block .err { border: 1px solid #FF0000 } /* Error */
+.literal-block .k { font-weight: bold } /* Keyword */
+.literal-block .ch { color: #888888; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #888888; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #888888; font-weight: bold } /* Comment.Preproc */
+.literal-block .cpf { color: #888888; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #888888; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #888888; font-weight: bold } /* Comment.Special */
+.literal-block .kc { font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { font-weight: bold; font-style: italic } /* Keyword.Declaration */
+.literal-block .kn { font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { font-weight: bold } /* Keyword.Pseudo */
+.literal-block .kr { font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { font-weight: bold } /* Keyword.Type */
+.literal-block .s { color: #666666; font-style: italic } /* Literal.String */
+.literal-block .nb { font-weight: bold; font-style: italic } /* Name.Builtin */
+.literal-block .nc { color: #666666; font-weight: bold; font-style: italic } /* Name.Class */
+.literal-block .no { color: #666666; font-weight: bold; font-style: italic } /* Name.Constant */
+.literal-block .nf { color: #666666; font-weight: bold; font-style: italic } /* Name.Function */
+.literal-block .nn { color: #666666; font-weight: bold; font-style: italic } /* Name.Namespace */
+.literal-block .nv { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable */
+.literal-block .ow { font-weight: bold } /* Operator.Word */
+.literal-block .sa { color: #666666; font-style: italic } /* Literal.String.Affix */
+.literal-block .sb { color: #666666; font-style: italic } /* Literal.String.Backtick */
+.literal-block .sc { color: #666666; font-style: italic } /* Literal.String.Char */
+.literal-block .dl { color: #666666; font-style: italic } /* Literal.String.Delimiter */
+.literal-block .sd { color: #666666; font-style: italic } /* Literal.String.Doc */
+.literal-block .s2 { color: #666666; font-style: italic } /* Literal.String.Double */
+.literal-block .se { color: #666666; font-style: italic } /* Literal.String.Escape */
+.literal-block .sh { color: #666666; font-style: italic } /* Literal.String.Heredoc */
+.literal-block .si { color: #666666; font-style: italic } /* Literal.String.Interpol */
+.literal-block .sx { color: #666666; font-style: italic } /* Literal.String.Other */
+.literal-block .sr { color: #666666; font-style: italic } /* Literal.String.Regex */
+.literal-block .s1 { color: #666666; font-style: italic } /* Literal.String.Single */
+.literal-block .ss { color: #666666; font-style: italic } /* Literal.String.Symbol */
+.literal-block .bp { font-weight: bold; font-style: italic } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #666666; font-weight: bold; font-style: italic } /* Name.Function.Magic */
+.literal-block .vc { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Class */
+.literal-block .vg { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Global */
+.literal-block .vi { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Instance */
+.literal-block .vm { color: #666666; font-weight: bold; font-style: italic } /* Name.Variable.Magic */
\ No newline at end of file
diff --git a/flex/static/pygments/algol_nu.min.css b/flex/static/pygments/algol_nu.min.css
new file mode 100644
index 0000000..b81e201
--- /dev/null
+++ b/flex/static/pygments/algol_nu.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:#888;font-style:italic}.highlight .err{border:1px solid red}.highlight .k{font-weight:700}.highlight .ch,.highlight .cm{color:#888;font-style:italic}.highlight .cp{color:#888;font-weight:700}.highlight .c1,.highlight .cpf{color:#888;font-style:italic}.highlight .cs{color:#888}.highlight .cs,.highlight .kc,.highlight .kd{font-weight:700}.highlight .kd{font-style:italic}.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{font-weight:700}.highlight .s{color:#666;font-style:italic}.highlight .nb,.highlight .nc{font-weight:700;font-style:italic}.highlight .nc{color:#666}.highlight .nf,.highlight .nn,.highlight .no,.highlight .nv{color:#666;font-weight:700;font-style:italic}.highlight .ow{font-weight:700}.highlight .dl,.highlight .s1,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#666;font-style:italic}.highlight .bp,.highlight .fm{font-weight:700;font-style:italic}.highlight .fm{color:#666}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#666;font-weight:700;font-style:italic}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:#888;font-style:italic}.literal-block .err{border:1px solid red}.literal-block .k{font-weight:700}.literal-block .ch,.literal-block .cm{color:#888;font-style:italic}.literal-block .cp{color:#888;font-weight:700}.literal-block .c1,.literal-block .cpf{color:#888;font-style:italic}.literal-block .cs{color:#888;font-weight:700}.literal-block .kc{font-weight:700}.literal-block .kd{font-weight:700;font-style:italic}.literal-block .kn,.literal-block .kp,.literal-block .kr,.literal-block .kt{font-weight:700}.literal-block .s{color:#666;font-style:italic}.literal-block .nb,.literal-block .nc{font-weight:700;font-style:italic}.literal-block .nc{color:#666}.literal-block .nf,.literal-block .nn,.literal-block .no,.literal-block .nv{color:#666;font-weight:700;font-style:italic}.literal-block .ow{font-weight:700}.literal-block .dl,.literal-block .s1,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#666;font-style:italic}.literal-block .bp,.literal-block .fm{font-weight:700;font-style:italic}.literal-block .fm{color:#666}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#666;font-weight:700;font-style:italic}
\ No newline at end of file
diff --git a/flex/static/pygments/arduino.css b/flex/static/pygments/arduino.css
new file mode 100644
index 0000000..9a768da
--- /dev/null
+++ b/flex/static/pygments/arduino.css
@@ -0,0 +1,122 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #95a5a6 } /* Comment */
+.highlight .err { color: #a61717 } /* Error */
+.highlight .k { color: #728E00 } /* Keyword */
+.highlight .n { color: #434f54 } /* Name */
+.highlight .o { color: #728E00 } /* Operator */
+.highlight .ch { color: #95a5a6 } /* Comment.Hashbang */
+.highlight .cm { color: #95a5a6 } /* Comment.Multiline */
+.highlight .cp { color: #728E00 } /* Comment.Preproc */
+.highlight .cpf { color: #95a5a6 } /* Comment.PreprocFile */
+.highlight .c1 { color: #95a5a6 } /* Comment.Single */
+.highlight .cs { color: #95a5a6 } /* Comment.Special */
+.highlight .kc { color: #00979D } /* Keyword.Constant */
+.highlight .kd { color: #728E00 } /* Keyword.Declaration */
+.highlight .kn { color: #728E00 } /* Keyword.Namespace */
+.highlight .kp { color: #00979D } /* Keyword.Pseudo */
+.highlight .kr { color: #00979D } /* Keyword.Reserved */
+.highlight .kt { color: #00979D } /* Keyword.Type */
+.highlight .m { color: #8A7B52 } /* Literal.Number */
+.highlight .s { color: #7F8C8D } /* Literal.String */
+.highlight .na { color: #434f54 } /* Name.Attribute */
+.highlight .nb { color: #728E00 } /* Name.Builtin */
+.highlight .nc { color: #434f54 } /* Name.Class */
+.highlight .no { color: #434f54 } /* Name.Constant */
+.highlight .nd { color: #434f54 } /* Name.Decorator */
+.highlight .ni { color: #434f54 } /* Name.Entity */
+.highlight .ne { color: #434f54 } /* Name.Exception */
+.highlight .nf { color: #D35400 } /* Name.Function */
+.highlight .nl { color: #434f54 } /* Name.Label */
+.highlight .nn { color: #434f54 } /* Name.Namespace */
+.highlight .nx { color: #728E00 } /* Name.Other */
+.highlight .py { color: #434f54 } /* Name.Property */
+.highlight .nt { color: #434f54 } /* Name.Tag */
+.highlight .nv { color: #434f54 } /* Name.Variable */
+.highlight .ow { color: #728E00 } /* Operator.Word */
+.highlight .mb { color: #8A7B52 } /* Literal.Number.Bin */
+.highlight .mf { color: #8A7B52 } /* Literal.Number.Float */
+.highlight .mh { color: #8A7B52 } /* Literal.Number.Hex */
+.highlight .mi { color: #8A7B52 } /* Literal.Number.Integer */
+.highlight .mo { color: #8A7B52 } /* Literal.Number.Oct */
+.highlight .sa { color: #7F8C8D } /* Literal.String.Affix */
+.highlight .sb { color: #7F8C8D } /* Literal.String.Backtick */
+.highlight .sc { color: #7F8C8D } /* Literal.String.Char */
+.highlight .dl { color: #7F8C8D } /* Literal.String.Delimiter */
+.highlight .sd { color: #7F8C8D } /* Literal.String.Doc */
+.highlight .s2 { color: #7F8C8D } /* Literal.String.Double */
+.highlight .se { color: #7F8C8D } /* Literal.String.Escape */
+.highlight .sh { color: #7F8C8D } /* Literal.String.Heredoc */
+.highlight .si { color: #7F8C8D } /* Literal.String.Interpol */
+.highlight .sx { color: #7F8C8D } /* Literal.String.Other */
+.highlight .sr { color: #7F8C8D } /* Literal.String.Regex */
+.highlight .s1 { color: #7F8C8D } /* Literal.String.Single */
+.highlight .ss { color: #7F8C8D } /* Literal.String.Symbol */
+.highlight .bp { color: #728E00 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #D35400 } /* Name.Function.Magic */
+.highlight .vc { color: #434f54 } /* Name.Variable.Class */
+.highlight .vg { color: #434f54 } /* Name.Variable.Global */
+.highlight .vi { color: #434f54 } /* Name.Variable.Instance */
+.highlight .vm { color: #434f54 } /* Name.Variable.Magic */
+.highlight .il { color: #8A7B52 } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #95a5a6 } /* Comment */
+.literal-block .err { color: #a61717 } /* Error */
+.literal-block .k { color: #728E00 } /* Keyword */
+.literal-block .n { color: #434f54 } /* Name */
+.literal-block .o { color: #728E00 } /* Operator */
+.literal-block .ch { color: #95a5a6 } /* Comment.Hashbang */
+.literal-block .cm { color: #95a5a6 } /* Comment.Multiline */
+.literal-block .cp { color: #728E00 } /* Comment.Preproc */
+.literal-block .cpf { color: #95a5a6 } /* Comment.PreprocFile */
+.literal-block .c1 { color: #95a5a6 } /* Comment.Single */
+.literal-block .cs { color: #95a5a6 } /* Comment.Special */
+.literal-block .kc { color: #00979D } /* Keyword.Constant */
+.literal-block .kd { color: #728E00 } /* Keyword.Declaration */
+.literal-block .kn { color: #728E00 } /* Keyword.Namespace */
+.literal-block .kp { color: #00979D } /* Keyword.Pseudo */
+.literal-block .kr { color: #00979D } /* Keyword.Reserved */
+.literal-block .kt { color: #00979D } /* Keyword.Type */
+.literal-block .m { color: #8A7B52 } /* Literal.Number */
+.literal-block .s { color: #7F8C8D } /* Literal.String */
+.literal-block .na { color: #434f54 } /* Name.Attribute */
+.literal-block .nb { color: #728E00 } /* Name.Builtin */
+.literal-block .nc { color: #434f54 } /* Name.Class */
+.literal-block .no { color: #434f54 } /* Name.Constant */
+.literal-block .nd { color: #434f54 } /* Name.Decorator */
+.literal-block .ni { color: #434f54 } /* Name.Entity */
+.literal-block .ne { color: #434f54 } /* Name.Exception */
+.literal-block .nf { color: #D35400 } /* Name.Function */
+.literal-block .nl { color: #434f54 } /* Name.Label */
+.literal-block .nn { color: #434f54 } /* Name.Namespace */
+.literal-block .nx { color: #728E00 } /* Name.Other */
+.literal-block .py { color: #434f54 } /* Name.Property */
+.literal-block .nt { color: #434f54 } /* Name.Tag */
+.literal-block .nv { color: #434f54 } /* Name.Variable */
+.literal-block .ow { color: #728E00 } /* Operator.Word */
+.literal-block .mb { color: #8A7B52 } /* Literal.Number.Bin */
+.literal-block .mf { color: #8A7B52 } /* Literal.Number.Float */
+.literal-block .mh { color: #8A7B52 } /* Literal.Number.Hex */
+.literal-block .mi { color: #8A7B52 } /* Literal.Number.Integer */
+.literal-block .mo { color: #8A7B52 } /* Literal.Number.Oct */
+.literal-block .sa { color: #7F8C8D } /* Literal.String.Affix */
+.literal-block .sb { color: #7F8C8D } /* Literal.String.Backtick */
+.literal-block .sc { color: #7F8C8D } /* Literal.String.Char */
+.literal-block .dl { color: #7F8C8D } /* Literal.String.Delimiter */
+.literal-block .sd { color: #7F8C8D } /* Literal.String.Doc */
+.literal-block .s2 { color: #7F8C8D } /* Literal.String.Double */
+.literal-block .se { color: #7F8C8D } /* Literal.String.Escape */
+.literal-block .sh { color: #7F8C8D } /* Literal.String.Heredoc */
+.literal-block .si { color: #7F8C8D } /* Literal.String.Interpol */
+.literal-block .sx { color: #7F8C8D } /* Literal.String.Other */
+.literal-block .sr { color: #7F8C8D } /* Literal.String.Regex */
+.literal-block .s1 { color: #7F8C8D } /* Literal.String.Single */
+.literal-block .ss { color: #7F8C8D } /* Literal.String.Symbol */
+.literal-block .bp { color: #728E00 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #D35400 } /* Name.Function.Magic */
+.literal-block .vc { color: #434f54 } /* Name.Variable.Class */
+.literal-block .vg { color: #434f54 } /* Name.Variable.Global */
+.literal-block .vi { color: #434f54 } /* Name.Variable.Instance */
+.literal-block .vm { color: #434f54 } /* Name.Variable.Magic */
+.literal-block .il { color: #8A7B52 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/arduino.min.css b/flex/static/pygments/arduino.min.css
new file mode 100644
index 0000000..cca52ff
--- /dev/null
+++ b/flex/static/pygments/arduino.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:#95a5a6}.highlight .err{color:#a61717}.highlight .k{color:#728e00}.highlight .n{color:#434f54}.highlight .o{color:#728e00}.highlight .ch,.highlight .cm{color:#95a5a6}.highlight .cp{color:#728e00}.highlight .c1,.highlight .cpf,.highlight .cs{color:#95a5a6}.highlight .kc{color:#00979d}.highlight .kd,.highlight .kn{color:#728e00}.highlight .kp,.highlight .kr,.highlight .kt{color:#00979d}.highlight .m{color:#8a7b52}.highlight .s{color:#7f8c8d}.highlight .na{color:#434f54}.highlight .nb{color:#728e00}.highlight .nc,.highlight .nd,.highlight .ne,.highlight .ni,.highlight .no{color:#434f54}.highlight .nf{color:#d35400}.highlight .nl,.highlight .nn{color:#434f54}.highlight .nx{color:#728e00}.highlight .nt,.highlight .nv,.highlight .py{color:#434f54}.highlight .ow{color:#728e00}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#8a7b52}.highlight .dl,.highlight .s1,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#7f8c8d}.highlight .bp{color:#728e00}.highlight .fm{color:#d35400}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#434f54}.highlight .il{color:#8a7b52}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:#95a5a6}.literal-block .err{color:#a61717}.literal-block .k{color:#728e00}.literal-block .n{color:#434f54}.literal-block .o{color:#728e00}.literal-block .ch,.literal-block .cm{color:#95a5a6}.literal-block .cp{color:#728e00}.literal-block .c1,.literal-block .cpf,.literal-block .cs{color:#95a5a6}.literal-block .kc{color:#00979d}.literal-block .kd,.literal-block .kn{color:#728e00}.literal-block .kp,.literal-block .kr,.literal-block .kt{color:#00979d}.literal-block .m{color:#8a7b52}.literal-block .s{color:#7f8c8d}.literal-block .na{color:#434f54}.literal-block .nb{color:#728e00}.literal-block .nc,.literal-block .nd,.literal-block .ne,.literal-block .ni,.literal-block .no{color:#434f54}.literal-block .nf{color:#d35400}.literal-block .nl,.literal-block .nn{color:#434f54}.literal-block .nx{color:#728e00}.literal-block .nt,.literal-block .nv,.literal-block .py{color:#434f54}.literal-block .ow{color:#728e00}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#8a7b52}.literal-block .dl,.literal-block .s1,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#7f8c8d}.literal-block .bp{color:#728e00}.literal-block .fm{color:#d35400}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#434f54}.literal-block .il{color:#8a7b52}
\ No newline at end of file
diff --git a/flex/static/pygments/autumn.css b/flex/static/pygments/autumn.css
new file mode 100644
index 0000000..6215d9f
--- /dev/null
+++ b/flex/static/pygments/autumn.css
@@ -0,0 +1,132 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #aaaaaa; font-style: italic } /* Comment */
+.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
+.highlight .k { color: #0000aa } /* Keyword */
+.highlight .ch { color: #aaaaaa; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #aaaaaa; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #4c8317 } /* Comment.Preproc */
+.highlight .cpf { color: #aaaaaa; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #aaaaaa; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #0000aa; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #aa0000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #aa0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00aa00 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #555555 } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #aa0000 } /* Generic.Traceback */
+.highlight .kc { color: #0000aa } /* Keyword.Constant */
+.highlight .kd { color: #0000aa } /* Keyword.Declaration */
+.highlight .kn { color: #0000aa } /* Keyword.Namespace */
+.highlight .kp { color: #0000aa } /* Keyword.Pseudo */
+.highlight .kr { color: #0000aa } /* Keyword.Reserved */
+.highlight .kt { color: #00aaaa } /* Keyword.Type */
+.highlight .m { color: #009999 } /* Literal.Number */
+.highlight .s { color: #aa5500 } /* Literal.String */
+.highlight .na { color: #1e90ff } /* Name.Attribute */
+.highlight .nb { color: #00aaaa } /* Name.Builtin */
+.highlight .nc { color: #00aa00; text-decoration: underline } /* Name.Class */
+.highlight .no { color: #aa0000 } /* Name.Constant */
+.highlight .nd { color: #888888 } /* Name.Decorator */
+.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
+.highlight .nf { color: #00aa00 } /* Name.Function */
+.highlight .nn { color: #00aaaa; text-decoration: underline } /* Name.Namespace */
+.highlight .nt { color: #1e90ff; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #aa0000 } /* Name.Variable */
+.highlight .ow { color: #0000aa } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #009999 } /* Literal.Number.Bin */
+.highlight .mf { color: #009999 } /* Literal.Number.Float */
+.highlight .mh { color: #009999 } /* Literal.Number.Hex */
+.highlight .mi { color: #009999 } /* Literal.Number.Integer */
+.highlight .mo { color: #009999 } /* Literal.Number.Oct */
+.highlight .sa { color: #aa5500 } /* Literal.String.Affix */
+.highlight .sb { color: #aa5500 } /* Literal.String.Backtick */
+.highlight .sc { color: #aa5500 } /* Literal.String.Char */
+.highlight .dl { color: #aa5500 } /* Literal.String.Delimiter */
+.highlight .sd { color: #aa5500 } /* Literal.String.Doc */
+.highlight .s2 { color: #aa5500 } /* Literal.String.Double */
+.highlight .se { color: #aa5500 } /* Literal.String.Escape */
+.highlight .sh { color: #aa5500 } /* Literal.String.Heredoc */
+.highlight .si { color: #aa5500 } /* Literal.String.Interpol */
+.highlight .sx { color: #aa5500 } /* Literal.String.Other */
+.highlight .sr { color: #009999 } /* Literal.String.Regex */
+.highlight .s1 { color: #aa5500 } /* Literal.String.Single */
+.highlight .ss { color: #0000aa } /* Literal.String.Symbol */
+.highlight .bp { color: #00aaaa } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #00aa00 } /* Name.Function.Magic */
+.highlight .vc { color: #aa0000 } /* Name.Variable.Class */
+.highlight .vg { color: #aa0000 } /* Name.Variable.Global */
+.highlight .vi { color: #aa0000 } /* Name.Variable.Instance */
+.highlight .vm { color: #aa0000 } /* Name.Variable.Magic */
+.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #aaaaaa; font-style: italic } /* Comment */
+.literal-block .err { color: #FF0000; background-color: #FFAAAA } /* Error */
+.literal-block .k { color: #0000aa } /* Keyword */
+.literal-block .ch { color: #aaaaaa; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #aaaaaa; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #4c8317 } /* Comment.Preproc */
+.literal-block .cpf { color: #aaaaaa; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #aaaaaa; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #0000aa; font-style: italic } /* Comment.Special */
+.literal-block .gd { color: #aa0000 } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #aa0000 } /* Generic.Error */
+.literal-block .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #00aa00 } /* Generic.Inserted */
+.literal-block .go { color: #888888 } /* Generic.Output */
+.literal-block .gp { color: #555555 } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.literal-block .gt { color: #aa0000 } /* Generic.Traceback */
+.literal-block .kc { color: #0000aa } /* Keyword.Constant */
+.literal-block .kd { color: #0000aa } /* Keyword.Declaration */
+.literal-block .kn { color: #0000aa } /* Keyword.Namespace */
+.literal-block .kp { color: #0000aa } /* Keyword.Pseudo */
+.literal-block .kr { color: #0000aa } /* Keyword.Reserved */
+.literal-block .kt { color: #00aaaa } /* Keyword.Type */
+.literal-block .m { color: #009999 } /* Literal.Number */
+.literal-block .s { color: #aa5500 } /* Literal.String */
+.literal-block .na { color: #1e90ff } /* Name.Attribute */
+.literal-block .nb { color: #00aaaa } /* Name.Builtin */
+.literal-block .nc { color: #00aa00; text-decoration: underline } /* Name.Class */
+.literal-block .no { color: #aa0000 } /* Name.Constant */
+.literal-block .nd { color: #888888 } /* Name.Decorator */
+.literal-block .ni { color: #880000; font-weight: bold } /* Name.Entity */
+.literal-block .nf { color: #00aa00 } /* Name.Function */
+.literal-block .nn { color: #00aaaa; text-decoration: underline } /* Name.Namespace */
+.literal-block .nt { color: #1e90ff; font-weight: bold } /* Name.Tag */
+.literal-block .nv { color: #aa0000 } /* Name.Variable */
+.literal-block .ow { color: #0000aa } /* Operator.Word */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #009999 } /* Literal.Number.Bin */
+.literal-block .mf { color: #009999 } /* Literal.Number.Float */
+.literal-block .mh { color: #009999 } /* Literal.Number.Hex */
+.literal-block .mi { color: #009999 } /* Literal.Number.Integer */
+.literal-block .mo { color: #009999 } /* Literal.Number.Oct */
+.literal-block .sa { color: #aa5500 } /* Literal.String.Affix */
+.literal-block .sb { color: #aa5500 } /* Literal.String.Backtick */
+.literal-block .sc { color: #aa5500 } /* Literal.String.Char */
+.literal-block .dl { color: #aa5500 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #aa5500 } /* Literal.String.Doc */
+.literal-block .s2 { color: #aa5500 } /* Literal.String.Double */
+.literal-block .se { color: #aa5500 } /* Literal.String.Escape */
+.literal-block .sh { color: #aa5500 } /* Literal.String.Heredoc */
+.literal-block .si { color: #aa5500 } /* Literal.String.Interpol */
+.literal-block .sx { color: #aa5500 } /* Literal.String.Other */
+.literal-block .sr { color: #009999 } /* Literal.String.Regex */
+.literal-block .s1 { color: #aa5500 } /* Literal.String.Single */
+.literal-block .ss { color: #0000aa } /* Literal.String.Symbol */
+.literal-block .bp { color: #00aaaa } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #00aa00 } /* Name.Function.Magic */
+.literal-block .vc { color: #aa0000 } /* Name.Variable.Class */
+.literal-block .vg { color: #aa0000 } /* Name.Variable.Global */
+.literal-block .vi { color: #aa0000 } /* Name.Variable.Instance */
+.literal-block .vm { color: #aa0000 } /* Name.Variable.Magic */
+.literal-block .il { color: #009999 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/autumn.min.css b/flex/static/pygments/autumn.min.css
new file mode 100644
index 0000000..14fdb19
--- /dev/null
+++ b/flex/static/pygments/autumn.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:#aaa;font-style:italic}.highlight .err{color:red;background-color:#faa}.highlight .k{color:#00a}.highlight .ch,.highlight .cm{color:#aaa;font-style:italic}.highlight .cp{color:#4c8317}.highlight .c1,.highlight .cpf{color:#aaa;font-style:italic}.highlight .cs{color:#00a;font-style:italic}.highlight .gd{color:#a00}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#0a0}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:purple}.highlight .gt{color:#a00}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr{color:#00a}.highlight .kt{color:#0aa}.highlight .m{color:#099}.highlight .s{color:#a50}.highlight .na{color:#1e90ff}.highlight .nb{color:#0aa}.highlight .nc{color:#0a0;text-decoration:underline}.highlight .no{color:#a00}.highlight .nd{color:#888}.highlight .ni{color:#800;font-weight:700}.highlight .nf{color:#0a0}.highlight .nn{color:#0aa;text-decoration:underline}.highlight .nt{color:#1e90ff;font-weight:700}.highlight .nv{color:#a00}.highlight .ow{color:#00a}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#099}.highlight .dl,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx{color:#a50}.highlight .sr{color:#099}.highlight .s1{color:#a50}.highlight .ss{color:#00a}.highlight .bp{color:#0aa}.highlight .fm{color:#0a0}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#a00}.highlight .il{color:#099}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:#aaa;font-style:italic}.literal-block .err{color:red;background-color:#faa}.literal-block .k{color:#00a}.literal-block .ch,.literal-block .cm{color:#aaa;font-style:italic}.literal-block .cp{color:#4c8317}.literal-block .c1,.literal-block .cpf{color:#aaa;font-style:italic}.literal-block .cs{color:#00a;font-style:italic}.literal-block .gd{color:#a00}.literal-block .ge{font-style:italic}.literal-block .gr{color:#a00}.literal-block .gh{color:navy;font-weight:700}.literal-block .gi{color:#0a0}.literal-block .go{color:#888}.literal-block .gp{color:#555}.literal-block .gs{font-weight:700}.literal-block .gu{color:purple;font-weight:700}.literal-block .gt{color:#a00}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr{color:#00a}.literal-block .kt{color:#0aa}.literal-block .m{color:#099}.literal-block .s{color:#a50}.literal-block .na{color:#1e90ff}.literal-block .nb{color:#0aa}.literal-block .nc{color:#0a0;text-decoration:underline}.literal-block .no{color:#a00}.literal-block .nd{color:#888}.literal-block .ni{color:#800;font-weight:700}.literal-block .nf{color:#0a0}.literal-block .nn{color:#0aa;text-decoration:underline}.literal-block .nt{color:#1e90ff;font-weight:700}.literal-block .nv{color:#a00}.literal-block .ow{color:#00a}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#099}.literal-block .dl,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sx{color:#a50}.literal-block .sr{color:#099}.literal-block .s1{color:#a50}.literal-block .ss{color:#00a}.literal-block .bp{color:#0aa}.literal-block .fm{color:#0a0}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#a00}.literal-block .il{color:#099}
\ No newline at end of file
diff --git a/flex/static/pygments/borland.css b/flex/static/pygments/borland.css
new file mode 100644
index 0000000..7e49561
--- /dev/null
+++ b/flex/static/pygments/borland.css
@@ -0,0 +1,104 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #008800; font-style: italic } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .k { color: #000080; font-weight: bold } /* Keyword */
+.highlight .ch { color: #008800; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #008800; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #008080 } /* Comment.Preproc */
+.highlight .cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #008800; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #008800; font-weight: bold } /* Comment.Special */
+.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #aa0000 } /* Generic.Error */
+.highlight .gh { color: #999999 } /* Generic.Heading */
+.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #555555 } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
+.highlight .gt { color: #aa0000 } /* Generic.Traceback */
+.highlight .kc { color: #000080; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #000080; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #000080; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #000080; font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: #000080; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #000080; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #0000FF } /* Literal.Number */
+.highlight .s { color: #0000FF } /* Literal.String */
+.highlight .na { color: #FF0000 } /* Name.Attribute */
+.highlight .nt { color: #000080; font-weight: bold } /* Name.Tag */
+.highlight .ow { font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #0000FF } /* Literal.Number.Bin */
+.highlight .mf { color: #0000FF } /* Literal.Number.Float */
+.highlight .mh { color: #0000FF } /* Literal.Number.Hex */
+.highlight .mi { color: #0000FF } /* Literal.Number.Integer */
+.highlight .mo { color: #0000FF } /* Literal.Number.Oct */
+.highlight .sa { color: #0000FF } /* Literal.String.Affix */
+.highlight .sb { color: #0000FF } /* Literal.String.Backtick */
+.highlight .sc { color: #800080 } /* Literal.String.Char */
+.highlight .dl { color: #0000FF } /* Literal.String.Delimiter */
+.highlight .sd { color: #0000FF } /* Literal.String.Doc */
+.highlight .s2 { color: #0000FF } /* Literal.String.Double */
+.highlight .se { color: #0000FF } /* Literal.String.Escape */
+.highlight .sh { color: #0000FF } /* Literal.String.Heredoc */
+.highlight .si { color: #0000FF } /* Literal.String.Interpol */
+.highlight .sx { color: #0000FF } /* Literal.String.Other */
+.highlight .sr { color: #0000FF } /* Literal.String.Regex */
+.highlight .s1 { color: #0000FF } /* Literal.String.Single */
+.highlight .ss { color: #0000FF } /* Literal.String.Symbol */
+.highlight .il { color: #0000FF } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #008800; font-style: italic } /* Comment */
+.literal-block .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.literal-block .k { color: #000080; font-weight: bold } /* Keyword */
+.literal-block .ch { color: #008800; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #008800; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #008080 } /* Comment.Preproc */
+.literal-block .cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #008800; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #008800; font-weight: bold } /* Comment.Special */
+.literal-block .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #aa0000 } /* Generic.Error */
+.literal-block .gh { color: #999999 } /* Generic.Heading */
+.literal-block .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.literal-block .go { color: #888888 } /* Generic.Output */
+.literal-block .gp { color: #555555 } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #aaaaaa } /* Generic.Subheading */
+.literal-block .gt { color: #aa0000 } /* Generic.Traceback */
+.literal-block .kc { color: #000080; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #000080; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #000080; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #000080; font-weight: bold } /* Keyword.Pseudo */
+.literal-block .kr { color: #000080; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #000080; font-weight: bold } /* Keyword.Type */
+.literal-block .m { color: #0000FF } /* Literal.Number */
+.literal-block .s { color: #0000FF } /* Literal.String */
+.literal-block .na { color: #FF0000 } /* Name.Attribute */
+.literal-block .nt { color: #000080; font-weight: bold } /* Name.Tag */
+.literal-block .ow { font-weight: bold } /* Operator.Word */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #0000FF } /* Literal.Number.Bin */
+.literal-block .mf { color: #0000FF } /* Literal.Number.Float */
+.literal-block .mh { color: #0000FF } /* Literal.Number.Hex */
+.literal-block .mi { color: #0000FF } /* Literal.Number.Integer */
+.literal-block .mo { color: #0000FF } /* Literal.Number.Oct */
+.literal-block .sa { color: #0000FF } /* Literal.String.Affix */
+.literal-block .sb { color: #0000FF } /* Literal.String.Backtick */
+.literal-block .sc { color: #800080 } /* Literal.String.Char */
+.literal-block .dl { color: #0000FF } /* Literal.String.Delimiter */
+.literal-block .sd { color: #0000FF } /* Literal.String.Doc */
+.literal-block .s2 { color: #0000FF } /* Literal.String.Double */
+.literal-block .se { color: #0000FF } /* Literal.String.Escape */
+.literal-block .sh { color: #0000FF } /* Literal.String.Heredoc */
+.literal-block .si { color: #0000FF } /* Literal.String.Interpol */
+.literal-block .sx { color: #0000FF } /* Literal.String.Other */
+.literal-block .sr { color: #0000FF } /* Literal.String.Regex */
+.literal-block .s1 { color: #0000FF } /* Literal.String.Single */
+.literal-block .ss { color: #0000FF } /* Literal.String.Symbol */
+.literal-block .il { color: #0000FF } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/borland.min.css b/flex/static/pygments/borland.min.css
new file mode 100644
index 0000000..c56d16a
--- /dev/null
+++ b/flex/static/pygments/borland.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:#080;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{color:navy;font-weight:700}.highlight .ch,.highlight .cm{color:#080;font-style:italic}.highlight .cp{color:teal}.highlight .c1,.highlight .cpf{color:#080;font-style:italic}.highlight .cs{color:#080;font-weight:700}.highlight .gd{color:#000;background-color:#fdd}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:700}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:navy;font-weight:700}.highlight .m,.highlight .s{color:#00f}.highlight .na{color:red}.highlight .nt{color:navy}.highlight .nt,.highlight .ow{font-weight:700}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo,.highlight .sa,.highlight .sb{color:#00f}.highlight .sc{color:purple}.highlight .dl,.highlight .il,.highlight .s1,.highlight .s2,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#00f}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:#080;font-style:italic}.literal-block .err{color:#a61717;background-color:#e3d2d2}.literal-block .k{color:navy;font-weight:700}.literal-block .ch,.literal-block .cm{color:#080;font-style:italic}.literal-block .cp{color:teal}.literal-block .c1,.literal-block .cpf{color:#080;font-style:italic}.literal-block .cs{color:#080;font-weight:700}.literal-block .gd{color:#000;background-color:#fdd}.literal-block .ge{font-style:italic}.literal-block .gr{color:#a00}.literal-block .gh{color:#999}.literal-block .gi{color:#000;background-color:#dfd}.literal-block .go{color:#888}.literal-block .gp{color:#555}.literal-block .gs{font-weight:700}.literal-block .gu{color:#aaa}.literal-block .gt{color:#a00}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr,.literal-block .kt{color:navy;font-weight:700}.literal-block .m,.literal-block .s{color:#00f}.literal-block .na{color:red}.literal-block .nt{color:navy;font-weight:700}.literal-block .ow{font-weight:700}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo,.literal-block .sa,.literal-block .sb{color:#00f}.literal-block .sc{color:purple}.literal-block .dl,.literal-block .il,.literal-block .s1,.literal-block .s2,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#00f}
\ No newline at end of file
diff --git a/flex/static/pygments/bw.css b/flex/static/pygments/bw.css
new file mode 100644
index 0000000..165236d
--- /dev/null
+++ b/flex/static/pygments/bw.css
@@ -0,0 +1,78 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { font-weight: bold } /* Keyword */
+.highlight .ch { font-style: italic } /* Comment.Hashbang */
+.highlight .cm { font-style: italic } /* Comment.Multiline */
+.highlight .cpf { font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { font-style: italic } /* Comment.Single */
+.highlight .cs { font-style: italic } /* Comment.Special */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gh { font-weight: bold } /* Generic.Heading */
+.highlight .gp { font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { font-weight: bold } /* Generic.Subheading */
+.highlight .kc { font-weight: bold } /* Keyword.Constant */
+.highlight .kd { font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { font-weight: bold } /* Keyword.Namespace */
+.highlight .kr { font-weight: bold } /* Keyword.Reserved */
+.highlight .s { font-style: italic } /* Literal.String */
+.highlight .nc { font-weight: bold } /* Name.Class */
+.highlight .ni { font-weight: bold } /* Name.Entity */
+.highlight .ne { font-weight: bold } /* Name.Exception */
+.highlight .nn { font-weight: bold } /* Name.Namespace */
+.highlight .nt { font-weight: bold } /* Name.Tag */
+.highlight .ow { font-weight: bold } /* Operator.Word */
+.highlight .sa { font-style: italic } /* Literal.String.Affix */
+.highlight .sb { font-style: italic } /* Literal.String.Backtick */
+.highlight .sc { font-style: italic } /* Literal.String.Char */
+.highlight .dl { font-style: italic } /* Literal.String.Delimiter */
+.highlight .sd { font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { font-style: italic } /* Literal.String.Double */
+.highlight .se { font-weight: bold; font-style: italic } /* Literal.String.Escape */
+.highlight .sh { font-style: italic } /* Literal.String.Heredoc */
+.highlight .si { font-weight: bold; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { font-style: italic } /* Literal.String.Other */
+.highlight .sr { font-style: italic } /* Literal.String.Regex */
+.highlight .s1 { font-style: italic } /* Literal.String.Single */
+.highlight .ss { font-style: italic } /* Literal.String.Symbol */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { font-style: italic } /* Comment */
+.literal-block .err { border: 1px solid #FF0000 } /* Error */
+.literal-block .k { font-weight: bold } /* Keyword */
+.literal-block .ch { font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { font-style: italic } /* Comment.Multiline */
+.literal-block .cpf { font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { font-style: italic } /* Comment.Single */
+.literal-block .cs { font-style: italic } /* Comment.Special */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gh { font-weight: bold } /* Generic.Heading */
+.literal-block .gp { font-weight: bold } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { font-weight: bold } /* Generic.Subheading */
+.literal-block .kc { font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { font-weight: bold } /* Keyword.Namespace */
+.literal-block .kr { font-weight: bold } /* Keyword.Reserved */
+.literal-block .s { font-style: italic } /* Literal.String */
+.literal-block .nc { font-weight: bold } /* Name.Class */
+.literal-block .ni { font-weight: bold } /* Name.Entity */
+.literal-block .ne { font-weight: bold } /* Name.Exception */
+.literal-block .nn { font-weight: bold } /* Name.Namespace */
+.literal-block .nt { font-weight: bold } /* Name.Tag */
+.literal-block .ow { font-weight: bold } /* Operator.Word */
+.literal-block .sa { font-style: italic } /* Literal.String.Affix */
+.literal-block .sb { font-style: italic } /* Literal.String.Backtick */
+.literal-block .sc { font-style: italic } /* Literal.String.Char */
+.literal-block .dl { font-style: italic } /* Literal.String.Delimiter */
+.literal-block .sd { font-style: italic } /* Literal.String.Doc */
+.literal-block .s2 { font-style: italic } /* Literal.String.Double */
+.literal-block .se { font-weight: bold; font-style: italic } /* Literal.String.Escape */
+.literal-block .sh { font-style: italic } /* Literal.String.Heredoc */
+.literal-block .si { font-weight: bold; font-style: italic } /* Literal.String.Interpol */
+.literal-block .sx { font-style: italic } /* Literal.String.Other */
+.literal-block .sr { font-style: italic } /* Literal.String.Regex */
+.literal-block .s1 { font-style: italic } /* Literal.String.Single */
+.literal-block .ss { font-style: italic } /* Literal.String.Symbol */
\ No newline at end of file
diff --git a/flex/static/pygments/bw.min.css b/flex/static/pygments/bw.min.css
new file mode 100644
index 0000000..b598799
--- /dev/null
+++ b/flex/static/pygments/bw.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{font-style:italic}.highlight .err{border:1px solid red}.highlight .k{font-weight:700}.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cpf,.highlight .cs,.highlight .ge{font-style:italic}.highlight .gh,.highlight .gp,.highlight .gs,.highlight .gu,.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kr{font-weight:700}.highlight .s{font-style:italic}.highlight .nc,.highlight .ne,.highlight .ni,.highlight .nn,.highlight .nt,.highlight .ow{font-weight:700}.highlight .dl,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se{font-style:italic}.highlight .se{font-weight:700}.highlight .sh,.highlight .si{font-style:italic}.highlight .si{font-weight:700}.highlight .s1,.highlight .sr,.highlight .ss,.highlight .sx{font-style:italic}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{font-style:italic}.literal-block .err{border:1px solid red}.literal-block .k{font-weight:700}.literal-block .c1,.literal-block .ch,.literal-block .cm,.literal-block .cpf,.literal-block .cs,.literal-block .ge{font-style:italic}.literal-block .gh,.literal-block .gp,.literal-block .gs,.literal-block .gu,.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kr{font-weight:700}.literal-block .s{font-style:italic}.literal-block .nc,.literal-block .ne,.literal-block .ni,.literal-block .nn,.literal-block .nt,.literal-block .ow{font-weight:700}.literal-block .dl,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd{font-style:italic}.literal-block .se{font-weight:700;font-style:italic}.literal-block .sh{font-style:italic}.literal-block .si{font-weight:700;font-style:italic}.literal-block .s1,.literal-block .sr,.literal-block .ss,.literal-block .sx{font-style:italic}
\ No newline at end of file
diff --git a/flex/static/pygments/colorful.css b/flex/static/pygments/colorful.css
new file mode 100644
index 0000000..fb2fec9
--- /dev/null
+++ b/flex/static/pygments/colorful.css
@@ -0,0 +1,138 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #888888 } /* Comment */
+.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
+.highlight .k { color: #008800; font-weight: bold } /* Keyword */
+.highlight .o { color: #333333 } /* Operator */
+.highlight .ch { color: #888888 } /* Comment.Hashbang */
+.highlight .cm { color: #888888 } /* Comment.Multiline */
+.highlight .cp { color: #557799 } /* Comment.Preproc */
+.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
+.highlight .c1 { color: #888888 } /* Comment.Single */
+.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
+.highlight .s { background-color: #fff0f0 } /* Literal.String */
+.highlight .na { color: #0000CC } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */
+.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */
+.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #007700 } /* Name.Tag */
+.highlight .nv { color: #996633 } /* Name.Variable */
+.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
+.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
+.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
+.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
+.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
+.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */
+.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
+.highlight .sc { color: #0044DD } /* Literal.String.Char */
+.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
+.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
+.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */
+.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
+.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
+.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
+.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
+.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
+.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */
+.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
+.highlight .vc { color: #336699 } /* Name.Variable.Class */
+.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
+.highlight .vi { color: #3333BB } /* Name.Variable.Instance */
+.highlight .vm { color: #996633 } /* Name.Variable.Magic */
+.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #888888 } /* Comment */
+.literal-block .err { color: #FF0000; background-color: #FFAAAA } /* Error */
+.literal-block .k { color: #008800; font-weight: bold } /* Keyword */
+.literal-block .o { color: #333333 } /* Operator */
+.literal-block .ch { color: #888888 } /* Comment.Hashbang */
+.literal-block .cm { color: #888888 } /* Comment.Multiline */
+.literal-block .cp { color: #557799 } /* Comment.Preproc */
+.literal-block .cpf { color: #888888 } /* Comment.PreprocFile */
+.literal-block .c1 { color: #888888 } /* Comment.Single */
+.literal-block .cs { color: #cc0000; font-weight: bold } /* Comment.Special */
+.literal-block .gd { color: #A00000 } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #FF0000 } /* Generic.Error */
+.literal-block .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #00A000 } /* Generic.Inserted */
+.literal-block .go { color: #888888 } /* Generic.Output */
+.literal-block .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.literal-block .gt { color: #0044DD } /* Generic.Traceback */
+.literal-block .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */
+.literal-block .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #333399; font-weight: bold } /* Keyword.Type */
+.literal-block .m { color: #6600EE; font-weight: bold } /* Literal.Number */
+.literal-block .s { background-color: #fff0f0 } /* Literal.String */
+.literal-block .na { color: #0000CC } /* Name.Attribute */
+.literal-block .nb { color: #007020 } /* Name.Builtin */
+.literal-block .nc { color: #BB0066; font-weight: bold } /* Name.Class */
+.literal-block .no { color: #003366; font-weight: bold } /* Name.Constant */
+.literal-block .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.literal-block .ni { color: #880000; font-weight: bold } /* Name.Entity */
+.literal-block .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
+.literal-block .nf { color: #0066BB; font-weight: bold } /* Name.Function */
+.literal-block .nl { color: #997700; font-weight: bold } /* Name.Label */
+.literal-block .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.literal-block .nt { color: #007700 } /* Name.Tag */
+.literal-block .nv { color: #996633 } /* Name.Variable */
+.literal-block .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
+.literal-block .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
+.literal-block .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
+.literal-block .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
+.literal-block .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
+.literal-block .sa { background-color: #fff0f0 } /* Literal.String.Affix */
+.literal-block .sb { background-color: #fff0f0 } /* Literal.String.Backtick */
+.literal-block .sc { color: #0044DD } /* Literal.String.Char */
+.literal-block .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #DD4422 } /* Literal.String.Doc */
+.literal-block .s2 { background-color: #fff0f0 } /* Literal.String.Double */
+.literal-block .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */
+.literal-block .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */
+.literal-block .si { background-color: #eeeeee } /* Literal.String.Interpol */
+.literal-block .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */
+.literal-block .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */
+.literal-block .s1 { background-color: #fff0f0 } /* Literal.String.Single */
+.literal-block .ss { color: #AA6600 } /* Literal.String.Symbol */
+.literal-block .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */
+.literal-block .vc { color: #336699 } /* Name.Variable.Class */
+.literal-block .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */
+.literal-block .vi { color: #3333BB } /* Name.Variable.Instance */
+.literal-block .vm { color: #996633 } /* Name.Variable.Magic */
+.literal-block .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/colorful.min.css b/flex/static/pygments/colorful.min.css
new file mode 100644
index 0000000..f34652e
--- /dev/null
+++ b/flex/static/pygments/colorful.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:#888}.highlight .err{color:red;background-color:#faa}.highlight .k{color:#080;font-weight:700}.highlight .o{color:#333}.highlight .ch,.highlight .cm{color:#888}.highlight .cp{color:#579}.highlight .c1,.highlight .cpf{color:#888}.highlight .cs{color:#c00;font-weight:700}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00a000}.highlight .go{color:#888}.highlight .gp{color:#c65d09}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:purple}.highlight .gt{color:#04d}.highlight .kc,.highlight .kd,.highlight .kn{color:#080;font-weight:700}.highlight .kp{color:#038;font-weight:700}.highlight .kr{color:#080;font-weight:700}.highlight .kt{color:#339;font-weight:700}.highlight .m{color:#60e;font-weight:700}.highlight .s{background-color:#fff0f0}.highlight .na{color:#00c}.highlight .nb{color:#007020}.highlight .nc{color:#b06;font-weight:700}.highlight .no{color:#036;font-weight:700}.highlight .nd{color:#555;font-weight:700}.highlight .ni{color:#800;font-weight:700}.highlight .ne{color:red;font-weight:700}.highlight .nf{color:#06b;font-weight:700}.highlight .nl{color:#970;font-weight:700}.highlight .nn{color:#0e84b5;font-weight:700}.highlight .nt{color:#070}.highlight .nv{color:#963}.highlight .ow{color:#000;font-weight:700}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf{color:#60e;font-weight:700}.highlight .mh{color:#058;font-weight:700}.highlight .mi{color:#00d;font-weight:700}.highlight .mo{color:#40e;font-weight:700}.highlight .sa,.highlight .sb{background-color:#fff0f0}.highlight .sc{color:#04d}.highlight .dl{background-color:#fff0f0}.highlight .sd{color:#d42}.highlight .s2,.highlight .se{background-color:#fff0f0}.highlight .se{color:#666;font-weight:700}.highlight .sh{background-color:#fff0f0}.highlight .si{background-color:#eee}.highlight .sx{color:#d20;background-color:#fff0f0}.highlight .sr{color:#000;background-color:#fff0ff}.highlight .s1{background-color:#fff0f0}.highlight .ss{color:#a60}.highlight .bp{color:#007020}.highlight .fm{color:#06b;font-weight:700}.highlight .vc{color:#369}.highlight .vg{color:#d70;font-weight:700}.highlight .vi{color:#33b}.highlight .vm{color:#963}.highlight .il{color:#00d;font-weight:700}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:#888}.literal-block .err{color:red;background-color:#faa}.literal-block .k{color:#080;font-weight:700}.literal-block .o{color:#333}.literal-block .ch,.literal-block .cm{color:#888}.literal-block .cp{color:#579}.literal-block .c1,.literal-block .cpf{color:#888}.literal-block .cs{color:#c00;font-weight:700}.literal-block .gd{color:#a00000}.literal-block .ge{font-style:italic}.literal-block .gr{color:red}.literal-block .gh{color:navy;font-weight:700}.literal-block .gi{color:#00a000}.literal-block .go{color:#888}.literal-block .gp{color:#c65d09;font-weight:700}.literal-block .gs{font-weight:700}.literal-block .gu{color:purple;font-weight:700}.literal-block .gt{color:#04d}.literal-block .kc,.literal-block .kd,.literal-block .kn{color:#080;font-weight:700}.literal-block .kp{color:#038;font-weight:700}.literal-block .kr{color:#080;font-weight:700}.literal-block .kt{color:#339;font-weight:700}.literal-block .m{color:#60e;font-weight:700}.literal-block .s{background-color:#fff0f0}.literal-block .na{color:#00c}.literal-block .nb{color:#007020}.literal-block .nc{color:#b06;font-weight:700}.literal-block .no{color:#036;font-weight:700}.literal-block .nd{color:#555;font-weight:700}.literal-block .ni{color:#800;font-weight:700}.literal-block .ne{color:red;font-weight:700}.literal-block .nf{color:#06b;font-weight:700}.literal-block .nl{color:#970;font-weight:700}.literal-block .nn{color:#0e84b5;font-weight:700}.literal-block .nt{color:#070}.literal-block .nv{color:#963}.literal-block .ow{color:#000;font-weight:700}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf{color:#60e;font-weight:700}.literal-block .mh{color:#058;font-weight:700}.literal-block .mi{color:#00d;font-weight:700}.literal-block .mo{color:#40e;font-weight:700}.literal-block .sa,.literal-block .sb{background-color:#fff0f0}.literal-block .sc{color:#04d}.literal-block .dl{background-color:#fff0f0}.literal-block .sd{color:#d42}.literal-block .s2,.literal-block .se{background-color:#fff0f0}.literal-block .se{color:#666;font-weight:700}.literal-block .sh{background-color:#fff0f0}.literal-block .si{background-color:#eee}.literal-block .sx{color:#d20;background-color:#fff0f0}.literal-block .sr{color:#000;background-color:#fff0ff}.literal-block .s1{background-color:#fff0f0}.literal-block .ss{color:#a60}.literal-block .bp{color:#007020}.literal-block .fm{color:#06b;font-weight:700}.literal-block .vc{color:#369}.literal-block .vg{color:#d70;font-weight:700}.literal-block .vi{color:#33b}.literal-block .vm{color:#963}.literal-block .il{color:#00d;font-weight:700}
\ No newline at end of file
diff --git a/flex/static/pygments/default.css b/flex/static/pygments/default.css
new file mode 100644
index 0000000..917c471
--- /dev/null
+++ b/flex/static/pygments/default.css
@@ -0,0 +1,138 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f8f8f8; }
+.highlight .c { color: #408080; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #008000; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
+.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #008000 } /* Keyword.Pseudo */
+.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #B00040 } /* Keyword.Type */
+.highlight .m { color: #666666 } /* Literal.Number */
+.highlight .s { color: #BA2121 } /* Literal.String */
+.highlight .na { color: #7D9029 } /* Name.Attribute */
+.highlight .nb { color: #008000 } /* Name.Builtin */
+.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.highlight .no { color: #880000 } /* Name.Constant */
+.highlight .nd { color: #AA22FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #0000FF } /* Name.Function */
+.highlight .nl { color: #A0A000 } /* Name.Label */
+.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #19177C } /* Name.Variable */
+.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #666666 } /* Literal.Number.Bin */
+.highlight .mf { color: #666666 } /* Literal.Number.Float */
+.highlight .mh { color: #666666 } /* Literal.Number.Hex */
+.highlight .mi { color: #666666 } /* Literal.Number.Integer */
+.highlight .mo { color: #666666 } /* Literal.Number.Oct */
+.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
+.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
+.highlight .sc { color: #BA2121 } /* Literal.String.Char */
+.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
+.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
+.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.highlight .sx { color: #008000 } /* Literal.String.Other */
+.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
+.highlight .ss { color: #19177C } /* Literal.String.Symbol */
+.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #0000FF } /* Name.Function.Magic */
+.highlight .vc { color: #19177C } /* Name.Variable.Class */
+.highlight .vg { color: #19177C } /* Name.Variable.Global */
+.highlight .vi { color: #19177C } /* Name.Variable.Instance */
+.highlight .vm { color: #19177C } /* Name.Variable.Magic */
+.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #f8f8f8; }
+.literal-block .c { color: #408080; font-style: italic } /* Comment */
+.literal-block .err { border: 1px solid #FF0000 } /* Error */
+.literal-block .k { color: #008000; font-weight: bold } /* Keyword */
+.literal-block .o { color: #666666 } /* Operator */
+.literal-block .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #BC7A00 } /* Comment.Preproc */
+.literal-block .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #408080; font-style: italic } /* Comment.Special */
+.literal-block .gd { color: #A00000 } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #FF0000 } /* Generic.Error */
+.literal-block .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #00A000 } /* Generic.Inserted */
+.literal-block .go { color: #888888 } /* Generic.Output */
+.literal-block .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.literal-block .gt { color: #0044DD } /* Generic.Traceback */
+.literal-block .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #008000 } /* Keyword.Pseudo */
+.literal-block .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #B00040 } /* Keyword.Type */
+.literal-block .m { color: #666666 } /* Literal.Number */
+.literal-block .s { color: #BA2121 } /* Literal.String */
+.literal-block .na { color: #7D9029 } /* Name.Attribute */
+.literal-block .nb { color: #008000 } /* Name.Builtin */
+.literal-block .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.literal-block .no { color: #880000 } /* Name.Constant */
+.literal-block .nd { color: #AA22FF } /* Name.Decorator */
+.literal-block .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.literal-block .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.literal-block .nf { color: #0000FF } /* Name.Function */
+.literal-block .nl { color: #A0A000 } /* Name.Label */
+.literal-block .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.literal-block .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.literal-block .nv { color: #19177C } /* Name.Variable */
+.literal-block .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #666666 } /* Literal.Number.Bin */
+.literal-block .mf { color: #666666 } /* Literal.Number.Float */
+.literal-block .mh { color: #666666 } /* Literal.Number.Hex */
+.literal-block .mi { color: #666666 } /* Literal.Number.Integer */
+.literal-block .mo { color: #666666 } /* Literal.Number.Oct */
+.literal-block .sa { color: #BA2121 } /* Literal.String.Affix */
+.literal-block .sb { color: #BA2121 } /* Literal.String.Backtick */
+.literal-block .sc { color: #BA2121 } /* Literal.String.Char */
+.literal-block .dl { color: #BA2121 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.literal-block .s2 { color: #BA2121 } /* Literal.String.Double */
+.literal-block .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.literal-block .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.literal-block .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.literal-block .sx { color: #008000 } /* Literal.String.Other */
+.literal-block .sr { color: #BB6688 } /* Literal.String.Regex */
+.literal-block .s1 { color: #BA2121 } /* Literal.String.Single */
+.literal-block .ss { color: #19177C } /* Literal.String.Symbol */
+.literal-block .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #0000FF } /* Name.Function.Magic */
+.literal-block .vc { color: #19177C } /* Name.Variable.Class */
+.literal-block .vg { color: #19177C } /* Name.Variable.Global */
+.literal-block .vi { color: #19177C } /* Name.Variable.Instance */
+.literal-block .vm { color: #19177C } /* Name.Variable.Magic */
+.literal-block .il { color: #666666 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/default.min.css b/flex/static/pygments/default.min.css
new file mode 100644
index 0000000..281bb01
--- /dev/null
+++ b/flex/static/pygments/default.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#f8f8f8}.highlight .c{color:#408080;font-style:italic}.highlight .err{border:1px solid red}.highlight .k{color:green;font-weight:700}.highlight .o{color:#666}.highlight .ch,.highlight .cm{color:#408080;font-style:italic}.highlight .cp{color:#bc7a00}.highlight .c1,.highlight .cpf,.highlight .cs{color:#408080;font-style:italic}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00a000}.highlight .go{color:#888}.highlight .gp{color:navy}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:purple}.highlight .gt{color:#04d}.highlight .kc,.highlight .kd,.highlight .kn{color:green;font-weight:700}.highlight .kp{color:green}.highlight .kr{color:green;font-weight:700}.highlight .kt{color:#b00040}.highlight .m{color:#666}.highlight .s{color:#ba2121}.highlight .na{color:#7d9029}.highlight .nb{color:green}.highlight .nc{color:#00f;font-weight:700}.highlight .no{color:#800}.highlight .nd{color:#a2f}.highlight .ni{color:#999;font-weight:700}.highlight .ne{color:#d2413a;font-weight:700}.highlight .nf{color:#00f}.highlight .nl{color:#a0a000}.highlight .nn{color:#00f;font-weight:700}.highlight .nt{color:green;font-weight:700}.highlight .nv{color:#19177c}.highlight .ow{color:#a2f;font-weight:700}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#666}.highlight .dl,.highlight .sa,.highlight .sb,.highlight .sc{color:#ba2121}.highlight .sd{color:#ba2121;font-style:italic}.highlight .s2{color:#ba2121}.highlight .se{color:#b62;font-weight:700}.highlight .sh{color:#ba2121}.highlight .si{color:#b68;font-weight:700}.highlight .sx{color:green}.highlight .sr{color:#b68}.highlight .s1{color:#ba2121}.highlight .ss{color:#19177c}.highlight .bp{color:green}.highlight .fm{color:#00f}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#19177c}.highlight .il{color:#666}.literal-block .hll{background-color:#ffc}.literal-block{background:#f8f8f8}.literal-block .c{color:#408080;font-style:italic}.literal-block .err{border:1px solid red}.literal-block .k{color:green;font-weight:700}.literal-block .o{color:#666}.literal-block .ch,.literal-block .cm{color:#408080;font-style:italic}.literal-block .cp{color:#bc7a00}.literal-block .c1,.literal-block .cpf,.literal-block .cs{color:#408080;font-style:italic}.literal-block .gd{color:#a00000}.literal-block .ge{font-style:italic}.literal-block .gr{color:red}.literal-block .gh{color:navy;font-weight:700}.literal-block .gi{color:#00a000}.literal-block .go{color:#888}.literal-block .gp{color:navy;font-weight:700}.literal-block .gs{font-weight:700}.literal-block .gu{color:purple;font-weight:700}.literal-block .gt{color:#04d}.literal-block .kc,.literal-block .kd,.literal-block .kn{color:green;font-weight:700}.literal-block .kp{color:green}.literal-block .kr{color:green;font-weight:700}.literal-block .kt{color:#b00040}.literal-block .m{color:#666}.literal-block .s{color:#ba2121}.literal-block .na{color:#7d9029}.literal-block .nb{color:green}.literal-block .nc{color:#00f;font-weight:700}.literal-block .no{color:#800}.literal-block .nd{color:#a2f}.literal-block .ni{color:#999;font-weight:700}.literal-block .ne{color:#d2413a;font-weight:700}.literal-block .nf{color:#00f}.literal-block .nl{color:#a0a000}.literal-block .nn{color:#00f;font-weight:700}.literal-block .nt{color:green;font-weight:700}.literal-block .nv{color:#19177c}.literal-block .ow{color:#a2f;font-weight:700}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#666}.literal-block .dl,.literal-block .sa,.literal-block .sb,.literal-block .sc{color:#ba2121}.literal-block .sd{color:#ba2121;font-style:italic}.literal-block .s2{color:#ba2121}.literal-block .se{color:#b62;font-weight:700}.literal-block .sh{color:#ba2121}.literal-block .si{color:#b68;font-weight:700}.literal-block .sx{color:green}.literal-block .sr{color:#b68}.literal-block .s1{color:#ba2121}.literal-block .ss{color:#19177c}.literal-block .bp{color:green}.literal-block .fm{color:#00f}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#19177c}.literal-block .il{color:#666}
\ No newline at end of file
diff --git a/flex/static/pygments/emacs.css b/flex/static/pygments/emacs.css
new file mode 100644
index 0000000..8423a38
--- /dev/null
+++ b/flex/static/pygments/emacs.css
@@ -0,0 +1,138 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f8f8f8; }
+.highlight .c { color: #008800; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #AA22FF; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .ch { color: #008800; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #008800; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #008800 } /* Comment.Preproc */
+.highlight .cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #008800; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #008800; font-weight: bold } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #AA22FF; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #AA22FF; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #AA22FF; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #AA22FF } /* Keyword.Pseudo */
+.highlight .kr { color: #AA22FF; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #00BB00; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #666666 } /* Literal.Number */
+.highlight .s { color: #BB4444 } /* Literal.String */
+.highlight .na { color: #BB4444 } /* Name.Attribute */
+.highlight .nb { color: #AA22FF } /* Name.Builtin */
+.highlight .nc { color: #0000FF } /* Name.Class */
+.highlight .no { color: #880000 } /* Name.Constant */
+.highlight .nd { color: #AA22FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #00A000 } /* Name.Function */
+.highlight .nl { color: #A0A000 } /* Name.Label */
+.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #B8860B } /* Name.Variable */
+.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #666666 } /* Literal.Number.Bin */
+.highlight .mf { color: #666666 } /* Literal.Number.Float */
+.highlight .mh { color: #666666 } /* Literal.Number.Hex */
+.highlight .mi { color: #666666 } /* Literal.Number.Integer */
+.highlight .mo { color: #666666 } /* Literal.Number.Oct */
+.highlight .sa { color: #BB4444 } /* Literal.String.Affix */
+.highlight .sb { color: #BB4444 } /* Literal.String.Backtick */
+.highlight .sc { color: #BB4444 } /* Literal.String.Char */
+.highlight .dl { color: #BB4444 } /* Literal.String.Delimiter */
+.highlight .sd { color: #BB4444; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #BB4444 } /* Literal.String.Double */
+.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #BB4444 } /* Literal.String.Heredoc */
+.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.highlight .sx { color: #008000 } /* Literal.String.Other */
+.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.highlight .s1 { color: #BB4444 } /* Literal.String.Single */
+.highlight .ss { color: #B8860B } /* Literal.String.Symbol */
+.highlight .bp { color: #AA22FF } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #00A000 } /* Name.Function.Magic */
+.highlight .vc { color: #B8860B } /* Name.Variable.Class */
+.highlight .vg { color: #B8860B } /* Name.Variable.Global */
+.highlight .vi { color: #B8860B } /* Name.Variable.Instance */
+.highlight .vm { color: #B8860B } /* Name.Variable.Magic */
+.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #f8f8f8; }
+.literal-block .c { color: #008800; font-style: italic } /* Comment */
+.literal-block .err { border: 1px solid #FF0000 } /* Error */
+.literal-block .k { color: #AA22FF; font-weight: bold } /* Keyword */
+.literal-block .o { color: #666666 } /* Operator */
+.literal-block .ch { color: #008800; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #008800; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #008800 } /* Comment.Preproc */
+.literal-block .cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #008800; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #008800; font-weight: bold } /* Comment.Special */
+.literal-block .gd { color: #A00000 } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #FF0000 } /* Generic.Error */
+.literal-block .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #00A000 } /* Generic.Inserted */
+.literal-block .go { color: #888888 } /* Generic.Output */
+.literal-block .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.literal-block .gt { color: #0044DD } /* Generic.Traceback */
+.literal-block .kc { color: #AA22FF; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #AA22FF; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #AA22FF; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #AA22FF } /* Keyword.Pseudo */
+.literal-block .kr { color: #AA22FF; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #00BB00; font-weight: bold } /* Keyword.Type */
+.literal-block .m { color: #666666 } /* Literal.Number */
+.literal-block .s { color: #BB4444 } /* Literal.String */
+.literal-block .na { color: #BB4444 } /* Name.Attribute */
+.literal-block .nb { color: #AA22FF } /* Name.Builtin */
+.literal-block .nc { color: #0000FF } /* Name.Class */
+.literal-block .no { color: #880000 } /* Name.Constant */
+.literal-block .nd { color: #AA22FF } /* Name.Decorator */
+.literal-block .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.literal-block .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.literal-block .nf { color: #00A000 } /* Name.Function */
+.literal-block .nl { color: #A0A000 } /* Name.Label */
+.literal-block .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.literal-block .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.literal-block .nv { color: #B8860B } /* Name.Variable */
+.literal-block .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #666666 } /* Literal.Number.Bin */
+.literal-block .mf { color: #666666 } /* Literal.Number.Float */
+.literal-block .mh { color: #666666 } /* Literal.Number.Hex */
+.literal-block .mi { color: #666666 } /* Literal.Number.Integer */
+.literal-block .mo { color: #666666 } /* Literal.Number.Oct */
+.literal-block .sa { color: #BB4444 } /* Literal.String.Affix */
+.literal-block .sb { color: #BB4444 } /* Literal.String.Backtick */
+.literal-block .sc { color: #BB4444 } /* Literal.String.Char */
+.literal-block .dl { color: #BB4444 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #BB4444; font-style: italic } /* Literal.String.Doc */
+.literal-block .s2 { color: #BB4444 } /* Literal.String.Double */
+.literal-block .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.literal-block .sh { color: #BB4444 } /* Literal.String.Heredoc */
+.literal-block .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.literal-block .sx { color: #008000 } /* Literal.String.Other */
+.literal-block .sr { color: #BB6688 } /* Literal.String.Regex */
+.literal-block .s1 { color: #BB4444 } /* Literal.String.Single */
+.literal-block .ss { color: #B8860B } /* Literal.String.Symbol */
+.literal-block .bp { color: #AA22FF } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #00A000 } /* Name.Function.Magic */
+.literal-block .vc { color: #B8860B } /* Name.Variable.Class */
+.literal-block .vg { color: #B8860B } /* Name.Variable.Global */
+.literal-block .vi { color: #B8860B } /* Name.Variable.Instance */
+.literal-block .vm { color: #B8860B } /* Name.Variable.Magic */
+.literal-block .il { color: #666666 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/emacs.min.css b/flex/static/pygments/emacs.min.css
new file mode 100644
index 0000000..3382034
--- /dev/null
+++ b/flex/static/pygments/emacs.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#f8f8f8}.highlight .c{color:#080;font-style:italic}.highlight .err{border:1px solid red}.highlight .k{color:#a2f;font-weight:700}.highlight .o{color:#666}.highlight .ch,.highlight .cm{color:#080;font-style:italic}.highlight .cp{color:#080}.highlight .c1,.highlight .cpf{color:#080;font-style:italic}.highlight .cs{color:#080;font-weight:700}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00a000}.highlight .go{color:#888}.highlight .gp{color:navy}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:purple}.highlight .gt{color:#04d}.highlight .kc,.highlight .kd,.highlight .kn{color:#a2f;font-weight:700}.highlight .kp{color:#a2f}.highlight .kr{color:#a2f;font-weight:700}.highlight .kt{color:#0b0;font-weight:700}.highlight .m{color:#666}.highlight .na,.highlight .s{color:#b44}.highlight .nb{color:#a2f}.highlight .nc{color:#00f}.highlight .no{color:#800}.highlight .nd{color:#a2f}.highlight .ni{color:#999;font-weight:700}.highlight .ne{color:#d2413a;font-weight:700}.highlight .nf{color:#00a000}.highlight .nl{color:#a0a000}.highlight .nn{color:#00f;font-weight:700}.highlight .nt{color:green;font-weight:700}.highlight .nv{color:#b8860b}.highlight .ow{color:#a2f;font-weight:700}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#666}.highlight .dl,.highlight .sa,.highlight .sb,.highlight .sc{color:#b44}.highlight .sd{color:#b44;font-style:italic}.highlight .s2{color:#b44}.highlight .se{color:#b62;font-weight:700}.highlight .sh{color:#b44}.highlight .si{color:#b68;font-weight:700}.highlight .sx{color:green}.highlight .sr{color:#b68}.highlight .s1{color:#b44}.highlight .ss{color:#b8860b}.highlight .bp{color:#a2f}.highlight .fm{color:#00a000}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#b8860b}.highlight .il{color:#666}.literal-block .hll{background-color:#ffc}.literal-block{background:#f8f8f8}.literal-block .c{color:#080;font-style:italic}.literal-block .err{border:1px solid red}.literal-block .k{color:#a2f;font-weight:700}.literal-block .o{color:#666}.literal-block .ch,.literal-block .cm{color:#080;font-style:italic}.literal-block .cp{color:#080}.literal-block .c1,.literal-block .cpf{color:#080;font-style:italic}.literal-block .cs{color:#080;font-weight:700}.literal-block .gd{color:#a00000}.literal-block .ge{font-style:italic}.literal-block .gr{color:red}.literal-block .gh{color:navy;font-weight:700}.literal-block .gi{color:#00a000}.literal-block .go{color:#888}.literal-block .gp{color:navy;font-weight:700}.literal-block .gs{font-weight:700}.literal-block .gu{color:purple;font-weight:700}.literal-block .gt{color:#04d}.literal-block .kc,.literal-block .kd,.literal-block .kn{color:#a2f;font-weight:700}.literal-block .kp{color:#a2f}.literal-block .kr{color:#a2f;font-weight:700}.literal-block .kt{color:#0b0;font-weight:700}.literal-block .m{color:#666}.literal-block .na,.literal-block .s{color:#b44}.literal-block .nb{color:#a2f}.literal-block .nc{color:#00f}.literal-block .no{color:#800}.literal-block .nd{color:#a2f}.literal-block .ni{color:#999;font-weight:700}.literal-block .ne{color:#d2413a;font-weight:700}.literal-block .nf{color:#00a000}.literal-block .nl{color:#a0a000}.literal-block .nn{color:#00f;font-weight:700}.literal-block .nt{color:green;font-weight:700}.literal-block .nv{color:#b8860b}.literal-block .ow{color:#a2f;font-weight:700}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#666}.literal-block .dl,.literal-block .sa,.literal-block .sb,.literal-block .sc{color:#b44}.literal-block .sd{color:#b44;font-style:italic}.literal-block .s2{color:#b44}.literal-block .se{color:#b62;font-weight:700}.literal-block .sh{color:#b44}.literal-block .si{color:#b68;font-weight:700}.literal-block .sx{color:green}.literal-block .sr{color:#b68}.literal-block .s1{color:#b44}.literal-block .ss{color:#b8860b}.literal-block .bp{color:#a2f}.literal-block .fm{color:#00a000}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#b8860b}.literal-block .il{color:#666}
\ No newline at end of file
diff --git a/flex/static/pygments/friendly.css b/flex/static/pygments/friendly.css
new file mode 100644
index 0000000..84279fb
--- /dev/null
+++ b/flex/static/pygments/friendly.css
@@ -0,0 +1,138 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f0f0f0; }
+.highlight .c { color: #60a0b0; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .ch { color: #60a0b0; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .cpf { color: #60a0b0; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #40a070 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #40a070 } /* Literal.Number.Bin */
+.highlight .mf { color: #40a070 } /* Literal.Number.Float */
+.highlight .mh { color: #40a070 } /* Literal.Number.Hex */
+.highlight .mi { color: #40a070 } /* Literal.Number.Integer */
+.highlight .mo { color: #40a070 } /* Literal.Number.Oct */
+.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #06287e } /* Name.Function.Magic */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
+.highlight .il { color: #40a070 } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #f0f0f0; }
+.literal-block .c { color: #60a0b0; font-style: italic } /* Comment */
+.literal-block .err { border: 1px solid #FF0000 } /* Error */
+.literal-block .k { color: #007020; font-weight: bold } /* Keyword */
+.literal-block .o { color: #666666 } /* Operator */
+.literal-block .ch { color: #60a0b0; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #007020 } /* Comment.Preproc */
+.literal-block .cpf { color: #60a0b0; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
+.literal-block .gd { color: #A00000 } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #FF0000 } /* Generic.Error */
+.literal-block .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #00A000 } /* Generic.Inserted */
+.literal-block .go { color: #888888 } /* Generic.Output */
+.literal-block .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.literal-block .gt { color: #0044DD } /* Generic.Traceback */
+.literal-block .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #007020 } /* Keyword.Pseudo */
+.literal-block .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #902000 } /* Keyword.Type */
+.literal-block .m { color: #40a070 } /* Literal.Number */
+.literal-block .s { color: #4070a0 } /* Literal.String */
+.literal-block .na { color: #4070a0 } /* Name.Attribute */
+.literal-block .nb { color: #007020 } /* Name.Builtin */
+.literal-block .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.literal-block .no { color: #60add5 } /* Name.Constant */
+.literal-block .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.literal-block .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.literal-block .ne { color: #007020 } /* Name.Exception */
+.literal-block .nf { color: #06287e } /* Name.Function */
+.literal-block .nl { color: #002070; font-weight: bold } /* Name.Label */
+.literal-block .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.literal-block .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.literal-block .nv { color: #bb60d5 } /* Name.Variable */
+.literal-block .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #40a070 } /* Literal.Number.Bin */
+.literal-block .mf { color: #40a070 } /* Literal.Number.Float */
+.literal-block .mh { color: #40a070 } /* Literal.Number.Hex */
+.literal-block .mi { color: #40a070 } /* Literal.Number.Integer */
+.literal-block .mo { color: #40a070 } /* Literal.Number.Oct */
+.literal-block .sa { color: #4070a0 } /* Literal.String.Affix */
+.literal-block .sb { color: #4070a0 } /* Literal.String.Backtick */
+.literal-block .sc { color: #4070a0 } /* Literal.String.Char */
+.literal-block .dl { color: #4070a0 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.literal-block .s2 { color: #4070a0 } /* Literal.String.Double */
+.literal-block .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.literal-block .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.literal-block .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.literal-block .sx { color: #c65d09 } /* Literal.String.Other */
+.literal-block .sr { color: #235388 } /* Literal.String.Regex */
+.literal-block .s1 { color: #4070a0 } /* Literal.String.Single */
+.literal-block .ss { color: #517918 } /* Literal.String.Symbol */
+.literal-block .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #06287e } /* Name.Function.Magic */
+.literal-block .vc { color: #bb60d5 } /* Name.Variable.Class */
+.literal-block .vg { color: #bb60d5 } /* Name.Variable.Global */
+.literal-block .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.literal-block .vm { color: #bb60d5 } /* Name.Variable.Magic */
+.literal-block .il { color: #40a070 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/friendly.min.css b/flex/static/pygments/friendly.min.css
new file mode 100644
index 0000000..d7d70b9
--- /dev/null
+++ b/flex/static/pygments/friendly.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#f0f0f0}.highlight .c{color:#60a0b0;font-style:italic}.highlight .err{border:1px solid red}.highlight .k{color:#007020;font-weight:700}.highlight .o{color:#666}.highlight .ch,.highlight .cm{color:#60a0b0;font-style:italic}.highlight .cp{color:#007020}.highlight .c1,.highlight .cpf{color:#60a0b0;font-style:italic}.highlight .cs{color:#60a0b0;background-color:#fff0f0}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00a000}.highlight .go{color:#888}.highlight .gp{color:#c65d09}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:purple}.highlight .gt{color:#04d}.highlight .kc,.highlight .kd,.highlight .kn{color:#007020;font-weight:700}.highlight .kp{color:#007020}.highlight .kr{color:#007020;font-weight:700}.highlight .kt{color:#902000}.highlight .m{color:#40a070}.highlight .na,.highlight .s{color:#4070a0}.highlight .nb{color:#007020}.highlight .nc{color:#0e84b5;font-weight:700}.highlight .no{color:#60add5}.highlight .nd{color:#555;font-weight:700}.highlight .ni{color:#d55537;font-weight:700}.highlight .ne{color:#007020}.highlight .nf{color:#06287e}.highlight .nl{color:#002070;font-weight:700}.highlight .nn{color:#0e84b5;font-weight:700}.highlight .nt{color:#062873;font-weight:700}.highlight .nv{color:#bb60d5}.highlight .ow{color:#007020;font-weight:700}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#40a070}.highlight .dl,.highlight .sa,.highlight .sb,.highlight .sc{color:#4070a0}.highlight .sd{color:#4070a0;font-style:italic}.highlight .s2{color:#4070a0}.highlight .se{color:#4070a0;font-weight:700}.highlight .sh{color:#4070a0}.highlight .si{color:#70a0d0;font-style:italic}.highlight .sx{color:#c65d09}.highlight .sr{color:#235388}.highlight .s1{color:#4070a0}.highlight .ss{color:#517918}.highlight .bp{color:#007020}.highlight .fm{color:#06287e}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#bb60d5}.highlight .il{color:#40a070}.literal-block .hll{background-color:#ffc}.literal-block{background:#f0f0f0}.literal-block .c{color:#60a0b0;font-style:italic}.literal-block .err{border:1px solid red}.literal-block .k{color:#007020;font-weight:700}.literal-block .o{color:#666}.literal-block .ch,.literal-block .cm{color:#60a0b0;font-style:italic}.literal-block .cp{color:#007020}.literal-block .c1,.literal-block .cpf{color:#60a0b0;font-style:italic}.literal-block .cs{color:#60a0b0;background-color:#fff0f0}.literal-block .gd{color:#a00000}.literal-block .ge{font-style:italic}.literal-block .gr{color:red}.literal-block .gh{color:navy;font-weight:700}.literal-block .gi{color:#00a000}.literal-block .go{color:#888}.literal-block .gp{color:#c65d09;font-weight:700}.literal-block .gs{font-weight:700}.literal-block .gu{color:purple;font-weight:700}.literal-block .gt{color:#04d}.literal-block .kc,.literal-block .kd,.literal-block .kn{color:#007020;font-weight:700}.literal-block .kp{color:#007020}.literal-block .kr{color:#007020;font-weight:700}.literal-block .kt{color:#902000}.literal-block .m{color:#40a070}.literal-block .na,.literal-block .s{color:#4070a0}.literal-block .nb{color:#007020}.literal-block .nc{color:#0e84b5;font-weight:700}.literal-block .no{color:#60add5}.literal-block .nd{color:#555;font-weight:700}.literal-block .ni{color:#d55537;font-weight:700}.literal-block .ne{color:#007020}.literal-block .nf{color:#06287e}.literal-block .nl{color:#002070;font-weight:700}.literal-block .nn{color:#0e84b5;font-weight:700}.literal-block .nt{color:#062873;font-weight:700}.literal-block .nv{color:#bb60d5}.literal-block .ow{color:#007020;font-weight:700}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#40a070}.literal-block .dl,.literal-block .sa,.literal-block .sb,.literal-block .sc{color:#4070a0}.literal-block .sd{color:#4070a0;font-style:italic}.literal-block .s2{color:#4070a0}.literal-block .se{color:#4070a0;font-weight:700}.literal-block .sh{color:#4070a0}.literal-block .si{color:#70a0d0;font-style:italic}.literal-block .sx{color:#c65d09}.literal-block .sr{color:#235388}.literal-block .s1{color:#4070a0}.literal-block .ss{color:#517918}.literal-block .bp{color:#007020}.literal-block .fm{color:#06287e}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#bb60d5}.literal-block .il{color:#40a070}
\ No newline at end of file
diff --git a/flex/static/pygments/fruity.css b/flex/static/pygments/fruity.css
new file mode 100644
index 0000000..41911d5
--- /dev/null
+++ b/flex/static/pygments/fruity.css
@@ -0,0 +1,156 @@
+.highlight .hll { background-color: #333333 }
+.highlight { background: #111111; color: #ffffff }
+.highlight .c { color: #008800; font-style: italic; background-color: #0f140f } /* Comment */
+.highlight .err { color: #ffffff } /* Error */
+.highlight .esc { color: #ffffff } /* Escape */
+.highlight .g { color: #ffffff } /* Generic */
+.highlight .k { color: #fb660a; font-weight: bold } /* Keyword */
+.highlight .l { color: #ffffff } /* Literal */
+.highlight .n { color: #ffffff } /* Name */
+.highlight .o { color: #ffffff } /* Operator */
+.highlight .x { color: #ffffff } /* Other */
+.highlight .p { color: #ffffff } /* Punctuation */
+.highlight .ch { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Hashbang */
+.highlight .cm { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Multiline */
+.highlight .cp { color: #ff0007; font-weight: bold; font-style: italic; background-color: #0f140f } /* Comment.Preproc */
+.highlight .cpf { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.PreprocFile */
+.highlight .c1 { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Single */
+.highlight .cs { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Special */
+.highlight .gd { color: #ffffff } /* Generic.Deleted */
+.highlight .ge { color: #ffffff } /* Generic.Emph */
+.highlight .gr { color: #ffffff } /* Generic.Error */
+.highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #ffffff } /* Generic.Inserted */
+.highlight .go { color: #444444; background-color: #222222 } /* Generic.Output */
+.highlight .gp { color: #ffffff } /* Generic.Prompt */
+.highlight .gs { color: #ffffff } /* Generic.Strong */
+.highlight .gu { color: #ffffff; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #ffffff } /* Generic.Traceback */
+.highlight .kc { color: #fb660a; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #fb660a; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #fb660a; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #fb660a } /* Keyword.Pseudo */
+.highlight .kr { color: #fb660a; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #cdcaa9; font-weight: bold } /* Keyword.Type */
+.highlight .ld { color: #ffffff } /* Literal.Date */
+.highlight .m { color: #0086f7; font-weight: bold } /* Literal.Number */
+.highlight .s { color: #0086d2 } /* Literal.String */
+.highlight .na { color: #ff0086; font-weight: bold } /* Name.Attribute */
+.highlight .nb { color: #ffffff } /* Name.Builtin */
+.highlight .nc { color: #ffffff } /* Name.Class */
+.highlight .no { color: #0086d2 } /* Name.Constant */
+.highlight .nd { color: #ffffff } /* Name.Decorator */
+.highlight .ni { color: #ffffff } /* Name.Entity */
+.highlight .ne { color: #ffffff } /* Name.Exception */
+.highlight .nf { color: #ff0086; font-weight: bold } /* Name.Function */
+.highlight .nl { color: #ffffff } /* Name.Label */
+.highlight .nn { color: #ffffff } /* Name.Namespace */
+.highlight .nx { color: #ffffff } /* Name.Other */
+.highlight .py { color: #ffffff } /* Name.Property */
+.highlight .nt { color: #fb660a; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #fb660a } /* Name.Variable */
+.highlight .ow { color: #ffffff } /* Operator.Word */
+.highlight .w { color: #888888 } /* Text.Whitespace */
+.highlight .mb { color: #0086f7; font-weight: bold } /* Literal.Number.Bin */
+.highlight .mf { color: #0086f7; font-weight: bold } /* Literal.Number.Float */
+.highlight .mh { color: #0086f7; font-weight: bold } /* Literal.Number.Hex */
+.highlight .mi { color: #0086f7; font-weight: bold } /* Literal.Number.Integer */
+.highlight .mo { color: #0086f7; font-weight: bold } /* Literal.Number.Oct */
+.highlight .sa { color: #0086d2 } /* Literal.String.Affix */
+.highlight .sb { color: #0086d2 } /* Literal.String.Backtick */
+.highlight .sc { color: #0086d2 } /* Literal.String.Char */
+.highlight .dl { color: #0086d2 } /* Literal.String.Delimiter */
+.highlight .sd { color: #0086d2 } /* Literal.String.Doc */
+.highlight .s2 { color: #0086d2 } /* Literal.String.Double */
+.highlight .se { color: #0086d2 } /* Literal.String.Escape */
+.highlight .sh { color: #0086d2 } /* Literal.String.Heredoc */
+.highlight .si { color: #0086d2 } /* Literal.String.Interpol */
+.highlight .sx { color: #0086d2 } /* Literal.String.Other */
+.highlight .sr { color: #0086d2 } /* Literal.String.Regex */
+.highlight .s1 { color: #0086d2 } /* Literal.String.Single */
+.highlight .ss { color: #0086d2 } /* Literal.String.Symbol */
+.highlight .bp { color: #ffffff } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #ff0086; font-weight: bold } /* Name.Function.Magic */
+.highlight .vc { color: #fb660a } /* Name.Variable.Class */
+.highlight .vg { color: #fb660a } /* Name.Variable.Global */
+.highlight .vi { color: #fb660a } /* Name.Variable.Instance */
+.highlight .vm { color: #fb660a } /* Name.Variable.Magic */
+.highlight .il { color: #0086f7; font-weight: bold } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #333333 }
+.literal-block { background: #111111; color: #ffffff }
+.literal-block .c { color: #008800; font-style: italic; background-color: #0f140f } /* Comment */
+.literal-block .err { color: #ffffff } /* Error */
+.literal-block .esc { color: #ffffff } /* Escape */
+.literal-block .g { color: #ffffff } /* Generic */
+.literal-block .k { color: #fb660a; font-weight: bold } /* Keyword */
+.literal-block .l { color: #ffffff } /* Literal */
+.literal-block .n { color: #ffffff } /* Name */
+.literal-block .o { color: #ffffff } /* Operator */
+.literal-block .x { color: #ffffff } /* Other */
+.literal-block .p { color: #ffffff } /* Punctuation */
+.literal-block .ch { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Hashbang */
+.literal-block .cm { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Multiline */
+.literal-block .cp { color: #ff0007; font-weight: bold; font-style: italic; background-color: #0f140f } /* Comment.Preproc */
+.literal-block .cpf { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.PreprocFile */
+.literal-block .c1 { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Single */
+.literal-block .cs { color: #008800; font-style: italic; background-color: #0f140f } /* Comment.Special */
+.literal-block .gd { color: #ffffff } /* Generic.Deleted */
+.literal-block .ge { color: #ffffff } /* Generic.Emph */
+.literal-block .gr { color: #ffffff } /* Generic.Error */
+.literal-block .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #ffffff } /* Generic.Inserted */
+.literal-block .go { color: #444444; background-color: #222222 } /* Generic.Output */
+.literal-block .gp { color: #ffffff } /* Generic.Prompt */
+.literal-block .gs { color: #ffffff } /* Generic.Strong */
+.literal-block .gu { color: #ffffff; font-weight: bold } /* Generic.Subheading */
+.literal-block .gt { color: #ffffff } /* Generic.Traceback */
+.literal-block .kc { color: #fb660a; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #fb660a; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #fb660a; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #fb660a } /* Keyword.Pseudo */
+.literal-block .kr { color: #fb660a; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #cdcaa9; font-weight: bold } /* Keyword.Type */
+.literal-block .ld { color: #ffffff } /* Literal.Date */
+.literal-block .m { color: #0086f7; font-weight: bold } /* Literal.Number */
+.literal-block .s { color: #0086d2 } /* Literal.String */
+.literal-block .na { color: #ff0086; font-weight: bold } /* Name.Attribute */
+.literal-block .nb { color: #ffffff } /* Name.Builtin */
+.literal-block .nc { color: #ffffff } /* Name.Class */
+.literal-block .no { color: #0086d2 } /* Name.Constant */
+.literal-block .nd { color: #ffffff } /* Name.Decorator */
+.literal-block .ni { color: #ffffff } /* Name.Entity */
+.literal-block .ne { color: #ffffff } /* Name.Exception */
+.literal-block .nf { color: #ff0086; font-weight: bold } /* Name.Function */
+.literal-block .nl { color: #ffffff } /* Name.Label */
+.literal-block .nn { color: #ffffff } /* Name.Namespace */
+.literal-block .nx { color: #ffffff } /* Name.Other */
+.literal-block .py { color: #ffffff } /* Name.Property */
+.literal-block .nt { color: #fb660a; font-weight: bold } /* Name.Tag */
+.literal-block .nv { color: #fb660a } /* Name.Variable */
+.literal-block .ow { color: #ffffff } /* Operator.Word */
+.literal-block .w { color: #888888 } /* Text.Whitespace */
+.literal-block .mb { color: #0086f7; font-weight: bold } /* Literal.Number.Bin */
+.literal-block .mf { color: #0086f7; font-weight: bold } /* Literal.Number.Float */
+.literal-block .mh { color: #0086f7; font-weight: bold } /* Literal.Number.Hex */
+.literal-block .mi { color: #0086f7; font-weight: bold } /* Literal.Number.Integer */
+.literal-block .mo { color: #0086f7; font-weight: bold } /* Literal.Number.Oct */
+.literal-block .sa { color: #0086d2 } /* Literal.String.Affix */
+.literal-block .sb { color: #0086d2 } /* Literal.String.Backtick */
+.literal-block .sc { color: #0086d2 } /* Literal.String.Char */
+.literal-block .dl { color: #0086d2 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #0086d2 } /* Literal.String.Doc */
+.literal-block .s2 { color: #0086d2 } /* Literal.String.Double */
+.literal-block .se { color: #0086d2 } /* Literal.String.Escape */
+.literal-block .sh { color: #0086d2 } /* Literal.String.Heredoc */
+.literal-block .si { color: #0086d2 } /* Literal.String.Interpol */
+.literal-block .sx { color: #0086d2 } /* Literal.String.Other */
+.literal-block .sr { color: #0086d2 } /* Literal.String.Regex */
+.literal-block .s1 { color: #0086d2 } /* Literal.String.Single */
+.literal-block .ss { color: #0086d2 } /* Literal.String.Symbol */
+.literal-block .bp { color: #ffffff } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #ff0086; font-weight: bold } /* Name.Function.Magic */
+.literal-block .vc { color: #fb660a } /* Name.Variable.Class */
+.literal-block .vg { color: #fb660a } /* Name.Variable.Global */
+.literal-block .vi { color: #fb660a } /* Name.Variable.Instance */
+.literal-block .vm { color: #fb660a } /* Name.Variable.Magic */
+.literal-block .il { color: #0086f7; font-weight: bold } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/fruity.min.css b/flex/static/pygments/fruity.min.css
new file mode 100644
index 0000000..4076a52
--- /dev/null
+++ b/flex/static/pygments/fruity.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#333}.highlight{background:#111;color:#fff}.highlight .c{color:#080;font-style:italic;background-color:#0f140f}.highlight .err,.highlight .esc,.highlight .g{color:#fff}.highlight .k{color:#fb660a;font-weight:700}.highlight .l,.highlight .n,.highlight .o,.highlight .p,.highlight .x{color:#fff}.highlight .ch,.highlight .cm{color:#080;font-style:italic;background-color:#0f140f}.highlight .cp{color:#ff0007;font-weight:700;font-style:italic;background-color:#0f140f}.highlight .c1,.highlight .cpf,.highlight .cs{color:#080;font-style:italic;background-color:#0f140f}.highlight .gd,.highlight .ge,.highlight .gr{color:#fff}.highlight .gh{color:#fff;font-weight:700}.highlight .gi{color:#fff}.highlight .go{color:#444;background-color:#222}.highlight .gp,.highlight .gs{color:#fff}.highlight .gu{color:#fff;font-weight:700}.highlight .gt{color:#fff}.highlight .kc,.highlight .kd,.highlight .kn{color:#fb660a;font-weight:700}.highlight .kp{color:#fb660a}.highlight .kr{color:#fb660a;font-weight:700}.highlight .kt{color:#cdcaa9;font-weight:700}.highlight .ld{color:#fff}.highlight .m{color:#0086f7;font-weight:700}.highlight .s{color:#0086d2}.highlight .na{color:#ff0086;font-weight:700}.highlight .nb,.highlight .nc{color:#fff}.highlight .no{color:#0086d2}.highlight .nd,.highlight .ne,.highlight .ni{color:#fff}.highlight .nf{color:#ff0086;font-weight:700}.highlight .nl,.highlight .nn,.highlight .nx,.highlight .py{color:#fff}.highlight .nt{color:#fb660a;font-weight:700}.highlight .nv{color:#fb660a}.highlight .ow{color:#fff}.highlight .w{color:#888}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#0086f7;font-weight:700}.highlight .dl,.highlight .s1,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#0086d2}.highlight .bp{color:#fff}.highlight .fm{color:#ff0086;font-weight:700}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#fb660a}.highlight .il{color:#0086f7;font-weight:700}.literal-block .hll{background-color:#333}.literal-block{background:#111;color:#fff}.literal-block .c{color:#080;font-style:italic;background-color:#0f140f}.literal-block .err,.literal-block .esc,.literal-block .g{color:#fff}.literal-block .k{color:#fb660a;font-weight:700}.literal-block .l,.literal-block .n,.literal-block .o,.literal-block .p,.literal-block .x{color:#fff}.literal-block .ch,.literal-block .cm{color:#080;font-style:italic;background-color:#0f140f}.literal-block .cp{color:#ff0007;font-weight:700;font-style:italic;background-color:#0f140f}.literal-block .c1,.literal-block .cpf,.literal-block .cs{color:#080;font-style:italic;background-color:#0f140f}.literal-block .gd,.literal-block .ge,.literal-block .gr{color:#fff}.literal-block .gh{color:#fff;font-weight:700}.literal-block .gi{color:#fff}.literal-block .go{color:#444;background-color:#222}.literal-block .gp,.literal-block .gs{color:#fff}.literal-block .gu{color:#fff;font-weight:700}.literal-block .gt{color:#fff}.literal-block .kc,.literal-block .kd,.literal-block .kn{color:#fb660a;font-weight:700}.literal-block .kp{color:#fb660a}.literal-block .kr{color:#fb660a;font-weight:700}.literal-block .kt{color:#cdcaa9;font-weight:700}.literal-block .ld{color:#fff}.literal-block .m{color:#0086f7;font-weight:700}.literal-block .s{color:#0086d2}.literal-block .na{color:#ff0086;font-weight:700}.literal-block .nb,.literal-block .nc{color:#fff}.literal-block .no{color:#0086d2}.literal-block .nd,.literal-block .ne,.literal-block .ni{color:#fff}.literal-block .nf{color:#ff0086;font-weight:700}.literal-block .nl,.literal-block .nn,.literal-block .nx,.literal-block .py{color:#fff}.literal-block .nt{color:#fb660a;font-weight:700}.literal-block .nv{color:#fb660a}.literal-block .ow{color:#fff}.literal-block .w{color:#888}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#0086f7;font-weight:700}.literal-block .dl,.literal-block .s1,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#0086d2}.literal-block .bp{color:#fff}.literal-block .fm{color:#ff0086;font-weight:700}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#fb660a}.literal-block .il{color:#0086f7;font-weight:700}
\ No newline at end of file
diff --git a/flex/static/pygments/github.css b/flex/static/pygments/github.css
new file mode 100644
index 0000000..742468c
--- /dev/null
+++ b/flex/static/pygments/github.css
@@ -0,0 +1,138 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #999988; font-style: italic } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .k { color: #000000; font-weight: bold } /* Keyword */
+.highlight .o { color: #000000; font-weight: bold } /* Operator */
+.highlight .ch { color: #999988; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: #999988; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #aa0000 } /* Generic.Error */
+.highlight .gh { color: #999999 } /* Generic.Heading */
+.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #555555 } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
+.highlight .gt { color: #aa0000 } /* Generic.Traceback */
+.highlight .kc { color: #000000; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #000000; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #000000; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: #000000; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #009999 } /* Literal.Number */
+.highlight .s { color: #dd1144 } /* Literal.String */
+.highlight .na { color: #008080 } /* Name.Attribute */
+.highlight .nb { color: #0086B3 } /* Name.Builtin */
+.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
+.highlight .no { color: #008080 } /* Name.Constant */
+.highlight .nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #800080 } /* Name.Entity */
+.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
+.highlight .nl { color: #990000; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #555555 } /* Name.Namespace */
+.highlight .nt { color: #000080 } /* Name.Tag */
+.highlight .nv { color: #008080 } /* Name.Variable */
+.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #009999 } /* Literal.Number.Bin */
+.highlight .mf { color: #009999 } /* Literal.Number.Float */
+.highlight .mh { color: #009999 } /* Literal.Number.Hex */
+.highlight .mi { color: #009999 } /* Literal.Number.Integer */
+.highlight .mo { color: #009999 } /* Literal.Number.Oct */
+.highlight .sa { color: #dd1144 } /* Literal.String.Affix */
+.highlight .sb { color: #dd1144 } /* Literal.String.Backtick */
+.highlight .sc { color: #dd1144 } /* Literal.String.Char */
+.highlight .dl { color: #dd1144 } /* Literal.String.Delimiter */
+.highlight .sd { color: #dd1144 } /* Literal.String.Doc */
+.highlight .s2 { color: #dd1144 } /* Literal.String.Double */
+.highlight .se { color: #dd1144 } /* Literal.String.Escape */
+.highlight .sh { color: #dd1144 } /* Literal.String.Heredoc */
+.highlight .si { color: #dd1144 } /* Literal.String.Interpol */
+.highlight .sx { color: #dd1144 } /* Literal.String.Other */
+.highlight .sr { color: #009926 } /* Literal.String.Regex */
+.highlight .s1 { color: #dd1144 } /* Literal.String.Single */
+.highlight .ss { color: #990073 } /* Literal.String.Symbol */
+.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #990000; font-weight: bold } /* Name.Function.Magic */
+.highlight .vc { color: #008080 } /* Name.Variable.Class */
+.highlight .vg { color: #008080 } /* Name.Variable.Global */
+.highlight .vi { color: #008080 } /* Name.Variable.Instance */
+.highlight .vm { color: #008080 } /* Name.Variable.Magic */
+.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #999988; font-style: italic } /* Comment */
+.literal-block .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.literal-block .k { color: #000000; font-weight: bold } /* Keyword */
+.literal-block .o { color: #000000; font-weight: bold } /* Operator */
+.literal-block .ch { color: #999988; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #999988; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */
+.literal-block .cpf { color: #999988; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #999988; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
+.literal-block .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.literal-block .ge { color: #000000; font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #aa0000 } /* Generic.Error */
+.literal-block .gh { color: #999999 } /* Generic.Heading */
+.literal-block .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.literal-block .go { color: #888888 } /* Generic.Output */
+.literal-block .gp { color: #555555 } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #aaaaaa } /* Generic.Subheading */
+.literal-block .gt { color: #aa0000 } /* Generic.Traceback */
+.literal-block .kc { color: #000000; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #000000; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #000000; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */
+.literal-block .kr { color: #000000; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.literal-block .m { color: #009999 } /* Literal.Number */
+.literal-block .s { color: #dd1144 } /* Literal.String */
+.literal-block .na { color: #008080 } /* Name.Attribute */
+.literal-block .nb { color: #0086B3 } /* Name.Builtin */
+.literal-block .nc { color: #445588; font-weight: bold } /* Name.Class */
+.literal-block .no { color: #008080 } /* Name.Constant */
+.literal-block .nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */
+.literal-block .ni { color: #800080 } /* Name.Entity */
+.literal-block .ne { color: #990000; font-weight: bold } /* Name.Exception */
+.literal-block .nf { color: #990000; font-weight: bold } /* Name.Function */
+.literal-block .nl { color: #990000; font-weight: bold } /* Name.Label */
+.literal-block .nn { color: #555555 } /* Name.Namespace */
+.literal-block .nt { color: #000080 } /* Name.Tag */
+.literal-block .nv { color: #008080 } /* Name.Variable */
+.literal-block .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #009999 } /* Literal.Number.Bin */
+.literal-block .mf { color: #009999 } /* Literal.Number.Float */
+.literal-block .mh { color: #009999 } /* Literal.Number.Hex */
+.literal-block .mi { color: #009999 } /* Literal.Number.Integer */
+.literal-block .mo { color: #009999 } /* Literal.Number.Oct */
+.literal-block .sa { color: #dd1144 } /* Literal.String.Affix */
+.literal-block .sb { color: #dd1144 } /* Literal.String.Backtick */
+.literal-block .sc { color: #dd1144 } /* Literal.String.Char */
+.literal-block .dl { color: #dd1144 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #dd1144 } /* Literal.String.Doc */
+.literal-block .s2 { color: #dd1144 } /* Literal.String.Double */
+.literal-block .se { color: #dd1144 } /* Literal.String.Escape */
+.literal-block .sh { color: #dd1144 } /* Literal.String.Heredoc */
+.literal-block .si { color: #dd1144 } /* Literal.String.Interpol */
+.literal-block .sx { color: #dd1144 } /* Literal.String.Other */
+.literal-block .sr { color: #009926 } /* Literal.String.Regex */
+.literal-block .s1 { color: #dd1144 } /* Literal.String.Single */
+.literal-block .ss { color: #990073 } /* Literal.String.Symbol */
+.literal-block .bp { color: #999999 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #990000; font-weight: bold } /* Name.Function.Magic */
+.literal-block .vc { color: #008080 } /* Name.Variable.Class */
+.literal-block .vg { color: #008080 } /* Name.Variable.Global */
+.literal-block .vi { color: #008080 } /* Name.Variable.Instance */
+.literal-block .vm { color: #008080 } /* Name.Variable.Magic */
+.literal-block .il { color: #009999 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/github.min.css b/flex/static/pygments/github.min.css
new file mode 100644
index 0000000..72fe0f2
--- /dev/null
+++ b/flex/static/pygments/github.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k,.highlight .o{color:#000;font-weight:700}.highlight .ch,.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:700;font-style:italic}.highlight .c1,.highlight .cpf{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:700;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .ge{color:#000;font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:700}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr{color:#000;font-weight:700}.highlight .kt{color:#458;font-weight:700}.highlight .m{color:#099}.highlight .s{color:#d14}.highlight .na{color:teal}.highlight .nb{color:#0086b3}.highlight .nc{color:#458;font-weight:700}.highlight .no{color:teal}.highlight .nd{color:#3c5d5d;font-weight:700}.highlight .ni{color:purple}.highlight .ne,.highlight .nf,.highlight .nl{color:#900;font-weight:700}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{color:#000;font-weight:700}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#099}.highlight .dl,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .fm{color:#900;font-weight:700}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:teal}.highlight .il{color:#099}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:#998;font-style:italic}.literal-block .err{color:#a61717;background-color:#e3d2d2}.literal-block .k,.literal-block .o{color:#000;font-weight:700}.literal-block .ch,.literal-block .cm{color:#998;font-style:italic}.literal-block .cp{color:#999;font-weight:700;font-style:italic}.literal-block .c1,.literal-block .cpf{color:#998;font-style:italic}.literal-block .cs{color:#999;font-weight:700;font-style:italic}.literal-block .gd{color:#000;background-color:#fdd}.literal-block .ge{color:#000;font-style:italic}.literal-block .gr{color:#a00}.literal-block .gh{color:#999}.literal-block .gi{color:#000;background-color:#dfd}.literal-block .go{color:#888}.literal-block .gp{color:#555}.literal-block .gs{font-weight:700}.literal-block .gu{color:#aaa}.literal-block .gt{color:#a00}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr{color:#000;font-weight:700}.literal-block .kt{color:#458;font-weight:700}.literal-block .m{color:#099}.literal-block .s{color:#d14}.literal-block .na{color:teal}.literal-block .nb{color:#0086b3}.literal-block .nc{color:#458;font-weight:700}.literal-block .no{color:teal}.literal-block .nd{color:#3c5d5d;font-weight:700}.literal-block .ni{color:purple}.literal-block .ne,.literal-block .nf,.literal-block .nl{color:#900;font-weight:700}.literal-block .nn{color:#555}.literal-block .nt{color:navy}.literal-block .nv{color:teal}.literal-block .ow{color:#000;font-weight:700}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#099}.literal-block .dl,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sx{color:#d14}.literal-block .sr{color:#009926}.literal-block .s1{color:#d14}.literal-block .ss{color:#990073}.literal-block .bp{color:#999}.literal-block .fm{color:#900;font-weight:700}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:teal}.literal-block .il{color:#099}
\ No newline at end of file
diff --git a/flex/static/pygments/igor.css b/flex/static/pygments/igor.css
new file mode 100644
index 0000000..12a5315
--- /dev/null
+++ b/flex/static/pygments/igor.css
@@ -0,0 +1,68 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #FF0000; font-style: italic } /* Comment */
+.highlight .k { color: #0000FF } /* Keyword */
+.highlight .ch { color: #FF0000; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #FF0000; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #FF0000; font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: #FF0000; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #FF0000; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #FF0000; font-style: italic } /* Comment.Special */
+.highlight .kc { color: #0000FF } /* Keyword.Constant */
+.highlight .kd { color: #0000FF } /* Keyword.Declaration */
+.highlight .kn { color: #0000FF } /* Keyword.Namespace */
+.highlight .kp { color: #0000FF } /* Keyword.Pseudo */
+.highlight .kr { color: #0000FF } /* Keyword.Reserved */
+.highlight .kt { color: #0000FF } /* Keyword.Type */
+.highlight .s { color: #009C00 } /* Literal.String */
+.highlight .nc { color: #007575 } /* Name.Class */
+.highlight .nd { color: #CC00A3 } /* Name.Decorator */
+.highlight .nf { color: #C34E00 } /* Name.Function */
+.highlight .sa { color: #009C00 } /* Literal.String.Affix */
+.highlight .sb { color: #009C00 } /* Literal.String.Backtick */
+.highlight .sc { color: #009C00 } /* Literal.String.Char */
+.highlight .dl { color: #009C00 } /* Literal.String.Delimiter */
+.highlight .sd { color: #009C00 } /* Literal.String.Doc */
+.highlight .s2 { color: #009C00 } /* Literal.String.Double */
+.highlight .se { color: #009C00 } /* Literal.String.Escape */
+.highlight .sh { color: #009C00 } /* Literal.String.Heredoc */
+.highlight .si { color: #009C00 } /* Literal.String.Interpol */
+.highlight .sx { color: #009C00 } /* Literal.String.Other */
+.highlight .sr { color: #009C00 } /* Literal.String.Regex */
+.highlight .s1 { color: #009C00 } /* Literal.String.Single */
+.highlight .ss { color: #009C00 } /* Literal.String.Symbol */
+.highlight .fm { color: #C34E00 } /* Name.Function.Magic */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #FF0000; font-style: italic } /* Comment */
+.literal-block .k { color: #0000FF } /* Keyword */
+.literal-block .ch { color: #FF0000; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #FF0000; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #FF0000; font-style: italic } /* Comment.Preproc */
+.literal-block .cpf { color: #FF0000; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #FF0000; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #FF0000; font-style: italic } /* Comment.Special */
+.literal-block .kc { color: #0000FF } /* Keyword.Constant */
+.literal-block .kd { color: #0000FF } /* Keyword.Declaration */
+.literal-block .kn { color: #0000FF } /* Keyword.Namespace */
+.literal-block .kp { color: #0000FF } /* Keyword.Pseudo */
+.literal-block .kr { color: #0000FF } /* Keyword.Reserved */
+.literal-block .kt { color: #0000FF } /* Keyword.Type */
+.literal-block .s { color: #009C00 } /* Literal.String */
+.literal-block .nc { color: #007575 } /* Name.Class */
+.literal-block .nd { color: #CC00A3 } /* Name.Decorator */
+.literal-block .nf { color: #C34E00 } /* Name.Function */
+.literal-block .sa { color: #009C00 } /* Literal.String.Affix */
+.literal-block .sb { color: #009C00 } /* Literal.String.Backtick */
+.literal-block .sc { color: #009C00 } /* Literal.String.Char */
+.literal-block .dl { color: #009C00 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #009C00 } /* Literal.String.Doc */
+.literal-block .s2 { color: #009C00 } /* Literal.String.Double */
+.literal-block .se { color: #009C00 } /* Literal.String.Escape */
+.literal-block .sh { color: #009C00 } /* Literal.String.Heredoc */
+.literal-block .si { color: #009C00 } /* Literal.String.Interpol */
+.literal-block .sx { color: #009C00 } /* Literal.String.Other */
+.literal-block .sr { color: #009C00 } /* Literal.String.Regex */
+.literal-block .s1 { color: #009C00 } /* Literal.String.Single */
+.literal-block .ss { color: #009C00 } /* Literal.String.Symbol */
+.literal-block .fm { color: #C34E00 } /* Name.Function.Magic */
\ No newline at end of file
diff --git a/flex/static/pygments/igor.min.css b/flex/static/pygments/igor.min.css
new file mode 100644
index 0000000..a24b2bc
--- /dev/null
+++ b/flex/static/pygments/igor.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:red;font-style:italic}.highlight .k{color:#00f}.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cp,.highlight .cpf,.highlight .cs{color:red;font-style:italic}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:#00f}.highlight .s{color:#009c00}.highlight .nc{color:#007575}.highlight .nd{color:#cc00a3}.highlight .nf{color:#c34e00}.highlight .dl,.highlight .s1,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#009c00}.highlight .fm{color:#c34e00}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:red;font-style:italic}.literal-block .k{color:#00f}.literal-block .c1,.literal-block .ch,.literal-block .cm,.literal-block .cp,.literal-block .cpf,.literal-block .cs{color:red;font-style:italic}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr,.literal-block .kt{color:#00f}.literal-block .s{color:#009c00}.literal-block .nc{color:#007575}.literal-block .nd{color:#cc00a3}.literal-block .nf{color:#c34e00}.literal-block .dl,.literal-block .s1,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#009c00}.literal-block .fm{color:#c34e00}
\ No newline at end of file
diff --git a/flex/static/pygments/inkpot.css b/flex/static/pygments/inkpot.css
new file mode 100644
index 0000000..456e09b
--- /dev/null
+++ b/flex/static/pygments/inkpot.css
@@ -0,0 +1,148 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #1e1e27; color: #cfbfad }
+.highlight .c { color: #cd8b00 } /* Comment */
+.highlight .err { color: #ffffff; background-color: #6e2e2e } /* Error */
+.highlight .k { color: #808bed } /* Keyword */
+.highlight .n { color: #cfbfad } /* Name */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .x { color: #cfbfad } /* Other */
+.highlight .p { color: #cfbfad } /* Punctuation */
+.highlight .ch { color: #cd8b00 } /* Comment.Hashbang */
+.highlight .cm { color: #cd8b00 } /* Comment.Multiline */
+.highlight .cp { color: #409090 } /* Comment.Preproc */
+.highlight .cpf { color: #ffcd8b; background-color: #404040 } /* Comment.PreprocFile */
+.highlight .c1 { color: #cd8b00 } /* Comment.Single */
+.highlight .cs { color: #808bed } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #808bed } /* Keyword.Constant */
+.highlight .kd { color: #808bed } /* Keyword.Declaration */
+.highlight .kn { color: #808bed } /* Keyword.Namespace */
+.highlight .kp { color: #808bed } /* Keyword.Pseudo */
+.highlight .kr { color: #808bed } /* Keyword.Reserved */
+.highlight .kt { color: #ff8bff } /* Keyword.Type */
+.highlight .m { color: #f0ad6d } /* Literal.Number */
+.highlight .s { color: #ffcd8b; background-color: #404040 } /* Literal.String */
+.highlight .na { color: #cfbfad } /* Name.Attribute */
+.highlight .nb { color: #808bed } /* Name.Builtin */
+.highlight .nc { color: #ff8bff } /* Name.Class */
+.highlight .no { color: #409090 } /* Name.Constant */
+.highlight .nd { color: #409090 } /* Name.Decorator */
+.highlight .ni { color: #cfbfad } /* Name.Entity */
+.highlight .ne { color: #ff0000 } /* Name.Exception */
+.highlight .nf { color: #c080d0 } /* Name.Function */
+.highlight .nl { color: #808bed } /* Name.Label */
+.highlight .nn { color: #ff0000 } /* Name.Namespace */
+.highlight .nx { color: #cfbfad } /* Name.Other */
+.highlight .py { color: #cfbfad } /* Name.Property */
+.highlight .nt { color: #cfbfad } /* Name.Tag */
+.highlight .nv { color: #cfbfad } /* Name.Variable */
+.highlight .ow { color: #666666 } /* Operator.Word */
+.highlight .w { color: #434357 } /* Text.Whitespace */
+.highlight .mb { color: #f0ad6d } /* Literal.Number.Bin */
+.highlight .mf { color: #f0ad6d } /* Literal.Number.Float */
+.highlight .mh { color: #f0ad6d } /* Literal.Number.Hex */
+.highlight .mi { color: #f0ad6d } /* Literal.Number.Integer */
+.highlight .mo { color: #f0ad6d } /* Literal.Number.Oct */
+.highlight .sa { color: #ffcd8b; background-color: #404040 } /* Literal.String.Affix */
+.highlight .sb { color: #ffcd8b; background-color: #404040 } /* Literal.String.Backtick */
+.highlight .sc { color: #ffcd8b; background-color: #404040 } /* Literal.String.Char */
+.highlight .dl { color: #ffcd8b; background-color: #404040 } /* Literal.String.Delimiter */
+.highlight .sd { color: #808bed; background-color: #404040 } /* Literal.String.Doc */
+.highlight .s2 { color: #ffcd8b; background-color: #404040 } /* Literal.String.Double */
+.highlight .se { color: #ffcd8b; background-color: #404040 } /* Literal.String.Escape */
+.highlight .sh { color: #ffcd8b; background-color: #404040 } /* Literal.String.Heredoc */
+.highlight .si { color: #ffcd8b; background-color: #404040 } /* Literal.String.Interpol */
+.highlight .sx { color: #ffcd8b; background-color: #404040 } /* Literal.String.Other */
+.highlight .sr { color: #ffcd8b; background-color: #404040 } /* Literal.String.Regex */
+.highlight .s1 { color: #ffcd8b; background-color: #404040 } /* Literal.String.Single */
+.highlight .ss { color: #ffcd8b; background-color: #404040 } /* Literal.String.Symbol */
+.highlight .bp { color: #ffff00 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #c080d0 } /* Name.Function.Magic */
+.highlight .vc { color: #cfbfad } /* Name.Variable.Class */
+.highlight .vg { color: #cfbfad } /* Name.Variable.Global */
+.highlight .vi { color: #cfbfad } /* Name.Variable.Instance */
+.highlight .vm { color: #cfbfad } /* Name.Variable.Magic */
+.highlight .il { color: #f0ad6d } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #1e1e27; color: #cfbfad }
+.literal-block .c { color: #cd8b00 } /* Comment */
+.literal-block .err { color: #ffffff; background-color: #6e2e2e } /* Error */
+.literal-block .k { color: #808bed } /* Keyword */
+.literal-block .n { color: #cfbfad } /* Name */
+.literal-block .o { color: #666666 } /* Operator */
+.literal-block .x { color: #cfbfad } /* Other */
+.literal-block .p { color: #cfbfad } /* Punctuation */
+.literal-block .ch { color: #cd8b00 } /* Comment.Hashbang */
+.literal-block .cm { color: #cd8b00 } /* Comment.Multiline */
+.literal-block .cp { color: #409090 } /* Comment.Preproc */
+.literal-block .cpf { color: #ffcd8b; background-color: #404040 } /* Comment.PreprocFile */
+.literal-block .c1 { color: #cd8b00 } /* Comment.Single */
+.literal-block .cs { color: #808bed } /* Comment.Special */
+.literal-block .gd { color: #A00000 } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #FF0000 } /* Generic.Error */
+.literal-block .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #00A000 } /* Generic.Inserted */
+.literal-block .go { color: #888888 } /* Generic.Output */
+.literal-block .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.literal-block .gt { color: #0044DD } /* Generic.Traceback */
+.literal-block .kc { color: #808bed } /* Keyword.Constant */
+.literal-block .kd { color: #808bed } /* Keyword.Declaration */
+.literal-block .kn { color: #808bed } /* Keyword.Namespace */
+.literal-block .kp { color: #808bed } /* Keyword.Pseudo */
+.literal-block .kr { color: #808bed } /* Keyword.Reserved */
+.literal-block .kt { color: #ff8bff } /* Keyword.Type */
+.literal-block .m { color: #f0ad6d } /* Literal.Number */
+.literal-block .s { color: #ffcd8b; background-color: #404040 } /* Literal.String */
+.literal-block .na { color: #cfbfad } /* Name.Attribute */
+.literal-block .nb { color: #808bed } /* Name.Builtin */
+.literal-block .nc { color: #ff8bff } /* Name.Class */
+.literal-block .no { color: #409090 } /* Name.Constant */
+.literal-block .nd { color: #409090 } /* Name.Decorator */
+.literal-block .ni { color: #cfbfad } /* Name.Entity */
+.literal-block .ne { color: #ff0000 } /* Name.Exception */
+.literal-block .nf { color: #c080d0 } /* Name.Function */
+.literal-block .nl { color: #808bed } /* Name.Label */
+.literal-block .nn { color: #ff0000 } /* Name.Namespace */
+.literal-block .nx { color: #cfbfad } /* Name.Other */
+.literal-block .py { color: #cfbfad } /* Name.Property */
+.literal-block .nt { color: #cfbfad } /* Name.Tag */
+.literal-block .nv { color: #cfbfad } /* Name.Variable */
+.literal-block .ow { color: #666666 } /* Operator.Word */
+.literal-block .w { color: #434357 } /* Text.Whitespace */
+.literal-block .mb { color: #f0ad6d } /* Literal.Number.Bin */
+.literal-block .mf { color: #f0ad6d } /* Literal.Number.Float */
+.literal-block .mh { color: #f0ad6d } /* Literal.Number.Hex */
+.literal-block .mi { color: #f0ad6d } /* Literal.Number.Integer */
+.literal-block .mo { color: #f0ad6d } /* Literal.Number.Oct */
+.literal-block .sa { color: #ffcd8b; background-color: #404040 } /* Literal.String.Affix */
+.literal-block .sb { color: #ffcd8b; background-color: #404040 } /* Literal.String.Backtick */
+.literal-block .sc { color: #ffcd8b; background-color: #404040 } /* Literal.String.Char */
+.literal-block .dl { color: #ffcd8b; background-color: #404040 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #808bed; background-color: #404040 } /* Literal.String.Doc */
+.literal-block .s2 { color: #ffcd8b; background-color: #404040 } /* Literal.String.Double */
+.literal-block .se { color: #ffcd8b; background-color: #404040 } /* Literal.String.Escape */
+.literal-block .sh { color: #ffcd8b; background-color: #404040 } /* Literal.String.Heredoc */
+.literal-block .si { color: #ffcd8b; background-color: #404040 } /* Literal.String.Interpol */
+.literal-block .sx { color: #ffcd8b; background-color: #404040 } /* Literal.String.Other */
+.literal-block .sr { color: #ffcd8b; background-color: #404040 } /* Literal.String.Regex */
+.literal-block .s1 { color: #ffcd8b; background-color: #404040 } /* Literal.String.Single */
+.literal-block .ss { color: #ffcd8b; background-color: #404040 } /* Literal.String.Symbol */
+.literal-block .bp { color: #ffff00 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #c080d0 } /* Name.Function.Magic */
+.literal-block .vc { color: #cfbfad } /* Name.Variable.Class */
+.literal-block .vg { color: #cfbfad } /* Name.Variable.Global */
+.literal-block .vi { color: #cfbfad } /* Name.Variable.Instance */
+.literal-block .vm { color: #cfbfad } /* Name.Variable.Magic */
+.literal-block .il { color: #f0ad6d } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/inkpot.min.css b/flex/static/pygments/inkpot.min.css
new file mode 100644
index 0000000..55b2238
--- /dev/null
+++ b/flex/static/pygments/inkpot.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#1e1e27;color:#cfbfad}.highlight .c{color:#cd8b00}.highlight .err{color:#fff;background-color:#6e2e2e}.highlight .k{color:#808bed}.highlight .n{color:#cfbfad}.highlight .o{color:#666}.highlight .p,.highlight .x{color:#cfbfad}.highlight .ch,.highlight .cm{color:#cd8b00}.highlight .cp{color:#409090}.highlight .cpf{color:#ffcd8b;background-color:#404040}.highlight .c1{color:#cd8b00}.highlight .cs{color:#808bed}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00a000}.highlight .go{color:#888}.highlight .gp{color:navy}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:purple}.highlight .gt{color:#04d}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr{color:#808bed}.highlight .kt{color:#ff8bff}.highlight .m{color:#f0ad6d}.highlight .s{color:#ffcd8b;background-color:#404040}.highlight .na{color:#cfbfad}.highlight .nb{color:#808bed}.highlight .nc{color:#ff8bff}.highlight .nd,.highlight .no{color:#409090}.highlight .ni{color:#cfbfad}.highlight .ne{color:red}.highlight .nf{color:#c080d0}.highlight .nl{color:#808bed}.highlight .nn{color:red}.highlight .nt,.highlight .nv,.highlight .nx,.highlight .py{color:#cfbfad}.highlight .ow{color:#666}.highlight .w{color:#434357}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#f0ad6d}.highlight .dl,.highlight .sa,.highlight .sb,.highlight .sc{color:#ffcd8b;background-color:#404040}.highlight .sd{color:#808bed;background-color:#404040}.highlight .s1,.highlight .s2,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#ffcd8b;background-color:#404040}.highlight .bp{color:#ff0}.highlight .fm{color:#c080d0}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#cfbfad}.highlight .il{color:#f0ad6d}.literal-block .hll{background-color:#ffc}.literal-block{background:#1e1e27;color:#cfbfad}.literal-block .c{color:#cd8b00}.literal-block .err{color:#fff;background-color:#6e2e2e}.literal-block .k{color:#808bed}.literal-block .n{color:#cfbfad}.literal-block .o{color:#666}.literal-block .p,.literal-block .x{color:#cfbfad}.literal-block .ch,.literal-block .cm{color:#cd8b00}.literal-block .cp{color:#409090}.literal-block .cpf{color:#ffcd8b;background-color:#404040}.literal-block .c1{color:#cd8b00}.literal-block .cs{color:#808bed}.literal-block .gd{color:#a00000}.literal-block .ge{font-style:italic}.literal-block .gr{color:red}.literal-block .gh{color:navy;font-weight:700}.literal-block .gi{color:#00a000}.literal-block .go{color:#888}.literal-block .gp{color:navy;font-weight:700}.literal-block .gs{font-weight:700}.literal-block .gu{color:purple;font-weight:700}.literal-block .gt{color:#04d}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr{color:#808bed}.literal-block .kt{color:#ff8bff}.literal-block .m{color:#f0ad6d}.literal-block .s{color:#ffcd8b;background-color:#404040}.literal-block .na{color:#cfbfad}.literal-block .nb{color:#808bed}.literal-block .nc{color:#ff8bff}.literal-block .nd,.literal-block .no{color:#409090}.literal-block .ni{color:#cfbfad}.literal-block .ne{color:red}.literal-block .nf{color:#c080d0}.literal-block .nl{color:#808bed}.literal-block .nn{color:red}.literal-block .nt,.literal-block .nv,.literal-block .nx,.literal-block .py{color:#cfbfad}.literal-block .ow{color:#666}.literal-block .w{color:#434357}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#f0ad6d}.literal-block .dl,.literal-block .sa,.literal-block .sb,.literal-block .sc{color:#ffcd8b;background-color:#404040}.literal-block .sd{color:#808bed;background-color:#404040}.literal-block .s1,.literal-block .s2,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#ffcd8b;background-color:#404040}.literal-block .bp{color:#ff0}.literal-block .fm{color:#c080d0}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#cfbfad}.literal-block .il{color:#f0ad6d}
\ No newline at end of file
diff --git a/flex/static/pygments/lovelace.css b/flex/static/pygments/lovelace.css
new file mode 100644
index 0000000..73eb7e8
--- /dev/null
+++ b/flex/static/pygments/lovelace.css
@@ -0,0 +1,140 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #888888; font-style: italic } /* Comment */
+.highlight .err { background-color: #a848a8 } /* Error */
+.highlight .k { color: #2838b0 } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .p { color: #888888 } /* Punctuation */
+.highlight .ch { color: #287088; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #888888; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #289870 } /* Comment.Preproc */
+.highlight .cpf { color: #888888; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #888888; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #888888; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #c02828 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #c02828 } /* Generic.Error */
+.highlight .gh { color: #666666 } /* Generic.Heading */
+.highlight .gi { color: #388038 } /* Generic.Inserted */
+.highlight .go { color: #666666 } /* Generic.Output */
+.highlight .gp { color: #444444 } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #444444 } /* Generic.Subheading */
+.highlight .gt { color: #2838b0 } /* Generic.Traceback */
+.highlight .kc { color: #444444; font-style: italic } /* Keyword.Constant */
+.highlight .kd { color: #2838b0; font-style: italic } /* Keyword.Declaration */
+.highlight .kn { color: #2838b0 } /* Keyword.Namespace */
+.highlight .kp { color: #2838b0 } /* Keyword.Pseudo */
+.highlight .kr { color: #2838b0 } /* Keyword.Reserved */
+.highlight .kt { color: #2838b0; font-style: italic } /* Keyword.Type */
+.highlight .m { color: #444444 } /* Literal.Number */
+.highlight .s { color: #b83838 } /* Literal.String */
+.highlight .na { color: #388038 } /* Name.Attribute */
+.highlight .nb { color: #388038 } /* Name.Builtin */
+.highlight .nc { color: #287088 } /* Name.Class */
+.highlight .no { color: #b85820 } /* Name.Constant */
+.highlight .nd { color: #287088 } /* Name.Decorator */
+.highlight .ni { color: #709030 } /* Name.Entity */
+.highlight .ne { color: #908828 } /* Name.Exception */
+.highlight .nf { color: #785840 } /* Name.Function */
+.highlight .nl { color: #289870 } /* Name.Label */
+.highlight .nn { color: #289870 } /* Name.Namespace */
+.highlight .nt { color: #2838b0 } /* Name.Tag */
+.highlight .nv { color: #b04040 } /* Name.Variable */
+.highlight .ow { color: #a848a8 } /* Operator.Word */
+.highlight .w { color: #a89028 } /* Text.Whitespace */
+.highlight .mb { color: #444444 } /* Literal.Number.Bin */
+.highlight .mf { color: #444444 } /* Literal.Number.Float */
+.highlight .mh { color: #444444 } /* Literal.Number.Hex */
+.highlight .mi { color: #444444 } /* Literal.Number.Integer */
+.highlight .mo { color: #444444 } /* Literal.Number.Oct */
+.highlight .sa { color: #444444 } /* Literal.String.Affix */
+.highlight .sb { color: #b83838 } /* Literal.String.Backtick */
+.highlight .sc { color: #a848a8 } /* Literal.String.Char */
+.highlight .dl { color: #b85820 } /* Literal.String.Delimiter */
+.highlight .sd { color: #b85820; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #b83838 } /* Literal.String.Double */
+.highlight .se { color: #709030 } /* Literal.String.Escape */
+.highlight .sh { color: #b83838 } /* Literal.String.Heredoc */
+.highlight .si { color: #b83838; text-decoration: underline } /* Literal.String.Interpol */
+.highlight .sx { color: #a848a8 } /* Literal.String.Other */
+.highlight .sr { color: #a848a8 } /* Literal.String.Regex */
+.highlight .s1 { color: #b83838 } /* Literal.String.Single */
+.highlight .ss { color: #b83838 } /* Literal.String.Symbol */
+.highlight .bp { color: #388038; font-style: italic } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #b85820 } /* Name.Function.Magic */
+.highlight .vc { color: #b04040 } /* Name.Variable.Class */
+.highlight .vg { color: #908828 } /* Name.Variable.Global */
+.highlight .vi { color: #b04040 } /* Name.Variable.Instance */
+.highlight .vm { color: #b85820 } /* Name.Variable.Magic */
+.highlight .il { color: #444444 } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #888888; font-style: italic } /* Comment */
+.literal-block .err { background-color: #a848a8 } /* Error */
+.literal-block .k { color: #2838b0 } /* Keyword */
+.literal-block .o { color: #666666 } /* Operator */
+.literal-block .p { color: #888888 } /* Punctuation */
+.literal-block .ch { color: #287088; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #888888; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #289870 } /* Comment.Preproc */
+.literal-block .cpf { color: #888888; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #888888; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #888888; font-style: italic } /* Comment.Special */
+.literal-block .gd { color: #c02828 } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #c02828 } /* Generic.Error */
+.literal-block .gh { color: #666666 } /* Generic.Heading */
+.literal-block .gi { color: #388038 } /* Generic.Inserted */
+.literal-block .go { color: #666666 } /* Generic.Output */
+.literal-block .gp { color: #444444 } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #444444 } /* Generic.Subheading */
+.literal-block .gt { color: #2838b0 } /* Generic.Traceback */
+.literal-block .kc { color: #444444; font-style: italic } /* Keyword.Constant */
+.literal-block .kd { color: #2838b0; font-style: italic } /* Keyword.Declaration */
+.literal-block .kn { color: #2838b0 } /* Keyword.Namespace */
+.literal-block .kp { color: #2838b0 } /* Keyword.Pseudo */
+.literal-block .kr { color: #2838b0 } /* Keyword.Reserved */
+.literal-block .kt { color: #2838b0; font-style: italic } /* Keyword.Type */
+.literal-block .m { color: #444444 } /* Literal.Number */
+.literal-block .s { color: #b83838 } /* Literal.String */
+.literal-block .na { color: #388038 } /* Name.Attribute */
+.literal-block .nb { color: #388038 } /* Name.Builtin */
+.literal-block .nc { color: #287088 } /* Name.Class */
+.literal-block .no { color: #b85820 } /* Name.Constant */
+.literal-block .nd { color: #287088 } /* Name.Decorator */
+.literal-block .ni { color: #709030 } /* Name.Entity */
+.literal-block .ne { color: #908828 } /* Name.Exception */
+.literal-block .nf { color: #785840 } /* Name.Function */
+.literal-block .nl { color: #289870 } /* Name.Label */
+.literal-block .nn { color: #289870 } /* Name.Namespace */
+.literal-block .nt { color: #2838b0 } /* Name.Tag */
+.literal-block .nv { color: #b04040 } /* Name.Variable */
+.literal-block .ow { color: #a848a8 } /* Operator.Word */
+.literal-block .w { color: #a89028 } /* Text.Whitespace */
+.literal-block .mb { color: #444444 } /* Literal.Number.Bin */
+.literal-block .mf { color: #444444 } /* Literal.Number.Float */
+.literal-block .mh { color: #444444 } /* Literal.Number.Hex */
+.literal-block .mi { color: #444444 } /* Literal.Number.Integer */
+.literal-block .mo { color: #444444 } /* Literal.Number.Oct */
+.literal-block .sa { color: #444444 } /* Literal.String.Affix */
+.literal-block .sb { color: #b83838 } /* Literal.String.Backtick */
+.literal-block .sc { color: #a848a8 } /* Literal.String.Char */
+.literal-block .dl { color: #b85820 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #b85820; font-style: italic } /* Literal.String.Doc */
+.literal-block .s2 { color: #b83838 } /* Literal.String.Double */
+.literal-block .se { color: #709030 } /* Literal.String.Escape */
+.literal-block .sh { color: #b83838 } /* Literal.String.Heredoc */
+.literal-block .si { color: #b83838; text-decoration: underline } /* Literal.String.Interpol */
+.literal-block .sx { color: #a848a8 } /* Literal.String.Other */
+.literal-block .sr { color: #a848a8 } /* Literal.String.Regex */
+.literal-block .s1 { color: #b83838 } /* Literal.String.Single */
+.literal-block .ss { color: #b83838 } /* Literal.String.Symbol */
+.literal-block .bp { color: #388038; font-style: italic } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #b85820 } /* Name.Function.Magic */
+.literal-block .vc { color: #b04040 } /* Name.Variable.Class */
+.literal-block .vg { color: #908828 } /* Name.Variable.Global */
+.literal-block .vi { color: #b04040 } /* Name.Variable.Instance */
+.literal-block .vm { color: #b85820 } /* Name.Variable.Magic */
+.literal-block .il { color: #444444 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/lovelace.min.css b/flex/static/pygments/lovelace.min.css
new file mode 100644
index 0000000..06b5a7f
--- /dev/null
+++ b/flex/static/pygments/lovelace.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:#888;font-style:italic}.highlight .err{background-color:#a848a8}.highlight .k{color:#2838b0}.highlight .o{color:#666}.highlight .p{color:#888}.highlight .ch{color:#287088;font-style:italic}.highlight .cm{color:#888;font-style:italic}.highlight .cp{color:#289870}.highlight .c1,.highlight .cpf,.highlight .cs{color:#888;font-style:italic}.highlight .gd{color:#c02828}.highlight .ge{font-style:italic}.highlight .gr{color:#c02828}.highlight .gh{color:#666}.highlight .gi{color:#388038}.highlight .go{color:#666}.highlight .gp{color:#444}.highlight .gs{font-weight:700}.highlight .gu{color:#444}.highlight .gt{color:#2838b0}.highlight .kc{color:#444;font-style:italic}.highlight .kd{color:#2838b0;font-style:italic}.highlight .kn,.highlight .kp,.highlight .kr{color:#2838b0}.highlight .kt{color:#2838b0;font-style:italic}.highlight .m{color:#444}.highlight .s{color:#b83838}.highlight .na,.highlight .nb{color:#388038}.highlight .nc{color:#287088}.highlight .no{color:#b85820}.highlight .nd{color:#287088}.highlight .ni{color:#709030}.highlight .ne{color:#908828}.highlight .nf{color:#785840}.highlight .nl,.highlight .nn{color:#289870}.highlight .nt{color:#2838b0}.highlight .nv{color:#b04040}.highlight .ow{color:#a848a8}.highlight .w{color:#a89028}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo,.highlight .sa{color:#444}.highlight .sb{color:#b83838}.highlight .sc{color:#a848a8}.highlight .dl{color:#b85820}.highlight .sd{color:#b85820;font-style:italic}.highlight .s2{color:#b83838}.highlight .se{color:#709030}.highlight .sh{color:#b83838}.highlight .si{color:#b83838;text-decoration:underline}.highlight .sr,.highlight .sx{color:#a848a8}.highlight .s1,.highlight .ss{color:#b83838}.highlight .bp{color:#388038;font-style:italic}.highlight .fm{color:#b85820}.highlight .vc{color:#b04040}.highlight .vg{color:#908828}.highlight .vi{color:#b04040}.highlight .vm{color:#b85820}.highlight .il{color:#444}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:#888;font-style:italic}.literal-block .err{background-color:#a848a8}.literal-block .k{color:#2838b0}.literal-block .o{color:#666}.literal-block .p{color:#888}.literal-block .ch{color:#287088;font-style:italic}.literal-block .cm{color:#888;font-style:italic}.literal-block .cp{color:#289870}.literal-block .c1,.literal-block .cpf,.literal-block .cs{color:#888;font-style:italic}.literal-block .gd{color:#c02828}.literal-block .ge{font-style:italic}.literal-block .gr{color:#c02828}.literal-block .gh{color:#666}.literal-block .gi{color:#388038}.literal-block .go{color:#666}.literal-block .gp{color:#444}.literal-block .gs{font-weight:700}.literal-block .gu{color:#444}.literal-block .gt{color:#2838b0}.literal-block .kc{color:#444;font-style:italic}.literal-block .kd{color:#2838b0;font-style:italic}.literal-block .kn,.literal-block .kp,.literal-block .kr{color:#2838b0}.literal-block .kt{color:#2838b0;font-style:italic}.literal-block .m{color:#444}.literal-block .s{color:#b83838}.literal-block .na,.literal-block .nb{color:#388038}.literal-block .nc{color:#287088}.literal-block .no{color:#b85820}.literal-block .nd{color:#287088}.literal-block .ni{color:#709030}.literal-block .ne{color:#908828}.literal-block .nf{color:#785840}.literal-block .nl,.literal-block .nn{color:#289870}.literal-block .nt{color:#2838b0}.literal-block .nv{color:#b04040}.literal-block .ow{color:#a848a8}.literal-block .w{color:#a89028}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo,.literal-block .sa{color:#444}.literal-block .sb{color:#b83838}.literal-block .sc{color:#a848a8}.literal-block .dl{color:#b85820}.literal-block .sd{color:#b85820;font-style:italic}.literal-block .s2{color:#b83838}.literal-block .se{color:#709030}.literal-block .sh{color:#b83838}.literal-block .si{color:#b83838;text-decoration:underline}.literal-block .sr,.literal-block .sx{color:#a848a8}.literal-block .s1,.literal-block .ss{color:#b83838}.literal-block .bp{color:#388038;font-style:italic}.literal-block .fm{color:#b85820}.literal-block .vc{color:#b04040}.literal-block .vg{color:#908828}.literal-block .vi{color:#b04040}.literal-block .vm{color:#b85820}.literal-block .il{color:#444}
\ No newline at end of file
diff --git a/flex/static/pygments/manni.css b/flex/static/pygments/manni.css
new file mode 100644
index 0000000..4fdcb31
--- /dev/null
+++ b/flex/static/pygments/manni.css
@@ -0,0 +1,138 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f0f3f3; }
+.highlight .c { color: #0099FF; font-style: italic } /* Comment */
+.highlight .err { color: #AA0000; background-color: #FFAAAA } /* Error */
+.highlight .k { color: #006699; font-weight: bold } /* Keyword */
+.highlight .o { color: #555555 } /* Operator */
+.highlight .ch { color: #0099FF; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #009999 } /* Comment.Preproc */
+.highlight .cpf { color: #0099FF; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #0099FF; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */
+.highlight .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #003300; font-weight: bold } /* Generic.Heading */
+.highlight .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
+.highlight .go { color: #AAAAAA } /* Generic.Output */
+.highlight .gp { color: #000099; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #003300; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #99CC66 } /* Generic.Traceback */
+.highlight .kc { color: #006699; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #006699 } /* Keyword.Pseudo */
+.highlight .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #007788; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #FF6600 } /* Literal.Number */
+.highlight .s { color: #CC3300 } /* Literal.String */
+.highlight .na { color: #330099 } /* Name.Attribute */
+.highlight .nb { color: #336666 } /* Name.Builtin */
+.highlight .nc { color: #00AA88; font-weight: bold } /* Name.Class */
+.highlight .no { color: #336600 } /* Name.Constant */
+.highlight .nd { color: #9999FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #CC0000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #CC00FF } /* Name.Function */
+.highlight .nl { color: #9999FF } /* Name.Label */
+.highlight .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #330099; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #003333 } /* Name.Variable */
+.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #FF6600 } /* Literal.Number.Bin */
+.highlight .mf { color: #FF6600 } /* Literal.Number.Float */
+.highlight .mh { color: #FF6600 } /* Literal.Number.Hex */
+.highlight .mi { color: #FF6600 } /* Literal.Number.Integer */
+.highlight .mo { color: #FF6600 } /* Literal.Number.Oct */
+.highlight .sa { color: #CC3300 } /* Literal.String.Affix */
+.highlight .sb { color: #CC3300 } /* Literal.String.Backtick */
+.highlight .sc { color: #CC3300 } /* Literal.String.Char */
+.highlight .dl { color: #CC3300 } /* Literal.String.Delimiter */
+.highlight .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #CC3300 } /* Literal.String.Double */
+.highlight .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #CC3300 } /* Literal.String.Heredoc */
+.highlight .si { color: #AA0000 } /* Literal.String.Interpol */
+.highlight .sx { color: #CC3300 } /* Literal.String.Other */
+.highlight .sr { color: #33AAAA } /* Literal.String.Regex */
+.highlight .s1 { color: #CC3300 } /* Literal.String.Single */
+.highlight .ss { color: #FFCC33 } /* Literal.String.Symbol */
+.highlight .bp { color: #336666 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #CC00FF } /* Name.Function.Magic */
+.highlight .vc { color: #003333 } /* Name.Variable.Class */
+.highlight .vg { color: #003333 } /* Name.Variable.Global */
+.highlight .vi { color: #003333 } /* Name.Variable.Instance */
+.highlight .vm { color: #003333 } /* Name.Variable.Magic */
+.highlight .il { color: #FF6600 } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #f0f3f3; }
+.literal-block .c { color: #0099FF; font-style: italic } /* Comment */
+.literal-block .err { color: #AA0000; background-color: #FFAAAA } /* Error */
+.literal-block .k { color: #006699; font-weight: bold } /* Keyword */
+.literal-block .o { color: #555555 } /* Operator */
+.literal-block .ch { color: #0099FF; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #009999 } /* Comment.Preproc */
+.literal-block .cpf { color: #0099FF; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #0099FF; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */
+.literal-block .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #FF0000 } /* Generic.Error */
+.literal-block .gh { color: #003300; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
+.literal-block .go { color: #AAAAAA } /* Generic.Output */
+.literal-block .gp { color: #000099; font-weight: bold } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #003300; font-weight: bold } /* Generic.Subheading */
+.literal-block .gt { color: #99CC66 } /* Generic.Traceback */
+.literal-block .kc { color: #006699; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #006699 } /* Keyword.Pseudo */
+.literal-block .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #007788; font-weight: bold } /* Keyword.Type */
+.literal-block .m { color: #FF6600 } /* Literal.Number */
+.literal-block .s { color: #CC3300 } /* Literal.String */
+.literal-block .na { color: #330099 } /* Name.Attribute */
+.literal-block .nb { color: #336666 } /* Name.Builtin */
+.literal-block .nc { color: #00AA88; font-weight: bold } /* Name.Class */
+.literal-block .no { color: #336600 } /* Name.Constant */
+.literal-block .nd { color: #9999FF } /* Name.Decorator */
+.literal-block .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.literal-block .ne { color: #CC0000; font-weight: bold } /* Name.Exception */
+.literal-block .nf { color: #CC00FF } /* Name.Function */
+.literal-block .nl { color: #9999FF } /* Name.Label */
+.literal-block .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */
+.literal-block .nt { color: #330099; font-weight: bold } /* Name.Tag */
+.literal-block .nv { color: #003333 } /* Name.Variable */
+.literal-block .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #FF6600 } /* Literal.Number.Bin */
+.literal-block .mf { color: #FF6600 } /* Literal.Number.Float */
+.literal-block .mh { color: #FF6600 } /* Literal.Number.Hex */
+.literal-block .mi { color: #FF6600 } /* Literal.Number.Integer */
+.literal-block .mo { color: #FF6600 } /* Literal.Number.Oct */
+.literal-block .sa { color: #CC3300 } /* Literal.String.Affix */
+.literal-block .sb { color: #CC3300 } /* Literal.String.Backtick */
+.literal-block .sc { color: #CC3300 } /* Literal.String.Char */
+.literal-block .dl { color: #CC3300 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
+.literal-block .s2 { color: #CC3300 } /* Literal.String.Double */
+.literal-block .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */
+.literal-block .sh { color: #CC3300 } /* Literal.String.Heredoc */
+.literal-block .si { color: #AA0000 } /* Literal.String.Interpol */
+.literal-block .sx { color: #CC3300 } /* Literal.String.Other */
+.literal-block .sr { color: #33AAAA } /* Literal.String.Regex */
+.literal-block .s1 { color: #CC3300 } /* Literal.String.Single */
+.literal-block .ss { color: #FFCC33 } /* Literal.String.Symbol */
+.literal-block .bp { color: #336666 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #CC00FF } /* Name.Function.Magic */
+.literal-block .vc { color: #003333 } /* Name.Variable.Class */
+.literal-block .vg { color: #003333 } /* Name.Variable.Global */
+.literal-block .vi { color: #003333 } /* Name.Variable.Instance */
+.literal-block .vm { color: #003333 } /* Name.Variable.Magic */
+.literal-block .il { color: #FF6600 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/manni.min.css b/flex/static/pygments/manni.min.css
new file mode 100644
index 0000000..f9e7e6a
--- /dev/null
+++ b/flex/static/pygments/manni.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#f0f3f3}.highlight .c{color:#09f;font-style:italic}.highlight .err{color:#a00;background-color:#faa}.highlight .k{color:#069;font-weight:700}.highlight .o{color:#555}.highlight .ch,.highlight .cm{color:#09f;font-style:italic}.highlight .cp{color:#099}.highlight .c1,.highlight .cpf,.highlight .cs{color:#09f;font-style:italic}.highlight .cs{font-weight:700}.highlight .gd{background-color:#fcc;border:1px solid #c00}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:#030;font-weight:700}.highlight .gi{background-color:#cfc;border:1px solid #0c0}.highlight .go{color:#aaa}.highlight .gp{color:#009}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:#030}.highlight .gt{color:#9c6}.highlight .kc,.highlight .kd,.highlight .kn{color:#069;font-weight:700}.highlight .kp{color:#069}.highlight .kr{color:#069;font-weight:700}.highlight .kt{color:#078;font-weight:700}.highlight .m{color:#f60}.highlight .s{color:#c30}.highlight .na{color:#309}.highlight .nb{color:#366}.highlight .nc{color:#0a8;font-weight:700}.highlight .no{color:#360}.highlight .nd{color:#99f}.highlight .ni{color:#999;font-weight:700}.highlight .ne{color:#c00;font-weight:700}.highlight .nf{color:#c0f}.highlight .nl{color:#99f}.highlight .nn{color:#0cf;font-weight:700}.highlight .nt{color:#309;font-weight:700}.highlight .nv{color:#033}.highlight .ow{color:#000;font-weight:700}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#f60}.highlight .dl,.highlight .sa,.highlight .sb,.highlight .sc{color:#c30}.highlight .sd{color:#c30;font-style:italic}.highlight .s2{color:#c30}.highlight .se{color:#c30;font-weight:700}.highlight .sh{color:#c30}.highlight .si{color:#a00}.highlight .sx{color:#c30}.highlight .sr{color:#3aa}.highlight .s1{color:#c30}.highlight .ss{color:#fc3}.highlight .bp{color:#366}.highlight .fm{color:#c0f}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#033}.highlight .il{color:#f60}.literal-block .hll{background-color:#ffc}.literal-block{background:#f0f3f3}.literal-block .c{color:#09f;font-style:italic}.literal-block .err{color:#a00;background-color:#faa}.literal-block .k{color:#069;font-weight:700}.literal-block .o{color:#555}.literal-block .ch,.literal-block .cm{color:#09f;font-style:italic}.literal-block .cp{color:#099}.literal-block .c1,.literal-block .cpf,.literal-block .cs{color:#09f;font-style:italic}.literal-block .cs{font-weight:700}.literal-block .gd{background-color:#fcc;border:1px solid #c00}.literal-block .ge{font-style:italic}.literal-block .gr{color:red}.literal-block .gh{color:#030;font-weight:700}.literal-block .gi{background-color:#cfc;border:1px solid #0c0}.literal-block .go{color:#aaa}.literal-block .gp{color:#009;font-weight:700}.literal-block .gs{font-weight:700}.literal-block .gu{color:#030;font-weight:700}.literal-block .gt{color:#9c6}.literal-block .kc,.literal-block .kd,.literal-block .kn{color:#069;font-weight:700}.literal-block .kp{color:#069}.literal-block .kr{color:#069;font-weight:700}.literal-block .kt{color:#078;font-weight:700}.literal-block .m{color:#f60}.literal-block .s{color:#c30}.literal-block .na{color:#309}.literal-block .nb{color:#366}.literal-block .nc{color:#0a8;font-weight:700}.literal-block .no{color:#360}.literal-block .nd{color:#99f}.literal-block .ni{color:#999;font-weight:700}.literal-block .ne{color:#c00;font-weight:700}.literal-block .nf{color:#c0f}.literal-block .nl{color:#99f}.literal-block .nn{color:#0cf;font-weight:700}.literal-block .nt{color:#309;font-weight:700}.literal-block .nv{color:#033}.literal-block .ow{color:#000;font-weight:700}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#f60}.literal-block .dl,.literal-block .sa,.literal-block .sb,.literal-block .sc{color:#c30}.literal-block .sd{color:#c30;font-style:italic}.literal-block .s2{color:#c30}.literal-block .se{color:#c30;font-weight:700}.literal-block .sh{color:#c30}.literal-block .si{color:#a00}.literal-block .sx{color:#c30}.literal-block .sr{color:#3aa}.literal-block .s1{color:#c30}.literal-block .ss{color:#fc3}.literal-block .bp{color:#366}.literal-block .fm{color:#c0f}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#033}.literal-block .il{color:#f60}
\ No newline at end of file
diff --git a/flex/static/pygments/monokai.css b/flex/static/pygments/monokai.css
new file mode 100644
index 0000000..b9e66e6
--- /dev/null
+++ b/flex/static/pygments/monokai.css
@@ -0,0 +1,144 @@
+.highlight .hll { background-color: #49483e }
+.highlight { background: #272822; color: #f8f8f2 }
+.highlight .c { color: #75715e } /* Comment */
+.highlight .err { color: #960050; background-color: #1e0010 } /* Error */
+.highlight .k { color: #66d9ef } /* Keyword */
+.highlight .l { color: #ae81ff } /* Literal */
+.highlight .n { color: #f8f8f2 } /* Name */
+.highlight .o { color: #f92672 } /* Operator */
+.highlight .p { color: #f8f8f2 } /* Punctuation */
+.highlight .ch { color: #75715e } /* Comment.Hashbang */
+.highlight .cm { color: #75715e } /* Comment.Multiline */
+.highlight .cp { color: #75715e } /* Comment.Preproc */
+.highlight .cpf { color: #75715e } /* Comment.PreprocFile */
+.highlight .c1 { color: #75715e } /* Comment.Single */
+.highlight .cs { color: #75715e } /* Comment.Special */
+.highlight .gd { color: #f92672 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gi { color: #a6e22e } /* Generic.Inserted */
+.highlight .go { color: #66d9ef } /* Generic.Output */
+.highlight .gp { color: #f92672; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #75715e } /* Generic.Subheading */
+.highlight .kc { color: #66d9ef } /* Keyword.Constant */
+.highlight .kd { color: #66d9ef } /* Keyword.Declaration */
+.highlight .kn { color: #f92672 } /* Keyword.Namespace */
+.highlight .kp { color: #66d9ef } /* Keyword.Pseudo */
+.highlight .kr { color: #66d9ef } /* Keyword.Reserved */
+.highlight .kt { color: #66d9ef } /* Keyword.Type */
+.highlight .ld { color: #e6db74 } /* Literal.Date */
+.highlight .m { color: #ae81ff } /* Literal.Number */
+.highlight .s { color: #e6db74 } /* Literal.String */
+.highlight .na { color: #a6e22e } /* Name.Attribute */
+.highlight .nb { color: #f8f8f2 } /* Name.Builtin */
+.highlight .nc { color: #a6e22e } /* Name.Class */
+.highlight .no { color: #66d9ef } /* Name.Constant */
+.highlight .nd { color: #a6e22e } /* Name.Decorator */
+.highlight .ni { color: #f8f8f2 } /* Name.Entity */
+.highlight .ne { color: #a6e22e } /* Name.Exception */
+.highlight .nf { color: #a6e22e } /* Name.Function */
+.highlight .nl { color: #f8f8f2 } /* Name.Label */
+.highlight .nn { color: #f8f8f2 } /* Name.Namespace */
+.highlight .nx { color: #a6e22e } /* Name.Other */
+.highlight .py { color: #f8f8f2 } /* Name.Property */
+.highlight .nt { color: #f92672 } /* Name.Tag */
+.highlight .nv { color: #f8f8f2 } /* Name.Variable */
+.highlight .ow { color: #f92672 } /* Operator.Word */
+.highlight .w { color: #f8f8f2 } /* Text.Whitespace */
+.highlight .mb { color: #ae81ff } /* Literal.Number.Bin */
+.highlight .mf { color: #ae81ff } /* Literal.Number.Float */
+.highlight .mh { color: #ae81ff } /* Literal.Number.Hex */
+.highlight .mi { color: #ae81ff } /* Literal.Number.Integer */
+.highlight .mo { color: #ae81ff } /* Literal.Number.Oct */
+.highlight .sa { color: #e6db74 } /* Literal.String.Affix */
+.highlight .sb { color: #e6db74 } /* Literal.String.Backtick */
+.highlight .sc { color: #e6db74 } /* Literal.String.Char */
+.highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */
+.highlight .sd { color: #e6db74 } /* Literal.String.Doc */
+.highlight .s2 { color: #e6db74 } /* Literal.String.Double */
+.highlight .se { color: #ae81ff } /* Literal.String.Escape */
+.highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */
+.highlight .si { color: #e6db74 } /* Literal.String.Interpol */
+.highlight .sx { color: #e6db74 } /* Literal.String.Other */
+.highlight .sr { color: #e6db74 } /* Literal.String.Regex */
+.highlight .s1 { color: #e6db74 } /* Literal.String.Single */
+.highlight .ss { color: #e6db74 } /* Literal.String.Symbol */
+.highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #a6e22e } /* Name.Function.Magic */
+.highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */
+.highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */
+.highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */
+.highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */
+.highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #49483e }
+.literal-block { background: #272822; color: #f8f8f2 }
+.literal-block .c { color: #75715e } /* Comment */
+.literal-block .err { color: #960050; background-color: #1e0010 } /* Error */
+.literal-block .k { color: #66d9ef } /* Keyword */
+.literal-block .l { color: #ae81ff } /* Literal */
+.literal-block .n { color: #f8f8f2 } /* Name */
+.literal-block .o { color: #f92672 } /* Operator */
+.literal-block .p { color: #f8f8f2 } /* Punctuation */
+.literal-block .ch { color: #75715e } /* Comment.Hashbang */
+.literal-block .cm { color: #75715e } /* Comment.Multiline */
+.literal-block .cp { color: #75715e } /* Comment.Preproc */
+.literal-block .cpf { color: #75715e } /* Comment.PreprocFile */
+.literal-block .c1 { color: #75715e } /* Comment.Single */
+.literal-block .cs { color: #75715e } /* Comment.Special */
+.literal-block .gd { color: #f92672 } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gi { color: #a6e22e } /* Generic.Inserted */
+.literal-block .go { color: #66d9ef } /* Generic.Output */
+.literal-block .gp { color: #f92672; font-weight: bold } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #75715e } /* Generic.Subheading */
+.literal-block .kc { color: #66d9ef } /* Keyword.Constant */
+.literal-block .kd { color: #66d9ef } /* Keyword.Declaration */
+.literal-block .kn { color: #f92672 } /* Keyword.Namespace */
+.literal-block .kp { color: #66d9ef } /* Keyword.Pseudo */
+.literal-block .kr { color: #66d9ef } /* Keyword.Reserved */
+.literal-block .kt { color: #66d9ef } /* Keyword.Type */
+.literal-block .ld { color: #e6db74 } /* Literal.Date */
+.literal-block .m { color: #ae81ff } /* Literal.Number */
+.literal-block .s { color: #e6db74 } /* Literal.String */
+.literal-block .na { color: #a6e22e } /* Name.Attribute */
+.literal-block .nb { color: #f8f8f2 } /* Name.Builtin */
+.literal-block .nc { color: #a6e22e } /* Name.Class */
+.literal-block .no { color: #66d9ef } /* Name.Constant */
+.literal-block .nd { color: #a6e22e } /* Name.Decorator */
+.literal-block .ni { color: #f8f8f2 } /* Name.Entity */
+.literal-block .ne { color: #a6e22e } /* Name.Exception */
+.literal-block .nf { color: #a6e22e } /* Name.Function */
+.literal-block .nl { color: #f8f8f2 } /* Name.Label */
+.literal-block .nn { color: #f8f8f2 } /* Name.Namespace */
+.literal-block .nx { color: #a6e22e } /* Name.Other */
+.literal-block .py { color: #f8f8f2 } /* Name.Property */
+.literal-block .nt { color: #f92672 } /* Name.Tag */
+.literal-block .nv { color: #f8f8f2 } /* Name.Variable */
+.literal-block .ow { color: #f92672 } /* Operator.Word */
+.literal-block .w { color: #f8f8f2 } /* Text.Whitespace */
+.literal-block .mb { color: #ae81ff } /* Literal.Number.Bin */
+.literal-block .mf { color: #ae81ff } /* Literal.Number.Float */
+.literal-block .mh { color: #ae81ff } /* Literal.Number.Hex */
+.literal-block .mi { color: #ae81ff } /* Literal.Number.Integer */
+.literal-block .mo { color: #ae81ff } /* Literal.Number.Oct */
+.literal-block .sa { color: #e6db74 } /* Literal.String.Affix */
+.literal-block .sb { color: #e6db74 } /* Literal.String.Backtick */
+.literal-block .sc { color: #e6db74 } /* Literal.String.Char */
+.literal-block .dl { color: #e6db74 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #e6db74 } /* Literal.String.Doc */
+.literal-block .s2 { color: #e6db74 } /* Literal.String.Double */
+.literal-block .se { color: #ae81ff } /* Literal.String.Escape */
+.literal-block .sh { color: #e6db74 } /* Literal.String.Heredoc */
+.literal-block .si { color: #e6db74 } /* Literal.String.Interpol */
+.literal-block .sx { color: #e6db74 } /* Literal.String.Other */
+.literal-block .sr { color: #e6db74 } /* Literal.String.Regex */
+.literal-block .s1 { color: #e6db74 } /* Literal.String.Single */
+.literal-block .ss { color: #e6db74 } /* Literal.String.Symbol */
+.literal-block .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #a6e22e } /* Name.Function.Magic */
+.literal-block .vc { color: #f8f8f2 } /* Name.Variable.Class */
+.literal-block .vg { color: #f8f8f2 } /* Name.Variable.Global */
+.literal-block .vi { color: #f8f8f2 } /* Name.Variable.Instance */
+.literal-block .vm { color: #f8f8f2 } /* Name.Variable.Magic */
+.literal-block .il { color: #ae81ff } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/monokai.min.css b/flex/static/pygments/monokai.min.css
new file mode 100644
index 0000000..c29088f
--- /dev/null
+++ b/flex/static/pygments/monokai.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#49483e}.highlight{background:#272822;color:#f8f8f2}.highlight .c{color:#75715e}.highlight .err{color:#960050;background-color:#1e0010}.highlight .k{color:#66d9ef}.highlight .l{color:#ae81ff}.highlight .n{color:#f8f8f2}.highlight .o{color:#f92672}.highlight .p{color:#f8f8f2}.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cp,.highlight .cpf,.highlight .cs{color:#75715e}.highlight .gd{color:#f92672}.highlight .ge{font-style:italic}.highlight .gi{color:#a6e22e}.highlight .go{color:#66d9ef}.highlight .gp{color:#f92672}.highlight .gp,.highlight .gs{font-weight:700}.highlight .gu{color:#75715e}.highlight .kc,.highlight .kd{color:#66d9ef}.highlight .kn{color:#f92672}.highlight .kp,.highlight .kr,.highlight .kt{color:#66d9ef}.highlight .ld{color:#e6db74}.highlight .m{color:#ae81ff}.highlight .s{color:#e6db74}.highlight .na{color:#a6e22e}.highlight .nb{color:#f8f8f2}.highlight .nc{color:#a6e22e}.highlight .no{color:#66d9ef}.highlight .nd{color:#a6e22e}.highlight .ni{color:#f8f8f2}.highlight .ne,.highlight .nf{color:#a6e22e}.highlight .nl,.highlight .nn{color:#f8f8f2}.highlight .nx{color:#a6e22e}.highlight .py{color:#f8f8f2}.highlight .nt{color:#f92672}.highlight .nv{color:#f8f8f2}.highlight .ow{color:#f92672}.highlight .w{color:#f8f8f2}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#ae81ff}.highlight .dl,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd{color:#e6db74}.highlight .se{color:#ae81ff}.highlight .s1,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#e6db74}.highlight .bp{color:#f8f8f2}.highlight .fm{color:#a6e22e}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#f8f8f2}.highlight .il{color:#ae81ff}.literal-block .hll{background-color:#49483e}.literal-block{background:#272822;color:#f8f8f2}.literal-block .c{color:#75715e}.literal-block .err{color:#960050;background-color:#1e0010}.literal-block .k{color:#66d9ef}.literal-block .l{color:#ae81ff}.literal-block .n{color:#f8f8f2}.literal-block .o{color:#f92672}.literal-block .p{color:#f8f8f2}.literal-block .c1,.literal-block .ch,.literal-block .cm,.literal-block .cp,.literal-block .cpf,.literal-block .cs{color:#75715e}.literal-block .gd{color:#f92672}.literal-block .ge{font-style:italic}.literal-block .gi{color:#a6e22e}.literal-block .go{color:#66d9ef}.literal-block .gp{color:#f92672;font-weight:700}.literal-block .gs{font-weight:700}.literal-block .gu{color:#75715e}.literal-block .kc,.literal-block .kd{color:#66d9ef}.literal-block .kn{color:#f92672}.literal-block .kp,.literal-block .kr,.literal-block .kt{color:#66d9ef}.literal-block .ld{color:#e6db74}.literal-block .m{color:#ae81ff}.literal-block .s{color:#e6db74}.literal-block .na{color:#a6e22e}.literal-block .nb{color:#f8f8f2}.literal-block .nc{color:#a6e22e}.literal-block .no{color:#66d9ef}.literal-block .nd{color:#a6e22e}.literal-block .ni{color:#f8f8f2}.literal-block .ne,.literal-block .nf{color:#a6e22e}.literal-block .nl,.literal-block .nn{color:#f8f8f2}.literal-block .nx{color:#a6e22e}.literal-block .py{color:#f8f8f2}.literal-block .nt{color:#f92672}.literal-block .nv{color:#f8f8f2}.literal-block .ow{color:#f92672}.literal-block .w{color:#f8f8f2}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#ae81ff}.literal-block .dl,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd{color:#e6db74}.literal-block .se{color:#ae81ff}.literal-block .s1,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#e6db74}.literal-block .bp{color:#f8f8f2}.literal-block .fm{color:#a6e22e}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#f8f8f2}.literal-block .il{color:#ae81ff}
\ No newline at end of file
diff --git a/flex/static/pygments/murphy.css b/flex/static/pygments/murphy.css
new file mode 100644
index 0000000..c58f125
--- /dev/null
+++ b/flex/static/pygments/murphy.css
@@ -0,0 +1,138 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #666666; font-style: italic } /* Comment */
+.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */
+.highlight .k { color: #228899; font-weight: bold } /* Keyword */
+.highlight .o { color: #333333 } /* Operator */
+.highlight .ch { color: #666666; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #666666; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #557799 } /* Comment.Preproc */
+.highlight .cpf { color: #666666; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #666666; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #cc0000; font-weight: bold; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #228899; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #228899; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #228899; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #0088ff; font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: #228899; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #6666ff; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */
+.highlight .s { background-color: #e0e0ff } /* Literal.String */
+.highlight .na { color: #000077 } /* Name.Attribute */
+.highlight .nb { color: #007722 } /* Name.Builtin */
+.highlight .nc { color: #ee99ee; font-weight: bold } /* Name.Class */
+.highlight .no { color: #55eedd; font-weight: bold } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #880000 } /* Name.Entity */
+.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #55eedd; font-weight: bold } /* Name.Function */
+.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #007700 } /* Name.Tag */
+.highlight .nv { color: #003366 } /* Name.Variable */
+.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
+.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
+.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
+.highlight .mi { color: #6666ff; font-weight: bold } /* Literal.Number.Integer */
+.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
+.highlight .sa { background-color: #e0e0ff } /* Literal.String.Affix */
+.highlight .sb { background-color: #e0e0ff } /* Literal.String.Backtick */
+.highlight .sc { color: #8888FF } /* Literal.String.Char */
+.highlight .dl { background-color: #e0e0ff } /* Literal.String.Delimiter */
+.highlight .sd { color: #DD4422 } /* Literal.String.Doc */
+.highlight .s2 { background-color: #e0e0ff } /* Literal.String.Double */
+.highlight .se { color: #666666; font-weight: bold; background-color: #e0e0ff } /* Literal.String.Escape */
+.highlight .sh { background-color: #e0e0ff } /* Literal.String.Heredoc */
+.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */
+.highlight .sx { color: #ff8888; background-color: #e0e0ff } /* Literal.String.Other */
+.highlight .sr { color: #000000; background-color: #e0e0ff } /* Literal.String.Regex */
+.highlight .s1 { background-color: #e0e0ff } /* Literal.String.Single */
+.highlight .ss { color: #ffcc88 } /* Literal.String.Symbol */
+.highlight .bp { color: #007722 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #55eedd; font-weight: bold } /* Name.Function.Magic */
+.highlight .vc { color: #ccccff } /* Name.Variable.Class */
+.highlight .vg { color: #ff8844 } /* Name.Variable.Global */
+.highlight .vi { color: #aaaaff } /* Name.Variable.Instance */
+.highlight .vm { color: #003366 } /* Name.Variable.Magic */
+.highlight .il { color: #6666ff; font-weight: bold } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #666666; font-style: italic } /* Comment */
+.literal-block .err { color: #FF0000; background-color: #FFAAAA } /* Error */
+.literal-block .k { color: #228899; font-weight: bold } /* Keyword */
+.literal-block .o { color: #333333 } /* Operator */
+.literal-block .ch { color: #666666; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #666666; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #557799 } /* Comment.Preproc */
+.literal-block .cpf { color: #666666; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #666666; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #cc0000; font-weight: bold; font-style: italic } /* Comment.Special */
+.literal-block .gd { color: #A00000 } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #FF0000 } /* Generic.Error */
+.literal-block .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #00A000 } /* Generic.Inserted */
+.literal-block .go { color: #888888 } /* Generic.Output */
+.literal-block .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.literal-block .gt { color: #0044DD } /* Generic.Traceback */
+.literal-block .kc { color: #228899; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #228899; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #228899; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #0088ff; font-weight: bold } /* Keyword.Pseudo */
+.literal-block .kr { color: #228899; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #6666ff; font-weight: bold } /* Keyword.Type */
+.literal-block .m { color: #6600EE; font-weight: bold } /* Literal.Number */
+.literal-block .s { background-color: #e0e0ff } /* Literal.String */
+.literal-block .na { color: #000077 } /* Name.Attribute */
+.literal-block .nb { color: #007722 } /* Name.Builtin */
+.literal-block .nc { color: #ee99ee; font-weight: bold } /* Name.Class */
+.literal-block .no { color: #55eedd; font-weight: bold } /* Name.Constant */
+.literal-block .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.literal-block .ni { color: #880000 } /* Name.Entity */
+.literal-block .ne { color: #FF0000; font-weight: bold } /* Name.Exception */
+.literal-block .nf { color: #55eedd; font-weight: bold } /* Name.Function */
+.literal-block .nl { color: #997700; font-weight: bold } /* Name.Label */
+.literal-block .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.literal-block .nt { color: #007700 } /* Name.Tag */
+.literal-block .nv { color: #003366 } /* Name.Variable */
+.literal-block .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */
+.literal-block .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */
+.literal-block .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */
+.literal-block .mi { color: #6666ff; font-weight: bold } /* Literal.Number.Integer */
+.literal-block .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */
+.literal-block .sa { background-color: #e0e0ff } /* Literal.String.Affix */
+.literal-block .sb { background-color: #e0e0ff } /* Literal.String.Backtick */
+.literal-block .sc { color: #8888FF } /* Literal.String.Char */
+.literal-block .dl { background-color: #e0e0ff } /* Literal.String.Delimiter */
+.literal-block .sd { color: #DD4422 } /* Literal.String.Doc */
+.literal-block .s2 { background-color: #e0e0ff } /* Literal.String.Double */
+.literal-block .se { color: #666666; font-weight: bold; background-color: #e0e0ff } /* Literal.String.Escape */
+.literal-block .sh { background-color: #e0e0ff } /* Literal.String.Heredoc */
+.literal-block .si { background-color: #eeeeee } /* Literal.String.Interpol */
+.literal-block .sx { color: #ff8888; background-color: #e0e0ff } /* Literal.String.Other */
+.literal-block .sr { color: #000000; background-color: #e0e0ff } /* Literal.String.Regex */
+.literal-block .s1 { background-color: #e0e0ff } /* Literal.String.Single */
+.literal-block .ss { color: #ffcc88 } /* Literal.String.Symbol */
+.literal-block .bp { color: #007722 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #55eedd; font-weight: bold } /* Name.Function.Magic */
+.literal-block .vc { color: #ccccff } /* Name.Variable.Class */
+.literal-block .vg { color: #ff8844 } /* Name.Variable.Global */
+.literal-block .vi { color: #aaaaff } /* Name.Variable.Instance */
+.literal-block .vm { color: #003366 } /* Name.Variable.Magic */
+.literal-block .il { color: #6666ff; font-weight: bold } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/murphy.min.css b/flex/static/pygments/murphy.min.css
new file mode 100644
index 0000000..c0b13fd
--- /dev/null
+++ b/flex/static/pygments/murphy.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:#666;font-style:italic}.highlight .err{color:red;background-color:#faa}.highlight .k{color:#289;font-weight:700}.highlight .o{color:#333}.highlight .ch,.highlight .cm{color:#666;font-style:italic}.highlight .cp{color:#579}.highlight .c1,.highlight .cpf{color:#666;font-style:italic}.highlight .cs{color:#c00;font-weight:700;font-style:italic}.highlight .gd{color:#a00000}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00a000}.highlight .go{color:#888}.highlight .gp{color:#c65d09}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:purple}.highlight .gt{color:#04d}.highlight .kc,.highlight .kd,.highlight .kn{color:#289;font-weight:700}.highlight .kp{color:#08f;font-weight:700}.highlight .kr{color:#289;font-weight:700}.highlight .kt{color:#66f;font-weight:700}.highlight .m{color:#60e;font-weight:700}.highlight .s{background-color:#e0e0ff}.highlight .na{color:#007}.highlight .nb{color:#072}.highlight .nc{color:#e9e;font-weight:700}.highlight .no{color:#5ed;font-weight:700}.highlight .nd{color:#555;font-weight:700}.highlight .ni{color:#800}.highlight .ne{color:red;font-weight:700}.highlight .nf{color:#5ed;font-weight:700}.highlight .nl{color:#970;font-weight:700}.highlight .nn{color:#0e84b5;font-weight:700}.highlight .nt{color:#070}.highlight .nv{color:#036}.highlight .ow{color:#000;font-weight:700}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf{color:#60e;font-weight:700}.highlight .mh{color:#058;font-weight:700}.highlight .mi{color:#66f;font-weight:700}.highlight .mo{color:#40e;font-weight:700}.highlight .sa,.highlight .sb{background-color:#e0e0ff}.highlight .sc{color:#88f}.highlight .dl{background-color:#e0e0ff}.highlight .sd{color:#d42}.highlight .s2,.highlight .se{background-color:#e0e0ff}.highlight .se{color:#666;font-weight:700}.highlight .sh{background-color:#e0e0ff}.highlight .si{background-color:#eee}.highlight .sx{color:#f88;background-color:#e0e0ff}.highlight .sr{color:#000}.highlight .s1,.highlight .sr{background-color:#e0e0ff}.highlight .ss{color:#fc8}.highlight .bp{color:#072}.highlight .fm{color:#5ed;font-weight:700}.highlight .vc{color:#ccf}.highlight .vg{color:#f84}.highlight .vi{color:#aaf}.highlight .vm{color:#036}.highlight .il{color:#66f;font-weight:700}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:#666;font-style:italic}.literal-block .err{color:red;background-color:#faa}.literal-block .k{color:#289;font-weight:700}.literal-block .o{color:#333}.literal-block .ch,.literal-block .cm{color:#666;font-style:italic}.literal-block .cp{color:#579}.literal-block .c1,.literal-block .cpf{color:#666;font-style:italic}.literal-block .cs{color:#c00;font-weight:700;font-style:italic}.literal-block .gd{color:#a00000}.literal-block .ge{font-style:italic}.literal-block .gr{color:red}.literal-block .gh{color:navy;font-weight:700}.literal-block .gi{color:#00a000}.literal-block .go{color:#888}.literal-block .gp{color:#c65d09;font-weight:700}.literal-block .gs{font-weight:700}.literal-block .gu{color:purple;font-weight:700}.literal-block .gt{color:#04d}.literal-block .kc,.literal-block .kd,.literal-block .kn{color:#289;font-weight:700}.literal-block .kp{color:#08f;font-weight:700}.literal-block .kr{color:#289;font-weight:700}.literal-block .kt{color:#66f;font-weight:700}.literal-block .m{color:#60e;font-weight:700}.literal-block .s{background-color:#e0e0ff}.literal-block .na{color:#007}.literal-block .nb{color:#072}.literal-block .nc{color:#e9e;font-weight:700}.literal-block .no{color:#5ed;font-weight:700}.literal-block .nd{color:#555;font-weight:700}.literal-block .ni{color:#800}.literal-block .ne{color:red;font-weight:700}.literal-block .nf{color:#5ed;font-weight:700}.literal-block .nl{color:#970;font-weight:700}.literal-block .nn{color:#0e84b5;font-weight:700}.literal-block .nt{color:#070}.literal-block .nv{color:#036}.literal-block .ow{color:#000;font-weight:700}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf{color:#60e;font-weight:700}.literal-block .mh{color:#058;font-weight:700}.literal-block .mi{color:#66f;font-weight:700}.literal-block .mo{color:#40e;font-weight:700}.literal-block .sa,.literal-block .sb{background-color:#e0e0ff}.literal-block .sc{color:#88f}.literal-block .dl{background-color:#e0e0ff}.literal-block .sd{color:#d42}.literal-block .s2,.literal-block .se{background-color:#e0e0ff}.literal-block .se{color:#666;font-weight:700}.literal-block .sh{background-color:#e0e0ff}.literal-block .si{background-color:#eee}.literal-block .sx{color:#f88;background-color:#e0e0ff}.literal-block .sr{color:#000}.literal-block .s1,.literal-block .sr{background-color:#e0e0ff}.literal-block .ss{color:#fc8}.literal-block .bp{color:#072}.literal-block .fm{color:#5ed;font-weight:700}.literal-block .vc{color:#ccf}.literal-block .vg{color:#f84}.literal-block .vi{color:#aaf}.literal-block .vm{color:#036}.literal-block .il{color:#66f;font-weight:700}
\ No newline at end of file
diff --git a/flex/static/pygments/native.css b/flex/static/pygments/native.css
new file mode 100644
index 0000000..70cba50
--- /dev/null
+++ b/flex/static/pygments/native.css
@@ -0,0 +1,156 @@
+.highlight .hll { background-color: #404040 }
+.highlight { background: #202020; color: #d0d0d0 }
+.highlight .c { color: #999999; font-style: italic } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .esc { color: #d0d0d0 } /* Escape */
+.highlight .g { color: #d0d0d0 } /* Generic */
+.highlight .k { color: #6ab825; font-weight: bold } /* Keyword */
+.highlight .l { color: #d0d0d0 } /* Literal */
+.highlight .n { color: #d0d0d0 } /* Name */
+.highlight .o { color: #d0d0d0 } /* Operator */
+.highlight .x { color: #d0d0d0 } /* Other */
+.highlight .p { color: #d0d0d0 } /* Punctuation */
+.highlight .ch { color: #999999; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #999999; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #cd2828; font-weight: bold } /* Comment.Preproc */
+.highlight .cpf { color: #999999; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #999999; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */
+.highlight .gd { color: #d22323 } /* Generic.Deleted */
+.highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #d22323 } /* Generic.Error */
+.highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #589819 } /* Generic.Inserted */
+.highlight .go { color: #cccccc } /* Generic.Output */
+.highlight .gp { color: #aaaaaa } /* Generic.Prompt */
+.highlight .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */
+.highlight .gt { color: #d22323 } /* Generic.Traceback */
+.highlight .kc { color: #6ab825; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #6ab825; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #6ab825; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #6ab825 } /* Keyword.Pseudo */
+.highlight .kr { color: #6ab825; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #6ab825; font-weight: bold } /* Keyword.Type */
+.highlight .ld { color: #d0d0d0 } /* Literal.Date */
+.highlight .m { color: #3677a9 } /* Literal.Number */
+.highlight .s { color: #ed9d13 } /* Literal.String */
+.highlight .na { color: #bbbbbb } /* Name.Attribute */
+.highlight .nb { color: #24909d } /* Name.Builtin */
+.highlight .nc { color: #447fcf; text-decoration: underline } /* Name.Class */
+.highlight .no { color: #40ffff } /* Name.Constant */
+.highlight .nd { color: #ffa500 } /* Name.Decorator */
+.highlight .ni { color: #d0d0d0 } /* Name.Entity */
+.highlight .ne { color: #bbbbbb } /* Name.Exception */
+.highlight .nf { color: #447fcf } /* Name.Function */
+.highlight .nl { color: #d0d0d0 } /* Name.Label */
+.highlight .nn { color: #447fcf; text-decoration: underline } /* Name.Namespace */
+.highlight .nx { color: #d0d0d0 } /* Name.Other */
+.highlight .py { color: #d0d0d0 } /* Name.Property */
+.highlight .nt { color: #6ab825; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #40ffff } /* Name.Variable */
+.highlight .ow { color: #6ab825; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #666666 } /* Text.Whitespace */
+.highlight .mb { color: #3677a9 } /* Literal.Number.Bin */
+.highlight .mf { color: #3677a9 } /* Literal.Number.Float */
+.highlight .mh { color: #3677a9 } /* Literal.Number.Hex */
+.highlight .mi { color: #3677a9 } /* Literal.Number.Integer */
+.highlight .mo { color: #3677a9 } /* Literal.Number.Oct */
+.highlight .sa { color: #ed9d13 } /* Literal.String.Affix */
+.highlight .sb { color: #ed9d13 } /* Literal.String.Backtick */
+.highlight .sc { color: #ed9d13 } /* Literal.String.Char */
+.highlight .dl { color: #ed9d13 } /* Literal.String.Delimiter */
+.highlight .sd { color: #ed9d13 } /* Literal.String.Doc */
+.highlight .s2 { color: #ed9d13 } /* Literal.String.Double */
+.highlight .se { color: #ed9d13 } /* Literal.String.Escape */
+.highlight .sh { color: #ed9d13 } /* Literal.String.Heredoc */
+.highlight .si { color: #ed9d13 } /* Literal.String.Interpol */
+.highlight .sx { color: #ffa500 } /* Literal.String.Other */
+.highlight .sr { color: #ed9d13 } /* Literal.String.Regex */
+.highlight .s1 { color: #ed9d13 } /* Literal.String.Single */
+.highlight .ss { color: #ed9d13 } /* Literal.String.Symbol */
+.highlight .bp { color: #24909d } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #447fcf } /* Name.Function.Magic */
+.highlight .vc { color: #40ffff } /* Name.Variable.Class */
+.highlight .vg { color: #40ffff } /* Name.Variable.Global */
+.highlight .vi { color: #40ffff } /* Name.Variable.Instance */
+.highlight .vm { color: #40ffff } /* Name.Variable.Magic */
+.highlight .il { color: #3677a9 } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #404040 }
+.literal-block { background: #202020; color: #d0d0d0 }
+.literal-block .c { color: #999999; font-style: italic } /* Comment */
+.literal-block .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.literal-block .esc { color: #d0d0d0 } /* Escape */
+.literal-block .g { color: #d0d0d0 } /* Generic */
+.literal-block .k { color: #6ab825; font-weight: bold } /* Keyword */
+.literal-block .l { color: #d0d0d0 } /* Literal */
+.literal-block .n { color: #d0d0d0 } /* Name */
+.literal-block .o { color: #d0d0d0 } /* Operator */
+.literal-block .x { color: #d0d0d0 } /* Other */
+.literal-block .p { color: #d0d0d0 } /* Punctuation */
+.literal-block .ch { color: #999999; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #999999; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #cd2828; font-weight: bold } /* Comment.Preproc */
+.literal-block .cpf { color: #999999; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #999999; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */
+.literal-block .gd { color: #d22323 } /* Generic.Deleted */
+.literal-block .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #d22323 } /* Generic.Error */
+.literal-block .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #589819 } /* Generic.Inserted */
+.literal-block .go { color: #cccccc } /* Generic.Output */
+.literal-block .gp { color: #aaaaaa } /* Generic.Prompt */
+.literal-block .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */
+.literal-block .gt { color: #d22323 } /* Generic.Traceback */
+.literal-block .kc { color: #6ab825; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #6ab825; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #6ab825; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #6ab825 } /* Keyword.Pseudo */
+.literal-block .kr { color: #6ab825; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #6ab825; font-weight: bold } /* Keyword.Type */
+.literal-block .ld { color: #d0d0d0 } /* Literal.Date */
+.literal-block .m { color: #3677a9 } /* Literal.Number */
+.literal-block .s { color: #ed9d13 } /* Literal.String */
+.literal-block .na { color: #bbbbbb } /* Name.Attribute */
+.literal-block .nb { color: #24909d } /* Name.Builtin */
+.literal-block .nc { color: #447fcf; text-decoration: underline } /* Name.Class */
+.literal-block .no { color: #40ffff } /* Name.Constant */
+.literal-block .nd { color: #ffa500 } /* Name.Decorator */
+.literal-block .ni { color: #d0d0d0 } /* Name.Entity */
+.literal-block .ne { color: #bbbbbb } /* Name.Exception */
+.literal-block .nf { color: #447fcf } /* Name.Function */
+.literal-block .nl { color: #d0d0d0 } /* Name.Label */
+.literal-block .nn { color: #447fcf; text-decoration: underline } /* Name.Namespace */
+.literal-block .nx { color: #d0d0d0 } /* Name.Other */
+.literal-block .py { color: #d0d0d0 } /* Name.Property */
+.literal-block .nt { color: #6ab825; font-weight: bold } /* Name.Tag */
+.literal-block .nv { color: #40ffff } /* Name.Variable */
+.literal-block .ow { color: #6ab825; font-weight: bold } /* Operator.Word */
+.literal-block .w { color: #666666 } /* Text.Whitespace */
+.literal-block .mb { color: #3677a9 } /* Literal.Number.Bin */
+.literal-block .mf { color: #3677a9 } /* Literal.Number.Float */
+.literal-block .mh { color: #3677a9 } /* Literal.Number.Hex */
+.literal-block .mi { color: #3677a9 } /* Literal.Number.Integer */
+.literal-block .mo { color: #3677a9 } /* Literal.Number.Oct */
+.literal-block .sa { color: #ed9d13 } /* Literal.String.Affix */
+.literal-block .sb { color: #ed9d13 } /* Literal.String.Backtick */
+.literal-block .sc { color: #ed9d13 } /* Literal.String.Char */
+.literal-block .dl { color: #ed9d13 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #ed9d13 } /* Literal.String.Doc */
+.literal-block .s2 { color: #ed9d13 } /* Literal.String.Double */
+.literal-block .se { color: #ed9d13 } /* Literal.String.Escape */
+.literal-block .sh { color: #ed9d13 } /* Literal.String.Heredoc */
+.literal-block .si { color: #ed9d13 } /* Literal.String.Interpol */
+.literal-block .sx { color: #ffa500 } /* Literal.String.Other */
+.literal-block .sr { color: #ed9d13 } /* Literal.String.Regex */
+.literal-block .s1 { color: #ed9d13 } /* Literal.String.Single */
+.literal-block .ss { color: #ed9d13 } /* Literal.String.Symbol */
+.literal-block .bp { color: #24909d } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #447fcf } /* Name.Function.Magic */
+.literal-block .vc { color: #40ffff } /* Name.Variable.Class */
+.literal-block .vg { color: #40ffff } /* Name.Variable.Global */
+.literal-block .vi { color: #40ffff } /* Name.Variable.Instance */
+.literal-block .vm { color: #40ffff } /* Name.Variable.Magic */
+.literal-block .il { color: #3677a9 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/native.min.css b/flex/static/pygments/native.min.css
new file mode 100644
index 0000000..cc83fc4
--- /dev/null
+++ b/flex/static/pygments/native.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#404040}.highlight{background:#202020;color:#d0d0d0}.highlight .c{color:#999;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .esc,.highlight .g{color:#d0d0d0}.highlight .k{color:#6ab825;font-weight:700}.highlight .l,.highlight .n,.highlight .o,.highlight .p,.highlight .x{color:#d0d0d0}.highlight .ch,.highlight .cm{color:#999;font-style:italic}.highlight .cp{color:#cd2828;font-weight:700}.highlight .c1,.highlight .cpf{color:#999;font-style:italic}.highlight .cs{color:#e50808;font-weight:700;background-color:#520000}.highlight .gd{color:#d22323}.highlight .ge{color:#d0d0d0;font-style:italic}.highlight .gr{color:#d22323}.highlight .gh{color:#fff;font-weight:700}.highlight .gi{color:#589819}.highlight .go{color:#ccc}.highlight .gp{color:#aaa}.highlight .gs{color:#d0d0d0;font-weight:700}.highlight .gu{color:#fff;text-decoration:underline}.highlight .gt{color:#d22323}.highlight .kc,.highlight .kd,.highlight .kn{color:#6ab825;font-weight:700}.highlight .kp{color:#6ab825}.highlight .kr,.highlight .kt{color:#6ab825;font-weight:700}.highlight .ld{color:#d0d0d0}.highlight .m{color:#3677a9}.highlight .s{color:#ed9d13}.highlight .na{color:#bbb}.highlight .nb{color:#24909d}.highlight .nc{color:#447fcf;text-decoration:underline}.highlight .no{color:#40ffff}.highlight .nd{color:orange}.highlight .ni{color:#d0d0d0}.highlight .ne{color:#bbb}.highlight .nf{color:#447fcf}.highlight .nl{color:#d0d0d0}.highlight .nn{color:#447fcf;text-decoration:underline}.highlight .nx,.highlight .py{color:#d0d0d0}.highlight .nt{color:#6ab825;font-weight:700}.highlight .nv{color:#40ffff}.highlight .ow{color:#6ab825;font-weight:700}.highlight .w{color:#666}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#3677a9}.highlight .dl,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si{color:#ed9d13}.highlight .sx{color:orange}.highlight .s1,.highlight .sr,.highlight .ss{color:#ed9d13}.highlight .bp{color:#24909d}.highlight .fm{color:#447fcf}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#40ffff}.highlight .il{color:#3677a9}.literal-block .hll{background-color:#404040}.literal-block{background:#202020;color:#d0d0d0}.literal-block .c{color:#999;font-style:italic}.literal-block .err{color:#a61717;background-color:#e3d2d2}.literal-block .esc,.literal-block .g{color:#d0d0d0}.literal-block .k{color:#6ab825;font-weight:700}.literal-block .l,.literal-block .n,.literal-block .o,.literal-block .p,.literal-block .x{color:#d0d0d0}.literal-block .ch,.literal-block .cm{color:#999;font-style:italic}.literal-block .cp{color:#cd2828;font-weight:700}.literal-block .c1,.literal-block .cpf{color:#999;font-style:italic}.literal-block .cs{color:#e50808;font-weight:700;background-color:#520000}.literal-block .gd{color:#d22323}.literal-block .ge{color:#d0d0d0;font-style:italic}.literal-block .gr{color:#d22323}.literal-block .gh{color:#fff;font-weight:700}.literal-block .gi{color:#589819}.literal-block .go{color:#ccc}.literal-block .gp{color:#aaa}.literal-block .gs{color:#d0d0d0;font-weight:700}.literal-block .gu{color:#fff;text-decoration:underline}.literal-block .gt{color:#d22323}.literal-block .kc,.literal-block .kd,.literal-block .kn{color:#6ab825;font-weight:700}.literal-block .kp{color:#6ab825}.literal-block .kr,.literal-block .kt{color:#6ab825;font-weight:700}.literal-block .ld{color:#d0d0d0}.literal-block .m{color:#3677a9}.literal-block .s{color:#ed9d13}.literal-block .na{color:#bbb}.literal-block .nb{color:#24909d}.literal-block .nc{color:#447fcf;text-decoration:underline}.literal-block .no{color:#40ffff}.literal-block .nd{color:orange}.literal-block .ni{color:#d0d0d0}.literal-block .ne{color:#bbb}.literal-block .nf{color:#447fcf}.literal-block .nl{color:#d0d0d0}.literal-block .nn{color:#447fcf;text-decoration:underline}.literal-block .nx,.literal-block .py{color:#d0d0d0}.literal-block .nt{color:#6ab825;font-weight:700}.literal-block .nv{color:#40ffff}.literal-block .ow{color:#6ab825;font-weight:700}.literal-block .w{color:#666}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#3677a9}.literal-block .dl,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si{color:#ed9d13}.literal-block .sx{color:orange}.literal-block .s1,.literal-block .sr,.literal-block .ss{color:#ed9d13}.literal-block .bp{color:#24909d}.literal-block .fm{color:#447fcf}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#40ffff}.literal-block .il{color:#3677a9}
\ No newline at end of file
diff --git a/flex/static/pygments/paraiso-dark.css b/flex/static/pygments/paraiso-dark.css
new file mode 100644
index 0000000..87065dc
--- /dev/null
+++ b/flex/static/pygments/paraiso-dark.css
@@ -0,0 +1,144 @@
+.highlight .hll { background-color: #4f424c }
+.highlight { background: #2f1e2e; color: #e7e9db }
+.highlight .c { color: #776e71 } /* Comment */
+.highlight .err { color: #ef6155 } /* Error */
+.highlight .k { color: #815ba4 } /* Keyword */
+.highlight .l { color: #f99b15 } /* Literal */
+.highlight .n { color: #e7e9db } /* Name */
+.highlight .o { color: #5bc4bf } /* Operator */
+.highlight .p { color: #e7e9db } /* Punctuation */
+.highlight .ch { color: #776e71 } /* Comment.Hashbang */
+.highlight .cm { color: #776e71 } /* Comment.Multiline */
+.highlight .cp { color: #776e71 } /* Comment.Preproc */
+.highlight .cpf { color: #776e71 } /* Comment.PreprocFile */
+.highlight .c1 { color: #776e71 } /* Comment.Single */
+.highlight .cs { color: #776e71 } /* Comment.Special */
+.highlight .gd { color: #ef6155 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gh { color: #e7e9db; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #48b685 } /* Generic.Inserted */
+.highlight .gp { color: #776e71; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #5bc4bf; font-weight: bold } /* Generic.Subheading */
+.highlight .kc { color: #815ba4 } /* Keyword.Constant */
+.highlight .kd { color: #815ba4 } /* Keyword.Declaration */
+.highlight .kn { color: #5bc4bf } /* Keyword.Namespace */
+.highlight .kp { color: #815ba4 } /* Keyword.Pseudo */
+.highlight .kr { color: #815ba4 } /* Keyword.Reserved */
+.highlight .kt { color: #fec418 } /* Keyword.Type */
+.highlight .ld { color: #48b685 } /* Literal.Date */
+.highlight .m { color: #f99b15 } /* Literal.Number */
+.highlight .s { color: #48b685 } /* Literal.String */
+.highlight .na { color: #06b6ef } /* Name.Attribute */
+.highlight .nb { color: #e7e9db } /* Name.Builtin */
+.highlight .nc { color: #fec418 } /* Name.Class */
+.highlight .no { color: #ef6155 } /* Name.Constant */
+.highlight .nd { color: #5bc4bf } /* Name.Decorator */
+.highlight .ni { color: #e7e9db } /* Name.Entity */
+.highlight .ne { color: #ef6155 } /* Name.Exception */
+.highlight .nf { color: #06b6ef } /* Name.Function */
+.highlight .nl { color: #e7e9db } /* Name.Label */
+.highlight .nn { color: #fec418 } /* Name.Namespace */
+.highlight .nx { color: #06b6ef } /* Name.Other */
+.highlight .py { color: #e7e9db } /* Name.Property */
+.highlight .nt { color: #5bc4bf } /* Name.Tag */
+.highlight .nv { color: #ef6155 } /* Name.Variable */
+.highlight .ow { color: #5bc4bf } /* Operator.Word */
+.highlight .w { color: #e7e9db } /* Text.Whitespace */
+.highlight .mb { color: #f99b15 } /* Literal.Number.Bin */
+.highlight .mf { color: #f99b15 } /* Literal.Number.Float */
+.highlight .mh { color: #f99b15 } /* Literal.Number.Hex */
+.highlight .mi { color: #f99b15 } /* Literal.Number.Integer */
+.highlight .mo { color: #f99b15 } /* Literal.Number.Oct */
+.highlight .sa { color: #48b685 } /* Literal.String.Affix */
+.highlight .sb { color: #48b685 } /* Literal.String.Backtick */
+.highlight .sc { color: #e7e9db } /* Literal.String.Char */
+.highlight .dl { color: #48b685 } /* Literal.String.Delimiter */
+.highlight .sd { color: #776e71 } /* Literal.String.Doc */
+.highlight .s2 { color: #48b685 } /* Literal.String.Double */
+.highlight .se { color: #f99b15 } /* Literal.String.Escape */
+.highlight .sh { color: #48b685 } /* Literal.String.Heredoc */
+.highlight .si { color: #f99b15 } /* Literal.String.Interpol */
+.highlight .sx { color: #48b685 } /* Literal.String.Other */
+.highlight .sr { color: #48b685 } /* Literal.String.Regex */
+.highlight .s1 { color: #48b685 } /* Literal.String.Single */
+.highlight .ss { color: #48b685 } /* Literal.String.Symbol */
+.highlight .bp { color: #e7e9db } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #06b6ef } /* Name.Function.Magic */
+.highlight .vc { color: #ef6155 } /* Name.Variable.Class */
+.highlight .vg { color: #ef6155 } /* Name.Variable.Global */
+.highlight .vi { color: #ef6155 } /* Name.Variable.Instance */
+.highlight .vm { color: #ef6155 } /* Name.Variable.Magic */
+.highlight .il { color: #f99b15 } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #4f424c }
+.literal-block { background: #2f1e2e; color: #e7e9db }
+.literal-block .c { color: #776e71 } /* Comment */
+.literal-block .err { color: #ef6155 } /* Error */
+.literal-block .k { color: #815ba4 } /* Keyword */
+.literal-block .l { color: #f99b15 } /* Literal */
+.literal-block .n { color: #e7e9db } /* Name */
+.literal-block .o { color: #5bc4bf } /* Operator */
+.literal-block .p { color: #e7e9db } /* Punctuation */
+.literal-block .ch { color: #776e71 } /* Comment.Hashbang */
+.literal-block .cm { color: #776e71 } /* Comment.Multiline */
+.literal-block .cp { color: #776e71 } /* Comment.Preproc */
+.literal-block .cpf { color: #776e71 } /* Comment.PreprocFile */
+.literal-block .c1 { color: #776e71 } /* Comment.Single */
+.literal-block .cs { color: #776e71 } /* Comment.Special */
+.literal-block .gd { color: #ef6155 } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gh { color: #e7e9db; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #48b685 } /* Generic.Inserted */
+.literal-block .gp { color: #776e71; font-weight: bold } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #5bc4bf; font-weight: bold } /* Generic.Subheading */
+.literal-block .kc { color: #815ba4 } /* Keyword.Constant */
+.literal-block .kd { color: #815ba4 } /* Keyword.Declaration */
+.literal-block .kn { color: #5bc4bf } /* Keyword.Namespace */
+.literal-block .kp { color: #815ba4 } /* Keyword.Pseudo */
+.literal-block .kr { color: #815ba4 } /* Keyword.Reserved */
+.literal-block .kt { color: #fec418 } /* Keyword.Type */
+.literal-block .ld { color: #48b685 } /* Literal.Date */
+.literal-block .m { color: #f99b15 } /* Literal.Number */
+.literal-block .s { color: #48b685 } /* Literal.String */
+.literal-block .na { color: #06b6ef } /* Name.Attribute */
+.literal-block .nb { color: #e7e9db } /* Name.Builtin */
+.literal-block .nc { color: #fec418 } /* Name.Class */
+.literal-block .no { color: #ef6155 } /* Name.Constant */
+.literal-block .nd { color: #5bc4bf } /* Name.Decorator */
+.literal-block .ni { color: #e7e9db } /* Name.Entity */
+.literal-block .ne { color: #ef6155 } /* Name.Exception */
+.literal-block .nf { color: #06b6ef } /* Name.Function */
+.literal-block .nl { color: #e7e9db } /* Name.Label */
+.literal-block .nn { color: #fec418 } /* Name.Namespace */
+.literal-block .nx { color: #06b6ef } /* Name.Other */
+.literal-block .py { color: #e7e9db } /* Name.Property */
+.literal-block .nt { color: #5bc4bf } /* Name.Tag */
+.literal-block .nv { color: #ef6155 } /* Name.Variable */
+.literal-block .ow { color: #5bc4bf } /* Operator.Word */
+.literal-block .w { color: #e7e9db } /* Text.Whitespace */
+.literal-block .mb { color: #f99b15 } /* Literal.Number.Bin */
+.literal-block .mf { color: #f99b15 } /* Literal.Number.Float */
+.literal-block .mh { color: #f99b15 } /* Literal.Number.Hex */
+.literal-block .mi { color: #f99b15 } /* Literal.Number.Integer */
+.literal-block .mo { color: #f99b15 } /* Literal.Number.Oct */
+.literal-block .sa { color: #48b685 } /* Literal.String.Affix */
+.literal-block .sb { color: #48b685 } /* Literal.String.Backtick */
+.literal-block .sc { color: #e7e9db } /* Literal.String.Char */
+.literal-block .dl { color: #48b685 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #776e71 } /* Literal.String.Doc */
+.literal-block .s2 { color: #48b685 } /* Literal.String.Double */
+.literal-block .se { color: #f99b15 } /* Literal.String.Escape */
+.literal-block .sh { color: #48b685 } /* Literal.String.Heredoc */
+.literal-block .si { color: #f99b15 } /* Literal.String.Interpol */
+.literal-block .sx { color: #48b685 } /* Literal.String.Other */
+.literal-block .sr { color: #48b685 } /* Literal.String.Regex */
+.literal-block .s1 { color: #48b685 } /* Literal.String.Single */
+.literal-block .ss { color: #48b685 } /* Literal.String.Symbol */
+.literal-block .bp { color: #e7e9db } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #06b6ef } /* Name.Function.Magic */
+.literal-block .vc { color: #ef6155 } /* Name.Variable.Class */
+.literal-block .vg { color: #ef6155 } /* Name.Variable.Global */
+.literal-block .vi { color: #ef6155 } /* Name.Variable.Instance */
+.literal-block .vm { color: #ef6155 } /* Name.Variable.Magic */
+.literal-block .il { color: #f99b15 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/paraiso-dark.min.css b/flex/static/pygments/paraiso-dark.min.css
new file mode 100644
index 0000000..c64e703
--- /dev/null
+++ b/flex/static/pygments/paraiso-dark.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#4f424c}.highlight{background:#2f1e2e;color:#e7e9db}.highlight .c{color:#776e71}.highlight .err{color:#ef6155}.highlight .k{color:#815ba4}.highlight .l{color:#f99b15}.highlight .n{color:#e7e9db}.highlight .o{color:#5bc4bf}.highlight .p{color:#e7e9db}.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cp,.highlight .cpf,.highlight .cs{color:#776e71}.highlight .gd{color:#ef6155}.highlight .ge{font-style:italic}.highlight .gh{color:#e7e9db;font-weight:700}.highlight .gi{color:#48b685}.highlight .gp{color:#776e71}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:#5bc4bf}.highlight .kc,.highlight .kd{color:#815ba4}.highlight .kn{color:#5bc4bf}.highlight .kp,.highlight .kr{color:#815ba4}.highlight .kt{color:#fec418}.highlight .ld{color:#48b685}.highlight .m{color:#f99b15}.highlight .s{color:#48b685}.highlight .na{color:#06b6ef}.highlight .nb{color:#e7e9db}.highlight .nc{color:#fec418}.highlight .no{color:#ef6155}.highlight .nd{color:#5bc4bf}.highlight .ni{color:#e7e9db}.highlight .ne{color:#ef6155}.highlight .nf{color:#06b6ef}.highlight .nl{color:#e7e9db}.highlight .nn{color:#fec418}.highlight .nx{color:#06b6ef}.highlight .py{color:#e7e9db}.highlight .nt{color:#5bc4bf}.highlight .nv{color:#ef6155}.highlight .ow{color:#5bc4bf}.highlight .w{color:#e7e9db}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#f99b15}.highlight .sa,.highlight .sb{color:#48b685}.highlight .sc{color:#e7e9db}.highlight .dl{color:#48b685}.highlight .sd{color:#776e71}.highlight .s2{color:#48b685}.highlight .se{color:#f99b15}.highlight .sh{color:#48b685}.highlight .si{color:#f99b15}.highlight .s1,.highlight .sr,.highlight .ss,.highlight .sx{color:#48b685}.highlight .bp{color:#e7e9db}.highlight .fm{color:#06b6ef}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#ef6155}.highlight .il{color:#f99b15}.literal-block .hll{background-color:#4f424c}.literal-block{background:#2f1e2e;color:#e7e9db}.literal-block .c{color:#776e71}.literal-block .err{color:#ef6155}.literal-block .k{color:#815ba4}.literal-block .l{color:#f99b15}.literal-block .n{color:#e7e9db}.literal-block .o{color:#5bc4bf}.literal-block .p{color:#e7e9db}.literal-block .c1,.literal-block .ch,.literal-block .cm,.literal-block .cp,.literal-block .cpf,.literal-block .cs{color:#776e71}.literal-block .gd{color:#ef6155}.literal-block .ge{font-style:italic}.literal-block .gh{color:#e7e9db;font-weight:700}.literal-block .gi{color:#48b685}.literal-block .gp{color:#776e71;font-weight:700}.literal-block .gs{font-weight:700}.literal-block .gu{color:#5bc4bf;font-weight:700}.literal-block .kc,.literal-block .kd{color:#815ba4}.literal-block .kn{color:#5bc4bf}.literal-block .kp,.literal-block .kr{color:#815ba4}.literal-block .kt{color:#fec418}.literal-block .ld{color:#48b685}.literal-block .m{color:#f99b15}.literal-block .s{color:#48b685}.literal-block .na{color:#06b6ef}.literal-block .nb{color:#e7e9db}.literal-block .nc{color:#fec418}.literal-block .no{color:#ef6155}.literal-block .nd{color:#5bc4bf}.literal-block .ni{color:#e7e9db}.literal-block .ne{color:#ef6155}.literal-block .nf{color:#06b6ef}.literal-block .nl{color:#e7e9db}.literal-block .nn{color:#fec418}.literal-block .nx{color:#06b6ef}.literal-block .py{color:#e7e9db}.literal-block .nt{color:#5bc4bf}.literal-block .nv{color:#ef6155}.literal-block .ow{color:#5bc4bf}.literal-block .w{color:#e7e9db}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#f99b15}.literal-block .sa,.literal-block .sb{color:#48b685}.literal-block .sc{color:#e7e9db}.literal-block .dl{color:#48b685}.literal-block .sd{color:#776e71}.literal-block .s2{color:#48b685}.literal-block .se{color:#f99b15}.literal-block .sh{color:#48b685}.literal-block .si{color:#f99b15}.literal-block .s1,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#48b685}.literal-block .bp{color:#e7e9db}.literal-block .fm{color:#06b6ef}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#ef6155}.literal-block .il{color:#f99b15}
\ No newline at end of file
diff --git a/flex/static/pygments/paraiso-light.css b/flex/static/pygments/paraiso-light.css
new file mode 100644
index 0000000..39b1e6e
--- /dev/null
+++ b/flex/static/pygments/paraiso-light.css
@@ -0,0 +1,144 @@
+.highlight .hll { background-color: #a39e9b }
+.highlight { background: #e7e9db; color: #2f1e2e }
+.highlight .c { color: #8d8687 } /* Comment */
+.highlight .err { color: #ef6155 } /* Error */
+.highlight .k { color: #815ba4 } /* Keyword */
+.highlight .l { color: #f99b15 } /* Literal */
+.highlight .n { color: #2f1e2e } /* Name */
+.highlight .o { color: #5bc4bf } /* Operator */
+.highlight .p { color: #2f1e2e } /* Punctuation */
+.highlight .ch { color: #8d8687 } /* Comment.Hashbang */
+.highlight .cm { color: #8d8687 } /* Comment.Multiline */
+.highlight .cp { color: #8d8687 } /* Comment.Preproc */
+.highlight .cpf { color: #8d8687 } /* Comment.PreprocFile */
+.highlight .c1 { color: #8d8687 } /* Comment.Single */
+.highlight .cs { color: #8d8687 } /* Comment.Special */
+.highlight .gd { color: #ef6155 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gh { color: #2f1e2e; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #48b685 } /* Generic.Inserted */
+.highlight .gp { color: #8d8687; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #5bc4bf; font-weight: bold } /* Generic.Subheading */
+.highlight .kc { color: #815ba4 } /* Keyword.Constant */
+.highlight .kd { color: #815ba4 } /* Keyword.Declaration */
+.highlight .kn { color: #5bc4bf } /* Keyword.Namespace */
+.highlight .kp { color: #815ba4 } /* Keyword.Pseudo */
+.highlight .kr { color: #815ba4 } /* Keyword.Reserved */
+.highlight .kt { color: #fec418 } /* Keyword.Type */
+.highlight .ld { color: #48b685 } /* Literal.Date */
+.highlight .m { color: #f99b15 } /* Literal.Number */
+.highlight .s { color: #48b685 } /* Literal.String */
+.highlight .na { color: #06b6ef } /* Name.Attribute */
+.highlight .nb { color: #2f1e2e } /* Name.Builtin */
+.highlight .nc { color: #fec418 } /* Name.Class */
+.highlight .no { color: #ef6155 } /* Name.Constant */
+.highlight .nd { color: #5bc4bf } /* Name.Decorator */
+.highlight .ni { color: #2f1e2e } /* Name.Entity */
+.highlight .ne { color: #ef6155 } /* Name.Exception */
+.highlight .nf { color: #06b6ef } /* Name.Function */
+.highlight .nl { color: #2f1e2e } /* Name.Label */
+.highlight .nn { color: #fec418 } /* Name.Namespace */
+.highlight .nx { color: #06b6ef } /* Name.Other */
+.highlight .py { color: #2f1e2e } /* Name.Property */
+.highlight .nt { color: #5bc4bf } /* Name.Tag */
+.highlight .nv { color: #ef6155 } /* Name.Variable */
+.highlight .ow { color: #5bc4bf } /* Operator.Word */
+.highlight .w { color: #2f1e2e } /* Text.Whitespace */
+.highlight .mb { color: #f99b15 } /* Literal.Number.Bin */
+.highlight .mf { color: #f99b15 } /* Literal.Number.Float */
+.highlight .mh { color: #f99b15 } /* Literal.Number.Hex */
+.highlight .mi { color: #f99b15 } /* Literal.Number.Integer */
+.highlight .mo { color: #f99b15 } /* Literal.Number.Oct */
+.highlight .sa { color: #48b685 } /* Literal.String.Affix */
+.highlight .sb { color: #48b685 } /* Literal.String.Backtick */
+.highlight .sc { color: #2f1e2e } /* Literal.String.Char */
+.highlight .dl { color: #48b685 } /* Literal.String.Delimiter */
+.highlight .sd { color: #8d8687 } /* Literal.String.Doc */
+.highlight .s2 { color: #48b685 } /* Literal.String.Double */
+.highlight .se { color: #f99b15 } /* Literal.String.Escape */
+.highlight .sh { color: #48b685 } /* Literal.String.Heredoc */
+.highlight .si { color: #f99b15 } /* Literal.String.Interpol */
+.highlight .sx { color: #48b685 } /* Literal.String.Other */
+.highlight .sr { color: #48b685 } /* Literal.String.Regex */
+.highlight .s1 { color: #48b685 } /* Literal.String.Single */
+.highlight .ss { color: #48b685 } /* Literal.String.Symbol */
+.highlight .bp { color: #2f1e2e } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #06b6ef } /* Name.Function.Magic */
+.highlight .vc { color: #ef6155 } /* Name.Variable.Class */
+.highlight .vg { color: #ef6155 } /* Name.Variable.Global */
+.highlight .vi { color: #ef6155 } /* Name.Variable.Instance */
+.highlight .vm { color: #ef6155 } /* Name.Variable.Magic */
+.highlight .il { color: #f99b15 } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #a39e9b }
+.literal-block { background: #e7e9db; color: #2f1e2e }
+.literal-block .c { color: #8d8687 } /* Comment */
+.literal-block .err { color: #ef6155 } /* Error */
+.literal-block .k { color: #815ba4 } /* Keyword */
+.literal-block .l { color: #f99b15 } /* Literal */
+.literal-block .n { color: #2f1e2e } /* Name */
+.literal-block .o { color: #5bc4bf } /* Operator */
+.literal-block .p { color: #2f1e2e } /* Punctuation */
+.literal-block .ch { color: #8d8687 } /* Comment.Hashbang */
+.literal-block .cm { color: #8d8687 } /* Comment.Multiline */
+.literal-block .cp { color: #8d8687 } /* Comment.Preproc */
+.literal-block .cpf { color: #8d8687 } /* Comment.PreprocFile */
+.literal-block .c1 { color: #8d8687 } /* Comment.Single */
+.literal-block .cs { color: #8d8687 } /* Comment.Special */
+.literal-block .gd { color: #ef6155 } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gh { color: #2f1e2e; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #48b685 } /* Generic.Inserted */
+.literal-block .gp { color: #8d8687; font-weight: bold } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #5bc4bf; font-weight: bold } /* Generic.Subheading */
+.literal-block .kc { color: #815ba4 } /* Keyword.Constant */
+.literal-block .kd { color: #815ba4 } /* Keyword.Declaration */
+.literal-block .kn { color: #5bc4bf } /* Keyword.Namespace */
+.literal-block .kp { color: #815ba4 } /* Keyword.Pseudo */
+.literal-block .kr { color: #815ba4 } /* Keyword.Reserved */
+.literal-block .kt { color: #fec418 } /* Keyword.Type */
+.literal-block .ld { color: #48b685 } /* Literal.Date */
+.literal-block .m { color: #f99b15 } /* Literal.Number */
+.literal-block .s { color: #48b685 } /* Literal.String */
+.literal-block .na { color: #06b6ef } /* Name.Attribute */
+.literal-block .nb { color: #2f1e2e } /* Name.Builtin */
+.literal-block .nc { color: #fec418 } /* Name.Class */
+.literal-block .no { color: #ef6155 } /* Name.Constant */
+.literal-block .nd { color: #5bc4bf } /* Name.Decorator */
+.literal-block .ni { color: #2f1e2e } /* Name.Entity */
+.literal-block .ne { color: #ef6155 } /* Name.Exception */
+.literal-block .nf { color: #06b6ef } /* Name.Function */
+.literal-block .nl { color: #2f1e2e } /* Name.Label */
+.literal-block .nn { color: #fec418 } /* Name.Namespace */
+.literal-block .nx { color: #06b6ef } /* Name.Other */
+.literal-block .py { color: #2f1e2e } /* Name.Property */
+.literal-block .nt { color: #5bc4bf } /* Name.Tag */
+.literal-block .nv { color: #ef6155 } /* Name.Variable */
+.literal-block .ow { color: #5bc4bf } /* Operator.Word */
+.literal-block .w { color: #2f1e2e } /* Text.Whitespace */
+.literal-block .mb { color: #f99b15 } /* Literal.Number.Bin */
+.literal-block .mf { color: #f99b15 } /* Literal.Number.Float */
+.literal-block .mh { color: #f99b15 } /* Literal.Number.Hex */
+.literal-block .mi { color: #f99b15 } /* Literal.Number.Integer */
+.literal-block .mo { color: #f99b15 } /* Literal.Number.Oct */
+.literal-block .sa { color: #48b685 } /* Literal.String.Affix */
+.literal-block .sb { color: #48b685 } /* Literal.String.Backtick */
+.literal-block .sc { color: #2f1e2e } /* Literal.String.Char */
+.literal-block .dl { color: #48b685 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #8d8687 } /* Literal.String.Doc */
+.literal-block .s2 { color: #48b685 } /* Literal.String.Double */
+.literal-block .se { color: #f99b15 } /* Literal.String.Escape */
+.literal-block .sh { color: #48b685 } /* Literal.String.Heredoc */
+.literal-block .si { color: #f99b15 } /* Literal.String.Interpol */
+.literal-block .sx { color: #48b685 } /* Literal.String.Other */
+.literal-block .sr { color: #48b685 } /* Literal.String.Regex */
+.literal-block .s1 { color: #48b685 } /* Literal.String.Single */
+.literal-block .ss { color: #48b685 } /* Literal.String.Symbol */
+.literal-block .bp { color: #2f1e2e } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #06b6ef } /* Name.Function.Magic */
+.literal-block .vc { color: #ef6155 } /* Name.Variable.Class */
+.literal-block .vg { color: #ef6155 } /* Name.Variable.Global */
+.literal-block .vi { color: #ef6155 } /* Name.Variable.Instance */
+.literal-block .vm { color: #ef6155 } /* Name.Variable.Magic */
+.literal-block .il { color: #f99b15 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/paraiso-light.min.css b/flex/static/pygments/paraiso-light.min.css
new file mode 100644
index 0000000..4ad09c4
--- /dev/null
+++ b/flex/static/pygments/paraiso-light.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#a39e9b}.highlight{background:#e7e9db;color:#2f1e2e}.highlight .c{color:#8d8687}.highlight .err{color:#ef6155}.highlight .k{color:#815ba4}.highlight .l{color:#f99b15}.highlight .n{color:#2f1e2e}.highlight .o{color:#5bc4bf}.highlight .p{color:#2f1e2e}.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cp,.highlight .cpf,.highlight .cs{color:#8d8687}.highlight .gd{color:#ef6155}.highlight .ge{font-style:italic}.highlight .gh{color:#2f1e2e;font-weight:700}.highlight .gi{color:#48b685}.highlight .gp{color:#8d8687}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:#5bc4bf}.highlight .kc,.highlight .kd{color:#815ba4}.highlight .kn{color:#5bc4bf}.highlight .kp,.highlight .kr{color:#815ba4}.highlight .kt{color:#fec418}.highlight .ld{color:#48b685}.highlight .m{color:#f99b15}.highlight .s{color:#48b685}.highlight .na{color:#06b6ef}.highlight .nb{color:#2f1e2e}.highlight .nc{color:#fec418}.highlight .no{color:#ef6155}.highlight .nd{color:#5bc4bf}.highlight .ni{color:#2f1e2e}.highlight .ne{color:#ef6155}.highlight .nf{color:#06b6ef}.highlight .nl{color:#2f1e2e}.highlight .nn{color:#fec418}.highlight .nx{color:#06b6ef}.highlight .py{color:#2f1e2e}.highlight .nt{color:#5bc4bf}.highlight .nv{color:#ef6155}.highlight .ow{color:#5bc4bf}.highlight .w{color:#2f1e2e}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#f99b15}.highlight .sa,.highlight .sb{color:#48b685}.highlight .sc{color:#2f1e2e}.highlight .dl{color:#48b685}.highlight .sd{color:#8d8687}.highlight .s2{color:#48b685}.highlight .se{color:#f99b15}.highlight .sh{color:#48b685}.highlight .si{color:#f99b15}.highlight .s1,.highlight .sr,.highlight .ss,.highlight .sx{color:#48b685}.highlight .bp{color:#2f1e2e}.highlight .fm{color:#06b6ef}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#ef6155}.highlight .il{color:#f99b15}.literal-block .hll{background-color:#a39e9b}.literal-block{background:#e7e9db;color:#2f1e2e}.literal-block .c{color:#8d8687}.literal-block .err{color:#ef6155}.literal-block .k{color:#815ba4}.literal-block .l{color:#f99b15}.literal-block .n{color:#2f1e2e}.literal-block .o{color:#5bc4bf}.literal-block .p{color:#2f1e2e}.literal-block .c1,.literal-block .ch,.literal-block .cm,.literal-block .cp,.literal-block .cpf,.literal-block .cs{color:#8d8687}.literal-block .gd{color:#ef6155}.literal-block .ge{font-style:italic}.literal-block .gh{color:#2f1e2e;font-weight:700}.literal-block .gi{color:#48b685}.literal-block .gp{color:#8d8687;font-weight:700}.literal-block .gs{font-weight:700}.literal-block .gu{color:#5bc4bf;font-weight:700}.literal-block .kc,.literal-block .kd{color:#815ba4}.literal-block .kn{color:#5bc4bf}.literal-block .kp,.literal-block .kr{color:#815ba4}.literal-block .kt{color:#fec418}.literal-block .ld{color:#48b685}.literal-block .m{color:#f99b15}.literal-block .s{color:#48b685}.literal-block .na{color:#06b6ef}.literal-block .nb{color:#2f1e2e}.literal-block .nc{color:#fec418}.literal-block .no{color:#ef6155}.literal-block .nd{color:#5bc4bf}.literal-block .ni{color:#2f1e2e}.literal-block .ne{color:#ef6155}.literal-block .nf{color:#06b6ef}.literal-block .nl{color:#2f1e2e}.literal-block .nn{color:#fec418}.literal-block .nx{color:#06b6ef}.literal-block .py{color:#2f1e2e}.literal-block .nt{color:#5bc4bf}.literal-block .nv{color:#ef6155}.literal-block .ow{color:#5bc4bf}.literal-block .w{color:#2f1e2e}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#f99b15}.literal-block .sa,.literal-block .sb{color:#48b685}.literal-block .sc{color:#2f1e2e}.literal-block .dl{color:#48b685}.literal-block .sd{color:#8d8687}.literal-block .s2{color:#48b685}.literal-block .se{color:#f99b15}.literal-block .sh{color:#48b685}.literal-block .si{color:#f99b15}.literal-block .s1,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#48b685}.literal-block .bp{color:#2f1e2e}.literal-block .fm{color:#06b6ef}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#ef6155}.literal-block .il{color:#f99b15}
\ No newline at end of file
diff --git a/flex/static/pygments/pastie.css b/flex/static/pygments/pastie.css
new file mode 100644
index 0000000..8e9374e
--- /dev/null
+++ b/flex/static/pygments/pastie.css
@@ -0,0 +1,136 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #888888 } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .k { color: #008800; font-weight: bold } /* Keyword */
+.highlight .ch { color: #888888 } /* Comment.Hashbang */
+.highlight .cm { color: #888888 } /* Comment.Multiline */
+.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
+.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
+.highlight .c1 { color: #888888 } /* Comment.Single */
+.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #aa0000 } /* Generic.Error */
+.highlight .gh { color: #333333 } /* Generic.Heading */
+.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #555555 } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #666666 } /* Generic.Subheading */
+.highlight .gt { color: #aa0000 } /* Generic.Traceback */
+.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #008800 } /* Keyword.Pseudo */
+.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
+.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
+.highlight .na { color: #336699 } /* Name.Attribute */
+.highlight .nb { color: #003388 } /* Name.Builtin */
+.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
+.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
+.highlight .nd { color: #555555 } /* Name.Decorator */
+.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
+.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
+.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
+.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
+.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #336699 } /* Name.Variable */
+.highlight .ow { color: #008800 } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
+.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
+.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
+.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
+.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
+.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
+.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
+.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
+.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
+.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
+.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
+.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
+.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
+.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
+.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
+.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
+.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
+.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
+.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
+.highlight .vc { color: #336699 } /* Name.Variable.Class */
+.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
+.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
+.highlight .vm { color: #336699 } /* Name.Variable.Magic */
+.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #888888 } /* Comment */
+.literal-block .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.literal-block .k { color: #008800; font-weight: bold } /* Keyword */
+.literal-block .ch { color: #888888 } /* Comment.Hashbang */
+.literal-block .cm { color: #888888 } /* Comment.Multiline */
+.literal-block .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
+.literal-block .cpf { color: #888888 } /* Comment.PreprocFile */
+.literal-block .c1 { color: #888888 } /* Comment.Single */
+.literal-block .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
+.literal-block .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #aa0000 } /* Generic.Error */
+.literal-block .gh { color: #333333 } /* Generic.Heading */
+.literal-block .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.literal-block .go { color: #888888 } /* Generic.Output */
+.literal-block .gp { color: #555555 } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #666666 } /* Generic.Subheading */
+.literal-block .gt { color: #aa0000 } /* Generic.Traceback */
+.literal-block .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #008800 } /* Keyword.Pseudo */
+.literal-block .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #888888; font-weight: bold } /* Keyword.Type */
+.literal-block .m { color: #0000DD; font-weight: bold } /* Literal.Number */
+.literal-block .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
+.literal-block .na { color: #336699 } /* Name.Attribute */
+.literal-block .nb { color: #003388 } /* Name.Builtin */
+.literal-block .nc { color: #bb0066; font-weight: bold } /* Name.Class */
+.literal-block .no { color: #003366; font-weight: bold } /* Name.Constant */
+.literal-block .nd { color: #555555 } /* Name.Decorator */
+.literal-block .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
+.literal-block .nf { color: #0066bb; font-weight: bold } /* Name.Function */
+.literal-block .nl { color: #336699; font-style: italic } /* Name.Label */
+.literal-block .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
+.literal-block .py { color: #336699; font-weight: bold } /* Name.Property */
+.literal-block .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
+.literal-block .nv { color: #336699 } /* Name.Variable */
+.literal-block .ow { color: #008800 } /* Operator.Word */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
+.literal-block .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
+.literal-block .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
+.literal-block .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
+.literal-block .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
+.literal-block .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
+.literal-block .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
+.literal-block .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
+.literal-block .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
+.literal-block .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
+.literal-block .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
+.literal-block .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
+.literal-block .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
+.literal-block .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
+.literal-block .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
+.literal-block .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
+.literal-block .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
+.literal-block .bp { color: #003388 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
+.literal-block .vc { color: #336699 } /* Name.Variable.Class */
+.literal-block .vg { color: #dd7700 } /* Name.Variable.Global */
+.literal-block .vi { color: #3333bb } /* Name.Variable.Instance */
+.literal-block .vm { color: #336699 } /* Name.Variable.Magic */
+.literal-block .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/pastie.min.css b/flex/static/pygments/pastie.min.css
new file mode 100644
index 0000000..a274bfc
--- /dev/null
+++ b/flex/static/pygments/pastie.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:#888}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{color:#080;font-weight:700}.highlight .ch,.highlight .cm{color:#888}.highlight .cp{color:#c00;font-weight:700}.highlight .c1,.highlight .cpf{color:#888}.highlight .cs{color:#c00;font-weight:700;background-color:#fff0f0}.highlight .gd{color:#000;background-color:#fdd}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#333}.highlight .gi{color:#000;background-color:#dfd}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:700}.highlight .gu{color:#666}.highlight .gt{color:#a00}.highlight .kc,.highlight .kd,.highlight .kn{color:#080;font-weight:700}.highlight .kp{color:#080}.highlight .kr{color:#080;font-weight:700}.highlight .kt{color:#888;font-weight:700}.highlight .m{color:#00d;font-weight:700}.highlight .s{color:#d20;background-color:#fff0f0}.highlight .na{color:#369}.highlight .nb{color:#038}.highlight .nc{color:#b06;font-weight:700}.highlight .no{color:#036;font-weight:700}.highlight .nd{color:#555}.highlight .ne{color:#b06;font-weight:700}.highlight .nf{color:#06b;font-weight:700}.highlight .nl{color:#369;font-style:italic}.highlight .nn{color:#b06;font-weight:700}.highlight .py{color:#369;font-weight:700}.highlight .nt{color:#b06;font-weight:700}.highlight .nv{color:#369}.highlight .ow{color:#080}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#00d;font-weight:700}.highlight .dl,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd{color:#d20;background-color:#fff0f0}.highlight .se{color:#04d;background-color:#fff0f0}.highlight .sh{color:#d20;background-color:#fff0f0}.highlight .si{color:#33b;background-color:#fff0f0}.highlight .sx{color:#2b2;background-color:#f0fff0}.highlight .sr{color:#080;background-color:#fff0ff}.highlight .s1{color:#d20;background-color:#fff0f0}.highlight .ss{color:#a60;background-color:#fff0f0}.highlight .bp{color:#038}.highlight .fm{color:#06b;font-weight:700}.highlight .vc{color:#369}.highlight .vg{color:#d70}.highlight .vi{color:#33b}.highlight .vm{color:#369}.highlight .il{color:#00d;font-weight:700}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:#888}.literal-block .err{color:#a61717;background-color:#e3d2d2}.literal-block .k{color:#080;font-weight:700}.literal-block .ch,.literal-block .cm{color:#888}.literal-block .cp{color:#c00;font-weight:700}.literal-block .c1,.literal-block .cpf{color:#888}.literal-block .cs{color:#c00;font-weight:700;background-color:#fff0f0}.literal-block .gd{color:#000;background-color:#fdd}.literal-block .ge{font-style:italic}.literal-block .gr{color:#a00}.literal-block .gh{color:#333}.literal-block .gi{color:#000;background-color:#dfd}.literal-block .go{color:#888}.literal-block .gp{color:#555}.literal-block .gs{font-weight:700}.literal-block .gu{color:#666}.literal-block .gt{color:#a00}.literal-block .kc,.literal-block .kd,.literal-block .kn{color:#080;font-weight:700}.literal-block .kp{color:#080}.literal-block .kr{color:#080;font-weight:700}.literal-block .kt{color:#888;font-weight:700}.literal-block .m{color:#00d;font-weight:700}.literal-block .s{color:#d20;background-color:#fff0f0}.literal-block .na{color:#369}.literal-block .nb{color:#038}.literal-block .nc{color:#b06;font-weight:700}.literal-block .no{color:#036;font-weight:700}.literal-block .nd{color:#555}.literal-block .ne{color:#b06;font-weight:700}.literal-block .nf{color:#06b;font-weight:700}.literal-block .nl{color:#369;font-style:italic}.literal-block .nn{color:#b06;font-weight:700}.literal-block .py{color:#369;font-weight:700}.literal-block .nt{color:#b06;font-weight:700}.literal-block .nv{color:#369}.literal-block .ow{color:#080}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#00d;font-weight:700}.literal-block .dl,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd{color:#d20;background-color:#fff0f0}.literal-block .se{color:#04d;background-color:#fff0f0}.literal-block .sh{color:#d20;background-color:#fff0f0}.literal-block .si{color:#33b;background-color:#fff0f0}.literal-block .sx{color:#2b2;background-color:#f0fff0}.literal-block .sr{color:#080;background-color:#fff0ff}.literal-block .s1{color:#d20;background-color:#fff0f0}.literal-block .ss{color:#a60;background-color:#fff0f0}.literal-block .bp{color:#038}.literal-block .fm{color:#06b;font-weight:700}.literal-block .vc{color:#369}.literal-block .vg{color:#d70}.literal-block .vi{color:#33b}.literal-block .vm{color:#369}.literal-block .il{color:#00d;font-weight:700}
\ No newline at end of file
diff --git a/flex/static/pygments/perldoc.css b/flex/static/pygments/perldoc.css
new file mode 100644
index 0000000..3fc5a5b
--- /dev/null
+++ b/flex/static/pygments/perldoc.css
@@ -0,0 +1,132 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #eeeedd; }
+.highlight .c { color: #228B22 } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .k { color: #8B008B; font-weight: bold } /* Keyword */
+.highlight .ch { color: #228B22 } /* Comment.Hashbang */
+.highlight .cm { color: #228B22 } /* Comment.Multiline */
+.highlight .cp { color: #1e889b } /* Comment.Preproc */
+.highlight .cpf { color: #228B22 } /* Comment.PreprocFile */
+.highlight .c1 { color: #228B22 } /* Comment.Single */
+.highlight .cs { color: #8B008B; font-weight: bold } /* Comment.Special */
+.highlight .gd { color: #aa0000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #aa0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00aa00 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #555555 } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #aa0000 } /* Generic.Traceback */
+.highlight .kc { color: #8B008B; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #8B008B; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #8B008B; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #8B008B; font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: #8B008B; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #00688B; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #B452CD } /* Literal.Number */
+.highlight .s { color: #CD5555 } /* Literal.String */
+.highlight .na { color: #658b00 } /* Name.Attribute */
+.highlight .nb { color: #658b00 } /* Name.Builtin */
+.highlight .nc { color: #008b45; font-weight: bold } /* Name.Class */
+.highlight .no { color: #00688B } /* Name.Constant */
+.highlight .nd { color: #707a7c } /* Name.Decorator */
+.highlight .ne { color: #008b45; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #008b45 } /* Name.Function */
+.highlight .nn { color: #008b45; text-decoration: underline } /* Name.Namespace */
+.highlight .nt { color: #8B008B; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #00688B } /* Name.Variable */
+.highlight .ow { color: #8B008B } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #B452CD } /* Literal.Number.Bin */
+.highlight .mf { color: #B452CD } /* Literal.Number.Float */
+.highlight .mh { color: #B452CD } /* Literal.Number.Hex */
+.highlight .mi { color: #B452CD } /* Literal.Number.Integer */
+.highlight .mo { color: #B452CD } /* Literal.Number.Oct */
+.highlight .sa { color: #CD5555 } /* Literal.String.Affix */
+.highlight .sb { color: #CD5555 } /* Literal.String.Backtick */
+.highlight .sc { color: #CD5555 } /* Literal.String.Char */
+.highlight .dl { color: #CD5555 } /* Literal.String.Delimiter */
+.highlight .sd { color: #CD5555 } /* Literal.String.Doc */
+.highlight .s2 { color: #CD5555 } /* Literal.String.Double */
+.highlight .se { color: #CD5555 } /* Literal.String.Escape */
+.highlight .sh { color: #1c7e71; font-style: italic } /* Literal.String.Heredoc */
+.highlight .si { color: #CD5555 } /* Literal.String.Interpol */
+.highlight .sx { color: #cb6c20 } /* Literal.String.Other */
+.highlight .sr { color: #1c7e71 } /* Literal.String.Regex */
+.highlight .s1 { color: #CD5555 } /* Literal.String.Single */
+.highlight .ss { color: #CD5555 } /* Literal.String.Symbol */
+.highlight .bp { color: #658b00 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #008b45 } /* Name.Function.Magic */
+.highlight .vc { color: #00688B } /* Name.Variable.Class */
+.highlight .vg { color: #00688B } /* Name.Variable.Global */
+.highlight .vi { color: #00688B } /* Name.Variable.Instance */
+.highlight .vm { color: #00688B } /* Name.Variable.Magic */
+.highlight .il { color: #B452CD } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #eeeedd; }
+.literal-block .c { color: #228B22 } /* Comment */
+.literal-block .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.literal-block .k { color: #8B008B; font-weight: bold } /* Keyword */
+.literal-block .ch { color: #228B22 } /* Comment.Hashbang */
+.literal-block .cm { color: #228B22 } /* Comment.Multiline */
+.literal-block .cp { color: #1e889b } /* Comment.Preproc */
+.literal-block .cpf { color: #228B22 } /* Comment.PreprocFile */
+.literal-block .c1 { color: #228B22 } /* Comment.Single */
+.literal-block .cs { color: #8B008B; font-weight: bold } /* Comment.Special */
+.literal-block .gd { color: #aa0000 } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #aa0000 } /* Generic.Error */
+.literal-block .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #00aa00 } /* Generic.Inserted */
+.literal-block .go { color: #888888 } /* Generic.Output */
+.literal-block .gp { color: #555555 } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.literal-block .gt { color: #aa0000 } /* Generic.Traceback */
+.literal-block .kc { color: #8B008B; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #8B008B; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #8B008B; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #8B008B; font-weight: bold } /* Keyword.Pseudo */
+.literal-block .kr { color: #8B008B; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #00688B; font-weight: bold } /* Keyword.Type */
+.literal-block .m { color: #B452CD } /* Literal.Number */
+.literal-block .s { color: #CD5555 } /* Literal.String */
+.literal-block .na { color: #658b00 } /* Name.Attribute */
+.literal-block .nb { color: #658b00 } /* Name.Builtin */
+.literal-block .nc { color: #008b45; font-weight: bold } /* Name.Class */
+.literal-block .no { color: #00688B } /* Name.Constant */
+.literal-block .nd { color: #707a7c } /* Name.Decorator */
+.literal-block .ne { color: #008b45; font-weight: bold } /* Name.Exception */
+.literal-block .nf { color: #008b45 } /* Name.Function */
+.literal-block .nn { color: #008b45; text-decoration: underline } /* Name.Namespace */
+.literal-block .nt { color: #8B008B; font-weight: bold } /* Name.Tag */
+.literal-block .nv { color: #00688B } /* Name.Variable */
+.literal-block .ow { color: #8B008B } /* Operator.Word */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #B452CD } /* Literal.Number.Bin */
+.literal-block .mf { color: #B452CD } /* Literal.Number.Float */
+.literal-block .mh { color: #B452CD } /* Literal.Number.Hex */
+.literal-block .mi { color: #B452CD } /* Literal.Number.Integer */
+.literal-block .mo { color: #B452CD } /* Literal.Number.Oct */
+.literal-block .sa { color: #CD5555 } /* Literal.String.Affix */
+.literal-block .sb { color: #CD5555 } /* Literal.String.Backtick */
+.literal-block .sc { color: #CD5555 } /* Literal.String.Char */
+.literal-block .dl { color: #CD5555 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #CD5555 } /* Literal.String.Doc */
+.literal-block .s2 { color: #CD5555 } /* Literal.String.Double */
+.literal-block .se { color: #CD5555 } /* Literal.String.Escape */
+.literal-block .sh { color: #1c7e71; font-style: italic } /* Literal.String.Heredoc */
+.literal-block .si { color: #CD5555 } /* Literal.String.Interpol */
+.literal-block .sx { color: #cb6c20 } /* Literal.String.Other */
+.literal-block .sr { color: #1c7e71 } /* Literal.String.Regex */
+.literal-block .s1 { color: #CD5555 } /* Literal.String.Single */
+.literal-block .ss { color: #CD5555 } /* Literal.String.Symbol */
+.literal-block .bp { color: #658b00 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #008b45 } /* Name.Function.Magic */
+.literal-block .vc { color: #00688B } /* Name.Variable.Class */
+.literal-block .vg { color: #00688B } /* Name.Variable.Global */
+.literal-block .vi { color: #00688B } /* Name.Variable.Instance */
+.literal-block .vm { color: #00688B } /* Name.Variable.Magic */
+.literal-block .il { color: #B452CD } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/perldoc.min.css b/flex/static/pygments/perldoc.min.css
new file mode 100644
index 0000000..269a0e8
--- /dev/null
+++ b/flex/static/pygments/perldoc.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#eed}.highlight .c{color:#228b22}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{color:#8b008b;font-weight:700}.highlight .ch,.highlight .cm{color:#228b22}.highlight .cp{color:#1e889b}.highlight .c1,.highlight .cpf{color:#228b22}.highlight .cs{color:#8b008b;font-weight:700}.highlight .gd{color:#a00}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#0a0}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:purple}.highlight .gt{color:#a00}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr{color:#8b008b;font-weight:700}.highlight .kt{color:#00688b;font-weight:700}.highlight .m{color:#b452cd}.highlight .s{color:#cd5555}.highlight .na,.highlight .nb{color:#658b00}.highlight .nc{color:#008b45;font-weight:700}.highlight .no{color:#00688b}.highlight .nd{color:#707a7c}.highlight .ne{color:#008b45;font-weight:700}.highlight .nf{color:#008b45}.highlight .nn{color:#008b45;text-decoration:underline}.highlight .nt{color:#8b008b;font-weight:700}.highlight .nv{color:#00688b}.highlight .ow{color:#8b008b}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#b452cd}.highlight .dl,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se{color:#cd5555}.highlight .sh{color:#1c7e71;font-style:italic}.highlight .si{color:#cd5555}.highlight .sx{color:#cb6c20}.highlight .sr{color:#1c7e71}.highlight .s1,.highlight .ss{color:#cd5555}.highlight .bp{color:#658b00}.highlight .fm{color:#008b45}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#00688b}.highlight .il{color:#b452cd}.literal-block .hll{background-color:#ffc}.literal-block{background:#eed}.literal-block .c{color:#228b22}.literal-block .err{color:#a61717;background-color:#e3d2d2}.literal-block .k{color:#8b008b;font-weight:700}.literal-block .ch,.literal-block .cm{color:#228b22}.literal-block .cp{color:#1e889b}.literal-block .c1,.literal-block .cpf{color:#228b22}.literal-block .cs{color:#8b008b;font-weight:700}.literal-block .gd{color:#a00}.literal-block .ge{font-style:italic}.literal-block .gr{color:#a00}.literal-block .gh{color:navy;font-weight:700}.literal-block .gi{color:#0a0}.literal-block .go{color:#888}.literal-block .gp{color:#555}.literal-block .gs{font-weight:700}.literal-block .gu{color:purple;font-weight:700}.literal-block .gt{color:#a00}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr{color:#8b008b;font-weight:700}.literal-block .kt{color:#00688b;font-weight:700}.literal-block .m{color:#b452cd}.literal-block .s{color:#cd5555}.literal-block .na,.literal-block .nb{color:#658b00}.literal-block .nc{color:#008b45;font-weight:700}.literal-block .no{color:#00688b}.literal-block .nd{color:#707a7c}.literal-block .ne{color:#008b45;font-weight:700}.literal-block .nf{color:#008b45}.literal-block .nn{color:#008b45;text-decoration:underline}.literal-block .nt{color:#8b008b;font-weight:700}.literal-block .nv{color:#00688b}.literal-block .ow{color:#8b008b}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#b452cd}.literal-block .dl,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se{color:#cd5555}.literal-block .sh{color:#1c7e71;font-style:italic}.literal-block .si{color:#cd5555}.literal-block .sx{color:#cb6c20}.literal-block .sr{color:#1c7e71}.literal-block .s1,.literal-block .ss{color:#cd5555}.literal-block .bp{color:#658b00}.literal-block .fm{color:#008b45}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#00688b}.literal-block .il{color:#b452cd}
\ No newline at end of file
diff --git a/flex/static/pygments/rainbow_dash.css b/flex/static/pygments/rainbow_dash.css
new file mode 100644
index 0000000..472392d
--- /dev/null
+++ b/flex/static/pygments/rainbow_dash.css
@@ -0,0 +1,124 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; color: #4d4d4d }
+.highlight .c { color: #0080ff; font-style: italic } /* Comment */
+.highlight .err { color: #ffffff; background-color: #cc0000 } /* Error */
+.highlight .k { color: #2c5dcd; font-weight: bold } /* Keyword */
+.highlight .o { color: #2c5dcd } /* Operator */
+.highlight .ch { color: #0080ff; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #0080ff; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #0080ff } /* Comment.Preproc */
+.highlight .cpf { color: #0080ff; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #0080ff; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #0080ff; font-weight: bold; font-style: italic } /* Comment.Special */
+.highlight .gd { background-color: #ffcccc; border: 1px solid #c5060b } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #ff0000 } /* Generic.Error */
+.highlight .gh { color: #2c5dcd; font-weight: bold } /* Generic.Heading */
+.highlight .gi { background-color: #ccffcc; border: 1px solid #00cc00 } /* Generic.Inserted */
+.highlight .go { color: #aaaaaa } /* Generic.Output */
+.highlight .gp { color: #2c5dcd; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #2c5dcd; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #c5060b } /* Generic.Traceback */
+.highlight .kc { color: #2c5dcd; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #2c5dcd; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #2c5dcd; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #2c5dcd } /* Keyword.Pseudo */
+.highlight .kr { color: #2c5dcd; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #5918bb; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #5918bb; font-weight: bold } /* Literal.Number */
+.highlight .s { color: #00cc66 } /* Literal.String */
+.highlight .na { color: #2c5dcd; font-style: italic } /* Name.Attribute */
+.highlight .nb { color: #5918bb; font-weight: bold } /* Name.Builtin */
+.highlight .nc { text-decoration: underline } /* Name.Class */
+.highlight .no { color: #318495 } /* Name.Constant */
+.highlight .nd { color: #ff8000; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #5918bb; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #5918bb; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #ff8000; font-weight: bold } /* Name.Function */
+.highlight .nt { color: #2c5dcd; font-weight: bold } /* Name.Tag */
+.highlight .ow { color: #2c5dcd; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #cbcbcb } /* Text.Whitespace */
+.highlight .mb { color: #5918bb; font-weight: bold } /* Literal.Number.Bin */
+.highlight .mf { color: #5918bb; font-weight: bold } /* Literal.Number.Float */
+.highlight .mh { color: #5918bb; font-weight: bold } /* Literal.Number.Hex */
+.highlight .mi { color: #5918bb; font-weight: bold } /* Literal.Number.Integer */
+.highlight .mo { color: #5918bb; font-weight: bold } /* Literal.Number.Oct */
+.highlight .sa { color: #00cc66 } /* Literal.String.Affix */
+.highlight .sb { color: #00cc66 } /* Literal.String.Backtick */
+.highlight .sc { color: #00cc66 } /* Literal.String.Char */
+.highlight .dl { color: #00cc66 } /* Literal.String.Delimiter */
+.highlight .sd { color: #00cc66; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #00cc66 } /* Literal.String.Double */
+.highlight .se { color: #c5060b; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #00cc66 } /* Literal.String.Heredoc */
+.highlight .si { color: #00cc66 } /* Literal.String.Interpol */
+.highlight .sx { color: #318495 } /* Literal.String.Other */
+.highlight .sr { color: #00cc66 } /* Literal.String.Regex */
+.highlight .s1 { color: #00cc66 } /* Literal.String.Single */
+.highlight .ss { color: #c5060b; font-weight: bold } /* Literal.String.Symbol */
+.highlight .bp { color: #5918bb; font-weight: bold } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #ff8000; font-weight: bold } /* Name.Function.Magic */
+.highlight .il { color: #5918bb; font-weight: bold } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; color: #4d4d4d }
+.literal-block .c { color: #0080ff; font-style: italic } /* Comment */
+.literal-block .err { color: #ffffff; background-color: #cc0000 } /* Error */
+.literal-block .k { color: #2c5dcd; font-weight: bold } /* Keyword */
+.literal-block .o { color: #2c5dcd } /* Operator */
+.literal-block .ch { color: #0080ff; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #0080ff; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #0080ff } /* Comment.Preproc */
+.literal-block .cpf { color: #0080ff; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #0080ff; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #0080ff; font-weight: bold; font-style: italic } /* Comment.Special */
+.literal-block .gd { background-color: #ffcccc; border: 1px solid #c5060b } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #ff0000 } /* Generic.Error */
+.literal-block .gh { color: #2c5dcd; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { background-color: #ccffcc; border: 1px solid #00cc00 } /* Generic.Inserted */
+.literal-block .go { color: #aaaaaa } /* Generic.Output */
+.literal-block .gp { color: #2c5dcd; font-weight: bold } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #2c5dcd; font-weight: bold } /* Generic.Subheading */
+.literal-block .gt { color: #c5060b } /* Generic.Traceback */
+.literal-block .kc { color: #2c5dcd; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #2c5dcd; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #2c5dcd; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #2c5dcd } /* Keyword.Pseudo */
+.literal-block .kr { color: #2c5dcd; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #5918bb; font-weight: bold } /* Keyword.Type */
+.literal-block .m { color: #5918bb; font-weight: bold } /* Literal.Number */
+.literal-block .s { color: #00cc66 } /* Literal.String */
+.literal-block .na { color: #2c5dcd; font-style: italic } /* Name.Attribute */
+.literal-block .nb { color: #5918bb; font-weight: bold } /* Name.Builtin */
+.literal-block .nc { text-decoration: underline } /* Name.Class */
+.literal-block .no { color: #318495 } /* Name.Constant */
+.literal-block .nd { color: #ff8000; font-weight: bold } /* Name.Decorator */
+.literal-block .ni { color: #5918bb; font-weight: bold } /* Name.Entity */
+.literal-block .ne { color: #5918bb; font-weight: bold } /* Name.Exception */
+.literal-block .nf { color: #ff8000; font-weight: bold } /* Name.Function */
+.literal-block .nt { color: #2c5dcd; font-weight: bold } /* Name.Tag */
+.literal-block .ow { color: #2c5dcd; font-weight: bold } /* Operator.Word */
+.literal-block .w { color: #cbcbcb } /* Text.Whitespace */
+.literal-block .mb { color: #5918bb; font-weight: bold } /* Literal.Number.Bin */
+.literal-block .mf { color: #5918bb; font-weight: bold } /* Literal.Number.Float */
+.literal-block .mh { color: #5918bb; font-weight: bold } /* Literal.Number.Hex */
+.literal-block .mi { color: #5918bb; font-weight: bold } /* Literal.Number.Integer */
+.literal-block .mo { color: #5918bb; font-weight: bold } /* Literal.Number.Oct */
+.literal-block .sa { color: #00cc66 } /* Literal.String.Affix */
+.literal-block .sb { color: #00cc66 } /* Literal.String.Backtick */
+.literal-block .sc { color: #00cc66 } /* Literal.String.Char */
+.literal-block .dl { color: #00cc66 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #00cc66; font-style: italic } /* Literal.String.Doc */
+.literal-block .s2 { color: #00cc66 } /* Literal.String.Double */
+.literal-block .se { color: #c5060b; font-weight: bold } /* Literal.String.Escape */
+.literal-block .sh { color: #00cc66 } /* Literal.String.Heredoc */
+.literal-block .si { color: #00cc66 } /* Literal.String.Interpol */
+.literal-block .sx { color: #318495 } /* Literal.String.Other */
+.literal-block .sr { color: #00cc66 } /* Literal.String.Regex */
+.literal-block .s1 { color: #00cc66 } /* Literal.String.Single */
+.literal-block .ss { color: #c5060b; font-weight: bold } /* Literal.String.Symbol */
+.literal-block .bp { color: #5918bb; font-weight: bold } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #ff8000; font-weight: bold } /* Name.Function.Magic */
+.literal-block .il { color: #5918bb; font-weight: bold } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/rainbow_dash.min.css b/flex/static/pygments/rainbow_dash.min.css
new file mode 100644
index 0000000..0413bdb
--- /dev/null
+++ b/flex/static/pygments/rainbow_dash.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff;color:#4d4d4d}.highlight .c{color:#0080ff;font-style:italic}.highlight .err{color:#fff;background-color:#c00}.highlight .k{color:#2c5dcd;font-weight:700}.highlight .o{color:#2c5dcd}.highlight .ch,.highlight .cm{color:#0080ff;font-style:italic}.highlight .cp{color:#0080ff}.highlight .c1,.highlight .cpf,.highlight .cs{color:#0080ff;font-style:italic}.highlight .cs{font-weight:700}.highlight .gd{background-color:#fcc;border:1px solid #c5060b}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:#2c5dcd;font-weight:700}.highlight .gi{background-color:#cfc;border:1px solid #0c0}.highlight .go{color:#aaa}.highlight .gp{color:#2c5dcd}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:#2c5dcd}.highlight .gt{color:#c5060b}.highlight .kc,.highlight .kd,.highlight .kn{color:#2c5dcd;font-weight:700}.highlight .kp{color:#2c5dcd}.highlight .kr{color:#2c5dcd;font-weight:700}.highlight .kt,.highlight .m{color:#5918bb;font-weight:700}.highlight .s{color:#0c6}.highlight .na{color:#2c5dcd;font-style:italic}.highlight .nb{color:#5918bb;font-weight:700}.highlight .nc{text-decoration:underline}.highlight .no{color:#318495}.highlight .nd{color:#ff8000;font-weight:700}.highlight .ne,.highlight .ni{color:#5918bb;font-weight:700}.highlight .nf{color:#ff8000;font-weight:700}.highlight .nt,.highlight .ow{color:#2c5dcd;font-weight:700}.highlight .w{color:#cbcbcb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#5918bb;font-weight:700}.highlight .dl,.highlight .sa,.highlight .sb,.highlight .sc{color:#0c6}.highlight .sd{color:#0c6;font-style:italic}.highlight .s2{color:#0c6}.highlight .se{color:#c5060b;font-weight:700}.highlight .sh,.highlight .si{color:#0c6}.highlight .sx{color:#318495}.highlight .s1,.highlight .sr{color:#0c6}.highlight .ss{color:#c5060b;font-weight:700}.highlight .bp{color:#5918bb;font-weight:700}.highlight .fm{color:#ff8000;font-weight:700}.highlight .il{color:#5918bb;font-weight:700}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff;color:#4d4d4d}.literal-block .c{color:#0080ff;font-style:italic}.literal-block .err{color:#fff;background-color:#c00}.literal-block .k{color:#2c5dcd;font-weight:700}.literal-block .o{color:#2c5dcd}.literal-block .ch,.literal-block .cm{color:#0080ff;font-style:italic}.literal-block .cp{color:#0080ff}.literal-block .c1,.literal-block .cpf,.literal-block .cs{color:#0080ff;font-style:italic}.literal-block .cs{font-weight:700}.literal-block .gd{background-color:#fcc;border:1px solid #c5060b}.literal-block .ge{font-style:italic}.literal-block .gr{color:red}.literal-block .gh{color:#2c5dcd;font-weight:700}.literal-block .gi{background-color:#cfc;border:1px solid #0c0}.literal-block .go{color:#aaa}.literal-block .gp{color:#2c5dcd;font-weight:700}.literal-block .gs{font-weight:700}.literal-block .gu{color:#2c5dcd;font-weight:700}.literal-block .gt{color:#c5060b}.literal-block .kc,.literal-block .kd,.literal-block .kn{color:#2c5dcd;font-weight:700}.literal-block .kp{color:#2c5dcd}.literal-block .kr{color:#2c5dcd;font-weight:700}.literal-block .kt,.literal-block .m{color:#5918bb;font-weight:700}.literal-block .s{color:#0c6}.literal-block .na{color:#2c5dcd;font-style:italic}.literal-block .nb{color:#5918bb;font-weight:700}.literal-block .nc{text-decoration:underline}.literal-block .no{color:#318495}.literal-block .nd{color:#ff8000;font-weight:700}.literal-block .ne,.literal-block .ni{color:#5918bb;font-weight:700}.literal-block .nf{color:#ff8000;font-weight:700}.literal-block .nt,.literal-block .ow{color:#2c5dcd;font-weight:700}.literal-block .w{color:#cbcbcb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#5918bb;font-weight:700}.literal-block .dl,.literal-block .sa,.literal-block .sb,.literal-block .sc{color:#0c6}.literal-block .sd{color:#0c6;font-style:italic}.literal-block .s2{color:#0c6}.literal-block .se{color:#c5060b;font-weight:700}.literal-block .sh,.literal-block .si{color:#0c6}.literal-block .sx{color:#318495}.literal-block .s1,.literal-block .sr{color:#0c6}.literal-block .ss{color:#c5060b;font-weight:700}.literal-block .bp{color:#5918bb;font-weight:700}.literal-block .fm{color:#ff8000;font-weight:700}.literal-block .il{color:#5918bb;font-weight:700}
\ No newline at end of file
diff --git a/flex/static/pygments/rrt.css b/flex/static/pygments/rrt.css
new file mode 100644
index 0000000..88bb32e
--- /dev/null
+++ b/flex/static/pygments/rrt.css
@@ -0,0 +1,76 @@
+.highlight .hll { background-color: #0000ff }
+.highlight { background: #000000; }
+.highlight .c { color: #00ff00 } /* Comment */
+.highlight .k { color: #ff0000 } /* Keyword */
+.highlight .ch { color: #00ff00 } /* Comment.Hashbang */
+.highlight .cm { color: #00ff00 } /* Comment.Multiline */
+.highlight .cp { color: #e5e5e5 } /* Comment.Preproc */
+.highlight .cpf { color: #00ff00 } /* Comment.PreprocFile */
+.highlight .c1 { color: #00ff00 } /* Comment.Single */
+.highlight .cs { color: #00ff00 } /* Comment.Special */
+.highlight .kc { color: #ff0000 } /* Keyword.Constant */
+.highlight .kd { color: #ff0000 } /* Keyword.Declaration */
+.highlight .kn { color: #ff0000 } /* Keyword.Namespace */
+.highlight .kp { color: #ff0000 } /* Keyword.Pseudo */
+.highlight .kr { color: #ff0000 } /* Keyword.Reserved */
+.highlight .kt { color: #ee82ee } /* Keyword.Type */
+.highlight .s { color: #87ceeb } /* Literal.String */
+.highlight .no { color: #7fffd4 } /* Name.Constant */
+.highlight .nf { color: #ffff00 } /* Name.Function */
+.highlight .nv { color: #eedd82 } /* Name.Variable */
+.highlight .sa { color: #87ceeb } /* Literal.String.Affix */
+.highlight .sb { color: #87ceeb } /* Literal.String.Backtick */
+.highlight .sc { color: #87ceeb } /* Literal.String.Char */
+.highlight .dl { color: #87ceeb } /* Literal.String.Delimiter */
+.highlight .sd { color: #87ceeb } /* Literal.String.Doc */
+.highlight .s2 { color: #87ceeb } /* Literal.String.Double */
+.highlight .se { color: #87ceeb } /* Literal.String.Escape */
+.highlight .sh { color: #87ceeb } /* Literal.String.Heredoc */
+.highlight .si { color: #87ceeb } /* Literal.String.Interpol */
+.highlight .sx { color: #87ceeb } /* Literal.String.Other */
+.highlight .sr { color: #87ceeb } /* Literal.String.Regex */
+.highlight .s1 { color: #87ceeb } /* Literal.String.Single */
+.highlight .ss { color: #87ceeb } /* Literal.String.Symbol */
+.highlight .fm { color: #ffff00 } /* Name.Function.Magic */
+.highlight .vc { color: #eedd82 } /* Name.Variable.Class */
+.highlight .vg { color: #eedd82 } /* Name.Variable.Global */
+.highlight .vi { color: #eedd82 } /* Name.Variable.Instance */
+.highlight .vm { color: #eedd82 } /* Name.Variable.Magic */
+.literal-block .hll { background-color: #0000ff }
+.literal-block { background: #000000; }
+.literal-block .c { color: #00ff00 } /* Comment */
+.literal-block .k { color: #ff0000 } /* Keyword */
+.literal-block .ch { color: #00ff00 } /* Comment.Hashbang */
+.literal-block .cm { color: #00ff00 } /* Comment.Multiline */
+.literal-block .cp { color: #e5e5e5 } /* Comment.Preproc */
+.literal-block .cpf { color: #00ff00 } /* Comment.PreprocFile */
+.literal-block .c1 { color: #00ff00 } /* Comment.Single */
+.literal-block .cs { color: #00ff00 } /* Comment.Special */
+.literal-block .kc { color: #ff0000 } /* Keyword.Constant */
+.literal-block .kd { color: #ff0000 } /* Keyword.Declaration */
+.literal-block .kn { color: #ff0000 } /* Keyword.Namespace */
+.literal-block .kp { color: #ff0000 } /* Keyword.Pseudo */
+.literal-block .kr { color: #ff0000 } /* Keyword.Reserved */
+.literal-block .kt { color: #ee82ee } /* Keyword.Type */
+.literal-block .s { color: #87ceeb } /* Literal.String */
+.literal-block .no { color: #7fffd4 } /* Name.Constant */
+.literal-block .nf { color: #ffff00 } /* Name.Function */
+.literal-block .nv { color: #eedd82 } /* Name.Variable */
+.literal-block .sa { color: #87ceeb } /* Literal.String.Affix */
+.literal-block .sb { color: #87ceeb } /* Literal.String.Backtick */
+.literal-block .sc { color: #87ceeb } /* Literal.String.Char */
+.literal-block .dl { color: #87ceeb } /* Literal.String.Delimiter */
+.literal-block .sd { color: #87ceeb } /* Literal.String.Doc */
+.literal-block .s2 { color: #87ceeb } /* Literal.String.Double */
+.literal-block .se { color: #87ceeb } /* Literal.String.Escape */
+.literal-block .sh { color: #87ceeb } /* Literal.String.Heredoc */
+.literal-block .si { color: #87ceeb } /* Literal.String.Interpol */
+.literal-block .sx { color: #87ceeb } /* Literal.String.Other */
+.literal-block .sr { color: #87ceeb } /* Literal.String.Regex */
+.literal-block .s1 { color: #87ceeb } /* Literal.String.Single */
+.literal-block .ss { color: #87ceeb } /* Literal.String.Symbol */
+.literal-block .fm { color: #ffff00 } /* Name.Function.Magic */
+.literal-block .vc { color: #eedd82 } /* Name.Variable.Class */
+.literal-block .vg { color: #eedd82 } /* Name.Variable.Global */
+.literal-block .vi { color: #eedd82 } /* Name.Variable.Instance */
+.literal-block .vm { color: #eedd82 } /* Name.Variable.Magic */
\ No newline at end of file
diff --git a/flex/static/pygments/rrt.min.css b/flex/static/pygments/rrt.min.css
new file mode 100644
index 0000000..8f6faf5
--- /dev/null
+++ b/flex/static/pygments/rrt.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#00f}.highlight{background:#000}.highlight .c{color:#0f0}.highlight .k{color:red}.highlight .ch,.highlight .cm{color:#0f0}.highlight .cp{color:#e5e5e5}.highlight .c1,.highlight .cpf,.highlight .cs{color:#0f0}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr{color:red}.highlight .kt{color:violet}.highlight .s{color:#87ceeb}.highlight .no{color:#7fffd4}.highlight .nf{color:#ff0}.highlight .nv{color:#eedd82}.highlight .dl,.highlight .s1,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#87ceeb}.highlight .fm{color:#ff0}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#eedd82}.literal-block .hll{background-color:#00f}.literal-block{background:#000}.literal-block .c{color:#0f0}.literal-block .k{color:red}.literal-block .ch,.literal-block .cm{color:#0f0}.literal-block .cp{color:#e5e5e5}.literal-block .c1,.literal-block .cpf,.literal-block .cs{color:#0f0}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr{color:red}.literal-block .kt{color:violet}.literal-block .s{color:#87ceeb}.literal-block .no{color:#7fffd4}.literal-block .nf{color:#ff0}.literal-block .nv{color:#eedd82}.literal-block .dl,.literal-block .s1,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#87ceeb}.literal-block .fm{color:#ff0}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#eedd82}
\ No newline at end of file
diff --git a/flex/static/pygments/sas.css b/flex/static/pygments/sas.css
new file mode 100644
index 0000000..1749342
--- /dev/null
+++ b/flex/static/pygments/sas.css
@@ -0,0 +1,120 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #008800; font-style: italic } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .g { color: #2c2cff } /* Generic */
+.highlight .k { color: #2c2cff } /* Keyword */
+.highlight .x { background-color: #ffffe0 } /* Other */
+.highlight .ch { color: #008800; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #008800; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #008800; font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #008800; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #008800; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #2c2cff } /* Generic.Deleted */
+.highlight .ge { color: #008800 } /* Generic.Emph */
+.highlight .gr { color: #d30202 } /* Generic.Error */
+.highlight .gh { color: #2c2cff } /* Generic.Heading */
+.highlight .gi { color: #2c2cff } /* Generic.Inserted */
+.highlight .go { color: #2c2cff } /* Generic.Output */
+.highlight .gp { color: #2c2cff } /* Generic.Prompt */
+.highlight .gs { color: #2c2cff } /* Generic.Strong */
+.highlight .gu { color: #2c2cff } /* Generic.Subheading */
+.highlight .gt { color: #2c2cff } /* Generic.Traceback */
+.highlight .kc { color: #2c2cff; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #2c2cff } /* Keyword.Declaration */
+.highlight .kn { color: #2c2cff } /* Keyword.Namespace */
+.highlight .kp { color: #2c2cff } /* Keyword.Pseudo */
+.highlight .kr { color: #353580; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #2c2cff } /* Keyword.Type */
+.highlight .m { color: #2e8b57; font-weight: bold } /* Literal.Number */
+.highlight .s { color: #800080 } /* Literal.String */
+.highlight .nb { color: #2c2cff } /* Name.Builtin */
+.highlight .nf { font-weight: bold; font-style: italic } /* Name.Function */
+.highlight .nv { color: #2c2cff; font-weight: bold } /* Name.Variable */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #2e8b57; font-weight: bold } /* Literal.Number.Bin */
+.highlight .mf { color: #2e8b57; font-weight: bold } /* Literal.Number.Float */
+.highlight .mh { color: #2e8b57; font-weight: bold } /* Literal.Number.Hex */
+.highlight .mi { color: #2e8b57; font-weight: bold } /* Literal.Number.Integer */
+.highlight .mo { color: #2e8b57; font-weight: bold } /* Literal.Number.Oct */
+.highlight .sa { color: #800080 } /* Literal.String.Affix */
+.highlight .sb { color: #800080 } /* Literal.String.Backtick */
+.highlight .sc { color: #800080 } /* Literal.String.Char */
+.highlight .dl { color: #800080 } /* Literal.String.Delimiter */
+.highlight .sd { color: #800080 } /* Literal.String.Doc */
+.highlight .s2 { color: #800080 } /* Literal.String.Double */
+.highlight .se { color: #800080 } /* Literal.String.Escape */
+.highlight .sh { color: #800080 } /* Literal.String.Heredoc */
+.highlight .si { color: #800080 } /* Literal.String.Interpol */
+.highlight .sx { color: #800080 } /* Literal.String.Other */
+.highlight .sr { color: #800080 } /* Literal.String.Regex */
+.highlight .s1 { color: #800080 } /* Literal.String.Single */
+.highlight .ss { color: #800080 } /* Literal.String.Symbol */
+.highlight .bp { color: #2c2cff } /* Name.Builtin.Pseudo */
+.highlight .fm { font-weight: bold; font-style: italic } /* Name.Function.Magic */
+.highlight .vc { color: #2c2cff; font-weight: bold } /* Name.Variable.Class */
+.highlight .vg { color: #2c2cff; font-weight: bold } /* Name.Variable.Global */
+.highlight .vi { color: #2c2cff; font-weight: bold } /* Name.Variable.Instance */
+.highlight .vm { color: #2c2cff; font-weight: bold } /* Name.Variable.Magic */
+.highlight .il { color: #2e8b57; font-weight: bold } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #008800; font-style: italic } /* Comment */
+.literal-block .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.literal-block .g { color: #2c2cff } /* Generic */
+.literal-block .k { color: #2c2cff } /* Keyword */
+.literal-block .x { background-color: #ffffe0 } /* Other */
+.literal-block .ch { color: #008800; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #008800; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #008800; font-style: italic } /* Comment.Preproc */
+.literal-block .cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #008800; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #008800; font-style: italic } /* Comment.Special */
+.literal-block .gd { color: #2c2cff } /* Generic.Deleted */
+.literal-block .ge { color: #008800 } /* Generic.Emph */
+.literal-block .gr { color: #d30202 } /* Generic.Error */
+.literal-block .gh { color: #2c2cff } /* Generic.Heading */
+.literal-block .gi { color: #2c2cff } /* Generic.Inserted */
+.literal-block .go { color: #2c2cff } /* Generic.Output */
+.literal-block .gp { color: #2c2cff } /* Generic.Prompt */
+.literal-block .gs { color: #2c2cff } /* Generic.Strong */
+.literal-block .gu { color: #2c2cff } /* Generic.Subheading */
+.literal-block .gt { color: #2c2cff } /* Generic.Traceback */
+.literal-block .kc { color: #2c2cff; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #2c2cff } /* Keyword.Declaration */
+.literal-block .kn { color: #2c2cff } /* Keyword.Namespace */
+.literal-block .kp { color: #2c2cff } /* Keyword.Pseudo */
+.literal-block .kr { color: #353580; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #2c2cff } /* Keyword.Type */
+.literal-block .m { color: #2e8b57; font-weight: bold } /* Literal.Number */
+.literal-block .s { color: #800080 } /* Literal.String */
+.literal-block .nb { color: #2c2cff } /* Name.Builtin */
+.literal-block .nf { font-weight: bold; font-style: italic } /* Name.Function */
+.literal-block .nv { color: #2c2cff; font-weight: bold } /* Name.Variable */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #2e8b57; font-weight: bold } /* Literal.Number.Bin */
+.literal-block .mf { color: #2e8b57; font-weight: bold } /* Literal.Number.Float */
+.literal-block .mh { color: #2e8b57; font-weight: bold } /* Literal.Number.Hex */
+.literal-block .mi { color: #2e8b57; font-weight: bold } /* Literal.Number.Integer */
+.literal-block .mo { color: #2e8b57; font-weight: bold } /* Literal.Number.Oct */
+.literal-block .sa { color: #800080 } /* Literal.String.Affix */
+.literal-block .sb { color: #800080 } /* Literal.String.Backtick */
+.literal-block .sc { color: #800080 } /* Literal.String.Char */
+.literal-block .dl { color: #800080 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #800080 } /* Literal.String.Doc */
+.literal-block .s2 { color: #800080 } /* Literal.String.Double */
+.literal-block .se { color: #800080 } /* Literal.String.Escape */
+.literal-block .sh { color: #800080 } /* Literal.String.Heredoc */
+.literal-block .si { color: #800080 } /* Literal.String.Interpol */
+.literal-block .sx { color: #800080 } /* Literal.String.Other */
+.literal-block .sr { color: #800080 } /* Literal.String.Regex */
+.literal-block .s1 { color: #800080 } /* Literal.String.Single */
+.literal-block .ss { color: #800080 } /* Literal.String.Symbol */
+.literal-block .bp { color: #2c2cff } /* Name.Builtin.Pseudo */
+.literal-block .fm { font-weight: bold; font-style: italic } /* Name.Function.Magic */
+.literal-block .vc { color: #2c2cff; font-weight: bold } /* Name.Variable.Class */
+.literal-block .vg { color: #2c2cff; font-weight: bold } /* Name.Variable.Global */
+.literal-block .vi { color: #2c2cff; font-weight: bold } /* Name.Variable.Instance */
+.literal-block .vm { color: #2c2cff; font-weight: bold } /* Name.Variable.Magic */
+.literal-block .il { color: #2e8b57; font-weight: bold } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/sas.min.css b/flex/static/pygments/sas.min.css
new file mode 100644
index 0000000..3a4151a
--- /dev/null
+++ b/flex/static/pygments/sas.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:#080;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .g,.highlight .k{color:#2c2cff}.highlight .x{background-color:#ffffe0}.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cp,.highlight .cpf,.highlight .cs{color:#080;font-style:italic}.highlight .gd{color:#2c2cff}.highlight .ge{color:#080}.highlight .gr{color:#d30202}.highlight .gh,.highlight .gi,.highlight .go,.highlight .gp,.highlight .gs,.highlight .gt,.highlight .gu{color:#2c2cff}.highlight .kc{color:#2c2cff;font-weight:700}.highlight .kd,.highlight .kn,.highlight .kp{color:#2c2cff}.highlight .kr{color:#353580;font-weight:700}.highlight .kt{color:#2c2cff}.highlight .m{color:#2e8b57;font-weight:700}.highlight .s{color:purple}.highlight .nb{color:#2c2cff}.highlight .nf{font-weight:700;font-style:italic}.highlight .nv{color:#2c2cff;font-weight:700}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#2e8b57;font-weight:700}.highlight .dl,.highlight .s1,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:purple}.highlight .bp{color:#2c2cff}.highlight .fm{font-weight:700;font-style:italic}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#2c2cff;font-weight:700}.highlight .il{color:#2e8b57;font-weight:700}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:#080;font-style:italic}.literal-block .err{color:#a61717;background-color:#e3d2d2}.literal-block .g,.literal-block .k{color:#2c2cff}.literal-block .x{background-color:#ffffe0}.literal-block .c1,.literal-block .ch,.literal-block .cm,.literal-block .cp,.literal-block .cpf,.literal-block .cs{color:#080;font-style:italic}.literal-block .gd{color:#2c2cff}.literal-block .ge{color:#080}.literal-block .gr{color:#d30202}.literal-block .gh,.literal-block .gi,.literal-block .go,.literal-block .gp,.literal-block .gs,.literal-block .gt,.literal-block .gu{color:#2c2cff}.literal-block .kc{color:#2c2cff;font-weight:700}.literal-block .kd,.literal-block .kn,.literal-block .kp{color:#2c2cff}.literal-block .kr{color:#353580;font-weight:700}.literal-block .kt{color:#2c2cff}.literal-block .m{color:#2e8b57;font-weight:700}.literal-block .s{color:purple}.literal-block .nb{color:#2c2cff}.literal-block .nf{font-weight:700;font-style:italic}.literal-block .nv{color:#2c2cff;font-weight:700}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#2e8b57;font-weight:700}.literal-block .dl,.literal-block .s1,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:purple}.literal-block .bp{color:#2c2cff}.literal-block .fm{font-weight:700;font-style:italic}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#2c2cff;font-weight:700}.literal-block .il{color:#2e8b57;font-weight:700}
\ No newline at end of file
diff --git a/flex/static/pygments/solarized-dark.css b/flex/static/pygments/solarized-dark.css
new file mode 100644
index 0000000..6aaa9a2
--- /dev/null
+++ b/flex/static/pygments/solarized-dark.css
@@ -0,0 +1,156 @@
+.highlight .hll { background-color: #073642 }
+.highlight { background: #002b36; color: #839496 }
+.highlight .c { color: #586e75; font-style: italic } /* Comment */
+.highlight .err { color: #839496; background-color: #dc322f } /* Error */
+.highlight .esc { color: #839496 } /* Escape */
+.highlight .g { color: #839496 } /* Generic */
+.highlight .k { color: #859900 } /* Keyword */
+.highlight .l { color: #839496 } /* Literal */
+.highlight .n { color: #839496 } /* Name */
+.highlight .o { color: #586e75 } /* Operator */
+.highlight .x { color: #839496 } /* Other */
+.highlight .p { color: #839496 } /* Punctuation */
+.highlight .ch { color: #586e75; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #586e75; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #d33682 } /* Comment.Preproc */
+.highlight .cpf { color: #586e75 } /* Comment.PreprocFile */
+.highlight .c1 { color: #586e75; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #586e75; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #dc322f } /* Generic.Deleted */
+.highlight .ge { color: #839496; font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #dc322f } /* Generic.Error */
+.highlight .gh { color: #839496; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #859900 } /* Generic.Inserted */
+.highlight .go { color: #839496 } /* Generic.Output */
+.highlight .gp { color: #839496 } /* Generic.Prompt */
+.highlight .gs { color: #839496; font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #839496; text-decoration: underline } /* Generic.Subheading */
+.highlight .gt { color: #268bd2 } /* Generic.Traceback */
+.highlight .kc { color: #2aa198 } /* Keyword.Constant */
+.highlight .kd { color: #2aa198 } /* Keyword.Declaration */
+.highlight .kn { color: #cb4b16 } /* Keyword.Namespace */
+.highlight .kp { color: #859900 } /* Keyword.Pseudo */
+.highlight .kr { color: #859900 } /* Keyword.Reserved */
+.highlight .kt { color: #b58900 } /* Keyword.Type */
+.highlight .ld { color: #839496 } /* Literal.Date */
+.highlight .m { color: #2aa198 } /* Literal.Number */
+.highlight .s { color: #2aa198 } /* Literal.String */
+.highlight .na { color: #839496 } /* Name.Attribute */
+.highlight .nb { color: #268bd2 } /* Name.Builtin */
+.highlight .nc { color: #268bd2 } /* Name.Class */
+.highlight .no { color: #268bd2 } /* Name.Constant */
+.highlight .nd { color: #268bd2 } /* Name.Decorator */
+.highlight .ni { color: #268bd2 } /* Name.Entity */
+.highlight .ne { color: #268bd2 } /* Name.Exception */
+.highlight .nf { color: #268bd2 } /* Name.Function */
+.highlight .nl { color: #268bd2 } /* Name.Label */
+.highlight .nn { color: #268bd2 } /* Name.Namespace */
+.highlight .nx { color: #839496 } /* Name.Other */
+.highlight .py { color: #839496 } /* Name.Property */
+.highlight .nt { color: #268bd2 } /* Name.Tag */
+.highlight .nv { color: #268bd2 } /* Name.Variable */
+.highlight .ow { color: #859900 } /* Operator.Word */
+.highlight .w { color: #839496 } /* Text.Whitespace */
+.highlight .mb { color: #2aa198 } /* Literal.Number.Bin */
+.highlight .mf { color: #2aa198 } /* Literal.Number.Float */
+.highlight .mh { color: #2aa198 } /* Literal.Number.Hex */
+.highlight .mi { color: #2aa198 } /* Literal.Number.Integer */
+.highlight .mo { color: #2aa198 } /* Literal.Number.Oct */
+.highlight .sa { color: #2aa198 } /* Literal.String.Affix */
+.highlight .sb { color: #2aa198 } /* Literal.String.Backtick */
+.highlight .sc { color: #2aa198 } /* Literal.String.Char */
+.highlight .dl { color: #2aa198 } /* Literal.String.Delimiter */
+.highlight .sd { color: #586e75 } /* Literal.String.Doc */
+.highlight .s2 { color: #2aa198 } /* Literal.String.Double */
+.highlight .se { color: #2aa198 } /* Literal.String.Escape */
+.highlight .sh { color: #2aa198 } /* Literal.String.Heredoc */
+.highlight .si { color: #2aa198 } /* Literal.String.Interpol */
+.highlight .sx { color: #2aa198 } /* Literal.String.Other */
+.highlight .sr { color: #cb4b16 } /* Literal.String.Regex */
+.highlight .s1 { color: #2aa198 } /* Literal.String.Single */
+.highlight .ss { color: #2aa198 } /* Literal.String.Symbol */
+.highlight .bp { color: #268bd2 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #268bd2 } /* Name.Function.Magic */
+.highlight .vc { color: #268bd2 } /* Name.Variable.Class */
+.highlight .vg { color: #268bd2 } /* Name.Variable.Global */
+.highlight .vi { color: #268bd2 } /* Name.Variable.Instance */
+.highlight .vm { color: #268bd2 } /* Name.Variable.Magic */
+.highlight .il { color: #2aa198 } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #073642 }
+.literal-block { background: #002b36; color: #839496 }
+.literal-block .c { color: #586e75; font-style: italic } /* Comment */
+.literal-block .err { color: #839496; background-color: #dc322f } /* Error */
+.literal-block .esc { color: #839496 } /* Escape */
+.literal-block .g { color: #839496 } /* Generic */
+.literal-block .k { color: #859900 } /* Keyword */
+.literal-block .l { color: #839496 } /* Literal */
+.literal-block .n { color: #839496 } /* Name */
+.literal-block .o { color: #586e75 } /* Operator */
+.literal-block .x { color: #839496 } /* Other */
+.literal-block .p { color: #839496 } /* Punctuation */
+.literal-block .ch { color: #586e75; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #586e75; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #d33682 } /* Comment.Preproc */
+.literal-block .cpf { color: #586e75 } /* Comment.PreprocFile */
+.literal-block .c1 { color: #586e75; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #586e75; font-style: italic } /* Comment.Special */
+.literal-block .gd { color: #dc322f } /* Generic.Deleted */
+.literal-block .ge { color: #839496; font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #dc322f } /* Generic.Error */
+.literal-block .gh { color: #839496; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #859900 } /* Generic.Inserted */
+.literal-block .go { color: #839496 } /* Generic.Output */
+.literal-block .gp { color: #839496 } /* Generic.Prompt */
+.literal-block .gs { color: #839496; font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #839496; text-decoration: underline } /* Generic.Subheading */
+.literal-block .gt { color: #268bd2 } /* Generic.Traceback */
+.literal-block .kc { color: #2aa198 } /* Keyword.Constant */
+.literal-block .kd { color: #2aa198 } /* Keyword.Declaration */
+.literal-block .kn { color: #cb4b16 } /* Keyword.Namespace */
+.literal-block .kp { color: #859900 } /* Keyword.Pseudo */
+.literal-block .kr { color: #859900 } /* Keyword.Reserved */
+.literal-block .kt { color: #b58900 } /* Keyword.Type */
+.literal-block .ld { color: #839496 } /* Literal.Date */
+.literal-block .m { color: #2aa198 } /* Literal.Number */
+.literal-block .s { color: #2aa198 } /* Literal.String */
+.literal-block .na { color: #839496 } /* Name.Attribute */
+.literal-block .nb { color: #268bd2 } /* Name.Builtin */
+.literal-block .nc { color: #268bd2 } /* Name.Class */
+.literal-block .no { color: #268bd2 } /* Name.Constant */
+.literal-block .nd { color: #268bd2 } /* Name.Decorator */
+.literal-block .ni { color: #268bd2 } /* Name.Entity */
+.literal-block .ne { color: #268bd2 } /* Name.Exception */
+.literal-block .nf { color: #268bd2 } /* Name.Function */
+.literal-block .nl { color: #268bd2 } /* Name.Label */
+.literal-block .nn { color: #268bd2 } /* Name.Namespace */
+.literal-block .nx { color: #839496 } /* Name.Other */
+.literal-block .py { color: #839496 } /* Name.Property */
+.literal-block .nt { color: #268bd2 } /* Name.Tag */
+.literal-block .nv { color: #268bd2 } /* Name.Variable */
+.literal-block .ow { color: #859900 } /* Operator.Word */
+.literal-block .w { color: #839496 } /* Text.Whitespace */
+.literal-block .mb { color: #2aa198 } /* Literal.Number.Bin */
+.literal-block .mf { color: #2aa198 } /* Literal.Number.Float */
+.literal-block .mh { color: #2aa198 } /* Literal.Number.Hex */
+.literal-block .mi { color: #2aa198 } /* Literal.Number.Integer */
+.literal-block .mo { color: #2aa198 } /* Literal.Number.Oct */
+.literal-block .sa { color: #2aa198 } /* Literal.String.Affix */
+.literal-block .sb { color: #2aa198 } /* Literal.String.Backtick */
+.literal-block .sc { color: #2aa198 } /* Literal.String.Char */
+.literal-block .dl { color: #2aa198 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #586e75 } /* Literal.String.Doc */
+.literal-block .s2 { color: #2aa198 } /* Literal.String.Double */
+.literal-block .se { color: #2aa198 } /* Literal.String.Escape */
+.literal-block .sh { color: #2aa198 } /* Literal.String.Heredoc */
+.literal-block .si { color: #2aa198 } /* Literal.String.Interpol */
+.literal-block .sx { color: #2aa198 } /* Literal.String.Other */
+.literal-block .sr { color: #cb4b16 } /* Literal.String.Regex */
+.literal-block .s1 { color: #2aa198 } /* Literal.String.Single */
+.literal-block .ss { color: #2aa198 } /* Literal.String.Symbol */
+.literal-block .bp { color: #268bd2 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #268bd2 } /* Name.Function.Magic */
+.literal-block .vc { color: #268bd2 } /* Name.Variable.Class */
+.literal-block .vg { color: #268bd2 } /* Name.Variable.Global */
+.literal-block .vi { color: #268bd2 } /* Name.Variable.Instance */
+.literal-block .vm { color: #268bd2 } /* Name.Variable.Magic */
+.literal-block .il { color: #2aa198 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/solarized-dark.min.css b/flex/static/pygments/solarized-dark.min.css
new file mode 100644
index 0000000..a90efa5
--- /dev/null
+++ b/flex/static/pygments/solarized-dark.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#073642}.highlight{background:#002b36;color:#839496}.highlight .c{color:#586e75;font-style:italic}.highlight .err{color:#839496;background-color:#dc322f}.highlight .esc,.highlight .g{color:#839496}.highlight .k{color:#859900}.highlight .l,.highlight .n{color:#839496}.highlight .o{color:#586e75}.highlight .p,.highlight .x{color:#839496}.highlight .ch,.highlight .cm{color:#586e75;font-style:italic}.highlight .cp{color:#d33682}.highlight .cpf{color:#586e75}.highlight .c1,.highlight .cs{color:#586e75;font-style:italic}.highlight .gd{color:#dc322f}.highlight .ge{color:#839496;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#839496;font-weight:700}.highlight .gi{color:#859900}.highlight .go,.highlight .gp{color:#839496}.highlight .gs{color:#839496;font-weight:700}.highlight .gu{color:#839496;text-decoration:underline}.highlight .gt{color:#268bd2}.highlight .kc,.highlight .kd{color:#2aa198}.highlight .kn{color:#cb4b16}.highlight .kp,.highlight .kr{color:#859900}.highlight .kt{color:#b58900}.highlight .ld{color:#839496}.highlight .m,.highlight .s{color:#2aa198}.highlight .na{color:#839496}.highlight .nb,.highlight .nc,.highlight .nd,.highlight .ne,.highlight .nf,.highlight .ni,.highlight .nl,.highlight .nn,.highlight .no{color:#268bd2}.highlight .nx,.highlight .py{color:#839496}.highlight .nt,.highlight .nv{color:#268bd2}.highlight .ow{color:#859900}.highlight .w{color:#839496}.highlight .dl,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo,.highlight .sa,.highlight .sb,.highlight .sc{color:#2aa198}.highlight .sd{color:#586e75}.highlight .s2,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx{color:#2aa198}.highlight .sr{color:#cb4b16}.highlight .s1,.highlight .ss{color:#2aa198}.highlight .bp,.highlight .fm,.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#268bd2}.highlight .il{color:#2aa198}.literal-block .hll{background-color:#073642}.literal-block{background:#002b36;color:#839496}.literal-block .c{color:#586e75;font-style:italic}.literal-block .err{color:#839496;background-color:#dc322f}.literal-block .esc,.literal-block .g{color:#839496}.literal-block .k{color:#859900}.literal-block .l,.literal-block .n{color:#839496}.literal-block .o{color:#586e75}.literal-block .p,.literal-block .x{color:#839496}.literal-block .ch,.literal-block .cm{color:#586e75;font-style:italic}.literal-block .cp{color:#d33682}.literal-block .cpf{color:#586e75}.literal-block .c1,.literal-block .cs{color:#586e75;font-style:italic}.literal-block .gd{color:#dc322f}.literal-block .ge{color:#839496;font-style:italic}.literal-block .gr{color:#dc322f}.literal-block .gh{color:#839496;font-weight:700}.literal-block .gi{color:#859900}.literal-block .go,.literal-block .gp{color:#839496}.literal-block .gs{color:#839496;font-weight:700}.literal-block .gu{color:#839496;text-decoration:underline}.literal-block .gt{color:#268bd2}.literal-block .kc,.literal-block .kd{color:#2aa198}.literal-block .kn{color:#cb4b16}.literal-block .kp,.literal-block .kr{color:#859900}.literal-block .kt{color:#b58900}.literal-block .ld{color:#839496}.literal-block .m,.literal-block .s{color:#2aa198}.literal-block .na{color:#839496}.literal-block .nb,.literal-block .nc,.literal-block .nd,.literal-block .ne,.literal-block .nf,.literal-block .ni,.literal-block .nl,.literal-block .nn,.literal-block .no{color:#268bd2}.literal-block .nx,.literal-block .py{color:#839496}.literal-block .nt,.literal-block .nv{color:#268bd2}.literal-block .ow{color:#859900}.literal-block .w{color:#839496}.literal-block .dl,.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo,.literal-block .sa,.literal-block .sb,.literal-block .sc{color:#2aa198}.literal-block .sd{color:#586e75}.literal-block .s2,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sx{color:#2aa198}.literal-block .sr{color:#cb4b16}.literal-block .s1,.literal-block .ss{color:#2aa198}.literal-block .bp,.literal-block .fm,.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#268bd2}.literal-block .il{color:#2aa198}
\ No newline at end of file
diff --git a/flex/static/pygments/solarized-light.css b/flex/static/pygments/solarized-light.css
new file mode 100644
index 0000000..9b18a22
--- /dev/null
+++ b/flex/static/pygments/solarized-light.css
@@ -0,0 +1,156 @@
+.highlight .hll { background-color: #eee8d5 }
+.highlight { background: #fdf6e3; color: #657b83 }
+.highlight .c { color: #93a1a1; font-style: italic } /* Comment */
+.highlight .err { color: #657b83; background-color: #dc322f } /* Error */
+.highlight .esc { color: #657b83 } /* Escape */
+.highlight .g { color: #657b83 } /* Generic */
+.highlight .k { color: #859900 } /* Keyword */
+.highlight .l { color: #657b83 } /* Literal */
+.highlight .n { color: #657b83 } /* Name */
+.highlight .o { color: #93a1a1 } /* Operator */
+.highlight .x { color: #657b83 } /* Other */
+.highlight .p { color: #657b83 } /* Punctuation */
+.highlight .ch { color: #93a1a1; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #93a1a1; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #d33682 } /* Comment.Preproc */
+.highlight .cpf { color: #93a1a1 } /* Comment.PreprocFile */
+.highlight .c1 { color: #93a1a1; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #93a1a1; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #dc322f } /* Generic.Deleted */
+.highlight .ge { color: #657b83; font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #dc322f } /* Generic.Error */
+.highlight .gh { color: #657b83; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #859900 } /* Generic.Inserted */
+.highlight .go { color: #657b83 } /* Generic.Output */
+.highlight .gp { color: #657b83 } /* Generic.Prompt */
+.highlight .gs { color: #657b83; font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #657b83; text-decoration: underline } /* Generic.Subheading */
+.highlight .gt { color: #268bd2 } /* Generic.Traceback */
+.highlight .kc { color: #2aa198 } /* Keyword.Constant */
+.highlight .kd { color: #2aa198 } /* Keyword.Declaration */
+.highlight .kn { color: #cb4b16 } /* Keyword.Namespace */
+.highlight .kp { color: #859900 } /* Keyword.Pseudo */
+.highlight .kr { color: #859900 } /* Keyword.Reserved */
+.highlight .kt { color: #b58900 } /* Keyword.Type */
+.highlight .ld { color: #657b83 } /* Literal.Date */
+.highlight .m { color: #2aa198 } /* Literal.Number */
+.highlight .s { color: #2aa198 } /* Literal.String */
+.highlight .na { color: #657b83 } /* Name.Attribute */
+.highlight .nb { color: #268bd2 } /* Name.Builtin */
+.highlight .nc { color: #268bd2 } /* Name.Class */
+.highlight .no { color: #268bd2 } /* Name.Constant */
+.highlight .nd { color: #268bd2 } /* Name.Decorator */
+.highlight .ni { color: #268bd2 } /* Name.Entity */
+.highlight .ne { color: #268bd2 } /* Name.Exception */
+.highlight .nf { color: #268bd2 } /* Name.Function */
+.highlight .nl { color: #268bd2 } /* Name.Label */
+.highlight .nn { color: #268bd2 } /* Name.Namespace */
+.highlight .nx { color: #657b83 } /* Name.Other */
+.highlight .py { color: #657b83 } /* Name.Property */
+.highlight .nt { color: #268bd2 } /* Name.Tag */
+.highlight .nv { color: #268bd2 } /* Name.Variable */
+.highlight .ow { color: #859900 } /* Operator.Word */
+.highlight .w { color: #657b83 } /* Text.Whitespace */
+.highlight .mb { color: #2aa198 } /* Literal.Number.Bin */
+.highlight .mf { color: #2aa198 } /* Literal.Number.Float */
+.highlight .mh { color: #2aa198 } /* Literal.Number.Hex */
+.highlight .mi { color: #2aa198 } /* Literal.Number.Integer */
+.highlight .mo { color: #2aa198 } /* Literal.Number.Oct */
+.highlight .sa { color: #2aa198 } /* Literal.String.Affix */
+.highlight .sb { color: #2aa198 } /* Literal.String.Backtick */
+.highlight .sc { color: #2aa198 } /* Literal.String.Char */
+.highlight .dl { color: #2aa198 } /* Literal.String.Delimiter */
+.highlight .sd { color: #93a1a1 } /* Literal.String.Doc */
+.highlight .s2 { color: #2aa198 } /* Literal.String.Double */
+.highlight .se { color: #2aa198 } /* Literal.String.Escape */
+.highlight .sh { color: #2aa198 } /* Literal.String.Heredoc */
+.highlight .si { color: #2aa198 } /* Literal.String.Interpol */
+.highlight .sx { color: #2aa198 } /* Literal.String.Other */
+.highlight .sr { color: #cb4b16 } /* Literal.String.Regex */
+.highlight .s1 { color: #2aa198 } /* Literal.String.Single */
+.highlight .ss { color: #2aa198 } /* Literal.String.Symbol */
+.highlight .bp { color: #268bd2 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #268bd2 } /* Name.Function.Magic */
+.highlight .vc { color: #268bd2 } /* Name.Variable.Class */
+.highlight .vg { color: #268bd2 } /* Name.Variable.Global */
+.highlight .vi { color: #268bd2 } /* Name.Variable.Instance */
+.highlight .vm { color: #268bd2 } /* Name.Variable.Magic */
+.highlight .il { color: #2aa198 } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #eee8d5 }
+.literal-block { background: #fdf6e3; color: #657b83 }
+.literal-block .c { color: #93a1a1; font-style: italic } /* Comment */
+.literal-block .err { color: #657b83; background-color: #dc322f } /* Error */
+.literal-block .esc { color: #657b83 } /* Escape */
+.literal-block .g { color: #657b83 } /* Generic */
+.literal-block .k { color: #859900 } /* Keyword */
+.literal-block .l { color: #657b83 } /* Literal */
+.literal-block .n { color: #657b83 } /* Name */
+.literal-block .o { color: #93a1a1 } /* Operator */
+.literal-block .x { color: #657b83 } /* Other */
+.literal-block .p { color: #657b83 } /* Punctuation */
+.literal-block .ch { color: #93a1a1; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #93a1a1; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #d33682 } /* Comment.Preproc */
+.literal-block .cpf { color: #93a1a1 } /* Comment.PreprocFile */
+.literal-block .c1 { color: #93a1a1; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #93a1a1; font-style: italic } /* Comment.Special */
+.literal-block .gd { color: #dc322f } /* Generic.Deleted */
+.literal-block .ge { color: #657b83; font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #dc322f } /* Generic.Error */
+.literal-block .gh { color: #657b83; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #859900 } /* Generic.Inserted */
+.literal-block .go { color: #657b83 } /* Generic.Output */
+.literal-block .gp { color: #657b83 } /* Generic.Prompt */
+.literal-block .gs { color: #657b83; font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #657b83; text-decoration: underline } /* Generic.Subheading */
+.literal-block .gt { color: #268bd2 } /* Generic.Traceback */
+.literal-block .kc { color: #2aa198 } /* Keyword.Constant */
+.literal-block .kd { color: #2aa198 } /* Keyword.Declaration */
+.literal-block .kn { color: #cb4b16 } /* Keyword.Namespace */
+.literal-block .kp { color: #859900 } /* Keyword.Pseudo */
+.literal-block .kr { color: #859900 } /* Keyword.Reserved */
+.literal-block .kt { color: #b58900 } /* Keyword.Type */
+.literal-block .ld { color: #657b83 } /* Literal.Date */
+.literal-block .m { color: #2aa198 } /* Literal.Number */
+.literal-block .s { color: #2aa198 } /* Literal.String */
+.literal-block .na { color: #657b83 } /* Name.Attribute */
+.literal-block .nb { color: #268bd2 } /* Name.Builtin */
+.literal-block .nc { color: #268bd2 } /* Name.Class */
+.literal-block .no { color: #268bd2 } /* Name.Constant */
+.literal-block .nd { color: #268bd2 } /* Name.Decorator */
+.literal-block .ni { color: #268bd2 } /* Name.Entity */
+.literal-block .ne { color: #268bd2 } /* Name.Exception */
+.literal-block .nf { color: #268bd2 } /* Name.Function */
+.literal-block .nl { color: #268bd2 } /* Name.Label */
+.literal-block .nn { color: #268bd2 } /* Name.Namespace */
+.literal-block .nx { color: #657b83 } /* Name.Other */
+.literal-block .py { color: #657b83 } /* Name.Property */
+.literal-block .nt { color: #268bd2 } /* Name.Tag */
+.literal-block .nv { color: #268bd2 } /* Name.Variable */
+.literal-block .ow { color: #859900 } /* Operator.Word */
+.literal-block .w { color: #657b83 } /* Text.Whitespace */
+.literal-block .mb { color: #2aa198 } /* Literal.Number.Bin */
+.literal-block .mf { color: #2aa198 } /* Literal.Number.Float */
+.literal-block .mh { color: #2aa198 } /* Literal.Number.Hex */
+.literal-block .mi { color: #2aa198 } /* Literal.Number.Integer */
+.literal-block .mo { color: #2aa198 } /* Literal.Number.Oct */
+.literal-block .sa { color: #2aa198 } /* Literal.String.Affix */
+.literal-block .sb { color: #2aa198 } /* Literal.String.Backtick */
+.literal-block .sc { color: #2aa198 } /* Literal.String.Char */
+.literal-block .dl { color: #2aa198 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #93a1a1 } /* Literal.String.Doc */
+.literal-block .s2 { color: #2aa198 } /* Literal.String.Double */
+.literal-block .se { color: #2aa198 } /* Literal.String.Escape */
+.literal-block .sh { color: #2aa198 } /* Literal.String.Heredoc */
+.literal-block .si { color: #2aa198 } /* Literal.String.Interpol */
+.literal-block .sx { color: #2aa198 } /* Literal.String.Other */
+.literal-block .sr { color: #cb4b16 } /* Literal.String.Regex */
+.literal-block .s1 { color: #2aa198 } /* Literal.String.Single */
+.literal-block .ss { color: #2aa198 } /* Literal.String.Symbol */
+.literal-block .bp { color: #268bd2 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #268bd2 } /* Name.Function.Magic */
+.literal-block .vc { color: #268bd2 } /* Name.Variable.Class */
+.literal-block .vg { color: #268bd2 } /* Name.Variable.Global */
+.literal-block .vi { color: #268bd2 } /* Name.Variable.Instance */
+.literal-block .vm { color: #268bd2 } /* Name.Variable.Magic */
+.literal-block .il { color: #2aa198 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/solarized-light.min.css b/flex/static/pygments/solarized-light.min.css
new file mode 100644
index 0000000..acf617d
--- /dev/null
+++ b/flex/static/pygments/solarized-light.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#eee8d5}.highlight{background:#fdf6e3;color:#657b83}.highlight .c{color:#93a1a1;font-style:italic}.highlight .err{color:#657b83;background-color:#dc322f}.highlight .esc,.highlight .g{color:#657b83}.highlight .k{color:#859900}.highlight .l,.highlight .n{color:#657b83}.highlight .o{color:#93a1a1}.highlight .p,.highlight .x{color:#657b83}.highlight .ch,.highlight .cm{color:#93a1a1;font-style:italic}.highlight .cp{color:#d33682}.highlight .cpf{color:#93a1a1}.highlight .c1,.highlight .cs{color:#93a1a1;font-style:italic}.highlight .gd{color:#dc322f}.highlight .ge{color:#657b83;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#657b83;font-weight:700}.highlight .gi{color:#859900}.highlight .go,.highlight .gp{color:#657b83}.highlight .gs{color:#657b83;font-weight:700}.highlight .gu{color:#657b83;text-decoration:underline}.highlight .gt{color:#268bd2}.highlight .kc,.highlight .kd{color:#2aa198}.highlight .kn{color:#cb4b16}.highlight .kp,.highlight .kr{color:#859900}.highlight .kt{color:#b58900}.highlight .ld{color:#657b83}.highlight .m,.highlight .s{color:#2aa198}.highlight .na{color:#657b83}.highlight .nb,.highlight .nc,.highlight .nd,.highlight .ne,.highlight .nf,.highlight .ni,.highlight .nl,.highlight .nn,.highlight .no{color:#268bd2}.highlight .nx,.highlight .py{color:#657b83}.highlight .nt,.highlight .nv{color:#268bd2}.highlight .ow{color:#859900}.highlight .w{color:#657b83}.highlight .dl,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo,.highlight .sa,.highlight .sb,.highlight .sc{color:#2aa198}.highlight .sd{color:#93a1a1}.highlight .s2,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx{color:#2aa198}.highlight .sr{color:#cb4b16}.highlight .s1,.highlight .ss{color:#2aa198}.highlight .bp,.highlight .fm,.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#268bd2}.highlight .il{color:#2aa198}.literal-block .hll{background-color:#eee8d5}.literal-block{background:#fdf6e3;color:#657b83}.literal-block .c{color:#93a1a1;font-style:italic}.literal-block .err{color:#657b83;background-color:#dc322f}.literal-block .esc,.literal-block .g{color:#657b83}.literal-block .k{color:#859900}.literal-block .l,.literal-block .n{color:#657b83}.literal-block .o{color:#93a1a1}.literal-block .p,.literal-block .x{color:#657b83}.literal-block .ch,.literal-block .cm{color:#93a1a1;font-style:italic}.literal-block .cp{color:#d33682}.literal-block .cpf{color:#93a1a1}.literal-block .c1,.literal-block .cs{color:#93a1a1;font-style:italic}.literal-block .gd{color:#dc322f}.literal-block .ge{color:#657b83;font-style:italic}.literal-block .gr{color:#dc322f}.literal-block .gh{color:#657b83;font-weight:700}.literal-block .gi{color:#859900}.literal-block .go,.literal-block .gp{color:#657b83}.literal-block .gs{color:#657b83;font-weight:700}.literal-block .gu{color:#657b83;text-decoration:underline}.literal-block .gt{color:#268bd2}.literal-block .kc,.literal-block .kd{color:#2aa198}.literal-block .kn{color:#cb4b16}.literal-block .kp,.literal-block .kr{color:#859900}.literal-block .kt{color:#b58900}.literal-block .ld{color:#657b83}.literal-block .m,.literal-block .s{color:#2aa198}.literal-block .na{color:#657b83}.literal-block .nb,.literal-block .nc,.literal-block .nd,.literal-block .ne,.literal-block .nf,.literal-block .ni,.literal-block .nl,.literal-block .nn,.literal-block .no{color:#268bd2}.literal-block .nx,.literal-block .py{color:#657b83}.literal-block .nt,.literal-block .nv{color:#268bd2}.literal-block .ow{color:#859900}.literal-block .w{color:#657b83}.literal-block .dl,.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo,.literal-block .sa,.literal-block .sb,.literal-block .sc{color:#2aa198}.literal-block .sd{color:#93a1a1}.literal-block .s2,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sx{color:#2aa198}.literal-block .sr{color:#cb4b16}.literal-block .s1,.literal-block .ss{color:#2aa198}.literal-block .bp,.literal-block .fm,.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#268bd2}.literal-block .il{color:#2aa198}
\ No newline at end of file
diff --git a/flex/static/pygments/stata-dark.css b/flex/static/pygments/stata-dark.css
new file mode 100644
index 0000000..969e730
--- /dev/null
+++ b/flex/static/pygments/stata-dark.css
@@ -0,0 +1,96 @@
+.highlight .hll { background-color: #49483e }
+.highlight { background: #232629; color: #cccccc }
+.highlight .c { color: #777777; font-style: italic } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .k { color: #7686bb; font-weight: bold } /* Keyword */
+.highlight .ch { color: #777777; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #777777; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #777777; font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: #777777; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #777777; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #777777; font-style: italic } /* Comment.Special */
+.highlight .gp { color: #ffffff } /* Generic.Prompt */
+.highlight .kc { color: #7686bb; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #7686bb; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #7686bb; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #7686bb; font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: #7686bb; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #7686bb; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #4FB8CC } /* Literal.Number */
+.highlight .s { color: #51cc99 } /* Literal.String */
+.highlight .nf { color: #6a6aff } /* Name.Function */
+.highlight .nx { color: #e2828e } /* Name.Other */
+.highlight .nv { color: #7AB4DB; font-weight: bold } /* Name.Variable */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #4FB8CC } /* Literal.Number.Bin */
+.highlight .mf { color: #4FB8CC } /* Literal.Number.Float */
+.highlight .mh { color: #4FB8CC } /* Literal.Number.Hex */
+.highlight .mi { color: #4FB8CC } /* Literal.Number.Integer */
+.highlight .mo { color: #4FB8CC } /* Literal.Number.Oct */
+.highlight .sa { color: #51cc99 } /* Literal.String.Affix */
+.highlight .sb { color: #51cc99 } /* Literal.String.Backtick */
+.highlight .sc { color: #51cc99 } /* Literal.String.Char */
+.highlight .dl { color: #51cc99 } /* Literal.String.Delimiter */
+.highlight .sd { color: #51cc99 } /* Literal.String.Doc */
+.highlight .s2 { color: #51cc99 } /* Literal.String.Double */
+.highlight .se { color: #51cc99 } /* Literal.String.Escape */
+.highlight .sh { color: #51cc99 } /* Literal.String.Heredoc */
+.highlight .si { color: #51cc99 } /* Literal.String.Interpol */
+.highlight .sx { color: #51cc99 } /* Literal.String.Other */
+.highlight .sr { color: #51cc99 } /* Literal.String.Regex */
+.highlight .s1 { color: #51cc99 } /* Literal.String.Single */
+.highlight .ss { color: #51cc99 } /* Literal.String.Symbol */
+.highlight .fm { color: #6a6aff } /* Name.Function.Magic */
+.highlight .vc { color: #7AB4DB; font-weight: bold } /* Name.Variable.Class */
+.highlight .vg { color: #BE646C; font-weight: bold } /* Name.Variable.Global */
+.highlight .vi { color: #7AB4DB; font-weight: bold } /* Name.Variable.Instance */
+.highlight .vm { color: #7AB4DB; font-weight: bold } /* Name.Variable.Magic */
+.highlight .il { color: #4FB8CC } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #49483e }
+.literal-block { background: #232629; color: #cccccc }
+.literal-block .c { color: #777777; font-style: italic } /* Comment */
+.literal-block .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.literal-block .k { color: #7686bb; font-weight: bold } /* Keyword */
+.literal-block .ch { color: #777777; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #777777; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #777777; font-style: italic } /* Comment.Preproc */
+.literal-block .cpf { color: #777777; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #777777; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #777777; font-style: italic } /* Comment.Special */
+.literal-block .gp { color: #ffffff } /* Generic.Prompt */
+.literal-block .kc { color: #7686bb; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #7686bb; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #7686bb; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #7686bb; font-weight: bold } /* Keyword.Pseudo */
+.literal-block .kr { color: #7686bb; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #7686bb; font-weight: bold } /* Keyword.Type */
+.literal-block .m { color: #4FB8CC } /* Literal.Number */
+.literal-block .s { color: #51cc99 } /* Literal.String */
+.literal-block .nf { color: #6a6aff } /* Name.Function */
+.literal-block .nx { color: #e2828e } /* Name.Other */
+.literal-block .nv { color: #7AB4DB; font-weight: bold } /* Name.Variable */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #4FB8CC } /* Literal.Number.Bin */
+.literal-block .mf { color: #4FB8CC } /* Literal.Number.Float */
+.literal-block .mh { color: #4FB8CC } /* Literal.Number.Hex */
+.literal-block .mi { color: #4FB8CC } /* Literal.Number.Integer */
+.literal-block .mo { color: #4FB8CC } /* Literal.Number.Oct */
+.literal-block .sa { color: #51cc99 } /* Literal.String.Affix */
+.literal-block .sb { color: #51cc99 } /* Literal.String.Backtick */
+.literal-block .sc { color: #51cc99 } /* Literal.String.Char */
+.literal-block .dl { color: #51cc99 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #51cc99 } /* Literal.String.Doc */
+.literal-block .s2 { color: #51cc99 } /* Literal.String.Double */
+.literal-block .se { color: #51cc99 } /* Literal.String.Escape */
+.literal-block .sh { color: #51cc99 } /* Literal.String.Heredoc */
+.literal-block .si { color: #51cc99 } /* Literal.String.Interpol */
+.literal-block .sx { color: #51cc99 } /* Literal.String.Other */
+.literal-block .sr { color: #51cc99 } /* Literal.String.Regex */
+.literal-block .s1 { color: #51cc99 } /* Literal.String.Single */
+.literal-block .ss { color: #51cc99 } /* Literal.String.Symbol */
+.literal-block .fm { color: #6a6aff } /* Name.Function.Magic */
+.literal-block .vc { color: #7AB4DB; font-weight: bold } /* Name.Variable.Class */
+.literal-block .vg { color: #BE646C; font-weight: bold } /* Name.Variable.Global */
+.literal-block .vi { color: #7AB4DB; font-weight: bold } /* Name.Variable.Instance */
+.literal-block .vm { color: #7AB4DB; font-weight: bold } /* Name.Variable.Magic */
+.literal-block .il { color: #4FB8CC } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/stata-dark.min.css b/flex/static/pygments/stata-dark.min.css
new file mode 100644
index 0000000..4e3ba95
--- /dev/null
+++ b/flex/static/pygments/stata-dark.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#49483e}.highlight{background:#232629;color:#ccc}.highlight .c{color:#777;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{color:#7686bb;font-weight:700}.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cp,.highlight .cpf,.highlight .cs{color:#777;font-style:italic}.highlight .gp{color:#fff}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:#7686bb;font-weight:700}.highlight .m{color:#4fb8cc}.highlight .s{color:#51cc99}.highlight .nf{color:#6a6aff}.highlight .nx{color:#e2828e}.highlight .nv{color:#7ab4db;font-weight:700}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#4fb8cc}.highlight .dl,.highlight .s1,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#51cc99}.highlight .fm{color:#6a6aff}.highlight .vc{color:#7ab4db;font-weight:700}.highlight .vg{color:#be646c;font-weight:700}.highlight .vi,.highlight .vm{color:#7ab4db;font-weight:700}.highlight .il{color:#4fb8cc}.literal-block .hll{background-color:#49483e}.literal-block{background:#232629;color:#ccc}.literal-block .c{color:#777;font-style:italic}.literal-block .err{color:#a61717;background-color:#e3d2d2}.literal-block .k{color:#7686bb;font-weight:700}.literal-block .c1,.literal-block .ch,.literal-block .cm,.literal-block .cp,.literal-block .cpf,.literal-block .cs{color:#777;font-style:italic}.literal-block .gp{color:#fff}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr,.literal-block .kt{color:#7686bb;font-weight:700}.literal-block .m{color:#4fb8cc}.literal-block .s{color:#51cc99}.literal-block .nf{color:#6a6aff}.literal-block .nx{color:#e2828e}.literal-block .nv{color:#7ab4db;font-weight:700}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#4fb8cc}.literal-block .dl,.literal-block .s1,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#51cc99}.literal-block .fm{color:#6a6aff}.literal-block .vc{color:#7ab4db;font-weight:700}.literal-block .vg{color:#be646c;font-weight:700}.literal-block .vi,.literal-block .vm{color:#7ab4db;font-weight:700}.literal-block .il{color:#4fb8cc}
\ No newline at end of file
diff --git a/flex/static/pygments/stata-light.css b/flex/static/pygments/stata-light.css
new file mode 100644
index 0000000..fe90e7e
--- /dev/null
+++ b/flex/static/pygments/stata-light.css
@@ -0,0 +1,94 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; color: #111111 }
+.highlight .c { color: #008800; font-style: italic } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .k { color: #353580; font-weight: bold } /* Keyword */
+.highlight .ch { color: #008800; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #008800; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #008800; font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #008800; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #008800; font-style: italic } /* Comment.Special */
+.highlight .kc { color: #353580; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #353580; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #353580; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #353580; font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: #353580; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #353580; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #2c2cff } /* Literal.Number */
+.highlight .s { color: #7a2424 } /* Literal.String */
+.highlight .nf { color: #2c2cff } /* Name.Function */
+.highlight .nx { color: #be646c } /* Name.Other */
+.highlight .nv { color: #35baba; font-weight: bold } /* Name.Variable */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #2c2cff } /* Literal.Number.Bin */
+.highlight .mf { color: #2c2cff } /* Literal.Number.Float */
+.highlight .mh { color: #2c2cff } /* Literal.Number.Hex */
+.highlight .mi { color: #2c2cff } /* Literal.Number.Integer */
+.highlight .mo { color: #2c2cff } /* Literal.Number.Oct */
+.highlight .sa { color: #7a2424 } /* Literal.String.Affix */
+.highlight .sb { color: #7a2424 } /* Literal.String.Backtick */
+.highlight .sc { color: #7a2424 } /* Literal.String.Char */
+.highlight .dl { color: #7a2424 } /* Literal.String.Delimiter */
+.highlight .sd { color: #7a2424 } /* Literal.String.Doc */
+.highlight .s2 { color: #7a2424 } /* Literal.String.Double */
+.highlight .se { color: #7a2424 } /* Literal.String.Escape */
+.highlight .sh { color: #7a2424 } /* Literal.String.Heredoc */
+.highlight .si { color: #7a2424 } /* Literal.String.Interpol */
+.highlight .sx { color: #7a2424 } /* Literal.String.Other */
+.highlight .sr { color: #7a2424 } /* Literal.String.Regex */
+.highlight .s1 { color: #7a2424 } /* Literal.String.Single */
+.highlight .ss { color: #7a2424 } /* Literal.String.Symbol */
+.highlight .fm { color: #2c2cff } /* Name.Function.Magic */
+.highlight .vc { color: #35baba; font-weight: bold } /* Name.Variable.Class */
+.highlight .vg { color: #b5565e; font-weight: bold } /* Name.Variable.Global */
+.highlight .vi { color: #35baba; font-weight: bold } /* Name.Variable.Instance */
+.highlight .vm { color: #35baba; font-weight: bold } /* Name.Variable.Magic */
+.highlight .il { color: #2c2cff } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; color: #111111 }
+.literal-block .c { color: #008800; font-style: italic } /* Comment */
+.literal-block .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.literal-block .k { color: #353580; font-weight: bold } /* Keyword */
+.literal-block .ch { color: #008800; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #008800; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #008800; font-style: italic } /* Comment.Preproc */
+.literal-block .cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #008800; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #008800; font-style: italic } /* Comment.Special */
+.literal-block .kc { color: #353580; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #353580; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #353580; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #353580; font-weight: bold } /* Keyword.Pseudo */
+.literal-block .kr { color: #353580; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #353580; font-weight: bold } /* Keyword.Type */
+.literal-block .m { color: #2c2cff } /* Literal.Number */
+.literal-block .s { color: #7a2424 } /* Literal.String */
+.literal-block .nf { color: #2c2cff } /* Name.Function */
+.literal-block .nx { color: #be646c } /* Name.Other */
+.literal-block .nv { color: #35baba; font-weight: bold } /* Name.Variable */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #2c2cff } /* Literal.Number.Bin */
+.literal-block .mf { color: #2c2cff } /* Literal.Number.Float */
+.literal-block .mh { color: #2c2cff } /* Literal.Number.Hex */
+.literal-block .mi { color: #2c2cff } /* Literal.Number.Integer */
+.literal-block .mo { color: #2c2cff } /* Literal.Number.Oct */
+.literal-block .sa { color: #7a2424 } /* Literal.String.Affix */
+.literal-block .sb { color: #7a2424 } /* Literal.String.Backtick */
+.literal-block .sc { color: #7a2424 } /* Literal.String.Char */
+.literal-block .dl { color: #7a2424 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #7a2424 } /* Literal.String.Doc */
+.literal-block .s2 { color: #7a2424 } /* Literal.String.Double */
+.literal-block .se { color: #7a2424 } /* Literal.String.Escape */
+.literal-block .sh { color: #7a2424 } /* Literal.String.Heredoc */
+.literal-block .si { color: #7a2424 } /* Literal.String.Interpol */
+.literal-block .sx { color: #7a2424 } /* Literal.String.Other */
+.literal-block .sr { color: #7a2424 } /* Literal.String.Regex */
+.literal-block .s1 { color: #7a2424 } /* Literal.String.Single */
+.literal-block .ss { color: #7a2424 } /* Literal.String.Symbol */
+.literal-block .fm { color: #2c2cff } /* Name.Function.Magic */
+.literal-block .vc { color: #35baba; font-weight: bold } /* Name.Variable.Class */
+.literal-block .vg { color: #b5565e; font-weight: bold } /* Name.Variable.Global */
+.literal-block .vi { color: #35baba; font-weight: bold } /* Name.Variable.Instance */
+.literal-block .vm { color: #35baba; font-weight: bold } /* Name.Variable.Magic */
+.literal-block .il { color: #2c2cff } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/stata-light.min.css b/flex/static/pygments/stata-light.min.css
new file mode 100644
index 0000000..bc0b9ff
--- /dev/null
+++ b/flex/static/pygments/stata-light.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff;color:#111}.highlight .c{color:#080;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{color:#353580;font-weight:700}.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cp,.highlight .cpf,.highlight .cs{color:#080;font-style:italic}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:#353580;font-weight:700}.highlight .m{color:#2c2cff}.highlight .s{color:#7a2424}.highlight .nf{color:#2c2cff}.highlight .nx{color:#be646c}.highlight .nv{color:#35baba;font-weight:700}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#2c2cff}.highlight .dl,.highlight .s1,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#7a2424}.highlight .fm{color:#2c2cff}.highlight .vc{color:#35baba;font-weight:700}.highlight .vg{color:#b5565e;font-weight:700}.highlight .vi,.highlight .vm{color:#35baba;font-weight:700}.highlight .il{color:#2c2cff}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff;color:#111}.literal-block .c{color:#080;font-style:italic}.literal-block .err{color:#a61717;background-color:#e3d2d2}.literal-block .k{color:#353580;font-weight:700}.literal-block .c1,.literal-block .ch,.literal-block .cm,.literal-block .cp,.literal-block .cpf,.literal-block .cs{color:#080;font-style:italic}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr,.literal-block .kt{color:#353580;font-weight:700}.literal-block .m{color:#2c2cff}.literal-block .s{color:#7a2424}.literal-block .nf{color:#2c2cff}.literal-block .nx{color:#be646c}.literal-block .nv{color:#35baba;font-weight:700}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#2c2cff}.literal-block .dl,.literal-block .s1,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#7a2424}.literal-block .fm{color:#2c2cff}.literal-block .vc{color:#35baba;font-weight:700}.literal-block .vg{color:#b5565e;font-weight:700}.literal-block .vi,.literal-block .vm{color:#35baba;font-weight:700}.literal-block .il{color:#2c2cff}
\ No newline at end of file
diff --git a/flex/static/pygments/stata.css b/flex/static/pygments/stata.css
new file mode 100644
index 0000000..fe90e7e
--- /dev/null
+++ b/flex/static/pygments/stata.css
@@ -0,0 +1,94 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; color: #111111 }
+.highlight .c { color: #008800; font-style: italic } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .k { color: #353580; font-weight: bold } /* Keyword */
+.highlight .ch { color: #008800; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #008800; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #008800; font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #008800; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #008800; font-style: italic } /* Comment.Special */
+.highlight .kc { color: #353580; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #353580; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #353580; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #353580; font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: #353580; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #353580; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #2c2cff } /* Literal.Number */
+.highlight .s { color: #7a2424 } /* Literal.String */
+.highlight .nf { color: #2c2cff } /* Name.Function */
+.highlight .nx { color: #be646c } /* Name.Other */
+.highlight .nv { color: #35baba; font-weight: bold } /* Name.Variable */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #2c2cff } /* Literal.Number.Bin */
+.highlight .mf { color: #2c2cff } /* Literal.Number.Float */
+.highlight .mh { color: #2c2cff } /* Literal.Number.Hex */
+.highlight .mi { color: #2c2cff } /* Literal.Number.Integer */
+.highlight .mo { color: #2c2cff } /* Literal.Number.Oct */
+.highlight .sa { color: #7a2424 } /* Literal.String.Affix */
+.highlight .sb { color: #7a2424 } /* Literal.String.Backtick */
+.highlight .sc { color: #7a2424 } /* Literal.String.Char */
+.highlight .dl { color: #7a2424 } /* Literal.String.Delimiter */
+.highlight .sd { color: #7a2424 } /* Literal.String.Doc */
+.highlight .s2 { color: #7a2424 } /* Literal.String.Double */
+.highlight .se { color: #7a2424 } /* Literal.String.Escape */
+.highlight .sh { color: #7a2424 } /* Literal.String.Heredoc */
+.highlight .si { color: #7a2424 } /* Literal.String.Interpol */
+.highlight .sx { color: #7a2424 } /* Literal.String.Other */
+.highlight .sr { color: #7a2424 } /* Literal.String.Regex */
+.highlight .s1 { color: #7a2424 } /* Literal.String.Single */
+.highlight .ss { color: #7a2424 } /* Literal.String.Symbol */
+.highlight .fm { color: #2c2cff } /* Name.Function.Magic */
+.highlight .vc { color: #35baba; font-weight: bold } /* Name.Variable.Class */
+.highlight .vg { color: #b5565e; font-weight: bold } /* Name.Variable.Global */
+.highlight .vi { color: #35baba; font-weight: bold } /* Name.Variable.Instance */
+.highlight .vm { color: #35baba; font-weight: bold } /* Name.Variable.Magic */
+.highlight .il { color: #2c2cff } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; color: #111111 }
+.literal-block .c { color: #008800; font-style: italic } /* Comment */
+.literal-block .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.literal-block .k { color: #353580; font-weight: bold } /* Keyword */
+.literal-block .ch { color: #008800; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #008800; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #008800; font-style: italic } /* Comment.Preproc */
+.literal-block .cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #008800; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #008800; font-style: italic } /* Comment.Special */
+.literal-block .kc { color: #353580; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #353580; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #353580; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #353580; font-weight: bold } /* Keyword.Pseudo */
+.literal-block .kr { color: #353580; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #353580; font-weight: bold } /* Keyword.Type */
+.literal-block .m { color: #2c2cff } /* Literal.Number */
+.literal-block .s { color: #7a2424 } /* Literal.String */
+.literal-block .nf { color: #2c2cff } /* Name.Function */
+.literal-block .nx { color: #be646c } /* Name.Other */
+.literal-block .nv { color: #35baba; font-weight: bold } /* Name.Variable */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #2c2cff } /* Literal.Number.Bin */
+.literal-block .mf { color: #2c2cff } /* Literal.Number.Float */
+.literal-block .mh { color: #2c2cff } /* Literal.Number.Hex */
+.literal-block .mi { color: #2c2cff } /* Literal.Number.Integer */
+.literal-block .mo { color: #2c2cff } /* Literal.Number.Oct */
+.literal-block .sa { color: #7a2424 } /* Literal.String.Affix */
+.literal-block .sb { color: #7a2424 } /* Literal.String.Backtick */
+.literal-block .sc { color: #7a2424 } /* Literal.String.Char */
+.literal-block .dl { color: #7a2424 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #7a2424 } /* Literal.String.Doc */
+.literal-block .s2 { color: #7a2424 } /* Literal.String.Double */
+.literal-block .se { color: #7a2424 } /* Literal.String.Escape */
+.literal-block .sh { color: #7a2424 } /* Literal.String.Heredoc */
+.literal-block .si { color: #7a2424 } /* Literal.String.Interpol */
+.literal-block .sx { color: #7a2424 } /* Literal.String.Other */
+.literal-block .sr { color: #7a2424 } /* Literal.String.Regex */
+.literal-block .s1 { color: #7a2424 } /* Literal.String.Single */
+.literal-block .ss { color: #7a2424 } /* Literal.String.Symbol */
+.literal-block .fm { color: #2c2cff } /* Name.Function.Magic */
+.literal-block .vc { color: #35baba; font-weight: bold } /* Name.Variable.Class */
+.literal-block .vg { color: #b5565e; font-weight: bold } /* Name.Variable.Global */
+.literal-block .vi { color: #35baba; font-weight: bold } /* Name.Variable.Instance */
+.literal-block .vm { color: #35baba; font-weight: bold } /* Name.Variable.Magic */
+.literal-block .il { color: #2c2cff } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/stata.min.css b/flex/static/pygments/stata.min.css
new file mode 100644
index 0000000..bc0b9ff
--- /dev/null
+++ b/flex/static/pygments/stata.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff;color:#111}.highlight .c{color:#080;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{color:#353580;font-weight:700}.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cp,.highlight .cpf,.highlight .cs{color:#080;font-style:italic}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:#353580;font-weight:700}.highlight .m{color:#2c2cff}.highlight .s{color:#7a2424}.highlight .nf{color:#2c2cff}.highlight .nx{color:#be646c}.highlight .nv{color:#35baba;font-weight:700}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#2c2cff}.highlight .dl,.highlight .s1,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#7a2424}.highlight .fm{color:#2c2cff}.highlight .vc{color:#35baba;font-weight:700}.highlight .vg{color:#b5565e;font-weight:700}.highlight .vi,.highlight .vm{color:#35baba;font-weight:700}.highlight .il{color:#2c2cff}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff;color:#111}.literal-block .c{color:#080;font-style:italic}.literal-block .err{color:#a61717;background-color:#e3d2d2}.literal-block .k{color:#353580;font-weight:700}.literal-block .c1,.literal-block .ch,.literal-block .cm,.literal-block .cp,.literal-block .cpf,.literal-block .cs{color:#080;font-style:italic}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr,.literal-block .kt{color:#353580;font-weight:700}.literal-block .m{color:#2c2cff}.literal-block .s{color:#7a2424}.literal-block .nf{color:#2c2cff}.literal-block .nx{color:#be646c}.literal-block .nv{color:#35baba;font-weight:700}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#2c2cff}.literal-block .dl,.literal-block .s1,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#7a2424}.literal-block .fm{color:#2c2cff}.literal-block .vc{color:#35baba;font-weight:700}.literal-block .vg{color:#b5565e;font-weight:700}.literal-block .vi,.literal-block .vm{color:#35baba;font-weight:700}.literal-block .il{color:#2c2cff}
\ No newline at end of file
diff --git a/flex/static/pygments/tango.css b/flex/static/pygments/tango.css
new file mode 100644
index 0000000..5266b07
--- /dev/null
+++ b/flex/static/pygments/tango.css
@@ -0,0 +1,154 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f8f8f8; }
+.highlight .c { color: #8f5902; font-style: italic } /* Comment */
+.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */
+.highlight .g { color: #000000 } /* Generic */
+.highlight .k { color: #204a87; font-weight: bold } /* Keyword */
+.highlight .l { color: #000000 } /* Literal */
+.highlight .n { color: #000000 } /* Name */
+.highlight .o { color: #ce5c00; font-weight: bold } /* Operator */
+.highlight .x { color: #000000 } /* Other */
+.highlight .p { color: #000000; font-weight: bold } /* Punctuation */
+.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #8f5902; font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #a40000 } /* Generic.Deleted */
+.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #ef2929 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #000000; font-style: italic } /* Generic.Output */
+.highlight .gp { color: #8f5902 } /* Generic.Prompt */
+.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */
+.highlight .kc { color: #204a87; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #204a87; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #204a87; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #204a87; font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: #204a87; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #204a87; font-weight: bold } /* Keyword.Type */
+.highlight .ld { color: #000000 } /* Literal.Date */
+.highlight .m { color: #0000cf; font-weight: bold } /* Literal.Number */
+.highlight .s { color: #4e9a06 } /* Literal.String */
+.highlight .na { color: #c4a000 } /* Name.Attribute */
+.highlight .nb { color: #204a87 } /* Name.Builtin */
+.highlight .nc { color: #000000 } /* Name.Class */
+.highlight .no { color: #000000 } /* Name.Constant */
+.highlight .nd { color: #5c35cc; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #ce5c00 } /* Name.Entity */
+.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #000000 } /* Name.Function */
+.highlight .nl { color: #f57900 } /* Name.Label */
+.highlight .nn { color: #000000 } /* Name.Namespace */
+.highlight .nx { color: #000000 } /* Name.Other */
+.highlight .py { color: #000000 } /* Name.Property */
+.highlight .nt { color: #204a87; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #000000 } /* Name.Variable */
+.highlight .ow { color: #204a87; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */
+.highlight .mb { color: #0000cf; font-weight: bold } /* Literal.Number.Bin */
+.highlight .mf { color: #0000cf; font-weight: bold } /* Literal.Number.Float */
+.highlight .mh { color: #0000cf; font-weight: bold } /* Literal.Number.Hex */
+.highlight .mi { color: #0000cf; font-weight: bold } /* Literal.Number.Integer */
+.highlight .mo { color: #0000cf; font-weight: bold } /* Literal.Number.Oct */
+.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */
+.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */
+.highlight .sc { color: #4e9a06 } /* Literal.String.Char */
+.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */
+.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */
+.highlight .se { color: #4e9a06 } /* Literal.String.Escape */
+.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */
+.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */
+.highlight .sx { color: #4e9a06 } /* Literal.String.Other */
+.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */
+.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */
+.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */
+.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #000000 } /* Name.Function.Magic */
+.highlight .vc { color: #000000 } /* Name.Variable.Class */
+.highlight .vg { color: #000000 } /* Name.Variable.Global */
+.highlight .vi { color: #000000 } /* Name.Variable.Instance */
+.highlight .vm { color: #000000 } /* Name.Variable.Magic */
+.highlight .il { color: #0000cf; font-weight: bold } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #f8f8f8; }
+.literal-block .c { color: #8f5902; font-style: italic } /* Comment */
+.literal-block .err { color: #a40000; border: 1px solid #ef2929 } /* Error */
+.literal-block .g { color: #000000 } /* Generic */
+.literal-block .k { color: #204a87; font-weight: bold } /* Keyword */
+.literal-block .l { color: #000000 } /* Literal */
+.literal-block .n { color: #000000 } /* Name */
+.literal-block .o { color: #ce5c00; font-weight: bold } /* Operator */
+.literal-block .x { color: #000000 } /* Other */
+.literal-block .p { color: #000000; font-weight: bold } /* Punctuation */
+.literal-block .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #8f5902; font-style: italic } /* Comment.Preproc */
+.literal-block .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #8f5902; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #8f5902; font-style: italic } /* Comment.Special */
+.literal-block .gd { color: #a40000 } /* Generic.Deleted */
+.literal-block .ge { color: #000000; font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #ef2929 } /* Generic.Error */
+.literal-block .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #00A000 } /* Generic.Inserted */
+.literal-block .go { color: #000000; font-style: italic } /* Generic.Output */
+.literal-block .gp { color: #8f5902 } /* Generic.Prompt */
+.literal-block .gs { color: #000000; font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.literal-block .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */
+.literal-block .kc { color: #204a87; font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { color: #204a87; font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { color: #204a87; font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { color: #204a87; font-weight: bold } /* Keyword.Pseudo */
+.literal-block .kr { color: #204a87; font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #204a87; font-weight: bold } /* Keyword.Type */
+.literal-block .ld { color: #000000 } /* Literal.Date */
+.literal-block .m { color: #0000cf; font-weight: bold } /* Literal.Number */
+.literal-block .s { color: #4e9a06 } /* Literal.String */
+.literal-block .na { color: #c4a000 } /* Name.Attribute */
+.literal-block .nb { color: #204a87 } /* Name.Builtin */
+.literal-block .nc { color: #000000 } /* Name.Class */
+.literal-block .no { color: #000000 } /* Name.Constant */
+.literal-block .nd { color: #5c35cc; font-weight: bold } /* Name.Decorator */
+.literal-block .ni { color: #ce5c00 } /* Name.Entity */
+.literal-block .ne { color: #cc0000; font-weight: bold } /* Name.Exception */
+.literal-block .nf { color: #000000 } /* Name.Function */
+.literal-block .nl { color: #f57900 } /* Name.Label */
+.literal-block .nn { color: #000000 } /* Name.Namespace */
+.literal-block .nx { color: #000000 } /* Name.Other */
+.literal-block .py { color: #000000 } /* Name.Property */
+.literal-block .nt { color: #204a87; font-weight: bold } /* Name.Tag */
+.literal-block .nv { color: #000000 } /* Name.Variable */
+.literal-block .ow { color: #204a87; font-weight: bold } /* Operator.Word */
+.literal-block .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */
+.literal-block .mb { color: #0000cf; font-weight: bold } /* Literal.Number.Bin */
+.literal-block .mf { color: #0000cf; font-weight: bold } /* Literal.Number.Float */
+.literal-block .mh { color: #0000cf; font-weight: bold } /* Literal.Number.Hex */
+.literal-block .mi { color: #0000cf; font-weight: bold } /* Literal.Number.Integer */
+.literal-block .mo { color: #0000cf; font-weight: bold } /* Literal.Number.Oct */
+.literal-block .sa { color: #4e9a06 } /* Literal.String.Affix */
+.literal-block .sb { color: #4e9a06 } /* Literal.String.Backtick */
+.literal-block .sc { color: #4e9a06 } /* Literal.String.Char */
+.literal-block .dl { color: #4e9a06 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */
+.literal-block .s2 { color: #4e9a06 } /* Literal.String.Double */
+.literal-block .se { color: #4e9a06 } /* Literal.String.Escape */
+.literal-block .sh { color: #4e9a06 } /* Literal.String.Heredoc */
+.literal-block .si { color: #4e9a06 } /* Literal.String.Interpol */
+.literal-block .sx { color: #4e9a06 } /* Literal.String.Other */
+.literal-block .sr { color: #4e9a06 } /* Literal.String.Regex */
+.literal-block .s1 { color: #4e9a06 } /* Literal.String.Single */
+.literal-block .ss { color: #4e9a06 } /* Literal.String.Symbol */
+.literal-block .bp { color: #3465a4 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #000000 } /* Name.Function.Magic */
+.literal-block .vc { color: #000000 } /* Name.Variable.Class */
+.literal-block .vg { color: #000000 } /* Name.Variable.Global */
+.literal-block .vi { color: #000000 } /* Name.Variable.Instance */
+.literal-block .vm { color: #000000 } /* Name.Variable.Magic */
+.literal-block .il { color: #0000cf; font-weight: bold } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/tango.min.css b/flex/static/pygments/tango.min.css
new file mode 100644
index 0000000..0ba2690
--- /dev/null
+++ b/flex/static/pygments/tango.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#f8f8f8}.highlight .c{color:#8f5902;font-style:italic}.highlight .err{color:#a40000;border:1px solid #ef2929}.highlight .g{color:#000}.highlight .k{color:#204a87;font-weight:700}.highlight .l,.highlight .n{color:#000}.highlight .o{color:#ce5c00;font-weight:700}.highlight .x{color:#000}.highlight .p{color:#000;font-weight:700}.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cp,.highlight .cpf,.highlight .cs{color:#8f5902;font-style:italic}.highlight .gd{color:#a40000}.highlight .ge{color:#000;font-style:italic}.highlight .gr{color:#ef2929}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00a000}.highlight .go{color:#000;font-style:italic}.highlight .gp{color:#8f5902}.highlight .gs{color:#000;font-weight:700}.highlight .gu{color:purple;font-weight:700}.highlight .gt{color:#a40000;font-weight:700}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:#204a87;font-weight:700}.highlight .ld{color:#000}.highlight .m{color:#0000cf;font-weight:700}.highlight .s{color:#4e9a06}.highlight .na{color:#c4a000}.highlight .nb{color:#204a87}.highlight .nc,.highlight .no{color:#000}.highlight .nd{color:#5c35cc;font-weight:700}.highlight .ni{color:#ce5c00}.highlight .ne{color:#c00;font-weight:700}.highlight .nf{color:#000}.highlight .nl{color:#f57900}.highlight .nn,.highlight .nx,.highlight .py{color:#000}.highlight .nt{color:#204a87;font-weight:700}.highlight .nv{color:#000}.highlight .ow{color:#204a87;font-weight:700}.highlight .w{color:#f8f8f8;text-decoration:underline}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#0000cf;font-weight:700}.highlight .dl,.highlight .sa,.highlight .sb,.highlight .sc{color:#4e9a06}.highlight .sd{color:#8f5902;font-style:italic}.highlight .s1,.highlight .s2,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#4e9a06}.highlight .bp{color:#3465a4}.highlight .fm,.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#000}.highlight .il{color:#0000cf;font-weight:700}.literal-block .hll{background-color:#ffc}.literal-block{background:#f8f8f8}.literal-block .c{color:#8f5902;font-style:italic}.literal-block .err{color:#a40000;border:1px solid #ef2929}.literal-block .g{color:#000}.literal-block .k{color:#204a87;font-weight:700}.literal-block .l,.literal-block .n{color:#000}.literal-block .o{color:#ce5c00;font-weight:700}.literal-block .x{color:#000}.literal-block .p{color:#000;font-weight:700}.literal-block .c1,.literal-block .ch,.literal-block .cm,.literal-block .cp,.literal-block .cpf,.literal-block .cs{color:#8f5902;font-style:italic}.literal-block .gd{color:#a40000}.literal-block .ge{color:#000;font-style:italic}.literal-block .gr{color:#ef2929}.literal-block .gh{color:navy;font-weight:700}.literal-block .gi{color:#00a000}.literal-block .go{color:#000;font-style:italic}.literal-block .gp{color:#8f5902}.literal-block .gs{color:#000;font-weight:700}.literal-block .gu{color:purple;font-weight:700}.literal-block .gt{color:#a40000;font-weight:700}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr,.literal-block .kt{color:#204a87;font-weight:700}.literal-block .ld{color:#000}.literal-block .m{color:#0000cf;font-weight:700}.literal-block .s{color:#4e9a06}.literal-block .na{color:#c4a000}.literal-block .nb{color:#204a87}.literal-block .nc,.literal-block .no{color:#000}.literal-block .nd{color:#5c35cc;font-weight:700}.literal-block .ni{color:#ce5c00}.literal-block .ne{color:#c00;font-weight:700}.literal-block .nf{color:#000}.literal-block .nl{color:#f57900}.literal-block .nn,.literal-block .nx,.literal-block .py{color:#000}.literal-block .nt{color:#204a87;font-weight:700}.literal-block .nv{color:#000}.literal-block .ow{color:#204a87;font-weight:700}.literal-block .w{color:#f8f8f8;text-decoration:underline}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#0000cf;font-weight:700}.literal-block .dl,.literal-block .sa,.literal-block .sb,.literal-block .sc{color:#4e9a06}.literal-block .sd{color:#8f5902;font-style:italic}.literal-block .s1,.literal-block .s2,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#4e9a06}.literal-block .bp{color:#3465a4}.literal-block .fm,.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#000}.literal-block .il{color:#0000cf;font-weight:700}
\ No newline at end of file
diff --git a/flex/static/pygments/trac.css b/flex/static/pygments/trac.css
new file mode 100644
index 0000000..331e62b
--- /dev/null
+++ b/flex/static/pygments/trac.css
@@ -0,0 +1,134 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #999988; font-style: italic } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .k { font-weight: bold } /* Keyword */
+.highlight .o { font-weight: bold } /* Operator */
+.highlight .ch { color: #999988; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
+.highlight .cpf { color: #999988; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #aa0000 } /* Generic.Error */
+.highlight .gh { color: #999999 } /* Generic.Heading */
+.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #555555 } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
+.highlight .gt { color: #aa0000 } /* Generic.Traceback */
+.highlight .kc { font-weight: bold } /* Keyword.Constant */
+.highlight .kd { font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #009999 } /* Literal.Number */
+.highlight .s { color: #bb8844 } /* Literal.String */
+.highlight .na { color: #008080 } /* Name.Attribute */
+.highlight .nb { color: #999999 } /* Name.Builtin */
+.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
+.highlight .no { color: #008080 } /* Name.Constant */
+.highlight .ni { color: #800080 } /* Name.Entity */
+.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
+.highlight .nn { color: #555555 } /* Name.Namespace */
+.highlight .nt { color: #000080 } /* Name.Tag */
+.highlight .nv { color: #008080 } /* Name.Variable */
+.highlight .ow { font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #009999 } /* Literal.Number.Bin */
+.highlight .mf { color: #009999 } /* Literal.Number.Float */
+.highlight .mh { color: #009999 } /* Literal.Number.Hex */
+.highlight .mi { color: #009999 } /* Literal.Number.Integer */
+.highlight .mo { color: #009999 } /* Literal.Number.Oct */
+.highlight .sa { color: #bb8844 } /* Literal.String.Affix */
+.highlight .sb { color: #bb8844 } /* Literal.String.Backtick */
+.highlight .sc { color: #bb8844 } /* Literal.String.Char */
+.highlight .dl { color: #bb8844 } /* Literal.String.Delimiter */
+.highlight .sd { color: #bb8844 } /* Literal.String.Doc */
+.highlight .s2 { color: #bb8844 } /* Literal.String.Double */
+.highlight .se { color: #bb8844 } /* Literal.String.Escape */
+.highlight .sh { color: #bb8844 } /* Literal.String.Heredoc */
+.highlight .si { color: #bb8844 } /* Literal.String.Interpol */
+.highlight .sx { color: #bb8844 } /* Literal.String.Other */
+.highlight .sr { color: #808000 } /* Literal.String.Regex */
+.highlight .s1 { color: #bb8844 } /* Literal.String.Single */
+.highlight .ss { color: #bb8844 } /* Literal.String.Symbol */
+.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #990000; font-weight: bold } /* Name.Function.Magic */
+.highlight .vc { color: #008080 } /* Name.Variable.Class */
+.highlight .vg { color: #008080 } /* Name.Variable.Global */
+.highlight .vi { color: #008080 } /* Name.Variable.Instance */
+.highlight .vm { color: #008080 } /* Name.Variable.Magic */
+.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #999988; font-style: italic } /* Comment */
+.literal-block .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.literal-block .k { font-weight: bold } /* Keyword */
+.literal-block .o { font-weight: bold } /* Operator */
+.literal-block .ch { color: #999988; font-style: italic } /* Comment.Hashbang */
+.literal-block .cm { color: #999988; font-style: italic } /* Comment.Multiline */
+.literal-block .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
+.literal-block .cpf { color: #999988; font-style: italic } /* Comment.PreprocFile */
+.literal-block .c1 { color: #999988; font-style: italic } /* Comment.Single */
+.literal-block .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
+.literal-block .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #aa0000 } /* Generic.Error */
+.literal-block .gh { color: #999999 } /* Generic.Heading */
+.literal-block .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.literal-block .go { color: #888888 } /* Generic.Output */
+.literal-block .gp { color: #555555 } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #aaaaaa } /* Generic.Subheading */
+.literal-block .gt { color: #aa0000 } /* Generic.Traceback */
+.literal-block .kc { font-weight: bold } /* Keyword.Constant */
+.literal-block .kd { font-weight: bold } /* Keyword.Declaration */
+.literal-block .kn { font-weight: bold } /* Keyword.Namespace */
+.literal-block .kp { font-weight: bold } /* Keyword.Pseudo */
+.literal-block .kr { font-weight: bold } /* Keyword.Reserved */
+.literal-block .kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.literal-block .m { color: #009999 } /* Literal.Number */
+.literal-block .s { color: #bb8844 } /* Literal.String */
+.literal-block .na { color: #008080 } /* Name.Attribute */
+.literal-block .nb { color: #999999 } /* Name.Builtin */
+.literal-block .nc { color: #445588; font-weight: bold } /* Name.Class */
+.literal-block .no { color: #008080 } /* Name.Constant */
+.literal-block .ni { color: #800080 } /* Name.Entity */
+.literal-block .ne { color: #990000; font-weight: bold } /* Name.Exception */
+.literal-block .nf { color: #990000; font-weight: bold } /* Name.Function */
+.literal-block .nn { color: #555555 } /* Name.Namespace */
+.literal-block .nt { color: #000080 } /* Name.Tag */
+.literal-block .nv { color: #008080 } /* Name.Variable */
+.literal-block .ow { font-weight: bold } /* Operator.Word */
+.literal-block .w { color: #bbbbbb } /* Text.Whitespace */
+.literal-block .mb { color: #009999 } /* Literal.Number.Bin */
+.literal-block .mf { color: #009999 } /* Literal.Number.Float */
+.literal-block .mh { color: #009999 } /* Literal.Number.Hex */
+.literal-block .mi { color: #009999 } /* Literal.Number.Integer */
+.literal-block .mo { color: #009999 } /* Literal.Number.Oct */
+.literal-block .sa { color: #bb8844 } /* Literal.String.Affix */
+.literal-block .sb { color: #bb8844 } /* Literal.String.Backtick */
+.literal-block .sc { color: #bb8844 } /* Literal.String.Char */
+.literal-block .dl { color: #bb8844 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #bb8844 } /* Literal.String.Doc */
+.literal-block .s2 { color: #bb8844 } /* Literal.String.Double */
+.literal-block .se { color: #bb8844 } /* Literal.String.Escape */
+.literal-block .sh { color: #bb8844 } /* Literal.String.Heredoc */
+.literal-block .si { color: #bb8844 } /* Literal.String.Interpol */
+.literal-block .sx { color: #bb8844 } /* Literal.String.Other */
+.literal-block .sr { color: #808000 } /* Literal.String.Regex */
+.literal-block .s1 { color: #bb8844 } /* Literal.String.Single */
+.literal-block .ss { color: #bb8844 } /* Literal.String.Symbol */
+.literal-block .bp { color: #999999 } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #990000; font-weight: bold } /* Name.Function.Magic */
+.literal-block .vc { color: #008080 } /* Name.Variable.Class */
+.literal-block .vg { color: #008080 } /* Name.Variable.Global */
+.literal-block .vi { color: #008080 } /* Name.Variable.Instance */
+.literal-block .vm { color: #008080 } /* Name.Variable.Magic */
+.literal-block .il { color: #009999 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/trac.min.css b/flex/static/pygments/trac.min.css
new file mode 100644
index 0000000..3c78f12
--- /dev/null
+++ b/flex/static/pygments/trac.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k,.highlight .o{font-weight:700}.highlight .ch,.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:700}.highlight .c1,.highlight .cpf{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:700;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:700}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{font-weight:700}.highlight .kt{color:#458}.highlight .m{color:#099}.highlight .s{color:#b84}.highlight .na{color:teal}.highlight .nb{color:#999}.highlight .nc{color:#458;font-weight:700}.highlight .no{color:teal}.highlight .ni{color:purple}.highlight .ne,.highlight .nf{color:#900;font-weight:700}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{font-weight:700}.highlight .w{color:#bbb}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#099}.highlight .dl,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx{color:#b84}.highlight .sr{color:olive}.highlight .s1,.highlight .ss{color:#b84}.highlight .bp{color:#999}.highlight .fm{color:#900;font-weight:700}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:teal}.highlight .il{color:#099}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:#998;font-style:italic}.literal-block .err{color:#a61717;background-color:#e3d2d2}.literal-block .k,.literal-block .o{font-weight:700}.literal-block .ch,.literal-block .cm{color:#998;font-style:italic}.literal-block .cp{color:#999;font-weight:700}.literal-block .c1,.literal-block .cpf{color:#998;font-style:italic}.literal-block .cs{color:#999;font-weight:700;font-style:italic}.literal-block .gd{color:#000;background-color:#fdd}.literal-block .ge{font-style:italic}.literal-block .gr{color:#a00}.literal-block .gh{color:#999}.literal-block .gi{color:#000;background-color:#dfd}.literal-block .go{color:#888}.literal-block .gp{color:#555}.literal-block .gs{font-weight:700}.literal-block .gu{color:#aaa}.literal-block .gt{color:#a00}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr{font-weight:700}.literal-block .kt{color:#458;font-weight:700}.literal-block .m{color:#099}.literal-block .s{color:#b84}.literal-block .na{color:teal}.literal-block .nb{color:#999}.literal-block .nc{color:#458;font-weight:700}.literal-block .no{color:teal}.literal-block .ni{color:purple}.literal-block .ne,.literal-block .nf{color:#900;font-weight:700}.literal-block .nn{color:#555}.literal-block .nt{color:navy}.literal-block .nv{color:teal}.literal-block .ow{font-weight:700}.literal-block .w{color:#bbb}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#099}.literal-block .dl,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sx{color:#b84}.literal-block .sr{color:olive}.literal-block .s1,.literal-block .ss{color:#b84}.literal-block .bp{color:#999}.literal-block .fm{color:#900;font-weight:700}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:teal}.literal-block .il{color:#099}
\ No newline at end of file
diff --git a/flex/static/pygments/vim.css b/flex/static/pygments/vim.css
new file mode 100644
index 0000000..d6eb195
--- /dev/null
+++ b/flex/static/pygments/vim.css
@@ -0,0 +1,156 @@
+.highlight .hll { background-color: #222222 }
+.highlight { background: #000000; color: #cccccc }
+.highlight .c { color: #000080 } /* Comment */
+.highlight .err { color: #cccccc; border: 1px solid #FF0000 } /* Error */
+.highlight .esc { color: #cccccc } /* Escape */
+.highlight .g { color: #cccccc } /* Generic */
+.highlight .k { color: #cdcd00 } /* Keyword */
+.highlight .l { color: #cccccc } /* Literal */
+.highlight .n { color: #cccccc } /* Name */
+.highlight .o { color: #3399cc } /* Operator */
+.highlight .x { color: #cccccc } /* Other */
+.highlight .p { color: #cccccc } /* Punctuation */
+.highlight .ch { color: #000080 } /* Comment.Hashbang */
+.highlight .cm { color: #000080 } /* Comment.Multiline */
+.highlight .cp { color: #000080 } /* Comment.Preproc */
+.highlight .cpf { color: #000080 } /* Comment.PreprocFile */
+.highlight .c1 { color: #000080 } /* Comment.Single */
+.highlight .cs { color: #cd0000; font-weight: bold } /* Comment.Special */
+.highlight .gd { color: #cd0000 } /* Generic.Deleted */
+.highlight .ge { color: #cccccc; font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00cd00 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { color: #cccccc; font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #cdcd00 } /* Keyword.Constant */
+.highlight .kd { color: #00cd00 } /* Keyword.Declaration */
+.highlight .kn { color: #cd00cd } /* Keyword.Namespace */
+.highlight .kp { color: #cdcd00 } /* Keyword.Pseudo */
+.highlight .kr { color: #cdcd00 } /* Keyword.Reserved */
+.highlight .kt { color: #00cd00 } /* Keyword.Type */
+.highlight .ld { color: #cccccc } /* Literal.Date */
+.highlight .m { color: #cd00cd } /* Literal.Number */
+.highlight .s { color: #cd0000 } /* Literal.String */
+.highlight .na { color: #cccccc } /* Name.Attribute */
+.highlight .nb { color: #cd00cd } /* Name.Builtin */
+.highlight .nc { color: #00cdcd } /* Name.Class */
+.highlight .no { color: #cccccc } /* Name.Constant */
+.highlight .nd { color: #cccccc } /* Name.Decorator */
+.highlight .ni { color: #cccccc } /* Name.Entity */
+.highlight .ne { color: #666699; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #cccccc } /* Name.Function */
+.highlight .nl { color: #cccccc } /* Name.Label */
+.highlight .nn { color: #cccccc } /* Name.Namespace */
+.highlight .nx { color: #cccccc } /* Name.Other */
+.highlight .py { color: #cccccc } /* Name.Property */
+.highlight .nt { color: #cccccc } /* Name.Tag */
+.highlight .nv { color: #00cdcd } /* Name.Variable */
+.highlight .ow { color: #cdcd00 } /* Operator.Word */
+.highlight .w { color: #cccccc } /* Text.Whitespace */
+.highlight .mb { color: #cd00cd } /* Literal.Number.Bin */
+.highlight .mf { color: #cd00cd } /* Literal.Number.Float */
+.highlight .mh { color: #cd00cd } /* Literal.Number.Hex */
+.highlight .mi { color: #cd00cd } /* Literal.Number.Integer */
+.highlight .mo { color: #cd00cd } /* Literal.Number.Oct */
+.highlight .sa { color: #cd0000 } /* Literal.String.Affix */
+.highlight .sb { color: #cd0000 } /* Literal.String.Backtick */
+.highlight .sc { color: #cd0000 } /* Literal.String.Char */
+.highlight .dl { color: #cd0000 } /* Literal.String.Delimiter */
+.highlight .sd { color: #cd0000 } /* Literal.String.Doc */
+.highlight .s2 { color: #cd0000 } /* Literal.String.Double */
+.highlight .se { color: #cd0000 } /* Literal.String.Escape */
+.highlight .sh { color: #cd0000 } /* Literal.String.Heredoc */
+.highlight .si { color: #cd0000 } /* Literal.String.Interpol */
+.highlight .sx { color: #cd0000 } /* Literal.String.Other */
+.highlight .sr { color: #cd0000 } /* Literal.String.Regex */
+.highlight .s1 { color: #cd0000 } /* Literal.String.Single */
+.highlight .ss { color: #cd0000 } /* Literal.String.Symbol */
+.highlight .bp { color: #cd00cd } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #cccccc } /* Name.Function.Magic */
+.highlight .vc { color: #00cdcd } /* Name.Variable.Class */
+.highlight .vg { color: #00cdcd } /* Name.Variable.Global */
+.highlight .vi { color: #00cdcd } /* Name.Variable.Instance */
+.highlight .vm { color: #00cdcd } /* Name.Variable.Magic */
+.highlight .il { color: #cd00cd } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #222222 }
+.literal-block { background: #000000; color: #cccccc }
+.literal-block .c { color: #000080 } /* Comment */
+.literal-block .err { color: #cccccc; border: 1px solid #FF0000 } /* Error */
+.literal-block .esc { color: #cccccc } /* Escape */
+.literal-block .g { color: #cccccc } /* Generic */
+.literal-block .k { color: #cdcd00 } /* Keyword */
+.literal-block .l { color: #cccccc } /* Literal */
+.literal-block .n { color: #cccccc } /* Name */
+.literal-block .o { color: #3399cc } /* Operator */
+.literal-block .x { color: #cccccc } /* Other */
+.literal-block .p { color: #cccccc } /* Punctuation */
+.literal-block .ch { color: #000080 } /* Comment.Hashbang */
+.literal-block .cm { color: #000080 } /* Comment.Multiline */
+.literal-block .cp { color: #000080 } /* Comment.Preproc */
+.literal-block .cpf { color: #000080 } /* Comment.PreprocFile */
+.literal-block .c1 { color: #000080 } /* Comment.Single */
+.literal-block .cs { color: #cd0000; font-weight: bold } /* Comment.Special */
+.literal-block .gd { color: #cd0000 } /* Generic.Deleted */
+.literal-block .ge { color: #cccccc; font-style: italic } /* Generic.Emph */
+.literal-block .gr { color: #FF0000 } /* Generic.Error */
+.literal-block .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.literal-block .gi { color: #00cd00 } /* Generic.Inserted */
+.literal-block .go { color: #888888 } /* Generic.Output */
+.literal-block .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.literal-block .gs { color: #cccccc; font-weight: bold } /* Generic.Strong */
+.literal-block .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.literal-block .gt { color: #0044DD } /* Generic.Traceback */
+.literal-block .kc { color: #cdcd00 } /* Keyword.Constant */
+.literal-block .kd { color: #00cd00 } /* Keyword.Declaration */
+.literal-block .kn { color: #cd00cd } /* Keyword.Namespace */
+.literal-block .kp { color: #cdcd00 } /* Keyword.Pseudo */
+.literal-block .kr { color: #cdcd00 } /* Keyword.Reserved */
+.literal-block .kt { color: #00cd00 } /* Keyword.Type */
+.literal-block .ld { color: #cccccc } /* Literal.Date */
+.literal-block .m { color: #cd00cd } /* Literal.Number */
+.literal-block .s { color: #cd0000 } /* Literal.String */
+.literal-block .na { color: #cccccc } /* Name.Attribute */
+.literal-block .nb { color: #cd00cd } /* Name.Builtin */
+.literal-block .nc { color: #00cdcd } /* Name.Class */
+.literal-block .no { color: #cccccc } /* Name.Constant */
+.literal-block .nd { color: #cccccc } /* Name.Decorator */
+.literal-block .ni { color: #cccccc } /* Name.Entity */
+.literal-block .ne { color: #666699; font-weight: bold } /* Name.Exception */
+.literal-block .nf { color: #cccccc } /* Name.Function */
+.literal-block .nl { color: #cccccc } /* Name.Label */
+.literal-block .nn { color: #cccccc } /* Name.Namespace */
+.literal-block .nx { color: #cccccc } /* Name.Other */
+.literal-block .py { color: #cccccc } /* Name.Property */
+.literal-block .nt { color: #cccccc } /* Name.Tag */
+.literal-block .nv { color: #00cdcd } /* Name.Variable */
+.literal-block .ow { color: #cdcd00 } /* Operator.Word */
+.literal-block .w { color: #cccccc } /* Text.Whitespace */
+.literal-block .mb { color: #cd00cd } /* Literal.Number.Bin */
+.literal-block .mf { color: #cd00cd } /* Literal.Number.Float */
+.literal-block .mh { color: #cd00cd } /* Literal.Number.Hex */
+.literal-block .mi { color: #cd00cd } /* Literal.Number.Integer */
+.literal-block .mo { color: #cd00cd } /* Literal.Number.Oct */
+.literal-block .sa { color: #cd0000 } /* Literal.String.Affix */
+.literal-block .sb { color: #cd0000 } /* Literal.String.Backtick */
+.literal-block .sc { color: #cd0000 } /* Literal.String.Char */
+.literal-block .dl { color: #cd0000 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #cd0000 } /* Literal.String.Doc */
+.literal-block .s2 { color: #cd0000 } /* Literal.String.Double */
+.literal-block .se { color: #cd0000 } /* Literal.String.Escape */
+.literal-block .sh { color: #cd0000 } /* Literal.String.Heredoc */
+.literal-block .si { color: #cd0000 } /* Literal.String.Interpol */
+.literal-block .sx { color: #cd0000 } /* Literal.String.Other */
+.literal-block .sr { color: #cd0000 } /* Literal.String.Regex */
+.literal-block .s1 { color: #cd0000 } /* Literal.String.Single */
+.literal-block .ss { color: #cd0000 } /* Literal.String.Symbol */
+.literal-block .bp { color: #cd00cd } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #cccccc } /* Name.Function.Magic */
+.literal-block .vc { color: #00cdcd } /* Name.Variable.Class */
+.literal-block .vg { color: #00cdcd } /* Name.Variable.Global */
+.literal-block .vi { color: #00cdcd } /* Name.Variable.Instance */
+.literal-block .vm { color: #00cdcd } /* Name.Variable.Magic */
+.literal-block .il { color: #cd00cd } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/vim.min.css b/flex/static/pygments/vim.min.css
new file mode 100644
index 0000000..bf0f8b9
--- /dev/null
+++ b/flex/static/pygments/vim.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#222}.highlight{background:#000;color:#ccc}.highlight .c{color:navy}.highlight .err{color:#ccc;border:1px solid red}.highlight .esc,.highlight .g{color:#ccc}.highlight .k{color:#cdcd00}.highlight .l,.highlight .n{color:#ccc}.highlight .o{color:#39c}.highlight .p,.highlight .x{color:#ccc}.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cp,.highlight .cpf{color:navy}.highlight .cs{color:#cd0000;font-weight:700}.highlight .gd{color:#cd0000}.highlight .ge{color:#ccc;font-style:italic}.highlight .gr{color:red}.highlight .gh{color:navy;font-weight:700}.highlight .gi{color:#00cd00}.highlight .go{color:#888}.highlight .gp{color:navy;font-weight:700}.highlight .gs{color:#ccc;font-weight:700}.highlight .gu{color:purple;font-weight:700}.highlight .gt{color:#04d}.highlight .kc{color:#cdcd00}.highlight .kd{color:#00cd00}.highlight .kn{color:#cd00cd}.highlight .kp,.highlight .kr{color:#cdcd00}.highlight .kt{color:#00cd00}.highlight .ld{color:#ccc}.highlight .m{color:#cd00cd}.highlight .s{color:#cd0000}.highlight .na{color:#ccc}.highlight .nb{color:#cd00cd}.highlight .nc{color:#00cdcd}.highlight .nd,.highlight .ni,.highlight .no{color:#ccc}.highlight .ne{color:#669;font-weight:700}.highlight .nf,.highlight .nl,.highlight .nn,.highlight .nt,.highlight .nx,.highlight .py{color:#ccc}.highlight .nv{color:#00cdcd}.highlight .ow{color:#cdcd00}.highlight .w{color:#ccc}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#cd00cd}.highlight .dl,.highlight .s1,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#cd0000}.highlight .bp{color:#cd00cd}.highlight .fm{color:#ccc}.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#00cdcd}.highlight .il{color:#cd00cd}.literal-block .hll{background-color:#222}.literal-block{background:#000;color:#ccc}.literal-block .c{color:navy}.literal-block .err{color:#ccc;border:1px solid red}.literal-block .esc,.literal-block .g{color:#ccc}.literal-block .k{color:#cdcd00}.literal-block .l,.literal-block .n{color:#ccc}.literal-block .o{color:#39c}.literal-block .p,.literal-block .x{color:#ccc}.literal-block .c1,.literal-block .ch,.literal-block .cm,.literal-block .cp,.literal-block .cpf{color:navy}.literal-block .cs{color:#cd0000;font-weight:700}.literal-block .gd{color:#cd0000}.literal-block .ge{color:#ccc;font-style:italic}.literal-block .gr{color:red}.literal-block .gh{color:navy;font-weight:700}.literal-block .gi{color:#00cd00}.literal-block .go{color:#888}.literal-block .gp{color:navy;font-weight:700}.literal-block .gs{color:#ccc;font-weight:700}.literal-block .gu{color:purple;font-weight:700}.literal-block .gt{color:#04d}.literal-block .kc{color:#cdcd00}.literal-block .kd{color:#00cd00}.literal-block .kn{color:#cd00cd}.literal-block .kp,.literal-block .kr{color:#cdcd00}.literal-block .kt{color:#00cd00}.literal-block .ld{color:#ccc}.literal-block .m{color:#cd00cd}.literal-block .s{color:#cd0000}.literal-block .na{color:#ccc}.literal-block .nb{color:#cd00cd}.literal-block .nc{color:#00cdcd}.literal-block .nd,.literal-block .ni,.literal-block .no{color:#ccc}.literal-block .ne{color:#669;font-weight:700}.literal-block .nf,.literal-block .nl,.literal-block .nn,.literal-block .nt,.literal-block .nx,.literal-block .py{color:#ccc}.literal-block .nv{color:#00cdcd}.literal-block .ow{color:#cdcd00}.literal-block .w{color:#ccc}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#cd00cd}.literal-block .dl,.literal-block .s1,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#cd0000}.literal-block .bp{color:#cd00cd}.literal-block .fm{color:#ccc}.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#00cdcd}.literal-block .il{color:#cd00cd}
\ No newline at end of file
diff --git a/flex/static/pygments/vs.css b/flex/static/pygments/vs.css
new file mode 100644
index 0000000..8fa844d
--- /dev/null
+++ b/flex/static/pygments/vs.css
@@ -0,0 +1,76 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #008000 } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #0000ff } /* Keyword */
+.highlight .ch { color: #008000 } /* Comment.Hashbang */
+.highlight .cm { color: #008000 } /* Comment.Multiline */
+.highlight .cp { color: #0000ff } /* Comment.Preproc */
+.highlight .cpf { color: #008000 } /* Comment.PreprocFile */
+.highlight .c1 { color: #008000 } /* Comment.Single */
+.highlight .cs { color: #008000 } /* Comment.Special */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gh { font-weight: bold } /* Generic.Heading */
+.highlight .gp { font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { font-weight: bold } /* Generic.Subheading */
+.highlight .kc { color: #0000ff } /* Keyword.Constant */
+.highlight .kd { color: #0000ff } /* Keyword.Declaration */
+.highlight .kn { color: #0000ff } /* Keyword.Namespace */
+.highlight .kp { color: #0000ff } /* Keyword.Pseudo */
+.highlight .kr { color: #0000ff } /* Keyword.Reserved */
+.highlight .kt { color: #2b91af } /* Keyword.Type */
+.highlight .s { color: #a31515 } /* Literal.String */
+.highlight .nc { color: #2b91af } /* Name.Class */
+.highlight .ow { color: #0000ff } /* Operator.Word */
+.highlight .sa { color: #a31515 } /* Literal.String.Affix */
+.highlight .sb { color: #a31515 } /* Literal.String.Backtick */
+.highlight .sc { color: #a31515 } /* Literal.String.Char */
+.highlight .dl { color: #a31515 } /* Literal.String.Delimiter */
+.highlight .sd { color: #a31515 } /* Literal.String.Doc */
+.highlight .s2 { color: #a31515 } /* Literal.String.Double */
+.highlight .se { color: #a31515 } /* Literal.String.Escape */
+.highlight .sh { color: #a31515 } /* Literal.String.Heredoc */
+.highlight .si { color: #a31515 } /* Literal.String.Interpol */
+.highlight .sx { color: #a31515 } /* Literal.String.Other */
+.highlight .sr { color: #a31515 } /* Literal.String.Regex */
+.highlight .s1 { color: #a31515 } /* Literal.String.Single */
+.highlight .ss { color: #a31515 } /* Literal.String.Symbol */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #008000 } /* Comment */
+.literal-block .err { border: 1px solid #FF0000 } /* Error */
+.literal-block .k { color: #0000ff } /* Keyword */
+.literal-block .ch { color: #008000 } /* Comment.Hashbang */
+.literal-block .cm { color: #008000 } /* Comment.Multiline */
+.literal-block .cp { color: #0000ff } /* Comment.Preproc */
+.literal-block .cpf { color: #008000 } /* Comment.PreprocFile */
+.literal-block .c1 { color: #008000 } /* Comment.Single */
+.literal-block .cs { color: #008000 } /* Comment.Special */
+.literal-block .ge { font-style: italic } /* Generic.Emph */
+.literal-block .gh { font-weight: bold } /* Generic.Heading */
+.literal-block .gp { font-weight: bold } /* Generic.Prompt */
+.literal-block .gs { font-weight: bold } /* Generic.Strong */
+.literal-block .gu { font-weight: bold } /* Generic.Subheading */
+.literal-block .kc { color: #0000ff } /* Keyword.Constant */
+.literal-block .kd { color: #0000ff } /* Keyword.Declaration */
+.literal-block .kn { color: #0000ff } /* Keyword.Namespace */
+.literal-block .kp { color: #0000ff } /* Keyword.Pseudo */
+.literal-block .kr { color: #0000ff } /* Keyword.Reserved */
+.literal-block .kt { color: #2b91af } /* Keyword.Type */
+.literal-block .s { color: #a31515 } /* Literal.String */
+.literal-block .nc { color: #2b91af } /* Name.Class */
+.literal-block .ow { color: #0000ff } /* Operator.Word */
+.literal-block .sa { color: #a31515 } /* Literal.String.Affix */
+.literal-block .sb { color: #a31515 } /* Literal.String.Backtick */
+.literal-block .sc { color: #a31515 } /* Literal.String.Char */
+.literal-block .dl { color: #a31515 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #a31515 } /* Literal.String.Doc */
+.literal-block .s2 { color: #a31515 } /* Literal.String.Double */
+.literal-block .se { color: #a31515 } /* Literal.String.Escape */
+.literal-block .sh { color: #a31515 } /* Literal.String.Heredoc */
+.literal-block .si { color: #a31515 } /* Literal.String.Interpol */
+.literal-block .sx { color: #a31515 } /* Literal.String.Other */
+.literal-block .sr { color: #a31515 } /* Literal.String.Regex */
+.literal-block .s1 { color: #a31515 } /* Literal.String.Single */
+.literal-block .ss { color: #a31515 } /* Literal.String.Symbol */
\ No newline at end of file
diff --git a/flex/static/pygments/vs.min.css b/flex/static/pygments/vs.min.css
new file mode 100644
index 0000000..d32018e
--- /dev/null
+++ b/flex/static/pygments/vs.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:green}.highlight .err{border:1px solid red}.highlight .k{color:#00f}.highlight .ch,.highlight .cm{color:green}.highlight .cp{color:#00f}.highlight .c1,.highlight .cpf,.highlight .cs{color:green}.highlight .ge{font-style:italic}.highlight .gh,.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr{color:#00f}.highlight .kt{color:#2b91af}.highlight .s{color:#a31515}.highlight .nc{color:#2b91af}.highlight .ow{color:#00f}.highlight .dl,.highlight .s1,.highlight .s2,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#a31515}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:green}.literal-block .err{border:1px solid red}.literal-block .k{color:#00f}.literal-block .ch,.literal-block .cm{color:green}.literal-block .cp{color:#00f}.literal-block .c1,.literal-block .cpf,.literal-block .cs{color:green}.literal-block .ge{font-style:italic}.literal-block .gh,.literal-block .gp,.literal-block .gs,.literal-block .gu{font-weight:700}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr{color:#00f}.literal-block .kt{color:#2b91af}.literal-block .s{color:#a31515}.literal-block .nc{color:#2b91af}.literal-block .ow{color:#00f}.literal-block .dl,.literal-block .s1,.literal-block .s2,.literal-block .sa,.literal-block .sb,.literal-block .sc,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#a31515}
\ No newline at end of file
diff --git a/flex/static/pygments/xcode.css b/flex/static/pygments/xcode.css
new file mode 100644
index 0000000..856ad1b
--- /dev/null
+++ b/flex/static/pygments/xcode.css
@@ -0,0 +1,126 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #ffffff; }
+.highlight .c { color: #177500 } /* Comment */
+.highlight .err { color: #000000 } /* Error */
+.highlight .k { color: #A90D91 } /* Keyword */
+.highlight .l { color: #1C01CE } /* Literal */
+.highlight .n { color: #000000 } /* Name */
+.highlight .o { color: #000000 } /* Operator */
+.highlight .ch { color: #177500 } /* Comment.Hashbang */
+.highlight .cm { color: #177500 } /* Comment.Multiline */
+.highlight .cp { color: #633820 } /* Comment.Preproc */
+.highlight .cpf { color: #177500 } /* Comment.PreprocFile */
+.highlight .c1 { color: #177500 } /* Comment.Single */
+.highlight .cs { color: #177500 } /* Comment.Special */
+.highlight .kc { color: #A90D91 } /* Keyword.Constant */
+.highlight .kd { color: #A90D91 } /* Keyword.Declaration */
+.highlight .kn { color: #A90D91 } /* Keyword.Namespace */
+.highlight .kp { color: #A90D91 } /* Keyword.Pseudo */
+.highlight .kr { color: #A90D91 } /* Keyword.Reserved */
+.highlight .kt { color: #A90D91 } /* Keyword.Type */
+.highlight .ld { color: #1C01CE } /* Literal.Date */
+.highlight .m { color: #1C01CE } /* Literal.Number */
+.highlight .s { color: #C41A16 } /* Literal.String */
+.highlight .na { color: #836C28 } /* Name.Attribute */
+.highlight .nb { color: #A90D91 } /* Name.Builtin */
+.highlight .nc { color: #3F6E75 } /* Name.Class */
+.highlight .no { color: #000000 } /* Name.Constant */
+.highlight .nd { color: #000000 } /* Name.Decorator */
+.highlight .ni { color: #000000 } /* Name.Entity */
+.highlight .ne { color: #000000 } /* Name.Exception */
+.highlight .nf { color: #000000 } /* Name.Function */
+.highlight .nl { color: #000000 } /* Name.Label */
+.highlight .nn { color: #000000 } /* Name.Namespace */
+.highlight .nx { color: #000000 } /* Name.Other */
+.highlight .py { color: #000000 } /* Name.Property */
+.highlight .nt { color: #000000 } /* Name.Tag */
+.highlight .nv { color: #000000 } /* Name.Variable */
+.highlight .ow { color: #000000 } /* Operator.Word */
+.highlight .mb { color: #1C01CE } /* Literal.Number.Bin */
+.highlight .mf { color: #1C01CE } /* Literal.Number.Float */
+.highlight .mh { color: #1C01CE } /* Literal.Number.Hex */
+.highlight .mi { color: #1C01CE } /* Literal.Number.Integer */
+.highlight .mo { color: #1C01CE } /* Literal.Number.Oct */
+.highlight .sa { color: #C41A16 } /* Literal.String.Affix */
+.highlight .sb { color: #C41A16 } /* Literal.String.Backtick */
+.highlight .sc { color: #2300CE } /* Literal.String.Char */
+.highlight .dl { color: #C41A16 } /* Literal.String.Delimiter */
+.highlight .sd { color: #C41A16 } /* Literal.String.Doc */
+.highlight .s2 { color: #C41A16 } /* Literal.String.Double */
+.highlight .se { color: #C41A16 } /* Literal.String.Escape */
+.highlight .sh { color: #C41A16 } /* Literal.String.Heredoc */
+.highlight .si { color: #C41A16 } /* Literal.String.Interpol */
+.highlight .sx { color: #C41A16 } /* Literal.String.Other */
+.highlight .sr { color: #C41A16 } /* Literal.String.Regex */
+.highlight .s1 { color: #C41A16 } /* Literal.String.Single */
+.highlight .ss { color: #C41A16 } /* Literal.String.Symbol */
+.highlight .bp { color: #5B269A } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #000000 } /* Name.Function.Magic */
+.highlight .vc { color: #000000 } /* Name.Variable.Class */
+.highlight .vg { color: #000000 } /* Name.Variable.Global */
+.highlight .vi { color: #000000 } /* Name.Variable.Instance */
+.highlight .vm { color: #000000 } /* Name.Variable.Magic */
+.highlight .il { color: #1C01CE } /* Literal.Number.Integer.Long */
+.literal-block .hll { background-color: #ffffcc }
+.literal-block { background: #ffffff; }
+.literal-block .c { color: #177500 } /* Comment */
+.literal-block .err { color: #000000 } /* Error */
+.literal-block .k { color: #A90D91 } /* Keyword */
+.literal-block .l { color: #1C01CE } /* Literal */
+.literal-block .n { color: #000000 } /* Name */
+.literal-block .o { color: #000000 } /* Operator */
+.literal-block .ch { color: #177500 } /* Comment.Hashbang */
+.literal-block .cm { color: #177500 } /* Comment.Multiline */
+.literal-block .cp { color: #633820 } /* Comment.Preproc */
+.literal-block .cpf { color: #177500 } /* Comment.PreprocFile */
+.literal-block .c1 { color: #177500 } /* Comment.Single */
+.literal-block .cs { color: #177500 } /* Comment.Special */
+.literal-block .kc { color: #A90D91 } /* Keyword.Constant */
+.literal-block .kd { color: #A90D91 } /* Keyword.Declaration */
+.literal-block .kn { color: #A90D91 } /* Keyword.Namespace */
+.literal-block .kp { color: #A90D91 } /* Keyword.Pseudo */
+.literal-block .kr { color: #A90D91 } /* Keyword.Reserved */
+.literal-block .kt { color: #A90D91 } /* Keyword.Type */
+.literal-block .ld { color: #1C01CE } /* Literal.Date */
+.literal-block .m { color: #1C01CE } /* Literal.Number */
+.literal-block .s { color: #C41A16 } /* Literal.String */
+.literal-block .na { color: #836C28 } /* Name.Attribute */
+.literal-block .nb { color: #A90D91 } /* Name.Builtin */
+.literal-block .nc { color: #3F6E75 } /* Name.Class */
+.literal-block .no { color: #000000 } /* Name.Constant */
+.literal-block .nd { color: #000000 } /* Name.Decorator */
+.literal-block .ni { color: #000000 } /* Name.Entity */
+.literal-block .ne { color: #000000 } /* Name.Exception */
+.literal-block .nf { color: #000000 } /* Name.Function */
+.literal-block .nl { color: #000000 } /* Name.Label */
+.literal-block .nn { color: #000000 } /* Name.Namespace */
+.literal-block .nx { color: #000000 } /* Name.Other */
+.literal-block .py { color: #000000 } /* Name.Property */
+.literal-block .nt { color: #000000 } /* Name.Tag */
+.literal-block .nv { color: #000000 } /* Name.Variable */
+.literal-block .ow { color: #000000 } /* Operator.Word */
+.literal-block .mb { color: #1C01CE } /* Literal.Number.Bin */
+.literal-block .mf { color: #1C01CE } /* Literal.Number.Float */
+.literal-block .mh { color: #1C01CE } /* Literal.Number.Hex */
+.literal-block .mi { color: #1C01CE } /* Literal.Number.Integer */
+.literal-block .mo { color: #1C01CE } /* Literal.Number.Oct */
+.literal-block .sa { color: #C41A16 } /* Literal.String.Affix */
+.literal-block .sb { color: #C41A16 } /* Literal.String.Backtick */
+.literal-block .sc { color: #2300CE } /* Literal.String.Char */
+.literal-block .dl { color: #C41A16 } /* Literal.String.Delimiter */
+.literal-block .sd { color: #C41A16 } /* Literal.String.Doc */
+.literal-block .s2 { color: #C41A16 } /* Literal.String.Double */
+.literal-block .se { color: #C41A16 } /* Literal.String.Escape */
+.literal-block .sh { color: #C41A16 } /* Literal.String.Heredoc */
+.literal-block .si { color: #C41A16 } /* Literal.String.Interpol */
+.literal-block .sx { color: #C41A16 } /* Literal.String.Other */
+.literal-block .sr { color: #C41A16 } /* Literal.String.Regex */
+.literal-block .s1 { color: #C41A16 } /* Literal.String.Single */
+.literal-block .ss { color: #C41A16 } /* Literal.String.Symbol */
+.literal-block .bp { color: #5B269A } /* Name.Builtin.Pseudo */
+.literal-block .fm { color: #000000 } /* Name.Function.Magic */
+.literal-block .vc { color: #000000 } /* Name.Variable.Class */
+.literal-block .vg { color: #000000 } /* Name.Variable.Global */
+.literal-block .vi { color: #000000 } /* Name.Variable.Instance */
+.literal-block .vm { color: #000000 } /* Name.Variable.Magic */
+.literal-block .il { color: #1C01CE } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/flex/static/pygments/xcode.min.css b/flex/static/pygments/xcode.min.css
new file mode 100644
index 0000000..29d9442
--- /dev/null
+++ b/flex/static/pygments/xcode.min.css
@@ -0,0 +1 @@
+.highlight .hll{background-color:#ffc}.highlight{background:#fff}.highlight .c{color:#177500}.highlight .err{color:#000}.highlight .k{color:#a90d91}.highlight .l{color:#1c01ce}.highlight .n,.highlight .o{color:#000}.highlight .ch,.highlight .cm{color:#177500}.highlight .cp{color:#633820}.highlight .c1,.highlight .cpf,.highlight .cs{color:#177500}.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:#a90d91}.highlight .ld,.highlight .m{color:#1c01ce}.highlight .s{color:#c41a16}.highlight .na{color:#836c28}.highlight .nb{color:#a90d91}.highlight .nc{color:#3f6e75}.highlight .nd,.highlight .ne,.highlight .nf,.highlight .ni,.highlight .nl,.highlight .nn,.highlight .no,.highlight .nt,.highlight .nv,.highlight .nx,.highlight .ow,.highlight .py{color:#000}.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#1c01ce}.highlight .sa,.highlight .sb{color:#c41a16}.highlight .sc{color:#2300ce}.highlight .dl,.highlight .s1,.highlight .s2,.highlight .sd,.highlight .se,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#c41a16}.highlight .bp{color:#5b269a}.highlight .fm,.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#000}.highlight .il{color:#1c01ce}.literal-block .hll{background-color:#ffc}.literal-block{background:#fff}.literal-block .c{color:#177500}.literal-block .err{color:#000}.literal-block .k{color:#a90d91}.literal-block .l{color:#1c01ce}.literal-block .n,.literal-block .o{color:#000}.literal-block .ch,.literal-block .cm{color:#177500}.literal-block .cp{color:#633820}.literal-block .c1,.literal-block .cpf,.literal-block .cs{color:#177500}.literal-block .kc,.literal-block .kd,.literal-block .kn,.literal-block .kp,.literal-block .kr,.literal-block .kt{color:#a90d91}.literal-block .ld,.literal-block .m{color:#1c01ce}.literal-block .s{color:#c41a16}.literal-block .na{color:#836c28}.literal-block .nb{color:#a90d91}.literal-block .nc{color:#3f6e75}.literal-block .nd,.literal-block .ne,.literal-block .nf,.literal-block .ni,.literal-block .nl,.literal-block .nn,.literal-block .no,.literal-block .nt,.literal-block .nv,.literal-block .nx,.literal-block .ow,.literal-block .py{color:#000}.literal-block .mb,.literal-block .mf,.literal-block .mh,.literal-block .mi,.literal-block .mo{color:#1c01ce}.literal-block .sa,.literal-block .sb{color:#c41a16}.literal-block .sc{color:#2300ce}.literal-block .dl,.literal-block .s1,.literal-block .s2,.literal-block .sd,.literal-block .se,.literal-block .sh,.literal-block .si,.literal-block .sr,.literal-block .ss,.literal-block .sx{color:#c41a16}.literal-block .bp{color:#5b269a}.literal-block .fm,.literal-block .vc,.literal-block .vg,.literal-block .vi,.literal-block .vm{color:#000}.literal-block .il{color:#1c01ce}
\ No newline at end of file
diff --git a/flex/static/stork/stork.css b/flex/static/stork/stork.css
new file mode 100644
index 0000000..633b5d6
--- /dev/null
+++ b/flex/static/stork/stork.css
@@ -0,0 +1,149 @@
+.stork {
+ position: relative;
+ font-family: inherit;
+ box-sizing: border-box;
+ font-size: 1em;
+ padding: unset;
+}
+
+.stork *,
+.stork *:before,
+.stork *:after {
+ box-sizing: border-box;
+}
+
+.stork .stork-input {
+ width: 100%;
+ padding: 0.4em 0.8em;
+ border: none;
+ font-family: inherit;
+}
+
+.stork .stork-progress {
+ position: absolute;
+ display: block;
+ content: "";
+ bottom: 1px;
+ height: 1px;
+ transition: width 0.25s ease, opacity 0.4s ease 0.4s;
+}
+
+.stork .stork-output {
+ position: absolute;
+ width: 100%;
+ margin-top: 0.5em;
+ display: flex;
+ flex-direction: column;
+ z-index: 100;
+ font-weight: 400;
+ font-family: inherit;
+ text-align: unset;
+ padding: unset;
+}
+
+.stork a:link,
+.stork a:visited {
+ color: #d9421e;
+}
+
+.stork .stork-output-visible {
+ background: #353434;
+ border: 1px solid #d9421e;
+}
+
+.stork .stork-message {
+ width: 100%;
+ padding: 0.5em 1em;
+}
+
+.stork .stork-attribution {
+ width: 100%;
+ padding: 0.5em 1em;
+ font-size: 0.8em;
+}
+
+.stork .stork-results {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ list-style-type: none;
+ max-height: 25em;
+ overflow-y: scroll;
+}
+
+.stork .stork-result a:link {
+ padding: 1em;
+ display: block;
+ text-decoration: none;
+}
+
+.stork .stork-result p {
+ margin: 0;
+}
+
+.stork .stork-title {
+ padding: unset;
+ font-weight: bold;
+ font-size: 0.95em;
+ margin: 0;
+
+ /* Flexbox container for the title and the score, when debugging */
+ display: flex;
+ justify-content: space-between;
+}
+
+.stork .stork-excerpt {
+ font-size: 0.8em;
+ line-height: 1;
+ margin: 0;
+ color: var(--text-invert);
+ padding: unset;
+
+ /* Flexbox container for the title and the score, when debugging */
+ display: flex;
+ justify-content: space-between;
+}
+
+.stork .stork-excerpt:not(:last-of-type) {
+ margin-bottom: 0.6em;
+}
+
+.stork .stork-highlight {
+ padding: 0 0.1em;
+}
+
+.stork .stork-error {
+ outline: 2px solid #c92a2a;
+}
+
+.stork .stork-close-button {
+ position: absolute;
+ right: 0;
+ margin: 0.25em 0.25em;
+ height: 1.2em;
+ width: 1.2em;
+ padding: 0px;
+ border: none;
+ font-size: 1em;
+ color: hsl(0, 0%, 50%);
+ line-height: 1;
+}
+
+.stork .stork-close-button svg {
+ width: 0.8em;
+ position: relative;
+ top: 1px;
+}
+
+.stork .stork-close-button:hover {
+ background: hsla(0, 0%, 78%);
+ cursor: pointer;
+}
+
+.stork .stork-close-button:active {
+ background: hsla(0, 0%, 65%);
+}
+
+.stork-excerpt-container {
+ padding: 0;
+}
diff --git a/flex/static/stork/stork.js b/flex/static/stork/stork.js
new file mode 100644
index 0000000..b464ecd
--- /dev/null
+++ b/flex/static/stork/stork.js
@@ -0,0 +1,2 @@
+var stork;(()=>{"use strict";var e={214:(e,t,n)=>{let r;n.r(t),n.d(t,{default:()=>_,wasm_register_index:()=>v,wasm_search:()=>y,wasm_stork_version:()=>w});const o=new Array(32).fill(void 0);function s(e){return o[e]}o.push(void 0,null,!0,!1);let i=o.length;let a=0,l=null;function u(){return null!==l&&l.buffer===r.memory.buffer||(l=new Uint8Array(r.memory.buffer)),l}let c=new TextEncoder("utf-8");const d="function"==typeof c.encodeInto?function(e,t){return c.encodeInto(e,t)}:function(e,t){const n=c.encode(e);return t.set(n),{read:e.length,written:n.length}};function h(e,t,n){if(void 0===n){const n=c.encode(e),r=t(n.length);return u().subarray(r,r+n.length).set(n),a=n.length,r}let r=e.length,o=t(r);const s=u();let i=0;for(;i127)break;s[o+i]=t}if(i!==r){0!==i&&(e=e.slice(i)),o=n(o,r,r=i+3*e.length);const t=u().subarray(o+i,o+r);i+=d(e,t).written}return a=i,o}let f=null;function g(){return null!==f&&f.buffer===r.memory.buffer||(f=new Int32Array(r.memory.buffer)),f}let p=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});function m(e,t){return p.decode(u().subarray(e,e+t))}function v(e,t){try{const d=r.__wbindgen_add_to_stack_pointer(-16);var n=h(e,r.__wbindgen_malloc,r.__wbindgen_realloc),o=a,s=function(e,t){const n=t(1*e.length);return u().set(e,n/1),a=e.length,n}(t,r.__wbindgen_malloc),i=a;r.wasm_register_index(d,n,o,s,i);var l=g()[d/4+0],c=g()[d/4+1];return m(l,c)}finally{r.__wbindgen_add_to_stack_pointer(16),r.__wbindgen_free(l,c)}}function y(e,t){try{const c=r.__wbindgen_add_to_stack_pointer(-16);var n=h(e,r.__wbindgen_malloc,r.__wbindgen_realloc),o=a,s=h(t,r.__wbindgen_malloc,r.__wbindgen_realloc),i=a;r.wasm_search(c,n,o,s,i);var l=g()[c/4+0],u=g()[c/4+1];return m(l,u)}finally{r.__wbindgen_add_to_stack_pointer(16),r.__wbindgen_free(l,u)}}function w(){try{const n=r.__wbindgen_add_to_stack_pointer(-16);r.wasm_stork_version(n);var e=g()[n/4+0],t=g()[n/4+1];return m(e,t)}finally{r.__wbindgen_add_to_stack_pointer(16),r.__wbindgen_free(e,t)}}p.decode();const _=async function e(t){void 0===t&&(t=new URL("stork_bg.wasm",function(e){const t=n.p;let r="";return(!t||t.indexOf("://")<0)&&(r+=window.location.protocol+"//"+window.location.host),r+=t||"/",r+e}("node_modules/stork-search/stork.js")));const l={wbg:{}};l.wbg.__wbg_new_693216e109162396=function(){return function(e){i===o.length&&o.push(o.length+1);const t=i;return i=o[t],o[t]=e,t}(new Error)},l.wbg.__wbg_stack_0ddaca5d1abfb52f=function(e,t){var n=h(s(t).stack,r.__wbindgen_malloc,r.__wbindgen_realloc),o=a;g()[e/4+1]=o,g()[e/4+0]=n},l.wbg.__wbg_error_09919627ac0992f5=function(e,t){try{console.error(m(e,t))}finally{r.__wbindgen_free(e,t)}},l.wbg.__wbindgen_object_drop_ref=function(e){!function(e){const t=s(e);(function(e){e<36||(o[e]=i,i=e)})(e)}(e)},("string"==typeof t||"function"==typeof Request&&t instanceof Request||"function"==typeof URL&&t instanceof URL)&&(t=fetch(t));const{instance:u,module:c}=await async function(e,t){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if("application/wasm"==e.headers.get("Content-Type"))throw t;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t)}const n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}{const n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}(await t,l);return r=u.exports,e.__wbindgen_wasm_module=c,r}},914:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.calculateOverriddenConfig=t.defaultConfig=void 0;var r=n(445),o=n(466);t.defaultConfig={showProgress:!0,printIndexInfo:!1,showScores:!1,showCloseButton:!0,minimumQueryLength:3,forceOverwrite:!1,resultNoun:{singular:"file",plural:"files"},onQueryUpdate:void 0,onResultSelected:void 0,onResultsHidden:void 0,onInputCleared:void 0,transformResultUrl:function(e){return e}},t.calculateOverriddenConfig=function(e){var n=(0,o.difference)(Object.keys(e),Object.keys(t.defaultConfig));if(n.length>0){var s=(0,o.plural)(n.length,"key","keys"),i=JSON.stringify(n);return new r.default("Invalid ".concat(s," in config object: ").concat(i))}for(var a=Object.assign({},t.defaultConfig),l=0,u=Object.keys(t.defaultConfig);l{Object.defineProperty(t,"__esModule",{value:!0}),t.existsBeyondContainerBounds=t.setText=t.clear=t.add=t.create=void 0,t.create=function(e,t){var n=document.createElement(e);return t.classNames&&n.setAttribute("class",t.classNames.join(" ")),n},t.add=function(e,t,n){n.insertAdjacentElement(t,e)},t.clear=function(e){for(;e&&e.firstChild;)e.removeChild(e.firstChild)},t.setText=function(e,t){var n=document.createTextNode(t);e&&e.firstChild?e.replaceChild(n,e.firstChild):e&&e.appendChild(n)},t.existsBeyondContainerBounds=function(e,t){var n=e.getBoundingClientRect(),r=t.getBoundingClientRect();return n.bottom>r.bottom||n.top{Object.defineProperty(t,"__esModule",{value:!0}),t.Entity=void 0;var r=n(139),o=n(771),s=n(214),i=n(445),a=function(){function e(e,t,n){var r=this;this._state="initialized",this.downloadProgress=0,this.results=[],this.totalResultCount=0,this.eventListenerFunctions={},this.highlightedResult=0,this.resultsVisible=!1,this.hoverSelectEnabled=!0,this.setDownloadProgress=function(e){r.state="loading",r.downloadProgress=e,r.config.showProgress&&r.render()},this.name=e,this.url=t,this.config=n}return Object.defineProperty(e.prototype,"state",{get:function(){return this._state},set:function(e){this._state=e,this.render()},enumerable:!1,configurable:!0}),e.prototype.getCurrentMessage=function(){if(!this.domManager)return null;var e=this.domManager.getQuery();return"error"===this.state?"Error! Check the browser console.":"ready"!=this.state?"Loading...":(null==e?void 0:e.length){Object.defineProperty(t,"__esModule",{value:!0}),t.EntityDom=void 0;var r=n(227),o=n(9),s={results:[],resultsVisible:!1,showScores:!1,message:null,showProgress:!1,progress:1,state:"ready"},i=function(){function e(e,t){var n,o,i=this;this.scrollAnchorPoint="end",this.entity=t;var a=[{selector:'input[data-stork="'.concat(e,'"]'),elementName:"input"},{selector:'div[data-stork="'.concat(e,'-output"]'),elementName:"output"}].map((function(t){var n=document.querySelector(t.selector);if(!n)throw new Error('Could not register search box "'.concat(e,'": ').concat(t.elementName," element not found. Make sure an element matches the query selector `").concat(t.selector,"`"));return n})),l=a[0],u=a[1];this.elements={input:l,output:u,list:(0,r.create)("ul",{classNames:["stork-results"]}),attribution:(0,r.create)("div",{classNames:["stork-attribution"]}),progress:(0,r.create)("div",{classNames:["stork-progress"]}),message:(0,r.create)("div",{classNames:["stork-message"]}),closeButton:(0,r.create)("button",{classNames:["stork-close-button"]})},this.elements.input.removeEventListener("input",this.entity.eventListenerFunctions.inputInputEvent),this.elements.input.removeEventListener("keydown",this.entity.eventListenerFunctions.inputKeydownEvent),this.entity.eventListenerFunctions={inputInputEvent:function(e){i.handleInputEvent(e)},inputKeydownEvent:function(e){i.handleKeyDownEvent(e)}},this.elements.input.addEventListener("input",this.entity.eventListenerFunctions.inputInputEvent),this.elements.input.addEventListener("keydown",this.entity.eventListenerFunctions.inputKeydownEvent),null===(n=this.elements.list)||void 0===n||n.addEventListener("mousemove",(function(){i.hoverSelectEnabled=!0})),this.elements.attribution.innerHTML='Powered by Stork',this.elements.closeButton.innerHTML='\n',this.entity.config.showProgress&&(0,r.add)(this.elements.progress,"afterend",this.elements.input),null===(o=this.elements.closeButton)||void 0===o||o.addEventListener("click",(function(){i.elements.input.value="",i.elements.input.focus(),i.render(s);var e=[i.entity.config.onInputCleared,i.entity.config.onResultsHidden],t=e[0],n=e[1];t&&t(),n&&n()}))}return e.prototype.clearDom=function(){var e;(0,r.clear)(this.elements.output),(0,r.clear)(this.elements.list),null===(e=this.elements.closeButton)||void 0===e||e.remove(),this.elements.output.classList.remove("stork-output-visible")},e.prototype.render=function(e){var t,n=this,s=this.elements.input.value;if(this.clearDom(),this.lastRenderState=e,e.showProgress){var i=function(){switch(e.state){case"ready":case"error":return 1;case"initialized":case"loading":return.9*e.progress+.05}}();i<1?(this.elements.progress.style.width="".concat(100*i,"%"),this.elements.progress.style.opacity="1"):(this.elements.progress.style.width="100%",this.elements.progress.style.opacity="0")}if("error"===e.state&&this.elements.input.classList.add("stork-error"),this.getQuery().length>0&&e.resultsVisible&&(this.elements.output.classList.add("stork-output-visible"),(0,r.add)(this.elements.message,"beforeend",this.elements.output)),e.message&&(0,r.setText)(this.elements.message,e.message),(null===(t=e.results)||void 0===t?void 0:t.length)>0&&e.resultsVisible){(0,r.add)(this.elements.list,"beforeend",this.elements.output);for(var a=function(t){var s=e.results[t],i={selected:t===l.highlightedResult,showScores:e.showScores},a=(0,o.resultToListItem)(s,i);(0,r.add)(a,"beforeend",l.elements.list),a.addEventListener("mousemove",(function(){n.hoverSelectEnabled&&t!==n.highlightedResult&&n.changeHighlightedResult({to:t,shouldScrollTo:!1})})),a.addEventListener("mouseleave",(function(){n.hoverSelectEnabled&&t===n.highlightedResult&&n.changeHighlightedResult({to:-1,shouldScrollTo:!1})})),a.addEventListener("click",(function(e){e.preventDefault(),n.selectResult()}))},l=this,u=0;u0&&this.entity.config.showCloseButton&&(0,r.add)(this.elements.closeButton,"afterend",this.elements.input)},e.prototype.selectResult=function(){if(null!=this.highlightedResult){var e=this.entity.results[this.highlightedResult];this.entity.config.onResultSelected?Promise.resolve(this.entity.config.onResultSelected(this.getQuery(),e)).finally((function(){window.location.assign(e.entry.url)})):window.location.assign(e.entry.url)}},e.prototype.changeHighlightedResult=function(e){var t,n=this.highlightedResult,o=Math.max(-1,Math.min(this.entity.results.length-1,e.to));this.highlightedResult=o,this.scrollAnchorPoint=(n||0)0){var n;this.elements.input.value="",this.render(s),(n=this.entity.config.onInputCleared)&&n()}break;default:return}},e.prototype.handleInputEvent=function(e){this.entity.performSearch(e.target.value)},e.prototype.getQuery=function(){return this.elements.input.value},e}();t.EntityDom=i},129:function(e,t,n){var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{Object.defineProperty(t,"__esModule",{value:!0}),t.loadIndexFromUrl=void 0,t.loadIndexFromUrl=function(e,t){var n=new XMLHttpRequest;n.addEventListener("load",(function(e){var n=e.target,r=n.status,o=n.response;0!==r?r<200||r>299?t.error():t.load(o):t.progress(e.loaded/e.total)})),n.addEventListener("error",(function(){t.error()})),n.addEventListener("progress",(function(e){t.progress(e.loaded/e.total)})),n.responseType="arraybuffer",n.open("GET",e),n.send()}},480:function(e,t,n){var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{Object.defineProperty(t,"__esModule",{value:!0}),t.highlight=void 0,t.highlight=function(e,t){function n(e,t,n){return e.substr(0,t)+n+e.substr(t)}for(var r=0,o=0,s=t;o',l="";e=n(e,i.beginning+r,a),r+=a.length,e=n(e,i.end+r,l),r+=l.length}return e}},9:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.resultToListItem=void 0;var r=n(112);t.resultToListItem=function(e,t){var n=document.createElement("template");return n.innerHTML='\n\n \n \n
').concat((0,r.highlight)(e.entry.title,e.title_highlight_ranges||[]),"
\n ").concat(t.showScores?"
".concat(e.score,""):"","\n
\n ").concat(e.excerpts.length>0?'':"","\n ").concat(e.excerpts.map((function(e){return'\n ...'.concat((0,r.highlight)(e.text,e.highlight_ranges||[]),"...\n
\n ").concat(t.showScores?"
".concat(e.score,""):"","\n
")})).join(""),"\n ").concat(e.excerpts.length>0?"":"","\n \n"),n.content.firstElementChild}},139:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.resolveSearch=void 0;var r=n(214),o=n(445);t.resolveSearch=function(e,t){var n=null,s=null;try{n=(0,r.wasm_search)(e,t),s=JSON.parse(n)}catch(e){throw new o.default("Could not parse data from wasm_search. If you see this, please file a bug: https://jil.im/storkbug "+n)}if(!s)throw new o.default("Data was an empty object");if(s.error)throw new o.default("Could not perform search: the WASM binary failed to return search results.\n You might not be serving your search index properly.\n If you think this is an error, please file a bug: https://jil.im/storkbug\n \n The WASM binary came back with:\n ".concat(s.error));return s}},445:function(e,t){var n,r=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(t,"__esModule",{value:!0});var o=function(e){function t(t){var n=e.call(this,t)||this;return n.name="StorkError",n}return r(t,e),t}(Error);t.default=o},466:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.plural=t.difference=t.htmlToElement=void 0,t.htmlToElement=function(e){var t=document.createElement("template");return e=e.trim(),t.innerHTML=e,t.content.firstChild},t.difference=function(e,t){var n=new Set(e),r=new Set(t),o=new Set(Array.from(n).filter((function(e){return!r.has(e)})));return Array.from(o)},t.plural=function(e,t,n){return 1==e?t:n}},34:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateIndexParams=void 0;var r=n(445);t.validateIndexParams=function(e,t){return"string"!=typeof e?new r.default("Index registration name must be a string."):"string"!=typeof t?new r.default("URL must be a string."):null}},258:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.debug=t.loadWasm=t.runAfterWasmLoaded=void 0;var r=n(214),o=n(445),s="https://files.stork-search.net/releases/v".concat("1.5.0","/stork.wasm"),i=null,a=null,l=[],u=[];t.loadWasm=function(e){if(void 0===e&&(e=null),a)return a;var t=e||s;i=t;var n=(0,r.default)(t).then((function(){return c(),t})).catch((function(){throw d(),new o.default("Error while loading WASM at ".concat(t))}));return a=n,n},t.runAfterWasmLoaded=function(e,t){return a?(a.then((function(){return e()})).catch((function(){return t()})),a):(l.push(e),u.push(t),null)};var c=function(){l.forEach((function(e){e()})),l=[]},d=function(){u.forEach((function(e){e()})),u=[]};t.debug=function(){return{wasmSourceUrl:i,wasmLoadPromise:a,queueLength:l.length}}}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r].call(s.exports,s,s.exports,n),s.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var t=n.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})();var r=n(480);stork=r})();
+//# sourceMappingURL=stork.js.map
\ No newline at end of file
diff --git a/flex/static/stork/stork.wasm b/flex/static/stork/stork.wasm
new file mode 100644
index 0000000..4394eb2
Binary files /dev/null and b/flex/static/stork/stork.wasm differ
diff --git a/flex/static/stylesheet/dark-theme.less b/flex/static/stylesheet/dark-theme.less
new file mode 100644
index 0000000..e1dc90a
--- /dev/null
+++ b/flex/static/stylesheet/dark-theme.less
@@ -0,0 +1,170 @@
+//
+// Dark Theme CSS styles.
+//
+
+@import "variables.less";
+
+body {
+ background-color: @body-bg-dark-theme;
+ color: @text-color-dark-theme;
+}
+
+hr {
+ background-color: @solid-dark-grey;
+ color: @solid-dark-grey;
+}
+
+aside {
+ background-color: @sidebar-bg-dark-theme;
+ color: @sidebar-text-color;
+
+ form.navbar-search input#tipue_search_input {
+ background-color: @very-dark-grey;
+ color: @light-grey;
+ }
+}
+
+main {
+ nav {
+ border-bottom-color: @nav-border-color-dark-theme;
+ }
+
+ nav, .translations {
+ a {
+ border-color: @nav-border-color-dark-theme;
+ }
+ }
+
+ article {
+ kbd {
+ background-color: #080808;
+ color: @light-grey;
+ }
+
+ blockquote, pre {
+ border-left: 8px solid #ffffff33;
+ }
+
+ *:not(pre) > code {
+ background-color: #080808;
+ border-color: #000;
+ }
+
+ div#tipue_search_content .tipue_search_result {
+ span.tipue_search_content_bold {
+ color: white;
+ }
+ }
+
+ section#isso-thread {
+ div.textarea,
+ .auth-section p.input-wrapper input,
+ .notification-section input {
+ background: @very-dark-grey;
+ color: @light-grey;
+ }
+
+ >h4 {
+ color: @light-grey;
+ }
+
+ .isso-postbox > .form-wrapper .preview {
+ background: repeating-linear-gradient(
+ -45deg,
+ @solid-dark-grey, @solid-dark-grey 10px,
+ @very-dark-grey 10px, @very-dark-grey 20px
+ );
+ }
+
+ .isso-comment > div.text-wrapper {
+ > .isso-comment-header {
+ .author {
+ color: @light-grey;
+ }
+
+ .spacer, a.permalink, .note, a.parent {
+ color: @med-grey;
+
+ &:hover {
+ color: @light-grey;
+ }
+ }
+ }
+
+ > .isso-comment-footer a:hover {
+ // Unfortunately, Isso uses a lot of !important in its styles, so I
+ // have to override that.
+ text-shadow: @dark-grey 0 0 1px !important;
+ }
+ }
+ }
+ }
+
+ footer {
+ border-top-color: @footer-border-color-dark-theme;
+ }
+}
+
+div.related-posts {
+ border-color: @rel-post-border-color-dark-theme;
+}
+
+// Admonition
+div.admonition {
+ color: @admonition-generic-color-dark-theme;
+ background-color: @admonition-generic-bg-color-dark-theme;
+}
+
+div.admonition.attention {
+ color: @admonition-attention-color-dark-theme;
+ background-color: @admonition-attention-bg-color-dark-theme;
+}
+
+div.admonition.caution {
+ color: @admonition-caution-color-dark-theme;
+ background-color: @admonition-caution-bg-color-dark-theme;
+}
+
+div.admonition.danger {
+ color: @admonition-danger-color-dark-theme;
+ background-color: @admonition-danger-bg-color-dark-theme;
+}
+
+div.admonition.error {
+ color: @admonition-error-color-dark-theme;
+ background-color: @admonition-error-bg-color-dark-theme;
+}
+
+div.admonition.hint {
+ color: @admonition-hint-color-dark-theme;
+ background-color: @admonition-hint-bg-color-dark-theme;
+}
+
+div.admonition.important {
+ color: @admonition-important-color-dark-theme;
+ background-color: @admonition-important-bg-color-dark-theme;
+}
+
+div.admonition.note {
+ color: @admonition-note-color-dark-theme;
+ background-color: @admonition-note-bg-color-dark-theme;
+}
+
+div.admonition.tip {
+ color: @admonition-tip-color-dark-theme;
+ background-color: @admonition-tip-bg-color-dark-theme;
+}
+
+div.admonition.warning {
+ color: @admonition-warning-color-dark-theme;
+ background-color: @admonition-warning-bg-color-dark-theme;
+}
+
+figure,
+div.figure {
+ color: @figure-color-dark-theme;
+
+ figcaption {
+ color: @text-color-dark-theme;
+ }
+}
diff --git a/flex/static/stylesheet/dark-theme.min.css b/flex/static/stylesheet/dark-theme.min.css
new file mode 100644
index 0000000..8baf475
--- /dev/null
+++ b/flex/static/stylesheet/dark-theme.min.css
@@ -0,0 +1 @@
+body{background-color:#333;color:#eee}hr{color:#222}aside,hr{background-color:#222}aside{color:#fff}aside form.navbar-search input#tipue_search_input{background-color:#1a1a1a;color:#eee}main nav{border-bottom-color:#222}main .translations a,main nav a{border-color:#222}main article kbd{background-color:#080808;color:#eee}main article blockquote,main article pre{border-left:8px solid #ffffff33}main article :not(pre)>code{background-color:#080808;border-color:#000}main article div#tipue_search_content .tipue_search_result span.tipue_search_content_bold{color:#fff}main article section#isso-thread .auth-section p.input-wrapper input,main article section#isso-thread .notification-section input,main article section#isso-thread div.textarea{background:#1a1a1a;color:#eee}main article section#isso-thread>h4{color:#eee}main article section#isso-thread .isso-postbox>.form-wrapper .preview{background:repeating-linear-gradient(-45deg,#222,#222 10px,#1a1a1a 0,#1a1a1a 20px)}main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .author{color:#eee}main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .note,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .spacer,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header a.parent,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header a.permalink{color:#999}main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .note:hover,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .spacer:hover,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header a.parent:hover,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header a.permalink:hover{color:#eee}main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-footer a:hover{text-shadow:#242121 0 0 1px!important}main footer{border-top-color:#222}div.related-posts{border-color:#222}div.admonition{color:#eee;background-color:#404040}div.admonition.attention,div.admonition.caution{color:#fbda7a;background-color:#4a3900}div.admonition.danger,div.admonition.error{color:#ebadb3;background-color:#28070a}div.admonition.hint{color:#7abaff;background-color:#001933}div.admonition.important,div.admonition.note{color:#a8eab7;background-color:#122b18}div.admonition.tip{color:#7abaff;background-color:#001933}div.admonition.warning{color:#fbda7a;background-color:#4a3900}div.figure,figure{color:#bfbfbf}div.figure figcaption,figure figcaption{color:#eee}
\ No newline at end of file
diff --git a/flex/static/stylesheet/style.less b/flex/static/stylesheet/style.less
new file mode 100644
index 0000000..0551ed9
--- /dev/null
+++ b/flex/static/stylesheet/style.less
@@ -0,0 +1,785 @@
+@import "variables.less";
+
+html, body {
+ width: 100%;
+ height: 100%;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-weight: 300;
+ line-height: 1.1;
+}
+
+h1{
+ font-size: 2.4em
+}
+
+h2 {
+ font-size: 2em
+}
+
+h3 {
+ font-size: 1.6em
+}
+
+h4 {
+ font-size: 1.36em
+}
+
+h5 {
+ font-size: 1.2em
+}
+
+h6 {
+ font-size: 1.1em
+}
+
+body {
+ margin: 0;
+ padding: 0;
+ background-color: @body-bg;
+ color: @text-color;
+ font-family: @sans;
+ font-size: 1.02em;
+ line-height: 1.2em;
+}
+
+a {
+ color: @link-color;
+ text-decoration: none;
+}
+
+a:hover {
+ color: @link-hover-color;
+}
+
+hr {
+ color: @light-grey;
+ background-color: @light-grey;
+ height: 1px;
+ border: none;
+ margin-top: 40px;
+ margin-bottom: 40px;
+}
+
+img {
+ max-width: 100%;
+}
+
+aside {
+ background-color: @sidebar-bg;
+ color: @sidebar-text-color;
+ text-align: center;
+
+ a {
+ color: @sidebar-link-color;
+ }
+
+ a:hover {
+ color: @sidebar-link-hover-color;
+ }
+
+ div {
+ padding: 20px;
+ margin: 0;
+
+ img {
+ border-radius: 50%;
+ max-width: 140px;
+ }
+
+ h1 {
+ margin: 15px 0 5px 0;
+ }
+
+ p {
+ margin: 0 0 15px 0;
+ font-size: .92em;
+ }
+ }
+
+ nav {
+ ul {
+ li {
+ display: inline;
+ line-height: 1.6em;
+ font-size: 1.28em;
+ text-transform: lowercase;
+ }
+ }
+ }
+}
+
+main {
+ nav {
+ text-align: center;
+ text-transform: uppercase;
+ padding: 14px 0 14px 0;
+ border-bottom: @nav-border-color 1px solid;
+
+ // Need to use font-size of 0 so that whitespace between the
tags
+ // doesn't have an affect on alignment.
+ font-size: 0;
+ }
+
+ nav, .translations {
+ a {
+ font-size: 12px;
+ padding: 0 4px;
+ border-right: @nav-border-color 1px solid;
+ }
+
+ :last-child {
+ border-right: none;
+ }
+ }
+
+ .neighbors {
+ margin: 4% 0% 4% 0%;
+ height: 20px;
+ }
+
+ .pagination {
+ margin: 4% 8% 4% 8%;
+ height: 20px;
+ }
+
+ .social-share {
+ p {
+ font-size: .8em;
+ }
+ }
+
+ article {
+ margin: 0 8% 2% 8%;
+
+ header {
+ h1, h2 {
+ margin-bottom: 0;
+ }
+
+ p {
+ color: @header-text-color;
+ font-size: 0.86em;
+ }
+
+ .translations {
+ float: right;
+
+ .active {
+ font-weight: 600;
+ }
+ }
+ }
+
+ code, kbd, samp, pre {
+ font-family: @mono;
+ }
+
+ blockquote, pre {
+ background-color: rgba(128,128,128,0.05);
+ border-top-right-radius: 5px;
+ border-bottom-right-radius: 5px;
+ border-left: 8px solid rgba(128,128,128,0.075);
+ border-left-width: 10px;
+ }
+
+ blockquote {
+ margin: 0;
+ padding: 10px 20px;
+ font-weight: 300;
+ font-size: 1.1em;
+ }
+
+ pre {
+ padding: 4px;
+ font-size: .9em;
+ overflow-x: auto;
+ }
+
+ samp {
+ white-space: pre;
+ display: block;
+ overflow-x: auto;
+ }
+
+ kbd {
+ padding: .1em .6em;
+ border: 1px solid rgba(63,63,63,0.25);
+ box-shadow: 0 1px 0 rgba(63,63,63,0.25);
+ background-color: #fff;
+ color: #333;
+ border-radius: 3px;
+ display: inline-block;
+ margin: 0 .1em;
+ white-space: nowrap;
+ font-size: .78em;
+ }
+
+ *:not(pre) > code {
+ font-size: .8em;
+ white-space: nowrap;
+ color: #c25;
+ padding: 1px 3px;
+ background-color: #f7f7f9;
+ border: 1px solid #e1e1e8;
+ border-radius: 3px;
+ }
+
+ .comment-count {
+ font-size: .8em;
+ }
+
+ table {
+ border-collapse: collapse;
+ border-spacing: 0;
+
+ thead:first-child tr:first-child th {
+ border-top: 0;
+ }
+
+ th, td {
+ padding: 8px;
+ line-height: 20px;
+ vertical-align: top;
+ border-top: 1px solid #ddd;
+ }
+ }
+
+ table.highlighttable {
+ width: 100%;
+ table-layout: fixed;
+
+ td {
+ border-style: none;
+ padding: 0px;
+ }
+
+ td.linenos {
+ width: 2.5em;
+
+ pre {
+ padding-right: .8em;
+ background-color: inherit;
+ text-align: right;
+ }
+ }
+ }
+
+ // Add a bit of padding between each of the entry boxes in the Isso auth
+ // section. By default, they are squished together, which looks terrible.
+ section#isso-thread .auth-section .input-wrapper {
+ margin-right: 5px;
+ }
+
+ .toc {
+ margin-top: 2em;
+
+ .toctitle {
+ font-size: 1.3em
+ }
+
+ ul {
+ list-style: none;
+ padding-inline-start: 1rem;
+ }
+
+ > ul {
+ padding: 0;
+ }
+ }
+ }
+
+ footer {
+ padding-top: 4px;
+ border-top: @footer-border-color 1px solid;
+
+ p {
+ margin: 2px;
+ text-align: center;
+ padding: 0 40px 0 40px;
+ color: @footer-text-color;
+ font-size: 11px;
+ }
+
+ // Flex credits and theme selection separator
+ span.footer-separator {
+ margin: 0 6px;
+ }
+ }
+}
+
+.tag-cloud {
+ a {
+ background-color: @tag-bg;
+ padding: .2em .6em .2em;
+ font-size: .74em;
+ line-height: 1;
+ color: @tag-text-color;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: .25em;
+ }
+
+ a:hover {
+ background-color: @tag-hover-color;
+ }
+}
+
+a.btn,
+section#isso-thread section.auth-section p.post-action input {
+ background-color: @btn-bg;
+ padding: .6em .6em;
+ font-size: .8em;
+ line-height: 1;
+ color: @btn-text-color;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border: none;
+ border-radius: .25em;
+}
+
+a.btn:hover {
+ background-color: @btn-hover-color;
+}
+
+.center, .text-center {
+ text-align: center;
+}
+
+.img-center {
+ margin-left: auto;
+ margin-right: auto;
+ display: block;
+}
+
+.align-center {
+ margin-left: auto;
+ margin-right: auto;
+ display: block;
+}
+
+.float-left {
+ float: left;
+}
+
+.float-right {
+ float: right;
+}
+
+div.related-posts {
+ margin: 15px 0 15px 0;
+ padding-bottom: 20px;
+ border-top: @rel-post-border-color 1px solid;
+ border-bottom: @rel-post-border-color 1px solid;
+
+ h4 {
+ margin: 20px 0 25px 0;
+ }
+
+ ul {
+ font-size: 1.1em;
+ padding-left: 12px;
+
+ li {
+ padding: 4px 0 4px 0;
+ }
+ }
+}
+
+ul.list, ul.social, ul.related-posts {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+}
+
+ul.list {
+ padding: 1em 0 1em 0;
+
+ li {
+ padding: 4px;
+ }
+}
+
+ul.social {
+ font-size: 1.6em;
+ padding-top: 20px;
+
+ li {
+ display: inline;
+ }
+
+ a:hover {
+ z-index: 2;
+ -webkit-transform: translateY(-2px);
+ transform: translateY(-2px);
+ }
+
+ a {
+ display: inline-block;
+ width: 36px;
+ height: 36px;
+ border-radius: 100%;
+ text-align: center;
+ font-size: .8em;
+ line-height: 36px;
+ }
+
+ a.sc-facebook {
+ background-color: @facebook-bg-color;
+ }
+
+ a.sc-google {
+ background-color: @google-bg-color;
+ }
+
+ a.sc-instagram {
+ background-color: @instagram-bg-color;
+ }
+
+ a.sc-keybase {
+ background-color: @keybase-bg-color;
+ }
+
+ a.sc-pinterest {
+ background-color: @pinterest-bg-color;
+ }
+
+ a.sc-linkedin {
+ background-color: @linkedin-bg-color;
+ }
+
+ a.sc-medium {
+ background-color: @medium-bg-color;
+ }
+
+ a.sc-rss {
+ background-color: @rss-bg-color;
+ }
+
+ a.sc-stack-overflow {
+ background-color: @stack-overflow-bg-color;
+ }
+
+ a.sc-tumblr {
+ background-color: @tumblr-bg-color;
+ }
+
+ a.sc-twitch {
+ background-color: @twitch-bg-color;
+ }
+
+ a.sc-twitter {
+ background-color: @twitter-bg-color;
+ }
+
+ a.sc-youtube {
+ background-color: @youtube-bg-color;
+ }
+
+ a.sc-github, a.sc-github-alt {
+ background-color: @github-bg-color;
+ }
+
+ a.sc-at, a.sc-mailbox, a.sc-envelope {
+ background-color: @email-bg-color;
+ }
+
+ a.sc-reddit {
+ background-color: @reddit-bg-color;
+ }
+
+ a.sc-soundcloud {
+ background-color: @soundcloud-bg-color;
+ }
+
+ a.sc-gitlab {
+ background-color: @gitlab-bg-color;
+ }
+
+ a.sc-xing {
+ background-color: @xing-bg-color;
+ }
+
+ a.sc-bitbucket {
+ background-color: @bitbucket-bg-color;
+ }
+
+ a.sc-mastodon {
+ background-color: @mastodon-bg-color;
+ }
+
+ a.sc-diaspora {
+ color: @diaspora-color;
+ background-color: @diaspora-bg-color;
+ }
+
+ a.sc-flickr {
+ background-color: @flickr-bg-color;
+ }
+
+ a.sc-lastfm {
+ background-color: @lastfm-bg-color;
+ }
+}
+
+.ads-aside {
+ display: inline-block;
+ height: 90px;
+ width: 70%;
+}
+
+.ads-responsive {
+ display: inline-block;
+ margin: 6px 0 6px 0;
+ width: 90%;
+ height: 70px;
+ margin-left: 5%;
+}
+
+//
+// Desktop
+//
+
+@media screen and (min-width: 768px) {
+ aside {
+ width: 25vw;
+ height: 100vh;
+ position: fixed;
+ z-index: 1000;
+ top: 0;
+ left: 0;
+
+ div {
+ padding: 36px 18px;
+
+ nav {
+ ul {
+ li {
+ padding: 0 !important;
+ display: block;
+ }
+ }
+ }
+
+ ul.social {
+ padding-top: 32px;
+ }
+ }
+ }
+
+ main {
+ height: 100vh;
+ position: relative;
+ padding-left: 25vw;
+
+ article {
+ max-width: 760px;
+
+ ul.list {
+ li {
+ padding: 2px;
+ }
+ }
+ }
+ }
+
+ .ads-aside {
+ height: 250px;
+ }
+
+ .ads-responsive {
+ height: 90px;
+ }
+}
+
+// Admonition
+div.admonition {
+ margin-bottom: 2.5rem;
+ border-radius: 4px;
+ padding: 0.5em 1.25em 1.25em 1.25em;
+
+ p.admonition-title::before {
+ display: inline-block;
+ font-style: normal;
+ font-variant: normal;
+ text-rendering: auto;
+ font-family: "Font Awesome 5 Free";
+ }
+
+ p.admonition-title {
+ font-weight: 600;
+ line-height: 1.25em;
+ margin-bottom: 1.25em;
+ margin-top: inherit;
+ }
+
+ p, div, pre {
+ margin-bottom: 0;
+ }
+}
+
+div.admonition {
+ color: @admonition-generic-color;
+ background-color: @admonition-generic-bg-color;
+}
+
+div.admonition.attention {
+ p.admonition-title::before {
+ content: @admonition-attention-icon;
+ }
+
+ color: @admonition-attention-color;
+ background-color: @admonition-attention-bg-color;
+}
+
+div.admonition.caution {
+ p.admonition-title::before {
+ content: @admonition-caution-icon;
+ }
+
+ color: @admonition-caution-color;
+ background-color: @admonition-caution-bg-color;
+}
+
+div.admonition.danger {
+ p.admonition-title::before {
+ content: @admonition-danger-icon;
+ }
+
+ color: @admonition-danger-color;
+ background-color: @admonition-danger-bg-color;
+}
+
+div.admonition.error {
+ p.admonition-title::before {
+ content: @admonition-error-icon;
+ }
+
+ color: @admonition-error-color;
+ background-color: @admonition-error-bg-color;
+}
+
+div.admonition.hint {
+ p.admonition-title::before {
+ content: @admonition-hint-icon;
+ }
+
+ color: @admonition-hint-color;
+ background-color: @admonition-hint-bg-color;
+}
+
+div.admonition.important {
+ p.admonition-title::before {
+ content: @admonition-important-icon;
+ }
+
+ color: @admonition-important-color;
+ background-color: @admonition-important-bg-color;
+}
+
+div.admonition.note {
+ p.admonition-title::before {
+ content: @admonition-note-icon;
+ }
+
+ color: @admonition-note-color;
+ background-color: @admonition-note-bg-color;
+}
+
+div.admonition.tip {
+ p.admonition-title::before {
+ content: @admonition-tip-icon;
+ }
+
+ color: @admonition-tip-color;
+ background-color: @admonition-tip-bg-color;
+}
+
+div.admonition.warning {
+ p.admonition-title::before {
+ content: @admonition-warning-icon;
+ }
+
+ color: @admonition-warning-color;
+ background-color: @admonition-warning-bg-color;
+}
+
+figure,
+div.figure {
+ font-size: 90%;
+ color: @figure-color;
+
+ figcaption {
+ margin-top: 0.5em;
+ text-align: center;
+ color: @text-color;
+ }
+
+ img {
+ vertical-align: middle;
+ line-height: 1;
+ display: inline;
+ }
+
+ p {
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+
+ p.caption {
+ font-style: italic;
+ }
+
+ div.legend {
+ text-align: initial;
+ }
+}
+
+figure.align-left,
+div.figure.align-left {
+ text-align: left;
+}
+
+figure.align-center,
+div.figure.align-center {
+ text-align: center;
+}
+
+figure.align-right,
+div.figure.align-right {
+ text-align: right;
+}
+
+.github-corner:hover .octo-arm {
+ animation:octocat-wave 560ms ease-in-out;
+}
+
+@keyframes octocat-wave {
+ 0%,100% {
+ transform:rotate(0);
+ }
+ 20%,60% {
+ transform:rotate(-25deg);
+ }
+ 40%,80% {
+ transform:rotate(10deg);
+ }
+}
+
+@media (max-width:500px) {
+ .github-corner:hover .octo-arm {
+ animation:none;
+ }
+
+ .github-corner .octo-arm{
+ animation:octocat-wave 560ms ease-in-out;
+ }
+}
diff --git a/flex/static/stylesheet/style.min.css b/flex/static/stylesheet/style.min.css
new file mode 100644
index 0000000..18be363
--- /dev/null
+++ b/flex/static/stylesheet/style.min.css
@@ -0,0 +1 @@
+body,html{width:100%;height:100%}h1,h2,h3,h4,h5,h6{font-weight:300;line-height:1.1}h1{font-size:2.4em}h2{font-size:2em}h3{font-size:1.6em}h4{font-size:1.36em}h5{font-size:1.2em}h6{font-size:1.1em}body{margin:0;padding:0;background-color:#fff;color:#242121;font-family:Source Sans Pro,Roboto,Open Sans,Liberation Sans,DejaVu Sans,Verdana,Helvetica,Arial,sans-serif;font-size:1.02em;line-height:1.2em}a{color:#d9411e;text-decoration:none}a:hover{color:#ff5a09}hr{color:#eee;background-color:#eee;height:1px;border:none;margin-top:40px;margin-bottom:40px}img{max-width:100%}aside{background-color:#333;text-align:center}aside,aside a{color:#fff}aside a:hover{color:#eee}aside div{padding:20px;margin:0}aside div img{border-radius:50%;max-width:140px}aside div h1{margin:15px 0 5px}aside div p{margin:0 0 15px;font-size:.92em}aside nav ul li{display:inline;line-height:1.6em;font-size:1.28em;text-transform:lowercase}main nav{text-align:center;text-transform:uppercase;padding:14px 0;border-bottom:1px solid #eee;font-size:0}main .translations a,main nav a{font-size:12px;padding:0 4px;border-right:1px solid #eee}main .translations :last-child,main nav :last-child{border-right:none}main .neighbors{margin:4% 0;height:20px}main .pagination{margin:4% 8%;height:20px}main .social-share p{font-size:.8em}main article{margin:0 8% 2%}main article header h1,main article header h2{margin-bottom:0}main article header p{color:#999;font-size:.86em}main article header .translations{float:right}main article header .translations .active{font-weight:600}main article code,main article kbd,main article pre,main article samp{font-family:Source Code Pro,Consolas,Liberation Mono,DejaVu Sans Mono,monospace}main article blockquote,main article pre{background-color:hsla(0,0%,50%,.05);border-top-right-radius:5px;border-bottom-right-radius:5px;border-left:8px solid hsla(0,0%,50%,.075);border-left-width:10px}main article blockquote{margin:0;padding:10px 20px;font-weight:300;font-size:1.1em}main article pre{padding:4px;font-size:.9em;overflow-x:auto}main article samp{white-space:pre;display:block;overflow-x:auto}main article kbd{padding:.1em .6em;border:1px solid rgba(63,63,63,.25);box-shadow:0 1px 0 rgba(63,63,63,.25);background-color:#fff;color:#333;border-radius:3px;display:inline-block;margin:0 .1em;white-space:nowrap;font-size:.78em}main article :not(pre)>code{font-size:.8em;white-space:nowrap;color:#c25;padding:1px 3px;background-color:#f7f7f9;border:1px solid #e1e1e8;border-radius:3px}main article .comment-count{font-size:.8em}main article table{border-collapse:collapse;border-spacing:0}main article table thead:first-child tr:first-child th{border-top:0}main article table td,main article table th{padding:8px;line-height:20px;vertical-align:top;border-top:1px solid #ddd}main article table.highlighttable{width:100%;table-layout:fixed}main article table.highlighttable td{border-style:none;padding:0}main article table.highlighttable td.linenos{width:2.5em}main article table.highlighttable td.linenos pre{padding-right:.8em;background-color:inherit;text-align:right}main article section#isso-thread .auth-section .input-wrapper{margin-right:5px}main article .toc{margin-top:2em}main article .toc .toctitle{font-size:1.3em}main article .toc ul{list-style:none;padding-inline-start:1rem}main article .toc>ul{padding:0}main footer{padding-top:4px;border-top:1px solid #eee}main footer p{margin:2px;text-align:center;padding:0 40px;color:#999;font-size:11px}main footer span.footer-separator{margin:0 6px}.tag-cloud a{background-color:#d9411e;padding:.2em .6em;font-size:.74em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.tag-cloud a:hover{background-color:#ff5a09}a.btn,section#isso-thread section.auth-section p.post-action input{background-color:#d9411e;padding:.6em;font-size:.8em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border:none;border-radius:.25em}a.btn:hover{background-color:#ff5a09}.center,.text-center{text-align:center}.align-center,.img-center{margin-left:auto;margin-right:auto;display:block}.float-left{float:left}.float-right{float:right}div.related-posts{margin:15px 0;padding-bottom:20px;border-top:1px solid #eee;border-bottom:1px solid #eee}div.related-posts h4{margin:20px 0 25px}div.related-posts ul{font-size:1.1em;padding-left:12px}div.related-posts ul li{padding:4px 0}ul.list,ul.related-posts,ul.social{list-style-type:none;margin:0;padding:0}ul.list{padding:1em 0}ul.list li{padding:4px}ul.social{font-size:1.6em;padding-top:20px}ul.social li{display:inline}ul.social a:hover{z-index:1;transform:translateY(-2px)}ul.social a{display:inline-block;width:36px;height:36px;border-radius:100%;text-align:center;font-size:.8em;line-height:36px}ul.social a.sc-facebook{background-color:#3e5b98}ul.social a.sc-google{background-color:#d93e2d}ul.social a.sc-instagram{background-color:#125688}ul.social a.sc-keybase{background-color:#4c8dff}ul.social a.sc-pinterest{background-color:#c92619}ul.social a.sc-linkedin{background-color:#3371b7}ul.social a.sc-medium{background-color:#00ab6b}ul.social a.sc-rss{background-color:#f26109}ul.social a.sc-stack-overflow{background-color:#f90}ul.social a.sc-tumblr{background-color:#36465d}ul.social a.sc-twitch{background-color:#a970ff}ul.social a.sc-twitter{background-color:#4da7de}ul.social a.sc-youtube{background-color:#e02a20}ul.social a.sc-github,ul.social a.sc-github-alt{background-color:#111010}ul.social a.sc-at,ul.social a.sc-envelope,ul.social a.sc-mailbox{background-color:#578ad6}ul.social a.sc-reddit{background-color:#ff4500}ul.social a.sc-soundcloud{background-color:#f50}ul.social a.sc-gitlab{background-color:#fca326}ul.social a.sc-xing{background-color:#007575}ul.social a.sc-bitbucket{background-color:#0747a6}ul.social a.sc-mastodon{background-color:#3088d4}ul.social a.sc-diaspora{color:#000;background-color:#d5d5d5}ul.social a.sc-flickr{background-color:#ff0084}ul.social a.sc-lastfm{background-color:#d92323}.ads-aside{display:inline-block;height:90px;width:70%}.ads-responsive{display:inline-block;margin:6px 0;width:90%;height:70px;margin-left:5%}@media screen and (min-width:768px){aside{width:25vw;height:100vh;position:fixed;z-index:2;top:0;left:0}aside div{padding:36px 18px}aside div nav ul li{padding:0!important;display:block}aside div ul.social{padding-top:32px}main{height:100vh;position:relative;padding-left:25vw}main article{max-width:760px}main article ul.list li{padding:2px}.ads-aside{height:250px}.ads-responsive{height:90px}}div.admonition{margin-bottom:2.5rem;border-radius:4px;padding:.5em 1.25em 1.25em}div.admonition p.admonition-title:before{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;font-family:Font Awesome\ 5 Free}div.admonition p.admonition-title{font-weight:600;line-height:1.25em;margin-bottom:1.25em;margin-top:inherit}div.admonition div,div.admonition p,div.admonition pre{margin-bottom:0}div.admonition{color:#242121;background-color:#ccc}div.admonition.attention{color:#856404;background-color:#fff3cd}div.admonition.attention p.admonition-title:before{content:"\f071\00a0 "}div.admonition.caution{color:#856404;background-color:#fff3cd}div.admonition.caution p.admonition-title:before{content:"\f071\00a0 "}div.admonition.danger{color:#721c24;background-color:#f8d7da}div.admonition.danger p.admonition-title:before{content:"\f06a\00a0 "}div.admonition.error{color:#721c24;background-color:#f8d7da}div.admonition.error p.admonition-title:before{content:"\f06a\00a0 "}div.admonition.hint{color:#004085;background-color:#cce5ff}div.admonition.hint p.admonition-title:before{content:"\f0eb\00a0 "}div.admonition.important{color:#155724;background-color:#d4edda}div.admonition.important p.admonition-title:before{content:"\f05a\00a0 "}div.admonition.note{color:#155724;background-color:#d4edda}div.admonition.note p.admonition-title:before{content:"\f05a\00a0 "}div.admonition.tip{color:#004085;background-color:#cce5ff}div.admonition.tip p.admonition-title:before{content:"\f0eb\00a0 "}div.admonition.warning{color:#856404;background-color:#fff3cd}div.admonition.warning p.admonition-title:before{content:"\f071\00a0 "}div.figure,figure{font-size:90%;color:#6c757d}div.figure figcaption,figure figcaption{margin-top:.5em;text-align:center;color:#242121}div.figure img,figure img{vertical-align:middle;line-height:1;display:inline}div.figure p,figure p{margin-top:0;margin-bottom:0}div.figure p.caption,figure p.caption{font-style:italic}div.figure div.legend,figure div.legend{text-align:initial}div.figure.align-left,figure.align-left{text-align:left}div.figure.align-center,figure.align-center{text-align:center}div.figure.align-right,figure.align-right{text-align:right}.github-corner:hover .octo-arm{animation:a .56s ease-in-out}@keyframes a{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:a .56s ease-in-out}}
\ No newline at end of file
diff --git a/flex/static/stylesheet/variables.less b/flex/static/stylesheet/variables.less
new file mode 100644
index 0000000..aac8565
--- /dev/null
+++ b/flex/static/stylesheet/variables.less
@@ -0,0 +1,148 @@
+// Flex colors
+@orange: #D9411E;
+@light-orange: #FF5A09;
+@white: #ffffff;
+@grey: #333333;
+@light-grey: #eeeeee;
+@med-grey: #999999;
+@dark-grey: #242121;
+@solid-dark-grey: #222222;
+@very-dark-grey: #1a1a1a;
+
+// Font family
+@sans: 'Source Sans Pro', 'Roboto', 'Open Sans', 'Liberation Sans', 'DejaVu Sans', 'Verdana', 'Helvetica', 'Arial', sans-serif;
+@mono: 'Source Code Pro', 'Consolas', 'Liberation Mono', 'DejaVu Sans Mono', monospace;
+
+// Body
+@body-bg: @white;
+@body-bg-dark-theme: @grey;
+@text-color: @dark-grey;
+@text-color-dark-theme: @light-grey;
+
+// Links
+@link-color: @orange;
+@link-hover-color: @light-orange;
+
+// Sidebar (aside)
+@sidebar-bg: @grey;
+@sidebar-bg-dark-theme: @solid-dark-grey;
+@sidebar-text-color: @white;
+@sidebar-link-color: @white;
+@sidebar-link-hover-color: @light-grey;
+
+// Buttons
+@btn-bg: @orange;
+@btn-text-color: @white;
+@btn-hover-color: @light-orange;
+
+// Tag cloud
+@tag-bg: @orange;
+@tag-text-color: @white;
+@tag-hover-color: @light-orange;
+
+// Header
+@header-text-color: @med-grey;
+
+// Footer
+@footer-text-color: @med-grey;
+@footer-border-color: @light-grey;
+@footer-border-color-dark-theme: @solid-dark-grey;
+
+// Relative posts
+@rel-post-border-color: @light-grey;
+@rel-post-border-color-dark-theme: @solid-dark-grey;
+
+// Nav
+@nav-border-color: @light-grey;
+@nav-border-color-dark-theme: @solid-dark-grey;
+
+// Social buttons
+
+@email-bg-color: #578ad6;
+@facebook-bg-color: #3e5b98;
+@github-bg-color: #111010;
+@google-bg-color: #d93e2d;
+@instagram-bg-color: #125688;
+@keybase-bg-color: #4c8dff;
+@linkedin-bg-color: #3371b7;
+@medium-bg-color: #00ab6b;
+@pinterest-bg-color: #c92619;
+@reddit-bg-color: #ff4500;
+@rss-bg-color: #f26109;
+@soundcloud-bg-color: #ff5500;
+@stack-overflow-bg-color: #ff9900;
+@tumblr-bg-color: #36465d;
+@twitch-bg-color: #a970ff;
+@twitter-bg-color: #4da7de;
+@youtube-bg-color: #e02a20;
+@gitlab-bg-color: #fca326;
+@xing-bg-color: #007575;
+@bitbucket-bg-color: #0747A6;
+@mastodon-bg-color: #3088d4;
+@diaspora-color: #000000;
+@diaspora-bg-color: #D5D5D5;
+@flickr-bg-color: #ff0084;
+@lastfm-bg-color: #d92323;
+
+// Admonition colors
+@admonition-generic-color: @dark-grey;
+@admonition-generic-color-dark-theme: @light-grey;
+@admonition-generic-bg-color: #cccccc;
+@admonition-generic-bg-color-dark-theme: #404040;
+
+@admonition-attention-color: #856404;
+@admonition-attention-color-dark-theme: #fbda7a;
+@admonition-attention-bg-color: #fff3cd;
+@admonition-attention-bg-color-dark-theme: #4a3900;
+@admonition-attention-icon: "\f071\00a0 ";
+
+@admonition-caution-color: @admonition-attention-color;
+@admonition-caution-color-dark-theme: @admonition-attention-color-dark-theme;
+@admonition-caution-bg-color: @admonition-attention-bg-color;
+@admonition-caution-bg-color-dark-theme: @admonition-attention-bg-color-dark-theme;
+@admonition-caution-icon: @admonition-attention-icon;
+
+@admonition-warning-color: @admonition-attention-color;
+@admonition-warning-color-dark-theme: @admonition-attention-color-dark-theme;
+@admonition-warning-bg-color: @admonition-attention-bg-color;
+@admonition-warning-bg-color-dark-theme: @admonition-attention-bg-color-dark-theme;
+@admonition-warning-icon: @admonition-attention-icon;
+
+@admonition-danger-color: #721c24;
+@admonition-danger-color-dark-theme: #ebadb3;
+@admonition-danger-bg-color: #f8d7da;
+@admonition-danger-bg-color-dark-theme: #28070a;
+@admonition-danger-icon: "\f06a\00a0 ";
+
+@admonition-error-color: @admonition-danger-color;
+@admonition-error-color-dark-theme: @admonition-danger-color-dark-theme;
+@admonition-error-bg-color: @admonition-danger-bg-color;
+@admonition-error-bg-color-dark-theme: @admonition-danger-bg-color-dark-theme;
+@admonition-error-icon: @admonition-danger-icon;
+
+@admonition-hint-color: #004085 ;
+@admonition-hint-color-dark-theme: #7abaff;
+@admonition-hint-bg-color: #cce5ff;
+@admonition-hint-bg-color-dark-theme: #001933;
+@admonition-hint-icon: "\f0eb\00a0 ";
+
+@admonition-tip-color: @admonition-hint-color;
+@admonition-tip-color-dark-theme: @admonition-hint-color-dark-theme;
+@admonition-tip-bg-color: @admonition-hint-bg-color;
+@admonition-tip-bg-color-dark-theme: @admonition-hint-bg-color-dark-theme;
+@admonition-tip-icon: @admonition-hint-icon;
+
+@admonition-important-color: #155724;
+@admonition-important-color-dark-theme: #a8eab7;
+@admonition-important-bg-color: #d4edda;
+@admonition-important-bg-color-dark-theme: #122b18;
+@admonition-important-icon: "\f05a\00a0 ";
+
+@admonition-note-color: @admonition-important-color;
+@admonition-note-color-dark-theme: @admonition-important-color-dark-theme;
+@admonition-note-bg-color: @admonition-important-bg-color;
+@admonition-note-bg-color-dark-theme: @admonition-important-bg-color-dark-theme;
+@admonition-note-icon: @admonition-important-icon;
+
+@figure-color: #6c757d;
+@figure-color-dark-theme: #bfbfbf;
diff --git a/flex/static/tipuesearch/jquery.min.js b/flex/static/tipuesearch/jquery.min.js
new file mode 100644
index 0000000..644d35e
--- /dev/null
+++ b/flex/static/tipuesearch/jquery.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S),
+a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/
+
+
+ {% endif %}
+
+
+ {{ article.content }}
+
+
+
+ {% if article.tags %}
+ {% for tag in article.tags %}
+ {{ tag }}
+ {% endfor %}
+ {% endif %}
+
+
+
+ {% if ADD_THIS_ID %}
+
+
{{ _('Like this article? Share it with your friends!') }}
+
+
+
+
+ {% endif %}
+
+ {% include "partial/neighbors.html" %}
+
+ {% if article.related_posts %}
+
+
{{ _('You might enjoy') }}
+
+
+ {% elif ADD_THIS_ID %}
+
+ {% endif %}
+
+ {% if article.series %}
+
+ {% set text = SERIES_TEXT|default('Part %(index)s of the %(name)s series') %}
+
{{ text|format(index=article.series.index, name=article.series.name) }}
+ {% if article.series.all_previous %}
+
Previous articles
+
+ {% endif %}
+ {% if article.series.all_next %}
+
Next articles
+
+ {% endif %}
+
+ {% endif %}
+
+ {% if GOOGLE_ADSENSE and GOOGLE_ADSENSE.ads.article_bottom %}
+
+
+
+ {% endif %}
+
+ {% include "partial/disqus.html" %}
+ {% include "partial/isso.html" %}
+
+{% endblock %}
diff --git a/flex/templates/author.html b/flex/templates/author.html
new file mode 100644
index 0000000..8de5722
--- /dev/null
+++ b/flex/templates/author.html
@@ -0,0 +1,3 @@
+{% extends "index.html" %}
+{% block title %} – {{ _('Posts by %(name)s', name=author) }}:{% endblock %}
+{% set summarise = True %}
diff --git a/flex/templates/authors.html b/flex/templates/authors.html
new file mode 100644
index 0000000..ee8449b
--- /dev/null
+++ b/flex/templates/authors.html
@@ -0,0 +1,18 @@
+{% extends "base.html" %}
+
+{% block title %} – {{ _('Authors') }}{% endblock %}
+
+{% block content %}
+
+
+
+
+ {% for author, articles in authors|sort %}
+ - {{ author }} ({{ articles|count }})
+ {% endfor %}
+
+
+
+{% endblock %}
diff --git a/flex/templates/base.html b/flex/templates/base.html
new file mode 100644
index 0000000..47090fd
--- /dev/null
+++ b/flex/templates/base.html
@@ -0,0 +1,189 @@
+{% if 'jinja2.ext.i18n' not in JINJA_ENVIRONMENT.extensions %}
+ {%- macro _(msg) -%}
+ {{ msg % kwargs }}
+ {%- endmacro -%}
+{% endif %}
+
+
+
+
+
+
+
+
+ {% if page in hidden_pages %}
+
+ {% else %}
+
+ {% endif %}
+
+ {% if USE_GOOGLE_FONTS != False %}
+
+ {% endif %}
+
+ {% if USE_LESS %}
+
+
+ {% else %}
+
+ {% endif %}
+
+ {# DARK THEME STYLES #}
+ {% if THEME_COLOR == "dark" or THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE or THEME_COLOR_ENABLE_USER_OVERRIDE %}
+
+ {% endif %}
+
+ {# PYGMENTS STYLES #}
+ {% if THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE or THEME_COLOR_ENABLE_USER_OVERRIDE or THEME_COLOR == "dark" %}
+
+ {% endif %}
+ {% if THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE or not THEME_COLOR or THEME_COLOR == "light" %}
+
+ {% endif %}
+
+ {% if PLUGINS and ('tipue_search' in PLUGINS or 'pelican.plugins.tipue_search' in PLUGINS) %}
+ {% if USE_GOOGLE_FONTS != False %}
+
+ {% endif %}
+
+ {% endif %}
+
+ {% if 'pelican.plugins.search' in PLUGINS %}
+
+ {% endif %}
+
+
+
+
+
+ {% if CUSTOM_CSS %}
+
+ {% endif %}
+
+ {% include "partial/icon.html" %}
+
+ {% include "partial/color.html" %}
+
+ {% include "partial/feed.html" %}
+
+ {% include "partial/ga.html" %}
+ {% include "partial/ggst.html" %}
+
+
+ {% include "partial/plausible.html" %}
+
+ {% if PGP_KEY %}
+
+ {% endif %}
+
+ {% if WEBMENTION_URL %}
+
+ {% endif %}
+
+ {% if PINGBACK_URL %}
+
+ {% endif %}
+
+ {% if not PLUGINS or 'seo' not in PLUGINS %}
+ {% if REL_CANONICAL %}
+ {% if page %}
+
+ {% elif article %}
+
+ {% elif page_name == 'index' and not articles_previous_page %}
+
+ {% elif author or category or tag or page_name == 'index' %}
+
+ {% else %}
+
+ {% endif %}
+ {% endif %}
+ {% endif %}
+
+ {% block meta %}
+
+
+ {% include "partial/og.html" %}
+ {% endblock %}
+
+ {{ SITENAME }}{% block title %}{% endblock %}
+
+ {% if GOOGLE_ADSENSE and GOOGLE_ADSENSE.page_level_ads %}
+
+
+ {% endif %}
+
+ {% include "partial/gtm.html" %}
+ {% include "partial/clarity.html" %}
+
+
+ {% include "partial/gtm_noscript.html" %}
+
+ {% include "partial/sidebar.html" %}
+
+
+ {% if GOOGLE_ADSENSE and GOOGLE_ADSENSE.ads.main_menu %}
+
+
+
+ {% endif %}
+
+ {% include "partial/nav.html" %}
+
+ {% block content %}
+ {% endblock %}
+
+ {% include "partial/footer.html" %}
+
+
+ {% include "partial/jsonld.html" %}
+ {% include "partial/guages.html" %}
+ {% include "partial/addthis.html" %}
+ {% include "partial/matomo.html" %}
+ {% include 'partial/github.html' %}
+ {% include 'partial/stork.html' %}
+ {% include 'partial/cf_analytics.html' %}
+
+ {% block additional_js %}{% endblock %}
+
+
diff --git a/flex/templates/categories.html b/flex/templates/categories.html
new file mode 100644
index 0000000..eeaa841
--- /dev/null
+++ b/flex/templates/categories.html
@@ -0,0 +1,20 @@
+{% extends "base.html" %}
+
+{% block title %} – {{ _('Categories') }}{% endblock %}
+
+{% block content %}
+
+
+ {{ _('Categories') }}
+
+
+
+ {% for category, articles in categories|sort %}
+ -
+ {{ category }} ({{ articles|count }})
+
+ {% endfor %}
+
+
+
+{% endblock %}
diff --git a/flex/templates/category.html b/flex/templates/category.html
new file mode 100644
index 0000000..9730575
--- /dev/null
+++ b/flex/templates/category.html
@@ -0,0 +1,3 @@
+{% extends "index.html" %}
+{% block title %} – {{ _('Category %(name)s', name=category) }}{% endblock %}
+{% set summarise = True %}
diff --git a/flex/templates/index.html b/flex/templates/index.html
new file mode 100644
index 0000000..5a07642
--- /dev/null
+++ b/flex/templates/index.html
@@ -0,0 +1,71 @@
+{% extends "base.html" %}
+
+{% block content %}
+
+{% if GOOGLE_ADSENSE and GOOGLE_ADSENSE.ads.index_top %}
+
+
+
+{% endif %}
+
+{% for article in articles_page.object_list %}
+
+
+
+
+ {{ _('Posted on %(when)s in %(category)s',
+ when=article.locale_date,
+ category='%s'|format(SITEURL, article.category.url, article.category)|safe) }}
+
+ {% if article.tags and not HOME_HIDE_TAGS %}
+ • {{ _('Tagged with') }}
+ {% for tag in article.tags %}
+ {{ tag }}{% if not loop.last %},{% endif %}
+ {% endfor %}
+ {% endif %}
+
+ {% if PLUGINS and 'post_stats' in PLUGINS %}
+ • {{ _('%(minutes)s min read', minutes=article.stats['read_mins']) }}
+ {% endif %}
+
+
+
+ {% if summarise or article.metadata['summary'] or SUMMARY_MAX_LENGTH %}
+ {% if article.featured_image %}
+

+ {% endif %}
+
{{ article.summary }}
+ {% if article.content != article.summary %}
+
+
+ {{ _('Continue reading') }}
+
+ {% endif %}
+ {% else %}
+ {{ article.content }}
+ {% endif %}
+
+ {% if not loop.last %}
+
+ {% endif %}
+
+{% endfor %}
+
+{% include "partial/pagination.html" %}
+
+{% if GOOGLE_ADSENSE and GOOGLE_ADSENSE.ads.index_bottom %}
+
+
+
+{% endif %}
+
+{% endblock %}
diff --git a/flex/templates/page.html b/flex/templates/page.html
new file mode 100644
index 0000000..cf276f7
--- /dev/null
+++ b/flex/templates/page.html
@@ -0,0 +1,29 @@
+{% extends "base.html" %}
+
+{% block meta %}
+{{ super() }}
+
+{% if page.translations -%}
+
+{% for p in page.translations %}
+
+{% endfor %}
+{% endif %}
+{% endblock %}
+
+{% block title %} – {{ page.title|striptags|escape }}{% endblock %}
+
+{% block content %}
+
+
+ {% import 'partial/translations.html' as translations with context %}
+ {{ translations.translations_for(page) }}
+ {{ page.title }}
+
+
+ {% block before_content %}{% endblock %}
+ {% block page_content %}{{ page.content }}{% endblock %}
+ {% block after_content %}{% endblock %}
+
+
+{% endblock %}
diff --git a/flex/templates/partial/addthis.html b/flex/templates/partial/addthis.html
new file mode 100644
index 0000000..7d8bc97
--- /dev/null
+++ b/flex/templates/partial/addthis.html
@@ -0,0 +1,3 @@
+{% if ADD_THIS_ID %}
+
+{% endif %}
diff --git a/flex/templates/partial/cc_license.html b/flex/templates/partial/cc_license.html
new file mode 100644
index 0000000..756cc49
--- /dev/null
+++ b/flex/templates/partial/cc_license.html
@@ -0,0 +1,31 @@
+
+ {% set cc_slug = CC_LICENSE['slug'] %}
+ {% set cc_name = CC_LICENSE['name'] %}
+ {% set cc_version = CC_LICENSE['version'] %}
+ {% set cc_lang = CC_LICENSE['language'] or "en_US" %}
+ {% set cc_url = "http://creativecommons.org/licenses/{}/{}/deed.{}".format(cc_slug, cc_version, cc_lang) %}
+ © {{ COPYRIGHT_YEAR }} {{ COPYRIGHT_NAME }} - {{ _('This work is licensed under a %(cc)s',
+ cc='{}'.format(cc_url, cc_name)|safe) }}
+
+{% include "partial/flex.html" %}
+
+ {% if CC_LICENSE['icon'] != False %}
+
+
+
+ {% endif %}
+ {% if STATUSCAKE %}
+ {% include "partial/statuscake.html" %}
+ {% endif %}
+
diff --git a/flex/templates/partial/cf_analytics.html b/flex/templates/partial/cf_analytics.html
new file mode 100644
index 0000000..2c21486
--- /dev/null
+++ b/flex/templates/partial/cf_analytics.html
@@ -0,0 +1,6 @@
+{% if CLOUDFLARE_WEB_ANALYTICS_TOKEN %}
+
+{% endif %}
diff --git a/flex/templates/partial/clarity.html b/flex/templates/partial/clarity.html
new file mode 100644
index 0000000..59dbb90
--- /dev/null
+++ b/flex/templates/partial/clarity.html
@@ -0,0 +1,9 @@
+{% if MICROSOFT_CLARITY %}
+
+{% endif %}
diff --git a/flex/templates/partial/color.html b/flex/templates/partial/color.html
new file mode 100644
index 0000000..e715c90
--- /dev/null
+++ b/flex/templates/partial/color.html
@@ -0,0 +1,11 @@
+{% if BROWSER_COLOR %}
+
+
+
+
+
+
+
+
+
+{% endif %}
diff --git a/flex/templates/partial/copyright.html b/flex/templates/partial/copyright.html
new file mode 100644
index 0000000..5521ef3
--- /dev/null
+++ b/flex/templates/partial/copyright.html
@@ -0,0 +1,5 @@
+© {{ COPYRIGHT_YEAR }} {{ COPYRIGHT_NAME }}
+{% include "partial/flex.html" %}
+{% if STATUSCAKE %}
+ {% include "partial/statuscake.html" %}
+{% endif %}
diff --git a/flex/templates/partial/disqus.html b/flex/templates/partial/disqus.html
new file mode 100644
index 0000000..bcc35fc
--- /dev/null
+++ b/flex/templates/partial/disqus.html
@@ -0,0 +1,16 @@
+{% if DISQUS_SITENAME %}
+
+
+
+
+
+{% endif %}
diff --git a/flex/templates/partial/feed.html b/flex/templates/partial/feed.html
new file mode 100644
index 0000000..28a836a
--- /dev/null
+++ b/flex/templates/partial/feed.html
@@ -0,0 +1,7 @@
+{% if FEED_ALL_ATOM %}
+
+{% endif %}
+
+{% if FEED_ALL_RSS %}
+
+{% endif %}
diff --git a/flex/templates/partial/flex.html b/flex/templates/partial/flex.html
new file mode 100644
index 0000000..a920fd6
--- /dev/null
+++ b/flex/templates/partial/flex.html
@@ -0,0 +1,22 @@
+
+{{
+ _('Built with %(pelican_url)s using %(flex_url)s theme',
+ pelican_url='Pelican',
+ flex_url='Flex'|safe)
+}}
+{% if THEME_COLOR_ENABLE_USER_OVERRIDE %}
+
+ {{
+ _('Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme',
+ dark_url='dark',
+ light_url='light',
+ browser_url='browser'|safe)
+ }}
+
+{% endif %}
+
diff --git a/flex/templates/partial/footer.html b/flex/templates/partial/footer.html
new file mode 100644
index 0000000..6c559b3
--- /dev/null
+++ b/flex/templates/partial/footer.html
@@ -0,0 +1,7 @@
+
diff --git a/flex/templates/partial/ga.html b/flex/templates/partial/ga.html
new file mode 100644
index 0000000..fcf5c70
--- /dev/null
+++ b/flex/templates/partial/ga.html
@@ -0,0 +1,11 @@
+{% if GOOGLE_ANALYTICS %}
+
+{% endif %}
diff --git a/flex/templates/partial/ggst.html b/flex/templates/partial/ggst.html
new file mode 100644
index 0000000..c306b04
--- /dev/null
+++ b/flex/templates/partial/ggst.html
@@ -0,0 +1,10 @@
+{% if GOOGLE_GLOBAL_SITE_TAG %}
+
+
+{% endif %}
diff --git a/flex/templates/partial/github.html b/flex/templates/partial/github.html
new file mode 100644
index 0000000..f417383
--- /dev/null
+++ b/flex/templates/partial/github.html
@@ -0,0 +1,20 @@
+{% if GITHUB_CORNER_URL %}
+
+
+
+{% endif %}
diff --git a/flex/templates/partial/gtm.html b/flex/templates/partial/gtm.html
new file mode 100644
index 0000000..8bc0135
--- /dev/null
+++ b/flex/templates/partial/gtm.html
@@ -0,0 +1,12 @@
+{% if GOOGLE_TAG_MANAGER %}
+
+{% endif %}
diff --git a/flex/templates/partial/gtm_noscript.html b/flex/templates/partial/gtm_noscript.html
new file mode 100644
index 0000000..5cc4ec8
--- /dev/null
+++ b/flex/templates/partial/gtm_noscript.html
@@ -0,0 +1,5 @@
+{% if GOOGLE_TAG_MANAGER %}
+
+{% endif %}
diff --git a/flex/templates/partial/guages.html b/flex/templates/partial/guages.html
new file mode 100644
index 0000000..5b77010
--- /dev/null
+++ b/flex/templates/partial/guages.html
@@ -0,0 +1,17 @@
+{% if GUAGES %}
+
+{% endif %}
+
diff --git a/flex/templates/partial/icon.html b/flex/templates/partial/icon.html
new file mode 100644
index 0000000..414d516
--- /dev/null
+++ b/flex/templates/partial/icon.html
@@ -0,0 +1,4 @@
+{% if FAVICON %}
+
+
+{% endif %}
diff --git a/flex/templates/partial/isso.html b/flex/templates/partial/isso.html
new file mode 100644
index 0000000..afc4692
--- /dev/null
+++ b/flex/templates/partial/isso.html
@@ -0,0 +1,23 @@
+{% if ISSO_URL %}
+
+
+
+
+
+{% endif %}
diff --git a/flex/templates/partial/jsonld.html b/flex/templates/partial/jsonld.html
new file mode 100644
index 0000000..e63c339
--- /dev/null
+++ b/flex/templates/partial/jsonld.html
@@ -0,0 +1,10 @@
+
diff --git a/flex/templates/partial/jsonld_article.html b/flex/templates/partial/jsonld_article.html
new file mode 100644
index 0000000..c4ba80e
--- /dev/null
+++ b/flex/templates/partial/jsonld_article.html
@@ -0,0 +1,25 @@
+{% if not PLUGINS or 'seo' not in PLUGINS or 'pelican.plugins.seo' not in PLUGINS%}
+ {% if SITELOGO %}
+ {% set default_cover = SITELOGO %}
+ {% else %}
+ {% set default_cover = '{{ SITEURL }}/{{ THEME_STATIC_DIR }}/img/profile.png' %}
+ {% endif %}
+
+{% endif %}
diff --git a/flex/templates/partial/matomo.html b/flex/templates/partial/matomo.html
new file mode 100644
index 0000000..3613173
--- /dev/null
+++ b/flex/templates/partial/matomo.html
@@ -0,0 +1,15 @@
+{% if (PIWIK_URL and PIWIK_SITE_ID) or (MATOMO_URL and MATOMO_SITE_ID) %}
+
+
+{% endif %}
diff --git a/flex/templates/partial/nav.html b/flex/templates/partial/nav.html
new file mode 100644
index 0000000..74031eb
--- /dev/null
+++ b/flex/templates/partial/nav.html
@@ -0,0 +1,17 @@
+{% if MAIN_MENU %}
+
+{% endif %}
diff --git a/flex/templates/partial/neighbors.html b/flex/templates/partial/neighbors.html
new file mode 100644
index 0000000..65bfada
--- /dev/null
+++ b/flex/templates/partial/neighbors.html
@@ -0,0 +1,14 @@
+{% if PLUGINS and ('neighbors' in PLUGINS or 'pelican.plugins.neighbors' in PLUGINS) %}
+
+{% endif %}
diff --git a/flex/templates/partial/og.html b/flex/templates/partial/og.html
new file mode 100644
index 0000000..3fc5d67
--- /dev/null
+++ b/flex/templates/partial/og.html
@@ -0,0 +1,16 @@
+{% if not PLUGINS or 'seo' not in PLUGINS or 'pelican.plugins.seo' not in PLUGINS %}
+ {% if OG_LOCALE %}
+ {% set default_locale = OG_LOCALE %}
+ {% else %}
+ {% set default_locale = 'en_US' %}
+ {% endif %}
+
+
+
+
+
+
+ {% if SITELOGO %}
+
+ {% endif %}
+{% endif %}
diff --git a/flex/templates/partial/og_article.html b/flex/templates/partial/og_article.html
new file mode 100644
index 0000000..2039946
--- /dev/null
+++ b/flex/templates/partial/og_article.html
@@ -0,0 +1,25 @@
+{% if not PLUGINS or 'seo' not in PLUGINS or 'pelican.plugins.seo' not in PLUGINS %}
+ {% if OG_LOCALE %}
+ {% set default_locale = OG_LOCALE %}
+ {% else %}
+ {% set default_locale = 'en_US' %}
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
+ {% for tag in article.tags %}
+
+ {% endfor %}
+ {% if 'cover' in article.metadata %}
+
+ {% else %}
+
+ {% endif %}
+{% endif %}
diff --git a/flex/templates/partial/pagination.html b/flex/templates/partial/pagination.html
new file mode 100644
index 0000000..3ec7fb1
--- /dev/null
+++ b/flex/templates/partial/pagination.html
@@ -0,0 +1,14 @@
+{% if DEFAULT_PAGINATION %}
+
+{% endif %}
diff --git a/flex/templates/partial/plausible.html b/flex/templates/partial/plausible.html
new file mode 100644
index 0000000..13a2d1e
--- /dev/null
+++ b/flex/templates/partial/plausible.html
@@ -0,0 +1,3 @@
+{% if PLAUSIBLE_DOMAIN %}
+
+{% endif %}
diff --git a/flex/templates/partial/sidebar.html b/flex/templates/partial/sidebar.html
new file mode 100644
index 0000000..7f30501
--- /dev/null
+++ b/flex/templates/partial/sidebar.html
@@ -0,0 +1,97 @@
+
diff --git a/flex/templates/partial/statuscake.html b/flex/templates/partial/statuscake.html
new file mode 100644
index 0000000..162a412
--- /dev/null
+++ b/flex/templates/partial/statuscake.html
@@ -0,0 +1,12 @@
+
+{% if STATUSCAKE['trackid'] %}
+
+
+
+{% endif %}
+
+{% if STATUSCAKE['rumid'] %}
+
+
+{% endif %}
+
diff --git a/flex/templates/partial/stork.html b/flex/templates/partial/stork.html
new file mode 100644
index 0000000..10f3e09
--- /dev/null
+++ b/flex/templates/partial/stork.html
@@ -0,0 +1,15 @@
+{% if 'pelican.plugins.search' in PLUGINS %}
+
+ {% if STORK_VERSION %}
+
+ {% else %}
+
+ {% endif %}
+{% endif %}
diff --git a/flex/templates/partial/translations.html b/flex/templates/partial/translations.html
new file mode 100644
index 0000000..9c5e4fd
--- /dev/null
+++ b/flex/templates/partial/translations.html
@@ -0,0 +1,10 @@
+{% macro translations_for(article) %}
+ {% if article.translations %}
+
+ {% endif %}
+{% endmacro %}
diff --git a/flex/templates/period_archives.html b/flex/templates/period_archives.html
new file mode 100644
index 0000000..24f494e
--- /dev/null
+++ b/flex/templates/period_archives.html
@@ -0,0 +1,24 @@
+{% extends "base.html" %}
+{% block title %} – {{ _('Archives') }}{% endblock %}
+
+{% block content %}
+
+
+
+
+ {% set previous_date = False %}
+
+ {% for article in dates %}
+ {% if article.locale_date != previous_date %}
+ {% set previous_date = article.locale_date %}
+ - {{ article.locale_date }}
+ {% endif %}
+
+ - {{ article.title }}
+ {% endfor %}
+
+
+
+{% endblock %}
diff --git a/flex/templates/search.html b/flex/templates/search.html
new file mode 100644
index 0000000..4ffd6c7
--- /dev/null
+++ b/flex/templates/search.html
@@ -0,0 +1,26 @@
+{% if PLUGINS and ('tipue_search' in PLUGINS or 'pelican.plugins.tipue_search' in PLUGINS) %}
+{% extends 'base.html' %}
+{% block title %}{{ _('Search') }} - {{ SITENAME|striptags }}{% endblock title %}
+{% block content %}
+
+
+
+ {{ _('Search Results') }}
+
+
+
+{% endblock content %} {% block additional_js %}
+
+
+
+
+
+{% endblock %} {% endif %}
diff --git a/flex/templates/tag.html b/flex/templates/tag.html
new file mode 100644
index 0000000..2bc967a
--- /dev/null
+++ b/flex/templates/tag.html
@@ -0,0 +1,3 @@
+{% extends "index.html" %}
+{% block title %} – {{ _('Tag %(name)s', name=tag) }}{% endblock %}
+{% set summarise = True %}
diff --git a/flex/templates/tags.html b/flex/templates/tags.html
new file mode 100644
index 0000000..16a6e83
--- /dev/null
+++ b/flex/templates/tags.html
@@ -0,0 +1,18 @@
+{% extends "base.html" %}
+
+{% block title %} – {{ _('Tags') }}{% endblock %}
+
+{% block content %}
+
+
+
+
+ {%- for tag, articles in tags|sort %}
+ - {{ tag }} ({{ articles|count }})
+ {% endfor %}
+
+
+
+{% endblock %}
diff --git a/flex/tox.ini b/flex/tox.ini
new file mode 100644
index 0000000..142865b
--- /dev/null
+++ b/flex/tox.ini
@@ -0,0 +1,16 @@
+[tox]
+envlist = py{36,37,38,39}
+skipsdist = True
+
+[gh-actions]
+python =
+ 3.6: py36
+ 3.7: py37
+ 3.8: py38
+ 3.9: py39
+
+[testenv]
+deps =
+ -r docs/requirements.txt
+commands =
+ pelican -s docs/pelicanconf.py
diff --git a/flex/transifex.py b/flex/transifex.py
new file mode 100644
index 0000000..df6d10f
--- /dev/null
+++ b/flex/transifex.py
@@ -0,0 +1,113 @@
+"""
+transifex.py - Tool to manage Transifex translations
+
+ u, up, update Download all translations from Transifex
+ l, list List all translations available on Transifex
+"""
+import os
+import sys
+
+import requests
+
+API_URL = "https://www.transifex.com/api/2"
+API_KEY = os.getenv("TRANSIFEX_API_KEY")
+PROJECT_SLUG = "flex-pelican"
+RESOURCE_SLUG = "messagespot"
+
+
+def get_languages():
+ url = "{api_url}/project/{project_slug}/languages/".format(
+ **{"api_url": API_URL, "project_slug": PROJECT_SLUG,}
+ )
+
+ req = requests.get(url, auth=("api", API_KEY))
+ req.raise_for_status()
+ languages = req.json()
+
+ return sorted([lang["language_code"] for lang in languages])
+
+
+def list_languages():
+ languages = get_languages()
+
+ print("LANG LOCAL")
+
+ for lang in languages:
+ filename1 = os.path.join(".", lang, "LC_MESSAGES", "messages.po")
+ filename2 = os.path.join(
+ ".", "translations", lang, "LC_MESSAGES", "messages.po"
+ )
+
+ if os.path.exists(filename1) or os.path.exists(filename2):
+ print("{0} YES".format(lang.ljust(5)))
+ else:
+ print("{0} NO".format(lang.ljust(5)))
+
+ print("\nTotal: {}".format(len(languages)))
+
+
+def download(path):
+ languages = get_languages()
+
+ for lang in languages:
+ print("Downloading {}...".format(lang))
+
+ url = "{api_url}/project/{project_slug}/resource/{resource_slug}/translation/{lang_code}/".format(
+ **{
+ "api_url": API_URL,
+ "project_slug": PROJECT_SLUG,
+ "resource_slug": RESOURCE_SLUG,
+ "lang_code": lang,
+ }
+ )
+
+ req = requests.get(url, auth=("api", API_KEY))
+ req.raise_for_status()
+ data = req.json()
+ po_content = data["content"]
+
+ filepath = os.path.join(path, lang, "LC_MESSAGES")
+ os.makedirs(filepath, exist_ok=True)
+
+ filename = os.path.join(path, lang, "LC_MESSAGES", "messages.po")
+
+ with open(filename, "w") as f:
+ f.write(po_content)
+
+ print("{} updated".format(lang))
+
+
+def usage():
+ print(__doc__[1:])
+
+
+def _pop(l, default=None):
+ try:
+ return l.pop(0)
+ except IndexError:
+ return default
+
+
+def run():
+ args = sys.argv[1:]
+
+ cmd = _pop(args, "help")
+
+ if cmd in ["u", "up", "update"]:
+ path = _pop(args)
+
+ if path and not args:
+ download(path)
+ else:
+ usage()
+ elif cmd in ["l", "list"]:
+ if not args:
+ list_languages()
+ else:
+ usage()
+ else:
+ usage()
+
+
+if __name__ == "__main__":
+ run()
diff --git a/flex/translate.sh b/flex/translate.sh
new file mode 100755
index 0000000..c2dc301
--- /dev/null
+++ b/flex/translate.sh
@@ -0,0 +1,70 @@
+#!/usr/bin/env bash
+
+function extract_pot() {
+ pybabel extract -s --no-wrap --project="Flex" --copyright-holder="Alexandre Vicenzi" --version="2.1.0" --mapping translations/babel.cfg --output translations/messages.pot ./
+}
+
+function new_translation() {
+ pybabel init --no-wrap --input-file translations/messages.pot --output-dir translations/ --locale $1 --domain messages
+}
+
+function update_translation() {
+ pybabel update --no-wrap --input-file translations/messages.pot --output-dir translations/ --domain messages
+}
+
+function compile_translations() {
+ pybabel compile -f --directory translations/ --domain messages
+}
+
+function can_run() {
+ if ! [ -x "$(command -v pybabel)" ]; then
+ echo "Missing translation tool. Please, install Flask-Babel to continue."
+ echo ""
+ echo " pip install Flask-Babel"
+ echo ""
+ exit 1
+ fi
+}
+
+function usage {
+ echo "Translate Flex theme tool"
+ echo ""
+ echo "Usage:"
+ echo ""
+ echo " new [language] create new translation."
+ echo " compile compile all PO files into MO files."
+ echo " update update all translations based on POT file."
+ echo " extract extract all messages from templates and create the POT file."
+}
+
+case "$1" in
+ "new")
+ can_run
+
+ if [ -z "$2" ]
+ then
+ echo "Error: missing translation code."
+ echo ""
+ usage
+ exit 1
+ else
+ new_translation $2
+ fi
+ ;;
+ "compile")
+ can_run
+ compile_translations
+ ;;
+ "update")
+ can_run
+ update_translation
+ ;;
+ "extract")
+ can_run
+ extract_pot
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+esac
diff --git a/flex/translations/babel.cfg b/flex/translations/babel.cfg
new file mode 100644
index 0000000..2274808
--- /dev/null
+++ b/flex/translations/babel.cfg
@@ -0,0 +1 @@
+[jinja2: templates/**.html]
diff --git a/flex/translations/cs/LC_MESSAGES/messages.mo b/flex/translations/cs/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..4ec6ea2
Binary files /dev/null and b/flex/translations/cs/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/cs/LC_MESSAGES/messages.po b/flex/translations/cs/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..6d5578a
--- /dev/null
+++ b/flex/translations/cs/LC_MESSAGES/messages.po
@@ -0,0 +1,136 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# Honza Stínovlas , 2018
+# Ivana Holm , 2018
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: Ivana Holm , 2018\n"
+"Language-Team: Czech (https://www.transifex.com/alexandrevicenzi/teams/66327/cs/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: cs\n"
+"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Archiv"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Publikováno %(when)s v kategorii %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr ""
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Líbí se Vám článek? Sdílejte jej s přáteli!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Mohlo by se Vám líbit"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Příspěvky od %(name)s"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Autoři"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr ""
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Domů"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Kategorie"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Kategorie %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Tagy"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Pokračovat ve čtení"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr ""
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr ""
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Štítek %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Štítky"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Pro zobrazení komentářů prosím povolte JavaScript"
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr ""
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr ""
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr ""
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr ""
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Starší příspěvky"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Novější příspěvky"
diff --git a/flex/translations/de/LC_MESSAGES/messages.mo b/flex/translations/de/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..d8f9e59
Binary files /dev/null and b/flex/translations/de/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/de/LC_MESSAGES/messages.po b/flex/translations/de/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..9b5b19c
--- /dev/null
+++ b/flex/translations/de/LC_MESSAGES/messages.po
@@ -0,0 +1,137 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# Tom Teichler , 2019
+# Alexandre Vicenzi , 2022
+# Lioman, 2022
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: Lioman, 2022\n"
+"Language-Team: German (https://www.transifex.com/alexandrevicenzi/teams/66327/de/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Archive"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Online seit %(when)s in %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr "%(minutes)s Minuten zum lesen"
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Gefällt dir der Artikel? Dann teile ihn mit Freunden!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Eventuell auch interessant"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Artikel von %(name)s"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Autoren"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr "Suchbegriff eingeben..."
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Home"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Kategorien"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Kategorie %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Stichwörter"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Weiterlesen"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr "Ergebnisse gefunden"
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr "Ergebnisse gefunden"
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Stichwort %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Stichwörter"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Bitte JavaScript aktivieren um die Kommentare zu sehen."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr "Gebaut mit %(pelican_url)s und dem %(flex_url)s theme"
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr "Zu %(dark_url)s | %(light_url)s | %(browser_url)s Thema wechseln"
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr "Vorheriger Beitrag"
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr "Nächster Beitrag"
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Ältere Artikel"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Neuere Artikel"
diff --git a/flex/translations/en/LC_MESSAGES/messages.mo b/flex/translations/en/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..588877a
Binary files /dev/null and b/flex/translations/en/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/en/LC_MESSAGES/messages.po b/flex/translations/en/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..aa9fa89
--- /dev/null
+++ b/flex/translations/en/LC_MESSAGES/messages.po
@@ -0,0 +1,136 @@
+# English translations for Flex.
+# Copyright (C) 2017 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2017.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language: en\n"
+"Language-Team: en \n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Archives"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Posted on %(when)s in %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr ""
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Like this article? Share it with your friends!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "You might enjoy"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Posts by %(name)s"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Authors"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr ""
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Home"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Categories"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Category %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Tagged with"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Continue reading"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr ""
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr ""
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Tag %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Tags"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Please enable JavaScript to view comments."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr ""
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr ""
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr ""
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr ""
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Older Posts"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Newer Posts"
+
+#~ msgid "Powered by %(pelican_url)s - %(flex_url)s theme by %(alexandrevicenzi_url)s"
+#~ msgstr "Powered by %(pelican_url)s - %(flex_url)s theme by %(alexandrevicenzi_url)s"
+
diff --git a/flex/translations/es/LC_MESSAGES/messages.mo b/flex/translations/es/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..c91e235
Binary files /dev/null and b/flex/translations/es/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/es/LC_MESSAGES/messages.po b/flex/translations/es/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..046c816
--- /dev/null
+++ b/flex/translations/es/LC_MESSAGES/messages.po
@@ -0,0 +1,136 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# Juan A. S. , 2016
+# Alexandre Vicenzi , 2020
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: Alexandre Vicenzi , 2020\n"
+"Language-Team: Spanish (https://www.transifex.com/alexandrevicenzi/teams/66327/es/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: es\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Archivos"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Publicado el %(when)s en %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr "%(minutes)s min. de lectura"
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "¿Te gusta este artículo? ¡Compártelo con tus amigos!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Te puede gustar"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Artículos por %(name)s"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Autores"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr "Buscar..."
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Inicio"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Categorías"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Categoría %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Etiquetado con"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Seguir leyendo"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr "Búsqueda"
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr "Resultados de la búsqueda"
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Etiqueta %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Etiquetas"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Por favor, habilita JavaScript para ver los comentarios."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr "Construido con %(pelican_url)s y el tema %(flex_url)s"
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr "Cambiar el tema a %(dark_url)s | %(light_url)s | %(browser_url)s "
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr "Artículo anterior"
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr "Artículo siguiente"
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Artículos antiguos"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Artículos recientes"
diff --git a/flex/translations/es_ES/LC_MESSAGES/messages.mo b/flex/translations/es_ES/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..510e6f9
Binary files /dev/null and b/flex/translations/es_ES/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/es_ES/LC_MESSAGES/messages.po b/flex/translations/es_ES/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..a843dce
--- /dev/null
+++ b/flex/translations/es_ES/LC_MESSAGES/messages.po
@@ -0,0 +1,136 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# Juan A. S. , 2016
+# Alexandre Vicenzi , 2020
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: Alexandre Vicenzi , 2020\n"
+"Language-Team: Spanish (Spain) (https://www.transifex.com/alexandrevicenzi/teams/66327/es_ES/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: es_ES\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Archivos"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Publicado el %(when)s en %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr "%(minutes)s min de lectura"
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "¿Te gusta este artículo? ¡Compártelo con tus amigos!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Te puede gustar"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Artículos por %(name)s"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Autores"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr "Buscar..."
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Inicio"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Categorías"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Categoría %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Etiquetado con"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Seguir leyendo"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr "Busca"
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr "Resultados de la búsqueda"
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Etiqueta %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Etiquetas"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Por favor, habilita JavaScript para ver los comentarios."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr "Construido con %(pelican_url)s usando el tema %(flex_url)s "
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr "Cambiar al tema %(dark_url)s | %(light_url)s | %(browser_url)s "
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr "Artículo anterior"
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr "Próximo artículo"
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Artículos antiguos"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Artículos recientes"
diff --git a/flex/translations/et/LC_MESSAGES/messages.mo b/flex/translations/et/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..68d212e
Binary files /dev/null and b/flex/translations/et/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/et/LC_MESSAGES/messages.po b/flex/translations/et/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..6b2d56f
--- /dev/null
+++ b/flex/translations/et/LC_MESSAGES/messages.po
@@ -0,0 +1,135 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# Jüri Lillemets , 2017
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: Jüri Lillemets , 2017\n"
+"Language-Team: Estonian (https://www.transifex.com/alexandrevicenzi/teams/66327/et/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: et\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Arhiiv"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Avaldatud %(when)s kategoorias %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr ""
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Kui sulle see artikkel meeldis, siis jaga seda ka sõpradega!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Sulle võlb meeldida ka"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Kõik artiklid %(name)s poolt"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Autorid"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr ""
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Avaleht"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Kategooriad"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Kategooria %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Märksõnadeks"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Loe edasi"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr ""
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr ""
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Märksõna %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Märksõnad"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Kommentaaride nägemiseks võimaldage JavaScript."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr ""
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr ""
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr ""
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr ""
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Vanemad artiklid"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Uuemad artiklid"
diff --git a/flex/translations/fa_IR/LC_MESSAGES/messages.mo b/flex/translations/fa_IR/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..04279ab
Binary files /dev/null and b/flex/translations/fa_IR/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/fa_IR/LC_MESSAGES/messages.po b/flex/translations/fa_IR/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..fc6b470
--- /dev/null
+++ b/flex/translations/fa_IR/LC_MESSAGES/messages.po
@@ -0,0 +1,135 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# AmirMahmood , 2017
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: AmirMahmood , 2017\n"
+"Language-Team: Persian (Iran) (https://www.transifex.com/alexandrevicenzi/teams/66327/fa_IR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: fa_IR\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "بایگانی"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "نوشته شده در تاریخ %(when)s در %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr ""
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "از این مقاله لذت بردید؟ آن را با دوستانتان به اشتراک بگذارید!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "ممکن است علاقهمند باشید به"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "نوشته شده توسط %(name)s"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "نویسندگان"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr ""
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "خانه"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "اشتراک Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "اشتراک RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "دسته بندی ها"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "دسته بندی %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "برچسب شده توسط"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "ادامه مطلب"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr ""
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr ""
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "برچسب %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "برچسب ها"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "لطفا برای دیدن نظرات، جاوا اسکریپت را فعال کنید."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr ""
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr ""
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr ""
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr ""
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "نوشتههای کهنهتر"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "نوشتههای تازهتر"
diff --git a/flex/translations/fi_FI/LC_MESSAGES/messages.mo b/flex/translations/fi_FI/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..5a64698
Binary files /dev/null and b/flex/translations/fi_FI/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/fi_FI/LC_MESSAGES/messages.po b/flex/translations/fi_FI/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..3047241
--- /dev/null
+++ b/flex/translations/fi_FI/LC_MESSAGES/messages.po
@@ -0,0 +1,136 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# i r, 2021
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: i r, 2021\n"
+"Language-Team: Finnish (Finland) (https://www.transifex.com/alexandrevicenzi/teams/66327/fi_FI/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: fi_FI\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Arkisto"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Julkaistu %(when)s kategoriassa %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr "%(minutes)s min"
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Piditkö tästä postauksesta? Jaa se kavereillesi!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Voisit pitää myös näistä"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Kirjoittajan %(name)s postaukset"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Kirjoittajat"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr "Hae..."
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Koti"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Kategoriat"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Kategoria %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Tägit:"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Jatka lukemista"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr "Haku"
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr "Hakutulokset"
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Tägi %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Tägit"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Ole hyvä ja laita JavaScript päälle nähdäksesi kommentit."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr ""
+"Rakennettu %(pelican_url)s-generaattoria ja %(flex_url)s-teemaa käyttäen"
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr "Vaihda teemaa: %(dark_url)s | %(light_url)s | %(browser_url)s"
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr "Edellinen postaus"
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr "Seuraava postaus"
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Vanhemmat postaukset"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Uudemmat postaukset"
diff --git a/flex/translations/fr/LC_MESSAGES/messages.mo b/flex/translations/fr/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..76bbf67
Binary files /dev/null and b/flex/translations/fr/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/fr/LC_MESSAGES/messages.po b/flex/translations/fr/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..72a7d89
--- /dev/null
+++ b/flex/translations/fr/LC_MESSAGES/messages.po
@@ -0,0 +1,138 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# François Schmidts , 2016
+# Axel Haustant, 2018
+# taggaddaaaa , 2019
+# Charles Brunet , 2021
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: Charles Brunet , 2021\n"
+"Language-Team: French (https://www.transifex.com/alexandrevicenzi/teams/66327/fr/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: fr\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Archives"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Posté le %(when)s dans %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr "lecture de %(minutes)s min"
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Vous aimez cet article ? Partagez le avec vos amis !"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Vous pourriez aimer"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Posts de %(name)s"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Auteurs"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr "Rechercher…"
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Accueil"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Catégories"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Catégorie %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Taggé avec"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Continuer à lire"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr "Recherche"
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr "Résultats"
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Tag %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Tags"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Veuillez activer le JavaScript pour voir les commentaires."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr "Construit avec %(pelican_url)s utilisant le thème %(flex_url)s"
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr "Changer pour le thème %(dark_url)s | %(light_url)s | %(browser_url)s"
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr "Post précédent"
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr "Post suivant"
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Anciens Posts"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Nouveaux Posts"
diff --git a/flex/translations/hu_HU/LC_MESSAGES/messages.mo b/flex/translations/hu_HU/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..4991f4f
Binary files /dev/null and b/flex/translations/hu_HU/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/hu_HU/LC_MESSAGES/messages.po b/flex/translations/hu_HU/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..7b82137
--- /dev/null
+++ b/flex/translations/hu_HU/LC_MESSAGES/messages.po
@@ -0,0 +1,135 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# Molnár Dénes , 2017
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: Molnár Dénes , 2017\n"
+"Language-Team: Hungarian (Hungary) (https://www.transifex.com/alexandrevicenzi/teams/66327/hu_HU/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: hu_HU\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Archívum"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "A bejegyzés ideje: %(when)s, kategóriája: %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr ""
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Ha tetszett a bejegyzés, oszd meg az ismerőseiddel is!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Talán tetszene"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "%(name)s bejegyzései"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Szerzők"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr ""
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Főoldal"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Kategóriák"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "%(name)s kategória"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "A következőkkel megjelölve: "
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Tovább"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr ""
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr ""
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "%(name)s címke"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Címkék"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "A kommentek megtekintéséhez engedélyezned kell a JavaScriptet!"
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr ""
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr ""
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr ""
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr ""
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Korábbi bejegyzések"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Újabb bejegyzések"
diff --git a/flex/translations/id/LC_MESSAGES/messages.mo b/flex/translations/id/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..2d262ef
Binary files /dev/null and b/flex/translations/id/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/id/LC_MESSAGES/messages.po b/flex/translations/id/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..1aff9d6
--- /dev/null
+++ b/flex/translations/id/LC_MESSAGES/messages.po
@@ -0,0 +1,135 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# Yongkie Wiyogo , 2018
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: Yongkie Wiyogo , 2018\n"
+"Language-Team: Indonesian (https://www.transifex.com/alexandrevicenzi/teams/66327/id/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: id\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Arsip"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Ditulis tanggal %(when)s di %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr ""
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Suka artikel ini? Bagikan dengan teman-teman Anda!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Anda mungkin menikmati"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Ditulis oleh %(name)s"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Penulis"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr ""
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Beranda"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Kategori"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Kategori %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Kata kunci"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Lanjut membaca"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr ""
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr ""
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Kata kunci %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Kata-kata kunci"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Harap aktifkan JavaScript untuk melihat komentar."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr ""
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr ""
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr ""
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr ""
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Tulisan lama"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Tulisan baru"
diff --git a/flex/translations/it/LC_MESSAGES/messages.mo b/flex/translations/it/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..1c11e57
Binary files /dev/null and b/flex/translations/it/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/it/LC_MESSAGES/messages.po b/flex/translations/it/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..a7e8ff8
--- /dev/null
+++ b/flex/translations/it/LC_MESSAGES/messages.po
@@ -0,0 +1,136 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# Gareth jax , 2016
+# Alexandre Vicenzi , 2020
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: Alexandre Vicenzi , 2020\n"
+"Language-Team: Italian (https://www.transifex.com/alexandrevicenzi/teams/66327/it/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: it\n"
+"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Archivi"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Pubblicato il %(when)s in %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr "%(minutes)s minuto/i di lettura"
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Ti piace questo articolo? Condividilo con i tuoi amici!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Potrebbe interessanrti"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Articoli di %(name)s"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Autori"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr "Termini di ricerca..."
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Home"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Categorie"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Categoria %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Taggato come"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Continua lettura"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr "Risultati"
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr "Risultati"
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Tag %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Tags"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Per favore abilita Javascript per vedere i commenti."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr ""
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr ""
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr "Post precedenti"
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr "Prossimi post"
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Post più vecchi"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Post più recenti"
diff --git a/flex/translations/messages.pot b/flex/translations/messages.pot
new file mode 100644
index 0000000..ed0293d
--- /dev/null
+++ b/flex/translations/messages.pot
@@ -0,0 +1,131 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr ""
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr ""
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr ""
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr ""
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr ""
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr ""
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr ""
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr ""
+
+#: templates/base.html:237
+msgid "Home"
+msgstr ""
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr ""
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr ""
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr ""
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr ""
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr ""
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr ""
+
+#: templates/search.html:3
+msgid "Search"
+msgstr ""
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr ""
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr ""
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr ""
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr ""
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr ""
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr ""
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr ""
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr ""
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr ""
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr ""
+
diff --git a/flex/translations/nl_NL/LC_MESSAGES/messages.mo b/flex/translations/nl_NL/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..786ac56
Binary files /dev/null and b/flex/translations/nl_NL/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/nl_NL/LC_MESSAGES/messages.po b/flex/translations/nl_NL/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..8af68ab
--- /dev/null
+++ b/flex/translations/nl_NL/LC_MESSAGES/messages.po
@@ -0,0 +1,135 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# rbos, 2017
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: rbos, 2017\n"
+"Language-Team: Dutch (Netherlands) (https://www.transifex.com/alexandrevicenzi/teams/66327/nl_NL/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: nl_NL\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Archief"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Geplaatst op %(when)s in %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr ""
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Bevalt dit Artikel? Deel het met je vrienden!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Eventueel ook interessant"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Artikelen van %(name)s"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Schrijvers"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr ""
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Home"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Categorieën"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Categorie %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Getagged met"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Verder lezen"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr ""
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr ""
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Tag %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Tags"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Alsjeblieft JavaScript activeren om het commentaar te zien."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr ""
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr ""
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr ""
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr ""
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Eerder verschenen artikelen"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Later verschenen artikelen"
diff --git a/flex/translations/pl_PL/LC_MESSAGES/messages.mo b/flex/translations/pl_PL/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..5d1d637
Binary files /dev/null and b/flex/translations/pl_PL/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/pl_PL/LC_MESSAGES/messages.po b/flex/translations/pl_PL/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..4d6c18a
--- /dev/null
+++ b/flex/translations/pl_PL/LC_MESSAGES/messages.po
@@ -0,0 +1,135 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# Justyna Pawlata , 2019
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: Justyna Pawlata , 2019\n"
+"Language-Team: Polish (Poland) (https://www.transifex.com/alexandrevicenzi/teams/66327/pl_PL/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: pl_PL\n"
+"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Archiwa"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Opublikowano %(when)s w %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr ""
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Podoba Ci się ten wpis? Podziel się!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Zobacz także"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Wpisy autora %(name)s "
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Autorzy"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr ""
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Strona główna"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Kategorie"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Kategoria %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Tagi: "
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Czytaj dalej"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr ""
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr ""
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Tag %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Tagi"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Włącz obsługę JavaScript, żeby zobaczyć komentarze."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr "Stworzono z %(pelican_url)s, szablon %(flex_url)s"
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr ""
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr "Poprzedni wpis"
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr "Następny wpis"
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Starsze wpisy"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Nowsze wpisy"
diff --git a/flex/translations/pt/LC_MESSAGES/messages.mo b/flex/translations/pt/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..de95c94
Binary files /dev/null and b/flex/translations/pt/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/pt/LC_MESSAGES/messages.po b/flex/translations/pt/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..40fe6bb
--- /dev/null
+++ b/flex/translations/pt/LC_MESSAGES/messages.po
@@ -0,0 +1,131 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Language-Team: Portuguese (https://www.transifex.com/alexandrevicenzi/teams/66327/pt/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: pt\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr ""
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr ""
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr ""
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr ""
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr ""
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr ""
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr ""
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr ""
+
+#: templates/base.html:237
+msgid "Home"
+msgstr ""
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr ""
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr ""
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr ""
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr ""
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr ""
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr ""
+
+#: templates/search.html:3
+msgid "Search"
+msgstr ""
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr ""
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr ""
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr ""
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr ""
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr ""
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr ""
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr ""
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr ""
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr ""
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr ""
diff --git a/flex/translations/pt_BR/LC_MESSAGES/messages.mo b/flex/translations/pt_BR/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..a79dda1
Binary files /dev/null and b/flex/translations/pt_BR/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/pt_BR/LC_MESSAGES/messages.po b/flex/translations/pt_BR/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..4740987
--- /dev/null
+++ b/flex/translations/pt_BR/LC_MESSAGES/messages.po
@@ -0,0 +1,135 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# Alexandre Vicenzi , 2020
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: Alexandre Vicenzi , 2020\n"
+"Language-Team: Portuguese (Brazil) (https://www.transifex.com/alexandrevicenzi/teams/66327/pt_BR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: pt_BR\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Arquivos"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Publicado em %(when)s na categoria %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr "%(minutes)s min de leitura "
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Gostou do artigo? Compartilhe com seus amigos!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Artigos relacionados"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Publicações de %(name)s"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Autores"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr "Pesquisar..."
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Início"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Categorias"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Categoria %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Com as tags"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Continue lendo"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr "Pesquisa"
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr "Resultados da pesquisa"
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Tag %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Tags"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Habilite JavaScript para ver os comentários."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr "Criado com o %(pelican_url)s usando o tema %(flex_url)s"
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr "Alterar tema para %(dark_url)s | %(light_url)s | %(browser_url)s "
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr "Artigo Anterior"
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr "Próximo Artigo"
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Anteriores"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Próximos"
diff --git a/flex/translations/pt_PT/LC_MESSAGES/messages.mo b/flex/translations/pt_PT/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..ef8c144
Binary files /dev/null and b/flex/translations/pt_PT/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/pt_PT/LC_MESSAGES/messages.po b/flex/translations/pt_PT/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..922959f
--- /dev/null
+++ b/flex/translations/pt_PT/LC_MESSAGES/messages.po
@@ -0,0 +1,135 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# Alexandre Vicenzi , 2020
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: Alexandre Vicenzi , 2020\n"
+"Language-Team: Portuguese (Portugal) (https://www.transifex.com/alexandrevicenzi/teams/66327/pt_PT/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: pt_PT\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Artigos"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Publicado em %(when)s na categoria %(category)s "
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr "%(minutes)s min de leitura "
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Gostou do artigo? Partilhe com seus amigos!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Artigos relacionados"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Artigos de %(name)s"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Autores"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr "Pesquisar..."
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Início"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Categorias"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Categoria %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Etiquetado com"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Continuar leitura"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr "Pesquisa"
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr "Resultados da pesquisa"
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Etiqueta %(name)s "
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Etiquetas"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Habilite JavaScript para ver os comentários."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr "Criado com o %(pelican_url)s usando o tema %(flex_url)s"
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr "Alterar tema para %(dark_url)s | %(light_url)s | %(browser_url)s "
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr "Artigo anterior"
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr "Artigo seguinte"
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Artigos antigos"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Artigos novos"
diff --git a/flex/translations/ro_RO/LC_MESSAGES/messages.mo b/flex/translations/ro_RO/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..cdee4c2
Binary files /dev/null and b/flex/translations/ro_RO/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/ro_RO/LC_MESSAGES/messages.po b/flex/translations/ro_RO/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..739c264
--- /dev/null
+++ b/flex/translations/ro_RO/LC_MESSAGES/messages.po
@@ -0,0 +1,131 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Language-Team: Romanian (Romania) (https://www.transifex.com/alexandrevicenzi/teams/66327/ro_RO/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: ro_RO\n"
+"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr ""
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr ""
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr ""
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr ""
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr ""
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr ""
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr ""
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr ""
+
+#: templates/base.html:237
+msgid "Home"
+msgstr ""
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr ""
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr ""
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr ""
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr ""
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr ""
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr ""
+
+#: templates/search.html:3
+msgid "Search"
+msgstr ""
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr ""
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr ""
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr ""
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr ""
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr ""
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr ""
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr ""
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr ""
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr ""
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr ""
diff --git a/flex/translations/ru/LC_MESSAGES/messages.mo b/flex/translations/ru/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..ca5456b
Binary files /dev/null and b/flex/translations/ru/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/ru/LC_MESSAGES/messages.po b/flex/translations/ru/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..05a91fd
--- /dev/null
+++ b/flex/translations/ru/LC_MESSAGES/messages.po
@@ -0,0 +1,135 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# Roman Saldygashev , 2016
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: Roman Saldygashev , 2016\n"
+"Language-Team: Russian (https://www.transifex.com/alexandrevicenzi/teams/66327/ru/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: ru\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Архивы"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "Опубликовано %(when)s в %(category)s"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr ""
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Понравилась статья? Поделись с друзьями!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Наслаждайся"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "Опубликовано %(name)s"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Авторы"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr ""
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Главная"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Атом"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Категории"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "Категория %(name)s"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Помечено"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Продолжить чтение"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr ""
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr ""
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "Тэг %(name)s"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Тэги"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Пожалуйста включите JavaScript, чтобы просмотреть комментарии."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr ""
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr ""
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr ""
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr ""
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Старые сообщения"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Новые сообщения"
diff --git a/flex/translations/tr_TR/LC_MESSAGES/messages.mo b/flex/translations/tr_TR/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..9b10691
Binary files /dev/null and b/flex/translations/tr_TR/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/tr_TR/LC_MESSAGES/messages.po b/flex/translations/tr_TR/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..05d2112
--- /dev/null
+++ b/flex/translations/tr_TR/LC_MESSAGES/messages.po
@@ -0,0 +1,135 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# İlker Yürüyen , 2019
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: İlker Yürüyen , 2019\n"
+"Language-Team: Turkish (Turkey) (https://www.transifex.com/alexandrevicenzi/teams/66327/tr_TR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: tr_TR\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "Arşivler"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "%(when)s tarihinde %(category)s kategorisinde paylaşıldı"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr ""
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "Bu makaleyi sevdiniz mi? Arkadaşlarınızla paylaşın!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "Sevebilirsiniz"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "%(name)s kişisinin paylaşımları"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "Yazarlar"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr ""
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "Ana Sayfa"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "Kategoriler"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "%(name)s Kategorisi"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "Etiket:"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "Okumaya devam et"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr ""
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr ""
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "%(name)s Etiketi"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "Etiketler"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "Yorumları görüntülemek için lütfen JavaScript'i etkinleştirin."
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr "%(flex_url)s teması kullanılarak %(pelican_url)s ile yapılmıştır"
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr ""
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr "Önceki Paylaşım"
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr "Sonraki Paylaşım"
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "Eski Paylaşımlar"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "Yeni Paylaşımlar"
diff --git a/flex/translations/zh_CN/LC_MESSAGES/messages.mo b/flex/translations/zh_CN/LC_MESSAGES/messages.mo
new file mode 100644
index 0000000..58d30ab
Binary files /dev/null and b/flex/translations/zh_CN/LC_MESSAGES/messages.mo differ
diff --git a/flex/translations/zh_CN/LC_MESSAGES/messages.po b/flex/translations/zh_CN/LC_MESSAGES/messages.po
new file mode 100644
index 0000000..ce35d5e
--- /dev/null
+++ b/flex/translations/zh_CN/LC_MESSAGES/messages.po
@@ -0,0 +1,137 @@
+# Translations template for Flex.
+# Copyright (C) 2020 Alexandre Vicenzi
+# This file is distributed under the same license as the Flex project.
+# FIRST AUTHOR , 2020.
+#
+# Translators:
+# Shiao Qu , 2016
+# a2c1471d1cd73a676b800725acec033c_035a6a6 <7c743bc6ac83171e35a5aa8bd66cc1ea_775282>, 2019
+# Qian Gu , 2020
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Flex 2.1.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-12-01 20:21+0100\n"
+"PO-Revision-Date: 2016-08-25 02:15+0000\n"
+"Last-Translator: Qian Gu , 2020\n"
+"Language-Team: Chinese (China) (https://www.transifex.com/alexandrevicenzi/teams/66327/zh_CN/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.8.0\n"
+"Language: zh_CN\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: templates/archives.html:3 templates/archives.html:8
+#: templates/period_archives.html:2 templates/period_archives.html:7
+msgid "Archives"
+msgstr "归档"
+
+#: templates/article.html:29 templates/index.html:20
+#, python-format
+msgid "Posted on %(when)s in %(category)s"
+msgstr "在 %(when)s 发布于 %(category)s 分类"
+
+#: templates/article.html:34 templates/index.html:32
+#, python-format
+msgid "%(minutes)s min read"
+msgstr "阅读时长 %(minutes)s 分钟"
+
+#: templates/article.html:64
+msgid "Like this article? Share it with your friends!"
+msgstr "喜欢这篇文章吗?将它与您的朋友分享吧!"
+
+#: templates/article.html:75
+msgid "You might enjoy"
+msgstr "您可能还喜欢"
+
+#: templates/author.html:2
+#, python-format
+msgid "Posts by %(name)s"
+msgstr "%(name)s 发布的文章"
+
+#: templates/authors.html:3 templates/authors.html:8
+msgid "Authors"
+msgstr "作者"
+
+#: templates/base.html:161
+msgid "Search..."
+msgstr "搜索..."
+
+#: templates/base.html:237
+msgid "Home"
+msgstr "主页"
+
+#: templates/base.html:244
+msgid "Atom"
+msgstr "Atom订阅"
+
+#: templates/base.html:248
+msgid "RSS"
+msgstr "RSS订阅"
+
+#: templates/categories.html:3 templates/categories.html:8
+msgid "Categories"
+msgstr "分类"
+
+#: templates/category.html:2
+#, python-format
+msgid "Category %(name)s"
+msgstr "%(name)s 分类"
+
+#: templates/index.html:25
+msgid "Tagged with"
+msgstr "标签为"
+
+#: templates/index.html:46
+msgid "Continue reading"
+msgstr "阅读全文"
+
+#: templates/search.html:3
+msgid "Search"
+msgstr "搜索"
+
+#: templates/search.html:17
+msgid "Search Results"
+msgstr "搜索结果"
+
+#: templates/tag.html:2
+#, python-format
+msgid "Tag %(name)s"
+msgstr "%(name)s 标签"
+
+#: templates/tags.html:3 templates/tags.html:8
+msgid "Tags"
+msgstr "标签"
+
+#: templates/partial/disqus.html:13 templates/partial/isso.html:20
+msgid "Please enable JavaScript to view comments."
+msgstr "请启用浏览器的Javascript功能以查看评论。"
+
+#: templates/partial/flex.html:3
+#, python-format
+msgid "Built with %(pelican_url)s using %(flex_url)s theme"
+msgstr "本站由%(pelican_url)s驱动,并使用%(flex_url)s主题"
+
+#: templates/partial/flex.html:10
+#, python-format
+msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
+msgstr "切换到 %(dark_url)s | %(light_url)s | %(browser_url)s 主题"
+
+#: templates/partial/neighbors.html:5
+msgid "Previous Post"
+msgstr "上一篇文章"
+
+#: templates/partial/neighbors.html:10
+msgid "Next Post"
+msgstr "下一篇文章"
+
+#: templates/partial/pagination.html:5
+msgid "Older Posts"
+msgstr "更旧的文章"
+
+#: templates/partial/pagination.html:10
+msgid "Newer Posts"
+msgstr "更新的文章"