readingme 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in readingme.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 LynxEyes
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,45 @@
1
+ # Readingme
2
+
3
+ Small Markdown to HTML encoder which uses Github readme stylesheet and highlight.js
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'readingme'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install readingme
18
+
19
+ ## Usage
20
+
21
+ On your projects root dir, just run
22
+
23
+ $ readingme
24
+
25
+ Any markdown file (with `.md` extension) will be converted to html everytime you make changes to it.
26
+
27
+ You can also have readingme following just one file (`README.md` for example).
28
+ To achieve this you just need to pass the filename as an argument, as:
29
+
30
+ $ readingme README.md
31
+
32
+ This will only look at `README.md`, ignoning any other markdown files you may have.
33
+
34
+ ---
35
+
36
+ If you use a browser with auto-reload (such as epiphany) this is specially nice since all you need to do when editing your `.md` files is save them and the browser will automagically load up the new version of it.
37
+
38
+
39
+ ## Contributing
40
+
41
+ 1. Fork it
42
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
43
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
44
+ 4. Push to the branch (`git push origin my-new-feature`)
45
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/assets/readme.css ADDED
@@ -0,0 +1 @@
1
+ html,body{color:black;height:100%}body{background-color:white;font:13.34px Helvetica,arial,freesans,clean,sans-serif;*font-size:small;line-height:1.4;min-width:980px}h1,h2,h3,h4,h5,h6{text-rendering:optimizeLegibility}#main{background:#fff url(https://gist.github.com/modules/header/background-v2.png) 0 0 repeat-x}a{color:#4183c4;text-decoration:none}a:active{outline:none}a:hover{text-decoration:underline}.container{margin:0 auto;width:960px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}table{font-size:inherit;font:100%}input[type=text],input[type=password],input[type=image],textarea{font:99% helvetica,arial,freesans,sans-serif}select,option{padding:0 0.25em}optgroup{margin-top:.5em}input.text{padding:1px 0}pre,code{font:12px Consolas,"Liberation Mono",Courier,monospace}.root-pane{float:left;width:148px}.column{float:right;width:792px}.user-mention,.team-mention{font-weight:bold;color:#333}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]),[hidden]{display:none}html{font-size:100%;overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0;font-family:sans-serif}button,input,select,textarea{font-family:sans-serif}a:focus{outline:thin dotted}a:hover,a:active{outline:0}h1{font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:1em 40px}dfn{font-style:italic}mark{background:#ff0;color:#000}pre,code,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre;word-wrap:break-word}q{quotes:none}q:before,q:after{content:'';content:none}small{font-size:75%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}ul,ol{margin:0;padding:0}dd{margin:0 0 0 40px}nav ul,nav ol{list-style:none;list-style-image:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;*margin-left:-7px}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button{cursor:pointer;-webkit-appearance:button;*overflow:visible}input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.css-truncate.css-truncate-target,.css-truncate .css-truncate-target{max-width:125px;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.css-truncate.expandable.zeroclipboard-is-hover .css-truncate-target,.css-truncate.expandable.zeroclipboard-is-hover.css-truncate-target,.css-truncate.expandable:hover .css-truncate-target,.css-truncate.expandable:hover.css-truncate-target{max-width:10000px !important}.button,.minibutton{position:relative;display:inline-block;padding:7px 15px;font-size:13px;font-weight:bold;color:#333;text-shadow:0 1px 0 rgba(255,255,255,0.9);white-space:nowrap;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border-radius:3px;border:1px solid #ddd;border-bottom-color:#c5c5c5;box-shadow:0 1px 3px rgba(0,0,0,0.075);vertical-align:middle;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:none}.button:hover,.button:active,.minibutton:hover,.minibutton:active{color:#fff;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#3072b3;background-image:-moz-linear-gradient(#599bcd, #3072b3);background-image:-webkit-linear-gradient(#599bcd, #3072b3);background-image:linear-gradient(#599bcd, #3072b3);background-repeat:repeat-x;border-color:#2a65a0}.button:active,.minibutton:active{background-color:#3072b3;background-image:none;border-color:#25588c;box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.button:disabled,.button:disabled:hover,.button.disabled,.button.disabled:hover,.minibutton:disabled,.minibutton:disabled:hover,.minibutton.disabled,.minibutton.disabled:hover{opacity:.5;color:#666;text-shadow:0 1px 0 rgba(255,255,255,0.9);background-image:none;background-color:#e5e5e5;border-color:#c5c5c5;cursor:default}.button.primary,.minibutton.primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#60b044;background-image:-moz-linear-gradient(#8add6d, #60b044);background-image:-webkit-linear-gradient(#8add6d, #60b044);background-image:linear-gradient(#8add6d, #60b044);background-repeat:repeat-x;border-color:#5ca941}.button.primary:hover,.minibutton.primary:hover{color:#fff;background-color:#5ba740;background-image:-moz-linear-gradient(#82db63, #5ba740);background-image:-webkit-linear-gradient(#82db63, #5ba740);background-image:linear-gradient(#82db63, #5ba740);background-repeat:repeat-x;border-color:#4a993e}.button.primary:active,.minibutton.primary:active{background-color:#569e3d;background-image:none;border-color:#418737}.button.primary:disabled,.button.primary:disabled:hover,.button.primary.disabled,.button.primary.disabled:hover,.minibutton.primary:disabled,.minibutton.primary:disabled:hover,.minibutton.primary.disabled,.minibutton.primary.disabled:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#60b044;background-image:-moz-linear-gradient(#8add6d, #60b044);background-image:-webkit-linear-gradient(#8add6d, #60b044);background-image:linear-gradient(#8add6d, #60b044);background-repeat:repeat-x;border-color:#74bb5a #74bb5a #509338}.button.danger,.minibutton.danger{color:#900}.button.danger:hover,.minibutton.danger:hover{color:#fff;text-shadow:0px -1px 0 rgba(0,0,0,0.3);background-color:#b33630;background-image:-moz-linear-gradient(#dc5f59, #b33630);background-image:-webkit-linear-gradient(#dc5f59, #b33630);background-image:linear-gradient(#dc5f59, #b33630);background-repeat:repeat-x;border-color:#cd504a}.button.danger:active,.minibutton.danger:active{color:#fff;background-color:#b33630;background-image:none;border-color:#9f312c}.button.danger:disabled,.button.danger:disabled:hover,.button.danger.disabled,.button.danger.disabled:hover,.minibutton.danger:disabled,.minibutton.danger:disabled:hover,.minibutton.danger.disabled,.minibutton.danger.disabled:hover{color:#900;text-shadow:0 1px 0 rgba(255,255,255,0.9);background-color:#e1e1e1;background-image:-moz-linear-gradient(#fff, #e1e1e1);background-image:-webkit-linear-gradient(#fff, #e1e1e1);background-image:linear-gradient(#fff, #e1e1e1);background-repeat:repeat-x;border-color:#c5c5c5}.button.blue,.button.blue:hover,.minibutton.blue,.minibutton.blue:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#32687b;background-image:-moz-linear-gradient(#448da6, #32687b);background-image:-webkit-linear-gradient(#448da6, #32687b);background-image:linear-gradient(#448da6, #32687b);background-repeat:repeat-x;border-color:#2b5969}.button.blue:hover,.minibutton.blue:hover{background-position:0 -10px}.button.blue:active,.minibutton.blue:active{background-color:#32687b;background-image:none}.button.blue:disabled,.button.blue.disabled,.minibutton.blue:disabled,.minibutton.blue.disabled{background-position:0 0;background-color:#32687b;background-image:-moz-linear-gradient(#448da6, #32687b);background-image:-webkit-linear-gradient(#448da6, #32687b);background-image:linear-gradient(#448da6, #32687b);background-repeat:repeat-x}.button,.minibutton{outline:none}.button:focus,.minibutton:focus{text-decoration:none;border-color:#51a7e8;box-shadow:0 0 5px rgba(81,167,232,0.5)}.button img{position:relative;top:-1px;margin-right:3px;vertical-align:middle}.minibutton{padding:0 10px;line-height:24px;box-shadow:none}.minibutton:hover .mini-icon-windows:before{background-position:-18px 0}.minibutton.selected,.context-menu-container.active .minibutton.switcher,.context-menu-container.active .context-button{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.5);background-color:#767676;background-image:none;border-color:#686868;box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.minibutton i{font-weight:500;font-style:normal;opacity:.6}.minibutton.dark-grey,.minibutton.dark-grey.disabled:hover,.minibutton.dark-grey:disabled:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#6d6d6d;background-image:-moz-linear-gradient(#8c8c8c, #6d6d6d);background-image:-webkit-linear-gradient(#8c8c8c, #6d6d6d);background-image:linear-gradient(#8c8c8c, #6d6d6d);background-repeat:repeat-x;border:1px solid #707070;border-bottom-color:#595959}.minibutton.dark-grey:hover,.minibutton.dark-grey:active{border-color:#585858}.minibutton.dark-grey:hover{background-color:#545454;background-image:-moz-linear-gradient(#737373, #545454);background-image:-webkit-linear-gradient(#737373, #545454);background-image:linear-gradient(#737373, #545454);background-repeat:repeat-x}.minibutton.dark-grey:active{background-color:#545454;background-image:none;border-color:#474747;box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}input[type=text]+.minibutton{margin-left:5px}.minibutton .mini-icon{vertical-align:-2px;margin-right:6px;-moz-transition:none;-webkit-transition:none;-o-transition:color 0 ease-in;transition:none}.minibutton.empty-icon .mini-icon{margin-right:0}.minibutton .mini-icon-arr-right{float:right;margin-right:0;margin-left:5px;margin-top:4px}.minibutton.switcher{padding:0;height:24px;line-height:1}.minibutton.switcher>span{display:block;position:relative;padding:0 26px 0 10px;line-height:24px;height:24px}.minibutton.switcher>span:before{content:"";display:block;position:absolute;border:3px solid #000;border-color:#000 transparent transparent;top:10px;right:7px;width:0;height:0}.minibutton.switcher>span:after{position:absolute;top:0;bottom:0;right:18px;display:block;content:"";width:1px;background-color:#f9f9f9;box-shadow:-1px 0 0 #e4e4e4}.minibutton.switcher:hover>span:after{background-color:#6a9fd3;box-shadow:-1px 0 0 #3c74ab}.minibutton.switcher:active>span:after{background-color:#357ec8;box-shadow:-1px 0 0 #25588c}.minibutton.switcher.with-image{height:32px}.minibutton.switcher.with-image>span{display:block;height:32px;line-height:32px;padding:0 26px 0 6px}.minibutton.switcher.with-image>span:before{top:14px}.minibutton.switcher.with-image img{position:relative;top:-1px;margin-right:2px;vertical-align:middle;border-radius:2px}.minibutton.switcher.with-image.selected span:before,.context-menu-container.active .switcher.with-image.minibutton span:before,.context-menu-container.active .switcher.with-image.context-button span:before{top:14px}.minibutton.switcher.selected>span:before,.context-menu-container.active .switcher.minibutton>span:before,.context-menu-container.active .switcher.context-button>span:before,.context-menu-container.active .minibutton.switcher>span:before{top:10px;border-color:#fff transparent transparent}.minibutton.switcher.selected>span:after,.context-menu-container.active .switcher.minibutton>span:after,.context-menu-container.active .switcher.context-button>span:after,.context-menu-container.active .minibutton.switcher>span:after{background-color:#888;box-shadow:-1px 0 0 #585858}.minibutton.switcher:hover>span:before,.context-menu-container.active .context-button:after{border-color:#fff transparent transparent}.context-button{position:relative;width:12px;height:22px;line-height:23px;font-family:'Octicons Regular';font-weight:normal;font-style:normal;display:inline-block;text-decoration:inherit;line-height:1;-webkit-font-smoothing:antialiased}.context-button:before{position:absolute;top:3px;left:3px;content:"\f02f";display:block;padding:0;font-size:16px;line-height:16px}.context-button:after{position:absolute;top:10px;right:5px;content:"";display:block;width:0;height:0;border:3px solid #000;border-color:#000 transparent transparent}.context-button:hover:after,.context-button.selected:after{border-color:#fff transparent transparent}.hidden-text-expander{display:block}.hidden-text-expander.inline{display:inline-block;line-height:0;margin-left:5px;position:relative;top:-1px}.hidden-text-expander a{background:#ddd;color:#555;padding:0 5px;line-height:6px;height:12px;font-size:12px;font-weight:bold;vertical-align:middle;display:inline-block;border-radius:1px;text-decoration:none}.hidden-text-expander a:hover{background-color:#ccc;text-decoration:none}.hidden-text-expander a:active{background-color:#4183C4;color:#fff}.button-block{display:block;width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.social-count{position:relative;display:inline-block;padding:0 7px 0;margin-left:8px;font-size:11px;font-weight:bold;line-height:24px;color:#333333;vertical-align:middle;background-color:#fafafa;border:1px solid #ccc;border-radius:3px}.social-count:hover{color:#4183c4;cursor:pointer;text-decoration:none}.social-count:before{content:"";display:block;width:0;height:0;border:6px solid #ccc;border-color:transparent #ccc transparent transparent;position:absolute;right:100%;margin-right:0;top:50%;margin-top:-6px}.social-count:after{content:"";display:block;width:0;height:0;border:6px solid #fafafa;border-color:transparent #fafafa transparent transparent;position:absolute;right:100%;margin-right:-1px;top:50%;margin-top:-6px}.button-group{display:inline-block;vertical-align:middle}.button-group:before,.button-group:after{content:" ";display:table}.button-group:after{clear:both}.button-group .button,.button-group .minibutton{position:relative;float:left;border-radius:0}.button-group .button:first-child,.button-group .minibutton:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.button-group .button:last-child,.button-group .minibutton:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.button-group .button:hover,.button-group .button:focus,.button-group .button:active,.button-group .minibutton:hover,.button-group .minibutton:focus,.button-group .minibutton:active{z-index:2}.button-group .button+.button,.button-group .minibutton+.minibutton{margin-left:-1px;box-shadow:inset 1px 0 0 rgba(255,255,255,0.2)}.button-group .button+.button:hover,.button-group .minibutton+.minibutton:hover{box-shadow:none}.button-group .button+.button:active,.button-group .minibutton+.minibutton:active{box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.button-group+.button-group,.button-group+.button,.button-group+.minibutton{margin-left:5px}@font-face{font-family:'Octicons Regular';src:url(https://gist.github.com/assets/octicons/octicons-regular-webfont-da0671549c7200f286f6798ae77307f1.eot);src:url(https://gist.github.com/assets/octicons/octicons-regular-webfont-da0671549c7200f286f6798ae77307f1.eot#iefix) format("embedded-opentype"),url(https://gist.github.com/assets/octicons/octicons-regular-webfont-00dcdcba3c680f9dc03c1dbd66113b33.woff) format("woff"),url(https://gist.github.com/assets/octicons/octicons-regular-webfont-c770815052315c01fa7a22af91b96a4f.ttf) format("truetype"),url(https://gist.github.com/assets/octicons/octicons-regular-webfont-4e7ffc14744ecbb576774be183f24c23.svg#newFontRegular) format("svg");font-weight:normal;font-style:normal}.mini-icon,.mega-icon{font-family:'Octicons Regular';font-weight:normal;font-style:normal;display:inline-block;text-decoration:inherit;line-height:1;-webkit-font-smoothing:antialiased;line-height:1;text-decoration:none}.mini-icon{font-size:16px;width:16px;height:16px}.mini-icon-private-repo:before{content:"\f06a"}.mini-icon-public-repo:before{content:"\f001"}.mini-icon-repo-forked:before{content:"\f002"}.mini-icon-create:before{content:"\f003"}.mini-icon-delete:before{content:"\f004"}.mini-icon-push:before{content:"\f005"}.mini-icon-pull:before{content:"\f006"}.mini-icon-readme:before,.mini-icon-wiki:before{content:"\f007"}.mini-icon-octocat:before{content:"\f008"}.mini-icon-site-message:before,.mini-icon-blacktocat:before{content:"\f009"}.mini-icon-invertocat:before{content:"\f00a"}.mini-icon-download:before{content:"\f00b"}.mini-icon-upload:before{content:"\f00c"}.mini-icon-keyboard:before{content:"\f00d"}.mini-icon-gist:before{content:"\f00e"}.mini-icon-gist-private:before{content:"\f00f"}.mini-icon-code-file:before,.mini-icon-download-unknown:before{content:"\f010"}.mini-icon-download-text:before,.mini-icon-text-file:before{content:"\f011"}.mini-icon-download-media:before{content:"\f012"}.mini-icon-download-zip:before{content:"\f013"}.mini-icon-download-pdf:before{content:"\f014"}.mini-icon-download-tag:before,.mini-icon-tag:before{content:"\f015"}.mini-icon-directory:before{content:"\f016"}.mini-icon-submodule:before{content:"\f017"}.mini-icon-person:before{content:"\f018"}.mini-icon-team:before{content:"\f019"}.mini-icon-member-added:before{content:"\f01a"}.mini-icon-member-removed:before{content:"\f01b"}.mini-icon-follow:before{content:"\f01c"}.mini-icon-watching:before{content:"\f01d"}.mini-icon-unwatch:before{content:"\f01e"}.mini-icon-commit:before{content:"\f01f"}.mini-icon-public-fork:before,.mini-icon-fork:before,.mini-icon-branch:before,.mini-icon-tree:before{content:"\f020"}.mini-icon-private-fork:before{content:"\f021"}.mini-icon-pull-request:before{content:"\f022"}.mini-icon-merge:before{content:"\f023"}.mini-icon-public-mirror:before{content:"\f024"}.mini-icon-private-mirror:before{content:"\f025"}.mini-icon-issue-opened:before{content:"\f026"}.mini-icon-issue-reopened:before{content:"\f027"}.mini-icon-issue-closed:before{content:"\f028"}.mini-icon-issue-comment:before{content:"\f029"}.mini-icon-star:before{content:"\f02a"}.mini-icon-commit-comment:before{content:"\f02b"}.mini-icon-help:before{content:"\f02c"}.mini-icon-exclamation:before{content:"\f02d"}.mini-icon-search-input:before{content:"\f02e"}.mini-icon-advanced-search:before{content:"\f02f"}.mini-icon-notifications:before{content:"\f030"}.mini-icon-account-settings:before{content:"\f031"}.mini-icon-logout:before{content:"\f032"}.mini-icon-admin-tools:before{content:"\f033"}.mini-icon-feed:before{content:"\f034"}.mini-icon-clipboard:before{content:"\f035"}.mini-icon-apple:before{content:"\f036"}.mini-icon-windows:before{content:"\f037";content:"";background:transparent url(https://gist.github.com/assets/primer/buttons/windows-sprite-e6f8bfdc8cd6aa4c336db4d4b0d6b6d9.png) 0 0 no-repeat;width:16px;height:16px;display:inline-block}.mini-icon-ios:before{content:"\f038"}.mini-icon-download-android:before,.mini-icon-android:before{content:"\f039"}.mini-icon-confirm:before{content:"\f03a"}.mini-icon-unread-note:before{content:"\f03b"}.mini-icon-read-note:before{content:"\f03c"}.mini-icon-arr-up:before{content:"\f03d"}.mini-icon-arr-right:before{content:"\f03e"}.mini-icon-arr-down:before{content:"\f03f"}.mini-icon-arr-left:before{content:"\f040"}.mini-icon-pin:before{content:"\f041"}.mini-icon-gift:before{content:"\f042"}.mini-icon-graph:before{content:"\f043"}.mini-icon-wrench:before{content:"\f044"}.mini-icon-credit-card:before{content:"\f045"}.mini-icon-time:before{content:"\f046"}.mini-icon-ruby:before{content:"\f047"}.mini-icon-podcast:before{content:"\f048"}.mini-icon-key:before{content:"\f049"}.mini-icon-force-push:before{content:"\f04a"}.mini-icon-sync:before{content:"\f04b"}.mini-icon-clone:before{content:"\f04c"}.mini-icon-diff:before{content:"\f04d"}.mini-icon-watchers:before{content:"\f04e"}.mini-icon-discussion:before{content:"\f04f"}.mini-icon-delete-note:before,.mini-icon-remove-close:before{content:"\f050"}.mini-icon-reply:before{content:"\f051"}.mini-icon-mail-status:before{content:"\f052"}.mini-icon-block:before{content:"\f053"}.mini-icon-tag-create:before{content:"\f054"}.mini-icon-tab-delete:before{content:"\f055"}.mini-icon-branch-create:before{content:"\f056"}.mini-icon-branch-delete:before{content:"\f057"}.mini-icon-edit:before{content:"\f058"}.mini-icon-info:before{content:"\f059"}.mini-icon-arr-collapsed:before{content:"\f05a"}.mini-icon-arr-expanded:before{content:"\f05b"}.mini-icon-link:before{content:"\f05c"}.mini-icon-add:before{content:"\f05d"}.mini-icon-reorder:before{content:"\f05e"}.mini-icon-code:before{content:"\f05f"}.mini-icon-location:before{content:"\f060"}.mini-icon-u-list:before{content:"\f061"}.mini-icon-o-list:before{content:"\f062"}.mini-icon-quotemark:before{content:"\f063"}.mini-icon-version:before{content:"\f064"}.mini-icon-brightness:before{content:"\f065"}.mini-icon-fullscreen:before{content:"\f066"}.mini-icon-normalscreen:before{content:"\f067"}.mini-icon-calendar:before{content:"\f068"}.mini-icon-beer:before{content:"\f069"}.mini-icon-secure:before,.mini-icon-lock:before{content:"\f06a"}.mini-icon-added:before{content:"\f06b"}.mini-icon-removed:before{content:"\f06c"}.mini-icon-modified:before{content:"\f06d"}.mini-icon-moved:before,.mini-icon-renamed:before{content:"\f06e"}.mini-icon-add-comment:before{content:"\f06f"}.mini-icon-horizontal-rule:before{content:"\f070"}.mini-icon-arr-right-mini:before{content:"\f071"}.mini-icon-jump-down:before{content:"\f072"}.mini-icon-jump-up:before{content:"\f073"}.mini-icon-reference:before{content:"\f074"}.mini-icon-milestone:before{content:"\f075"}.mini-icon-save-document:before{content:"\f076"}.mini-icon-megaphone:before{content:"\f077"}.mini-icon-chevron:before{content:"\f078"}.mini-icon-gist-forked:before{content:"\f079"}.mini-icon-gist-add:before{content:"\f07a"}.mini-icon-bookmark:before{content:"\f07b"}.mini-icon-filters:before{content:"\f07c"}.mini-icon-dashboard:before{content:"\f07d"}.mini-icon-history:before{content:"\f07e"}.mini-icon-external-link:before{content:"\f07f"}.mini-icon-mute:before{content:"\f080"}.mini-icon-x:before{content:"\f081"}.mini-icon-add-star:before{content:"\f082"}.mini-icon-remove-star:before{content:"\f083"}.mini-icon-circle-slash:before{content:"\f084"}.mini-icon-pulse:before{content:"\f085"}.mini-icon-new-file:before{content:"\f086"}.mini-icon-refresh:before{content:"\f087"}.mini-icon-telescope:before{content:"\f088"}.mini-icon-microscope:before{content:"\f089"}.mini-icon-align:before{content:"\f08a"}.mini-icon-unalign:before{content:"\f08b"}.mini-icon-gist-secret:before{content:"\f08c"}.mini-icon-home:before{content:"\f08d"}.mini-icon-aligned-to:before{content:"\f08e"}.mini-icon-stop-spam:before{content:"\f08f"}.mini-icon-zap:before{content:"\f090"}.mini-icon-bug:before{content:"\f091"}.mini-icon-loading-inner:before{content:"\f092"}.mini-icon-loading-outer:before{content:"\f093"}.mini-icon-binary-file:before{content:"\f094"}.mini-icon-create-directory:before{content:"\f095"}.mini-icon-database:before{content:"\f096"}.mini-icon-server:before{content:"\f097"}.mini-icon-ignored-file:before{content:"\f098"}.mini-icon-ignore:before{content:"\f099"}.mini-icon-ellipsis:before{content:"\f09a"}.mega-icon{font-size:32px;width:32px;height:32px}.mega-icon-private-repo:before{content:"\f26a"}.mega-icon-public-repo:before{content:"\f201"}.mega-icon-repo-forked:before{content:"\f202"}.mega-icon-create:before{content:"\f203"}.mega-icon-delete:before{content:"\f204"}.mega-icon-push:before{content:"\f205"}.mega-icon-pull:before{content:"\f206"}.mega-icon-readme:before,.mega-icon-wiki:before{content:"\f207"}.mega-icon-octocat:before{content:"\f208"}.mega-icon-site-message:before,.mega-icon-blacktocat:before{content:"\f209"}.mega-icon-invertocat:before{content:"\f20a"}.mega-icon-download:before{content:"\f20b"}.mega-icon-upload:before{content:"\f20c"}.mega-icon-keyboard:before{content:"\f20d"}.mega-icon-gist:before{content:"\f20e"}.mega-icon-gist-private:before{content:"\f20f"}.mega-icon-code-file:before,.mega-icon-download-unknown:before{content:"\f210"}.mega-icon-download-text:before,.mega-icon-text-file:before{content:"\f211"}.mega-icon-download-media:before{content:"\f212"}.mega-icon-download-zip:before{content:"\f213"}.mega-icon-download-pdf:before{content:"\f214"}.mega-icon-download-tag:before,.mega-icon-tag:before{content:"\f215"}.mega-icon-directory:before{content:"\f216"}.mega-icon-submodule:before{content:"\f217"}.mega-icon-person:before{content:"\f218"}.mega-icon-team:before{content:"\f219"}.mega-icon-member-added:before{content:"\f21a"}.mega-icon-member-removed:before{content:"\f21b"}.mega-icon-follow:before{content:"\f21c"}.mega-icon-watching:before{content:"\f21d"}.mega-icon-unwatch:before{content:"\f21e"}.mega-icon-commit:before{content:"\f21f"}.mega-icon-public-fork:before,.mega-icon-fork:before,.mega-icon-branch:before,.mega-icon-tree:before{content:"\f220"}.mega-icon-private-fork:before{content:"\f221"}.mega-icon-pull-request:before{content:"\f222"}.mega-icon-merge:before{content:"\f223"}.mega-icon-public-mirror:before{content:"\f224"}.mega-icon-private-mirror:before{content:"\f225"}.mega-icon-issue-opened:before{content:"\f226"}.mega-icon-issue-reopened:before{content:"\f227"}.mega-icon-issue-closed:before{content:"\f228"}.mega-icon-issue-comment:before{content:"\f229"}.mega-icon-star:before{content:"\f22a"}.mega-icon-commit-comment:before{content:"\f22b"}.mega-icon-help:before{content:"\f22c"}.mega-icon-exclamation:before{content:"\f22d"}.mega-icon-search-input:before{content:"\f22e"}.mega-icon-advanced-search:before{content:"\f22f"}.mega-icon-notifications:before{content:"\f230"}.mega-icon-account-settings:before{content:"\f231"}.mega-icon-logout:before{content:"\f232"}.mega-icon-admin-tools:before{content:"\f233"}.mega-icon-feed:before{content:"\f234"}.mega-icon-clipboard:before{content:"\f235"}.mega-icon-apple:before{content:"\f236"}.mega-icon-windows:before{content:"\f237"}.mega-icon-ios:before{content:"\f238"}.mega-icon-android:before{content:"\f239"}.mega-icon-confirm:before{content:"\f23a"}.mega-icon-unread-note:before{content:"\f23b"}.mega-icon-read-note:before{content:"\f23c"}.mega-icon-arr-up:before{content:"\f23d"}.mega-icon-arr-right:before{content:"\f23e"}.mega-icon-arr-down:before{content:"\f23f"}.mega-icon-arr-left:before{content:"\f240"}.mega-icon-pin:before{content:"\f241"}.mega-icon-gift:before{content:"\f242"}.mega-icon-graph:before{content:"\f243"}.mega-icon-wrench:before{content:"\f244"}.mega-icon-credit-card:before{content:"\f245"}.mega-icon-time:before{content:"\f246"}.mega-icon-ruby:before{content:"\f247"}.mega-icon-podcast:before{content:"\f248"}.mega-icon-key:before{content:"\f249"}.mega-icon-force-push:before{content:"\f24a"}.mega-icon-sync:before{content:"\f24b"}.mega-icon-clone:before{content:"\f24c"}.mega-icon-diff:before{content:"\f24d"}.mega-icon-watchers:before{content:"\f24e"}.mega-icon-discussion:before{content:"\f24f"}.mega-icon-delete-note:before,.mega-icon-remove-close:before{content:"\f250"}.mega-icon-reply:before{content:"\f251"}.mega-icon-mail-status:before{content:"\f252"}.mega-icon-block:before{content:"\f253"}.mega-icon-tag-create:before{content:"\f254"}.mega-icon-tab-delete:before{content:"\f255"}.mega-icon-branch-create:before{content:"\f256"}.mega-icon-branch-delete:before{content:"\f257"}.mega-icon-edit:before{content:"\f258"}.mega-icon-info:before{content:"\f259"}.mega-icon-arr-collapsed:before{content:"\f25a"}.mega-icon-arr-expanded:before{content:"\f25b"}.mega-icon-link:before{content:"\f25c"}.mega-icon-add:before{content:"\f25d"}.mega-icon-reorder:before{content:"\f25e"}.mega-icon-code:before{content:"\f25f"}.mega-icon-location:before{content:"\f260"}.mega-icon-u-list:before{content:"\f261"}.mega-icon-o-list:before{content:"\f262"}.mega-icon-quotemark:before{content:"\f263"}.mega-icon-version:before{content:"\f264"}.mega-icon-brightness:before{content:"\f265"}.mega-icon-fullscreen:before{content:"\f266"}.mega-icon-normalscreen:before{content:"\f267"}.mega-icon-calendar:before{content:"\f268"}.mega-icon-beer:before{content:"\f269"}.mega-icon-secure:before,.mega-icon-lock:before{content:"\f26a"}.mega-icon-added:before{content:"\f26b"}.mega-icon-removed:before{content:"\f26c"}.mega-icon-modified:before{content:"\f26d"}.mega-icon-moved:before,.mega-icon-renamed:before{content:"\f26e"}.mega-icon-add-comment:before{content:"\f26f"}.mega-icon-horizontal-rule:before{content:"\f270"}.mega-icon-arr-right-mini:before{content:"\f271"}.mega-icon-jump-down:before{content:"\f272"}.mega-icon-jump-up:before{content:"\f273"}.mega-icon-reference:before{content:"\f274"}.mega-icon-milestone:before{content:"\f275"}.mega-icon-save-document:before{content:"\f276"}.mega-icon-megaphone:before{content:"\f277"}.mega-icon-chevron:before{content:"\f278"}.mega-icon-gist-forked:before{content:"\f279"}.mega-icon-gist-add:before{content:"\f27a"}.mega-icon-bookmark:before{content:"\f27b"}.mega-icon-filters:before{content:"\f27c"}.mega-icon-dashboard:before{content:"\f27d"}.mega-icon-history:before{content:"\f27e"}.mega-icon-external-link:before{content:"\f27f"}.mega-icon-mute:before{content:"\f280"}.mega-icon-x:before{content:"\f281"}.mega-icon-add-star:before{content:"\f282"}.mega-icon-remove-star:before{content:"\f283"}.mega-icon-circle-slash:before{content:"\f284"}.mega-icon-pulse:before{content:"\f285"}.mega-icon-new-file:before{content:"\f286"}.mega-icon-refresh:before{content:"\f287"}.mega-icon-telescope:before{content:"\f288"}.mega-icon-microscope:before{content:"\f289"}.mega-icon-align:before{content:"\f28a"}.mega-icon-unalign:before{content:"\f28b"}.mega-icon-gist-secret:before{content:"\f28c"}.mega-icon-home:before{content:"\f28d"}.mega-icon-aligned-to:before{content:"\f28e"}.mega-icon-stop-spam:before{content:"\f28f"}.mega-icon-zap:before{content:"\f290"}.mega-icon-bug:before{content:"\f291"}.mega-icon-loading-inner:before{content:"\f292"}.mega-icon-loading-outer:before{content:"\f293"}.mega-icon-binary-file:before{content:"\f294"}.mega-icon-create-directory:before{content:"\f295"}.mega-icon-database:before{content:"\f296"}.mega-icon-server:before{content:"\f297"}.mega-icon-ignored-file:before{content:"\f298"}.mega-icon-ignore:before{content:"\f299"}.mega-icon-ellipsis:before{content:"\f29a"}.markdown-body{font-size:14px;line-height:1.6;overflow:hidden}.markdown-body>*:first-child{margin-top:0 !important}.markdown-body>*:last-child{margin-bottom:0 !important}.markdown-body a.absent{color:#c00}.markdown-body a.anchor{display:block;padding-left:30px;margin-left:-30px;cursor:pointer;position:absolute;top:0;left:0;bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin:20px 0 10px;padding:0;font-weight:bold;-webkit-font-smoothing:antialiased;cursor:text;position:relative}.markdown-body h1 .mini-icon-link,.markdown-body h2 .mini-icon-link,.markdown-body h3 .mini-icon-link,.markdown-body h4 .mini-icon-link,.markdown-body h5 .mini-icon-link,.markdown-body h6 .mini-icon-link{display:none;color:#000}.markdown-body h1:hover a.anchor,.markdown-body h2:hover a.anchor,.markdown-body h3:hover a.anchor,.markdown-body h4:hover a.anchor,.markdown-body h5:hover a.anchor,.markdown-body h6:hover a.anchor{text-decoration:none;line-height:1;padding-left:0;margin-left:-22px;top:15%}.markdown-body h1:hover a.anchor .mini-icon-link,.markdown-body h2:hover a.anchor .mini-icon-link,.markdown-body h3:hover a.anchor .mini-icon-link,.markdown-body h4:hover a.anchor .mini-icon-link,.markdown-body h5:hover a.anchor .mini-icon-link,.markdown-body h6:hover a.anchor .mini-icon-link{display:inline-block}.markdown-body h1 tt,.markdown-body h1 code,.markdown-body h2 tt,.markdown-body h2 code,.markdown-body h3 tt,.markdown-body h3 code,.markdown-body h4 tt,.markdown-body h4 code,.markdown-body h5 tt,.markdown-body h5 code,.markdown-body h6 tt,.markdown-body h6 code{font-size:inherit}.markdown-body h1{font-size:28px;color:#000}.markdown-body h2{font-size:24px;border-bottom:1px solid #ccc;color:#000}.markdown-body h3{font-size:18px}.markdown-body h4{font-size:16px}.markdown-body h5{font-size:14px}.markdown-body h6{color:#777;font-size:14px}.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre{margin:15px 0}.markdown-body hr{background:transparent url(https://gist.github.com/assets/primer/markdown/dirty-shade-b257e362bd496ca183d2a6743c25bc72.png) repeat-x 0 0;border:0 none;color:#ccc;height:4px;padding:0}.markdown-body>h2:first-child,.markdown-body>h1:first-child,.markdown-body>h1:first-child+h2,.markdown-body>h3:first-child,.markdown-body>h4:first-child,.markdown-body>h5:first-child,.markdown-body>h6:first-child{margin-top:0;padding-top:0}.markdown-body a:first-child h1,.markdown-body a:first-child h2,.markdown-body a:first-child h3,.markdown-body a:first-child h4,.markdown-body a:first-child h5,.markdown-body a:first-child h6{margin-top:0;padding-top:0}.markdown-body h1+p,.markdown-body h2+p,.markdown-body h3+p,.markdown-body h4+p,.markdown-body h5+p,.markdown-body h6+p{margin-top:0}.markdown-body li p.first{display:inline-block}.markdown-body ul,.markdown-body ol{padding-left:30px}.markdown-body ul.no-list,.markdown-body ol.no-list{list-style-type:none;padding:0}.markdown-body ul li>:first-child,.markdown-body ul li ul:first-of-type,.markdown-body ol li>:first-child,.markdown-body ol li ul:first-of-type{margin-top:0px}.markdown-body ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul{margin-bottom:0}.markdown-body dl{padding:0}.markdown-body dl dt{font-size:14px;font-weight:bold;font-style:italic;padding:0;margin:15px 0 5px}.markdown-body dl dt:first-child{padding:0}.markdown-body dl dt>:first-child{margin-top:0px}.markdown-body dl dt>:last-child{margin-bottom:0px}.markdown-body dl dd{margin:0 0 15px;padding:0 15px}.markdown-body dl dd>:first-child{margin-top:0px}.markdown-body dl dd>:last-child{margin-bottom:0px}.markdown-body blockquote{border-left:4px solid #ddd;padding:0 15px;color:#777}.markdown-body blockquote>:first-child{margin-top:0px}.markdown-body blockquote>:last-child{margin-bottom:0px}.markdown-body table th{font-weight:bold}.markdown-body table th,.markdown-body table td{border:1px solid #ccc;padding:6px 13px}.markdown-body table tr{border-top:1px solid #ccc;background-color:#fff}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body img{max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{border:1px solid #ddd;display:block;float:left;overflow:hidden;margin:13px 0 0;padding:7px;width:auto}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{clear:both;color:#333;display:block;padding:5px 0 0}.markdown-body span.align-center{display:block;overflow:hidden;clear:both}.markdown-body span.align-center>span{display:block;overflow:hidden;margin:13px auto 0;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{display:block;overflow:hidden;clear:both}.markdown-body span.align-right>span{display:block;overflow:hidden;margin:13px 0 0;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;margin-right:13px;overflow:hidden;float:left}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;margin-left:13px;overflow:hidden;float:right}.markdown-body span.float-right>span{display:block;overflow:hidden;margin:13px auto 0;text-align:right}.markdown-body code,.markdown-body tt{margin:0 2px;padding:0px 5px;border:1px solid #eaeaea;background-color:#f8f8f8;border-radius:3px}.markdown-body code{white-space:nowrap}.markdown-body pre>code{margin:0;padding:0;white-space:pre;border:none;background:transparent}.markdown-body .highlight pre,.markdown-body pre{background-color:#f8f8f8;border:1px solid #ccc;font-size:13px;line-height:19px;overflow:auto;padding:6px 10px;border-radius:3px}.markdown-body pre code,.markdown-body pre tt{margin:0;padding:0;background-color:transparent;border:none}.menu-container{float:left;width:200px;padding:3px;background:#efefef;border-radius:2px}.menu{background:#fafafb;border-radius:2px;border:1px solid #d8d8d8;list-style:none}.menu a:hover{text-decoration:none}.menu li{border-bottom:1px solid #eee;border-top:1px solid #fff}.menu li:last-child{border-bottom:none}.menu li:first-child{border-top:none}.menu a{display:block;padding:8px 10px 8px 8px;text-shadow:0 1px 0 #fff;border-left:2px solid #fafafb}.menu a:hover{background:#fdfdfe}.menu a .mini-icon{color:#333333}.menu a.selected{background:#fff;border-left:2px solid #d26911;font-weight:bold;color:#222;cursor:default;box-shadow:inset 0 0px 1px rgba(0,0,0,0.1)}.menu a .counter{float:right;margin:0 0 0 5px;padding:2px 5px;font-size:11px;font-weight:bold;color:#999;background:#eee;border-radius:2px}.menu .menu-warning{color:#D26911;float:right}.accordion{background:#fafafb;list-style:none}.accordion .section{border-top:1px solid #d8d8d8;border-top:none}.accordion .section:first-child{border-top:none}.accordion .section a.section-head{background-color:#e0e0e0;background-image:-moz-linear-gradient(#fafafa, #e0e0e0);background-image:-webkit-linear-gradient(#fafafa, #e0e0e0);background-image:linear-gradient(#fafafa, #e0e0e0);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(255,255,255,0.5);display:block;padding:10px 10px;border-bottom:1px solid #ccc;color:#222;font-weight:bold;font-size:14px;line-height:20px;text-shadow:0 1px 0 rgba(255,255,255,0.7);border-left:0 none}.accordion .section a.section-head img{float:left;margin:0 10px 0 0;border-radius:2px}.accordion .section .section-nav{list-style:none;display:none}.accordion .section .section-nav.expanded{display:block}.highlight{background:#ffffff}.highlight .c{color:#999988;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{font-weight:bold}.highlight .o{font-weight:bold}.highlight .cm{color:#999988;font-style:italic}.highlight .cp{color:#999999;font-weight:bold}.highlight .c1{color:#999988;font-style:italic}.highlight .cs{color:#999999;font-weight:bold;font-style:italic}.highlight .gd{color:#000000;background-color:#ffdddd}.highlight .gd .x{color:#000000;background-color:#ffaaaa}.highlight .ge{font-style:italic}.highlight .gr{color:#aa0000}.highlight .gh{color:#999999}.highlight .gi{color:#000000;background-color:#ddffdd}.highlight .gi .x{color:#000000;background-color:#aaffaa}.highlight .go{color:#888888}.highlight .gp{color:#555555}.highlight .gs{font-weight:bold}.highlight .gu{color:#800080;font-weight:bold}.highlight .gt{color:#aa0000}.highlight .kc{font-weight:bold}.highlight .kd{font-weight:bold}.highlight .kn{font-weight:bold}.highlight .kp{font-weight:bold}.highlight .kr{font-weight:bold}.highlight .kt{color:#445588;font-weight:bold}.highlight .m{color:#009999}.highlight .s{color:#dd1144}.highlight .n{color:#333333}.highlight .na{color:teal}.highlight .nb{color:#0086b3}.highlight .nc{color:#445588;font-weight:bold}.highlight .no{color:teal}.highlight .ni{color:purple}.highlight .ne{color:#990000;font-weight:bold}.highlight .nf{color:#990000;font-weight:bold}.highlight .nn{color:#555555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{font-weight:bold}.highlight .w{color:#bbbbbb}.highlight .mf{color:#009999}.highlight .mh{color:#009999}.highlight .mi{color:#009999}.highlight .mo{color:#009999}.highlight .sb{color:#dd1144}.highlight .sc{color:#dd1144}.highlight .sd{color:#dd1144}.highlight .s2{color:#dd1144}.highlight .se{color:#dd1144}.highlight .sh{color:#dd1144}.highlight .si{color:#dd1144}.highlight .sx{color:#dd1144}.highlight .sr{color:#009926}.highlight .s1{color:#dd1144}.highlight .ss{color:#990073}.highlight .bp{color:#999999}.highlight .vc{color:teal}.highlight .vg{color:teal}.highlight .vi{color:teal}.highlight .il{color:#009999}.highlight .gc{color:#999;background-color:#EAF2F5}.type-csharp .highlight .k{color:blue}.type-csharp .highlight .kt{color:blue}.type-csharp .highlight .nf{color:#000000;font-weight:normal}.type-csharp .highlight .nc{color:#2b91af}.type-csharp .highlight .nn{color:black}.type-csharp .highlight .s{color:#a31515}.type-csharp .highlight .sc{color:#a31515}#footer{position:relative;margin:40px 0 0 0;padding:20px 0;font-size:12px;line-height:1.5;color:#777;text-shadow:0 1px 0 #fff;background-color:#f5f5f5;border-top:1px solid #e5e5e5}.footer-divider{margin:0 0 20px;border-top:1px solid #e5e5e5;border-bottom:1px solid #fff}.footer_nav{width:20%;float:left;margin-bottom:20px}.footer_nav dt{color:#52595d;font-weight:bold}#footer .mega-icon-invertocat{position:absolute;bottom:18px;left:50%;height:24px;width:24px;margin-top:-4px;margin-left:-12px;font-size:24px;color:#ccc}.right{float:right}#footer .right{margin:0}ul#legal{margin:0;list-style:none}ul#legal li{display:inline-block;margin-right:15px}#wrapper{min-height:100%;height:auto !important;height:100%;margin:0;margin-bottom:-99px}html,body,#not-the-footer{height:100%}.site-content{padding-bottom:99px}.header{text-shadow:0 1px 0 #fff;background-color:#f3f3f3;background-image:-moz-linear-gradient(#f9f9f9, #f3f3f3);background-image:-webkit-linear-gradient(#f9f9f9, #f3f3f3);background-image:linear-gradient(#f9f9f9, #f3f3f3);background-repeat:repeat-x;border-bottom:1px solid #e5e5e5}.header-logo-wordmark,.header-logo-blacktocat{float:left;margin-left:-10px;padding-left:10px;padding-right:10px;-moz-transition:all 0.1s ease-in 0;-webkit-transition:all 0.1s ease-in 0;white-space:nowrap}.header-logo-blacktocat{margin-right:-10px;padding-top:8px;color:#333333}.header-logo-blacktocat .mega-icon-blacktocat{float:left;width:24px;height:25px;font-size:24px}.header-logo-blacktocat:hover{color:#ff9933;text-decoration:none}.logo-subbrand{margin-left:6px;font-size:16px;font-weight:bold}.header-logo-wordmark{position:relative;padding-top:9px;padding-bottom:9px}.github-logo-4x-hover{position:absolute;top:9px;left:10px}.github-logo-4x{float:left}.github-logo-4x-hover{opacity:0}.header-logo-wordmark:hover .github-logo,.header-logo-wordmark:hover .github-logo-4x{opacity:0}.header-logo-wordmark:hover .github-logo-hover,.header-logo-wordmark:hover .github-logo-4x-hover{opacity:1}.divider-vertical{float:left;width:1px;height:40px;margin:0 10px;background-color:#e5e5e5;border-right:1px solid #fff}.notification-indicator{float:left;width:36px;height:40px;margin:0 -10px;text-align:center;line-height:40px}.notification-indicator .mail-status{display:inline-block;width:8px;height:8px;border-radius:100px;background-color:#aaa;background-color:#cccccc;background-image:-moz-linear-gradient(#aaa, #ccc);background-image:-webkit-linear-gradient(#aaa, #ccc);background-image:linear-gradient(#aaa, #ccc);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(0,0,0,0.1),0 1px 0 #fff}.notification-indicator:hover .mail-status{background-color:#bbbbbb;background-image:-moz-linear-gradient(#999, #bbb);background-image:-webkit-linear-gradient(#999, #bbb);background-image:linear-gradient(#999, #bbb);background-repeat:repeat-x}.notification-indicator .unread{background-color:#3269a0;background-image:-moz-linear-gradient(#4183c4, #3269a0);background-image:-webkit-linear-gradient(#4183c4, #3269a0);background-image:linear-gradient(#4183c4, #3269a0);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 0 rgba(0,0,0,0.1),0 0 10px #4183c4}.notification-indicator:hover .unread{background-color:#2c5d8d;background-image:-moz-linear-gradient(#3876b4, #2c5d8d);background-image:-webkit-linear-gradient(#3876b4, #2c5d8d);background-image:linear-gradient(#3876b4, #2c5d8d);background-repeat:repeat-x}.notification-indicator.contextually-unread{position:relative;z-index:2;margin:0 -11px -1px -12px;padding-left:1px;background-color:#d2e4f9;background-image:-moz-linear-gradient(#e9f2fc, #d2e4f9);background-image:-webkit-linear-gradient(#e9f2fc, #d2e4f9);background-image:linear-gradient(#e9f2fc, #d2e4f9);background-repeat:repeat-x;border:solid #c2d5eb;border-width:0 1px 1px;box-shadow:inset 1px 0 rgba(255,255,255,0.5)}.notification-indicator.contextually-unread:hover{background-position:0 -15px}.top-nav{float:left;list-style:none}.top-nav li{float:left}.top-nav a{display:block;padding:5px;margin-left:5px;color:#333333;font-weight:bold;-moz-transition:all 0.1s ease-in 0;-webkit-transition:all 0.1s ease-in 0}.top-nav a:hover{color:#4183c4;text-decoration:none}.header-logged-out{background:#fff;padding:5px 0}.header-logged-out .top-nav{margin-top:10px}.header-logged-out .top-nav a{margin-left:15px}.header-actions{float:right;margin-top:8px}.header-actions .button{margin-left:5px}.header-actions .button.classy,.header-actions .button.primary.classy{padding-left:12px;padding-right:12px;box-shadow:0 1px 0 #fff}.header-logo-blacktocat,.top-nav a,#user-links a,.advanced-search{-webkit-mask-image:-webkit-gradient(linear, left top, left bottom, from(#000), to(rgba(0,0,0,0.75)))}.header-logo-blacktocat:hover,.top-nav a:hover,#user-links a:hover,.advanced-search:hover{-webkit-mask-image:-webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,0.75)), to(#000))}#user-links{float:right;margin:0;padding:0;list-style:none}#user-links li{float:left;margin-left:10px}#user-links a,#user-links button{display:block;padding:12px 5px 10px;color:#333333;line-height:16px;-moz-transition:all 0.1s ease-in 0;-webkit-transition:all 0.1s ease-in 0}#user-links a:hover,#user-links button:hover{color:#4183c4;text-decoration:none}#user-links button{background:none;border:0}#user-links .name{font-weight:bold;white-space:nowrap}#user-links .name img{float:left;margin:-2px 5px 0 0;border-radius:3px;box-shadow:0 1px 0 #fff}#user-links .setting_warning{position:absolute;top:-6px;left:75%;float:left;margin-left:-7px;background:rgba(203,108,0,0.8);border-bottom:1px solid #8f4f07;border-radius:2px;padding:3px 4px;line-height:1;font-size:10px;color:#fff;font-weight:bold;white-space:nowrap;background:#D26911;padding:3px 6px}.global-notice{padding:8px;background-color:#D4F6FA;border-bottom:1px solid #78909b}.global-notice h2{color:#1d2b3d}.global-notice p{color:#637781}.global-notice .global-notice-inner{width:920px;margin:0 auto}.global-notice .global-notice-inner h2,.global-notice .global-notice-inner p{font-size:13px;margin:0px}.global-notice.warn{background-color:#ffe3bf;border-bottom:1px solid #fd9800}.global-notice.warn h2{color:#613a00}.global-notice.warn p{color:#c47500}.global-notice.danger-zone{background-color:#FFEAEA;border-bottom:1px solid #cc7575}.global-notice.danger-zone h2,.global-notice.danger-zone p{color:#990000}.enterprise .header{background-color:#2a2c2e;background-image:-moz-linear-gradient(#434648, #2a2c2e);background-image:-webkit-linear-gradient(#434648, #2a2c2e);background-image:linear-gradient(#434648, #2a2c2e);background-repeat:repeat-x;border-bottom-color:#000}.enterprise #serverstats.enabled+.header{box-shadow:inset 0 1px 0 rgba(255,255,255,0.1)}.enterprise .divider-vertical{background-color:#2a2c2e;border-right-color:#434648}.enterprise .header-logo-blacktocat,.enterprise .top-nav a,.enterprise #user-links a{color:white;text-shadow:0 1px 0 rgba(0,0,0,0.5)}.enterprise .header-logo-blacktocat:hover,.enterprise .top-nav a:hover,.enterprise #user-links a:hover{color:#4183c4}.enterprise #user-links .name img{box-shadow:0 1px 0 rgba(0,0,0,0.5)}.enterprise .notification-indicator .mail-status{background-color:#434648;background-image:-moz-linear-gradient(#2a2c2e, #434648);background-image:-webkit-linear-gradient(#2a2c2e, #434648);background-image:linear-gradient(#2a2c2e, #434648);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15)}.enterprise .notification-indicator .mail-status.unread{background-color:#3269a0;background-image:-moz-linear-gradient(#689cd0, #3269a0);background-image:-webkit-linear-gradient(#689cd0, #3269a0);background-image:linear-gradient(#689cd0, #3269a0);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 0 rgba(0,0,0,0.1),0 0 10px #4183c4}.enterprise .notification-indicator.contextually-unread{background-color:#304254;background-image:-moz-linear-gradient(#425567, #304254);background-image:-webkit-linear-gradient(#425567, #304254);background-image:linear-gradient(#425567, #304254);background-repeat:repeat-x;border-color:#273644 #273644 #273644 #2a2c2e;box-shadow:inset 1px 0 rgba(255,255,255,0.1)}.enterprise .header-actions .button.classy,.enterprise .header-actions .button.primary.classy{border:0;box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 1px rgba(0,0,0,0.5)}#unsupported-browser{background-color:#fae692;background-image:-moz-linear-gradient(#feefae, #fae692);background-image:-webkit-linear-gradient(#feefae, #fae692);background-image:linear-gradient(#feefae, #fae692);background-repeat:repeat-x;border-bottom:1px solid #b3a569;color:#211e14;padding:0.7em 0}#unsupported-browser .container{background:url(https://gist.github.com/images/icons/ie-notice.png) 0 3px no-repeat;background-size:38px 34px}#unsupported-browser h5{font-size:13px;padding-left:48px}#unsupported-browser p{margin:0;padding-left:48px}#unsupported-browser .button{float:right;color:#211e14;border-color:#968a59;background-color:#f2e4ab;background-image:-moz-linear-gradient(#fef8db, #f2e4ab);background-image:-webkit-linear-gradient(#fef8db, #f2e4ab);background-image:linear-gradient(#fef8db, #f2e4ab);background-repeat:repeat-x;margin-top:12px}#unsupported-browser .button:hover{background-color:#f1e1a2;background-image:-moz-linear-gradient(#fef6d1, #f1e1a2);background-image:-webkit-linear-gradient(#fef6d1, #f1e1a2);background-image:linear-gradient(#fef6d1, #f1e1a2);background-repeat:repeat-x;text-shadow:0 1px rgba(255,255,255,0.9)}.logged-out-home .hero{color:white;background:rgba(0,0,0,0.9);padding:64px 0;margin-bottom:36px;text-align:center}.logged-out-home .hero h1{font-size:36px;font-weight:100;letter-spacing:-1px;line-height:36px;margin:0}.logged-out-home .hero p{font-weight:normal;font-size:18px;margin:0}.logged-out-home .start{margin-top:36px}.logged-out-home .start .container{padding-bottom:12px}.logged-out-home .start p{font-size:18px;font-weight:bold;text-align:center;margin-top:0;margin-bottom:0}.logged-out-home .features{list-style:none}.logged-out-home .features li{display:table-cell;text-align:center;width:1%}.logged-out-home .features li h2{font-size:18px;font-weight:100;line-height:1.2;padding:0 48px}.logged-out-home .features li p{color:rgba(0,0,0,0.5);font-size:14px;width:90%}.logged-out-home .features img{border:1px solid rgba(0,0,0,0.1);border-radius:2px}.i-am-error{padding:144px 0 104px;text-align:center}.i-am-error h1{letter-spacing:-1px;line-height:60px;font-size:60px;font-weight:100;margin:0px}.i-am-error p{color:rgba(0,0,0,0.25)}.context-overlay{display:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.context-menu-container .context-pane{display:none}.context-pane-wrapper{position:relative}.context-pane{position:absolute;background:#fff;border:1px solid #c1c1c1;border-radius:5px;box-shadow:0 0 13px rgba(0,0,0,0.31);margin-top:6px;width:300px;z-index:21}.context-pane.active,.context-menu-container.active .context-pane{display:block}.context-pane.edit-label-context{width:240px}.context-pane,.context-pane>.context-body{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.context-pane>.context-body{display:block;position:relative;padding:8px 10px;border-top:1px solid #ddd}.context-pane>.context-title{font-weight:bold;font-size:12px;color:#111111;text-shadow:1px 1px 0 #fff;padding:8px 10px 5px 10px;background-color:#e9eeee;background-image:-moz-linear-gradient(#f6f8f8, #e9eeee);background-image:-webkit-linear-gradient(#f6f8f8, #e9eeee);background-image:linear-gradient(#f6f8f8, #e9eeee);background-repeat:repeat-x;border-bottom:1px solid #f0f3f3;border-top-left-radius:4px;border-top-right-radius:4px}.context-pane .close,#facebox .close{display:block;float:right;margin-right:8px;margin-top:7px;width:16px;height:16px}.context-pane .close:hover .mini-icon-remove-close,#facebox .close:hover .mini-icon-remove-close{color:#555}.context-pane .close .mini-icon-remove-close,#facebox .close .mini-icon-remove-close{line-height:16px;height:16px;color:#CCC}.context-pane .loader{position:absolute;top:0;left:0;width:100%;height:100%;font-size:14px;color:#666;text-indent:-9999px;background:url(https://gist.github.com/assets/spinners/octocat-spinner-32-1ef04af7458d52670ba5db43d5b70e4e.gif) 50% 50% no-repeat #fff;opacity:0.8;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.context-pane .error-message{position:absolute;top:0;left:0;width:100%;height:100%;font-size:14px;font-weight:bold;color:#cc0000;text-align:center;line-height:50px;background:#fff;opacity:0.8;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.context-pane>.context-body.pane-selector{padding:0;max-height:400px;overflow-x:hidden;overflow-y:auto}.pane-selector .selector-item{position:relative;display:block;border-top:1px solid #eee;padding:8px 10px 8px 30px;cursor:pointer}.pane-selector .selector-item.show-icon .mini-icon{color:inherit}.pane-selector .selector-item .mini-icon{color:#fff;display:inline-block;position:absolute;top:8px;left:10px}.pane-selector .selector-item h4{margin:0;font-size:12px;font-weight:bold;color:#666;text-shadow:none}.pane-selector .selector-item h4 a{font-weight:normal;color:#666}.pane-selector .selector-item h4.disabled{color:#999}.pane-selector .selector-item h4.disabled .avatar{opacity:0.5}.pane-selector .selector-item p{margin:0;font-size:11px;color:#888;text-shadow:none}.pane-selector .selector-item a{display:block;text-decoration:none}.pane-selector .selector-item label{cursor:pointer}.pane-selector .selector-item input[type=radio]{display:none}.pane-selector .selector-item .context-button-text{display:none}.context-body.pane-selector .milestone-item .confirm,.context-body.pane-selector .selector-item.milestone .confirm{float:left;line-height:30px;margin-right:5px}.context-body.pane-selector .selector-item.milestone h4 .confirm{float:none;line-height:16px;margin-right:5px}.pane-selector>.selector-item:first-child,.pane-selector .commitish-item:nth-child(2),.filterbar+.selector-item{border-top:none}.pane-selector .selector-item.selected h4{color:#333;text-shadow:none}.pane-selector .selector-item.selected .mini-icon-confirm{color:#333333}.pane-selector .selector-item.clear.selected{background-image:none}.pane-selector .selector-item:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.pane-selector a.selector-item{text-decoration:none}.pane-selector .selector-item.navigation-focus{background-color:#4f83c4}.pane-selector .selector-item.navigation-focus h4{color:#fff;text-shadow:0 0 2px rgba(0,0,0,0.6)}.pane-selector .selector-item.navigation-focus h4 a{color:#fff}.pane-selector .selector-item.navigation-focus p{color:#fff;text-shadow:0 0 2px rgba(0,0,0,0.4)}.pane-selector .selector-item.navigation-focus .mini-icon-confirm{color:#fff;text-shadow:0 0 2px rgba(0,0,0,0.6)}.pane-selector .filterbar{padding-top:10px;padding-bottom:10px;padding-left:10px;background:#f8f8f8;border-bottom:1px solid #ddd}.pane-selector .filterbar ul.tabs{margin:7px 0 -11px -10px;width:100%;padding:0 10px;overflow:hidden}.pane-selector .filterbar ul.tabs li{list-style-type:none;display:inline}.pane-selector .filterbar ul.tabs li a{float:left;margin-right:5px;padding:2px 6px;font-size:11px;font-weight:bold;color:#666;text-decoration:none;border:1px solid transparent;border-top-left-radius:2px;border-top-right-radius:2px}.pane-selector .filterbar ul.tabs li a.selected{position:relative;top:1px;background:#fff;border:1px solid #ddd;border-bottom-color:#fff}.pane-selector .filterbar input[type=text]{font-size:13px;width:98%;padding:2px;margin:5px 0;-moz-box-sizing:border-box;box-sizing:border-box}.context-pane .placeholder-field label.placeholder{top:9px}.pane-selector .filterable-active .clear-selector-item{display:none}.user-selector .selector-item{padding-bottom:5px}.user-selector .avatar{position:relative;top:-2px;display:inline-block;padding:1px;border:1px solid #eee;vertical-align:middle;line-height:1px}.user-selector h4 a{display:block;text-decoration:none}.user-selector h4 em.alt{float:right;margin-top:2px;font-weight:normal;font-style:normal;color:#999}.user-selector .selector-item.navigation-focus h4 a em.alt{color:#fff}.new-label input[type=text],.edit-label-context input[type=text]{padding:2px;width:97%}.new-label .custom-color,.edit-label-context .custom-color{margin:10px 0}.new-label .form-actions,.edit-label-context .form-actions{padding-right:0}.pane-selector.label-selector ul.labels{margin:0 10px 10px}.pane-selector .tag{float:right;padding:3px 4px 2px 4px;font-size:8px;font-weight:bold;text-transform:uppercase;text-shadow:1px 1px 0 rgba(0,0,0,0.25);color:#fff;background:#4f83c4;border-radius:3px}.pane-selector .no-results{display:none;margin:0;padding:20px 0;font-size:14px;color:#888;text-align:center}.pane-selector .filterable-empty>.no-results,.pane-selector .filter-tab-empty>.no-results{display:block}html,body{color:black;height:100%}body{background-color:white;font:13.34px Helvetica,arial,freesans,clean,sans-serif;*font-size:small;line-height:1.4;min-width:980px}h1,h2,h3,h4,h5,h6{text-rendering:optimizeLegibility}#main{background:#fff url(https://gist.github.com/modules/header/background-v2.png) 0 0 repeat-x}a{color:#4183c4;text-decoration:none}a:active{outline:none}a:hover{text-decoration:underline}.container{margin:0 auto;width:960px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}table{font-size:inherit;font:100%}input[type=text],input[type=password],input[type=image],textarea{font:99% helvetica,arial,freesans,sans-serif}select,option{padding:0 0.25em}optgroup{margin-top:.5em}input.text{padding:1px 0}pre,code{font:12px Consolas,"Liberation Mono",Courier,monospace}.root-pane{float:left;width:148px}.column{float:right;width:792px}.user-mention,.team-mention{font-weight:bold;color:#333}.tabnav{margin:20px 0 10px;border-bottom:1px solid #ddd;height:35px}.tabnav .tabnav-tabs{display:inline-block}.tabnav .tabnav-tabs>li{display:inline-block}.tabnav .tabnav-tabs>li:first-child .tabnav-tab{padding-left:2px}.tabnav .tabnav-tabs>li:first-child .tabnav-tab.selected{padding-left:12px}.tabnav-tab{display:inline-block;margin-bottom:-1px;padding:8px 12px;border:1px solid transparent;border-bottom:0;font-size:14px;color:#666666;text-decoration:none}.tabnav-tab.selected{border-color:#ddd;border-radius:3px 3px 0 0;background-color:#fff;color:#333333;font-weight:bold}.tabnav-tab:hover{text-decoration:none}.tabnav .counter{position:relative;top:-1px;margin:0 0 0 5px;padding:1px 5px 2px 5px;font-size:10px;font-weight:bold;color:#666666;background:#e5e5e5;border-radius:10px}.tabnav .counter.blank{display:none}.tabnav-right{position:relative;display:block;float:right}.tabnav-widget{display:inline-block;vertical-align:top;margin-top:4px}.tabnav-widget+ul.tabnav-tabs{margin-left:10px}.tabnav-widget.text{margin-top:12px;font-size:11px;color:#666666}.tabnav-widget.search .spinner{vertical-align:middle;position:absolute;top:7px;left:-22px;margin-right:8px}.tabnav-widget.search .search-link{display:inline-block;height:26px;padding-right:5px;line-height:26px;font-weight:200;font-size:13px;color:#666666;vertical-align:top}.tabnav-widget.search .fieldwrap{display:inline-block;height:26px;border-radius:4px}.tabnav-widget.search .fieldwrap>input,.tabnav-widget.search .fieldwrap>button{display:inline-block}.tabnav-widget.search .fieldwrap.focused{outline:auto 5px -webkit-focus-ring-color;outline-offset:-2px;-moz-outline:-moz-mac-focusring solid 2px;-moz-outline-radius:0 5px 5px;-moz-outline-offset:0}.tabnav-widget.search input{padding:0 4px 0 4px;font-size:12px;height:24px;border:1px solid #d3d3d3;border-radius:3px 0 0 3px;vertical-align:top;margin:0}.tabnav-widget.search .minibutton{position:relative;margin-left:0;height:24px;vertical-align:top;padding:0 8px;border-left:none;border-radius:0 3px 3px 0;-moz-box-sizing:content-box;box-sizing:content-box}.tabnav-widget.search .minibutton:hover{color:white}ul.filter-list{list-style-type:none}ul.filter-list.small .filter-item{font-size:12px;padding:4px 10px;margin:0 0 2px 0}ul.filter-list .filter-item{display:block;padding:8px 10px;margin:0 0 5px 0;font-size:14px;border-radius:3px;text-decoration:none;color:#777;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ul.filter-list .filter-item:hover{background:#eee}ul.filter-list .filter-item.selected{color:#fff;background:#4183c4}ul.filter-list .filter-item .count{font-weight:bold;float:right}ul.color-label-list.editable .color{width:14px}ul.color-label-list.editable .color:hover{background:transparent url(https://gist.github.com/images/icons/arrow-down.png) 1px 2px no-repeat}ul.color-label-list.editable .mini-icon-remove-close{display:inline-block;color:#AAA}ul.color-label-list.editable .mini-icon-remove-close:hover{color:#ba3d37}ul.color-label-list .color-label{line-height:16px}ul.color-label-list .color-label:hover .color{box-shadow:0 0 4px rgba(0,0,0,0.4)}ul.color-label-list .color-label:hover .mini-icon-remove-close{opacity:1}ul.color-label-list .color-label.selected{font-weight:bold;background:98% 5px no-repeat transparent;-webkit-font-smoothing:antialiased}ul.color-label-list .color-label.selected .count,ul.color-label-list .color-label.selected .color{display:none}ul.color-label-list .color-label.selected .mini-icon-remove-close{display:inline-block}ul.color-label-list .color-label.zeroed,ul.color-label-list .color-label.zeroed .count{color:#999}ul.color-label-list .count{color:#333}ul.color-label-list .name a{color:#333}ul.color-label-list .color{display:block;float:left;margin-left:-5px;margin-right:4px;width:6px;height:14px;border-radius:2px}ul.color-label-list .mini-icon-remove-close{display:none;float:right;opacity:0.8}ul.color-label-list .nolabels{margin:10px 0;font-size:11px;color:#666}html,body{color:black;height:100%}body{background-color:white;font:13.34px Helvetica,arial,freesans,clean,sans-serif;*font-size:small;line-height:1.4;min-width:980px}h1,h2,h3,h4,h5,h6{text-rendering:optimizeLegibility}#main{background:#fff url(https://gist.github.com/modules/header/background-v2.png) 0 0 repeat-x}a{color:#4183c4;text-decoration:none}a:active{outline:none}a:hover{text-decoration:underline}.container{margin:0 auto;width:960px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}table{font-size:inherit;font:100%}input[type=text],input[type=password],input[type=image],textarea{font:99% helvetica,arial,freesans,sans-serif}select,option{padding:0 0.25em}optgroup{margin-top:.5em}input.text{padding:1px 0}pre,code{font:12px Consolas,"Liberation Mono",Courier,monospace}.root-pane{float:left;width:148px}.column{float:right;width:792px}.user-mention,.team-mention{font-weight:bold;color:#333}.pagehead{position:relative;display:block;margin-bottom:20px;padding:20px 0 0 0}.pagehead.separation{background-color:rgba(0,0,0,0.01);border-bottom:1px solid rgba(0,0,0,0.05)}.pagehead.separation h1{margin-bottom:15px}.pagehead.separation.trans{background-color:transparent;padding-bottom:20px}.pagehead.repohead{border-bottom:1px solid #e5e5e5}.pagehead.userpage{background-color:transparent}.pagehead .container{position:relative}.pagehead h1{margin:0 0 10px 0;font-size:20px;font-weight:normal;letter-spacing:-1px;line-height:28px;text-shadow:1px 1px 0 #fff;color:#495961;z-index:0}.pagehead.userpage h1{position:relative;padding-left:52px;margin-bottom:16px;font-weight:bold;line-height:54px}.pagehead.userpage h1 span{display:block;font-size:24px;line-height:24px}.pagehead.userpage h1 em{display:block;font-size:18px;line-height:20px}.pagehead h1.avatared img{border-radius:3px;position:absolute;top:0;left:0}.pagehead.repohead h1{color:#666666;margin-bottom:15px;padding-left:36px;position:relative}.pagehead.repohead h1.secret .mega-icon:before{color:#e9dba5}.pagehead.repohead h1.secret .repo-label span{padding:3px 6px 2px;background-color:#f8eec7;border-radius:3px;color:#A1882B}.pagehead.repohead h1 .mega-icon-gist,.pagehead.repohead h1 .mega-icon-gist-secret,.pagehead.repohead h1 .mega-icon-gist-forked{position:absolute;left:-4px;top:12px;line-height:32px;margin-top:-13px}.pagehead.repohead h1 .mega-icon-gist:before,.pagehead.repohead h1 .mega-icon-gist-secret:before,.pagehead.repohead h1 .mega-icon-gist-forked:before{color:#d0d0d0}.pagehead.repohead h1 .mega-icon-gist-secret{margin-top:-14px}.pagehead.repohead h1 strong{font-weight:bold}.pagehead h1 a{color:#495961}.pagehead.repohead h1 a{color:#4183c4;white-space:nowrap}.pagehead.repohead.mirror h1,.pagehead.repohead.fork h1{margin-top:-5px;margin-bottom:15px;height:auto}.pagehead.repohead h1 .fork-flag,.pagehead.repohead h1 .mirror-flag{display:block;margin-top:-5px;margin-left:34px;font-size:11px;line-height:20px;letter-spacing:0}.pagehead h1 em{font-style:normal;font-weight:normal;color:#99a7af}.pagehead h1 em strong{color:#919ea6}.pagehead .title-actions-bar{position:relative}.pagehead .title-actions-bar a:hover{text-decoration:none}ul.pagehead-actions{margin:0;float:right;position:absolute;right:0;z-index:10}.pagehead.repohead span.repo-label{position:absolute;top:14px;left:-75px;width:65px;margin-top:-14px;text-align:right;font-size:11px;text-transform:uppercase;color:#b9b9b9;font-weight:300;letter-spacing:0px;text-shadow:none;-moz-transition:all 0.4s ease-in-out 0;-webkit-transition:all 0.4s ease-in-out 0}@media only screen and (max-width: 1135px){.pagehead.repohead span.repo-label{opacity:0}}.pagehead.repohead ul.pagehead-actions{position:relative;top:0;right:0;padding:0 0 0 20px}.pagehead.userpage ul.pagehead-actions{margin-top:1px}ul.pagehead-actions>li{list-style-type:none;display:inline-block;font-size:11px;font-weight:bold;color:#333333;margin:0 0 0 5px}ul.pagehead-actions>li.text{padding:0 5px}ul.pagehead-actions a.feed{display:inline-block;height:24px;padding:0 6px;line-height:26px;border:1px solid #eee;border-radius:3px}ul.pagehead-actions a.feed:hover{text-decoration:none}ul.pagehead-actions a.feed .mini-icon-feed{position:relative;top:2px}.pagehead p.description{margin:-8px 0 10px 0;font-size:12px;color:#999999}html,body{color:black;height:100%}body{background-color:white;font:13.34px Helvetica,arial,freesans,clean,sans-serif;*font-size:small;line-height:1.4;min-width:980px}h1,h2,h3,h4,h5,h6{text-rendering:optimizeLegibility}#main{background:#fff url(https://gist.github.com/modules/header/background-v2.png) 0 0 repeat-x}a{color:#4183c4;text-decoration:none}a:active{outline:none}a:hover{text-decoration:underline}.container{margin:0 auto;width:960px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}table{font-size:inherit;font:100%}input[type=text],input[type=password],input[type=image],textarea{font:99% helvetica,arial,freesans,sans-serif}select,option{padding:0 0.25em}optgroup{margin-top:.5em}input.text{padding:1px 0}pre,code{font:12px Consolas,"Liberation Mono",Courier,monospace}.root-pane{float:left;width:148px}.column{float:right;width:792px}.user-mention,.team-mention{font-weight:bold;color:#333}.topsearch{position:relative;float:left;margin-top:7px}#top_search_form{position:relative;z-index:100;width:400px;padding-right:14px;-webkit-transition:width 0.2s ease-in-out;-moz-transition:width 0.2s ease-in-out;transition:width 0.2s ease-in-out}#top_search_form input[type="text"]{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;width:100%;padding:5px 20px 5px 8px;font-size:12px;background-color:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:inset 0 1px 3px rgba(0,0,0,0.075),0 1px 0 rgba(255,255,255,0.5);outline:none}#top_search_form input[type="text"]:focus{border-color:#51a7e8;box-shadow:inset 0 1px 3px rgba(0,0,0,0.075),0 0 3px rgba(81,167,232,0.5)}#top_search_form .divider-vertical{position:absolute;top:-7px;right:0;margin:0}.topsearch .top-nav{position:absolute;top:0;left:420px;z-index:99;width:200px;-moz-transition:opacity 0.2s linear 0;-webkit-transition:opacity 0.2s linear 0;opacity:1;z-index:1}.commandbar{position:relative}.commandbar .display{position:absolute;top:100%;left:0;right:0;z-index:100;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:300px;overflow-y:auto;background-color:#fff;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:3px;box-shadow:0 1px 5px rgba(0,0,0,0.25);-webkit-transition:opacity 0.2s linear,visibility 0s linear 0.21s;-moz-transition:opacity 0.2s linear,visibility 0s linear 0.21s;transition:opacity 0.2s linear,visibility 0s linear 0.21s;opacity:1;visibility:visible}.commandbar .display.hidden{opacity:0;visibility:hidden}.commandbar .choice{position:relative;padding:8px;margin-bottom:-1px;overflow:hidden;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);white-space:nowrap;border:solid rgba(0,0,0,0.05);border-width:1px 0;cursor:default}.commandbar .choice:first-child{border-top:0;border-radius:2px 2px 0 0}.commandbar .choice:last-child{border-radius:0 0 2px 2px;border-bottom:0;margin-bottom:0}.commandbar .choice:hover{background-color:#eff7fd;z-index:2;border-color:rgba(0,0,0,0.1)}.commandbar .choice .command{display:inline-block;margin-right:10px;color:#333}.commandbar .choice.selected{z-index:3;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#3269a0;background-image:-moz-linear-gradient(#4183c4, #3269a0);background-image:-webkit-linear-gradient(#4183c4, #3269a0);background-image:linear-gradient(#4183c4, #3269a0);background-repeat:repeat-x}.commandbar .choice.selected .command{color:#fff}.commandbar .choice.loading{background-color:#eeeeee;background-image:-moz-linear-gradient(#fff, #eee);background-image:-webkit-linear-gradient(#fff, #eee);background-image:linear-gradient(#fff, #eee);background-repeat:repeat-x}.commandbar .choice.loading .description{background:url(https://gist.github.com/assets/spinners/octocat-spinner-16px-ae4ee8b41c48dda1fc05cabc1fa56c66.gif) 0 50% no-repeat;padding-left:24px;display:block;line-height:16px;margin:-1px 0}.commandbar .display table{width:100%;border-collapse:collapse}.commandbar .display table td{padding:0 8px;color:#999;line-height:30px;white-space:nowrap;border-top:1px solid rgba(0,0,0,0.05)}.commandbar .display table td span{display:block;overflow:hidden;text-overflow:ellipsis}.commandbar .display table td:first-child{font-weight:bold;width:1px;color:#333}.commandbar .display table tr:first-child td{border:0}.enterprise #top_search_form input[type="text"]{border:1px solid #080909;box-shadow:inset 0 1px 0 rgba(0,0,0,0.075),0 1px 0 rgba(255,255,255,0.075)}.enterprise #top_search_form input[type="text"]:focus{border-color:#000;box-shadow:inset 0 1px 0 rgba(0,0,0,0.075)}.enterprise .advanced-search{color:#fff;text-shadow:0 1px 0 rgba(0,0,0,0.5)}.enterprise .advanced-search:hover{color:#4183c4}.search-results{-moz-box-sizing:border-box;box-sizing:border-box;display:none;position:absolute;width:400px;background:#fff;border:1px solid #ddd;border-radius:3px;margin-top:2px}.search-results.active{display:block}.search-result-group{border-top:1px solid #ddd;position:relative;min-height:38px}.search-result-group:before,.search-result-group:after{content:" ";display:table}.search-result-group:after{clear:both}.search-result-group:first-child{border-top:none}.search-result-group ul{list-style:none;margin-left:85px}.search-result-header{background:#f7f7f7;border-right:1px solid #ddd;color:#888;font-size:11px;font-weight:100;display:block;position:absolute;top:0;bottom:0;margin:0;padding:12px 10px;width:64px}.search-result-header:first-child{border-top-left-radius:3px}.search-result-item{display:block;padding:8px 10px;font-size:12px;border-bottom:1px solid #f7f7f7}.search-result-item:last-child{border-bottom:none}.search-result-item.navigation-focus{background-color:#51a7e8;background-image:-moz-linear-gradient(rgba(81,167,232,0.7), #51a7e8);background-image:-webkit-linear-gradient(rgba(81,167,232,0.7), #51a7e8);background-image:linear-gradient(rgba(81,167,232,0.7), #51a7e8);background-repeat:repeat-x;cursor:pointer;text-shadow:#06c 0 -1px 0;-webkit-font-smoothing:antialised}.search-result-item.navigation-focus a{color:#fff}.search-result-item a{color:#333333}.search-result-item a:hover{text-decoration:none}.search-no-results{border:0;line-height:22px;color:#ccc;font-style:italic}.simple-search-page{padding-top:120px}.simple-search-page button{float:right}.simple-search-page h2{font-weight:normal}.simple-search-page h2 .mega-icon{vertical-align:middle}.simple-search-page .commandbar{float:left;width:auto}.simple-search-page .container{width:680px}.search-head .search-form-container{position:absolute;top:-18px;left:170px;width:792px}.search-head .search-form-container input.text{width:695px}.search-form-container{margin-bottom:20px}.search-form dd{margin:0}.search-form input.text{background-color:#fff;padding:7px 8px;line-height:15px;vertical-align:middle;width:580px;margin-right:0;font-size:14px;color:#666;border:1px solid #ccc;border-radius:3px;outline:none;background:#fafafa none;box-shadow:inset rgba(0,0,0,0.1) 0 1px 1px}.search-form input.text:focus{border-color:#51a7e8;box-shadow:rgba(81,167,232,0.5) 0 0 5px,rgba(0,0,0,0.2) 0 1px 1px inset}.search-form .commandbar{display:inline-block;width:auto}.search-form .commandbar .message{top:7px}.filter-list li{position:relative}.filter-list li .bar{background:#f1f1f1;display:inline-block;position:absolute;z-index:-1;top:2px;bottom:2px;right:0}.filter-list .selected .mini-icon-remove-close{float:right;opacity:0.8;display:inline-block}.filter-list.language-search-filter{border-top:none;margin-top:0;padding-top:0}.search-results-listing .divider{line-height:17px}.search-results-listing .divider .line-numbers{font-size:10px;padding:0 5px 3px 0 !important}.search-results-listing .divider .highlight{padding:0 !important;background:#eee}.search-results-listing em{background-color:rgba(255,255,140,0.5);font-weight:bold;padding:2px 1px 0;font-style:normal;margin:0 -1px;color:#333}#ace-editor{position:relative;font-family:Monaco,"Liberation Mono",Courier,monospace}#ace-editor .ace_content{line-height:normal}.ace_gutter{background:#ececec;border-right:1px solid #eee;color:#aaa;font-family:Consolas,"Liberation Mono",Courier,monospace;font-size:12px;overflow:hidden}.select-menu-button{padding:0 27px 0 7px}.select-menu-button .mini-icon{margin:0}.select-menu-button.with-gravatar:before{top:14px}.select-menu-button:after{content:"";display:block;position:absolute;border-left:1px solid #f9f9f9;top:0;bottom:0;right:0;width:18px;box-shadow:#e4e4e4 -1px 0 0}.select-menu-button:before{content:"";display:block;position:absolute;border:3px solid #000;border-color:#000 transparent transparent;top:10px;right:7px;width:0px;height:0px}.select-menu-button:hover:after{border-left:1px solid #6a9fd3;box-shadow:#3c74ab -1px 0 0}.select-menu-button:hover:before{border-color:#fff transparent transparent}.select-menu .spinner{float:left;margin:4px 0 0 -24px}.select-menu.active .select-menu-modal-holder{display:block}.select-menu.active .select-menu-button{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.5);border-color:#686868;background-color:#9e9e9e;background-image:-moz-linear-gradient(#767676, #9e9e9e);background-image:-webkit-linear-gradient(#767676, #9e9e9e);background-image:linear-gradient(#767676, #9e9e9e);background-repeat:repeat-x}.select-menu.active .select-menu-button:after{border-left:1px solid #a4a4a4;box-shadow:#787878 -1px 0 0}.select-menu.active .select-menu-button:before{border-color:#fff transparent transparent}.select-menu-modal-holder{position:absolute;display:none;z-index:21}.select-menu-modal{margin-top:6px;width:300px;background:#fff;border:1px solid #c1c1c1;border-radius:5px;box-shadow:0 0 13px rgba(0,0,0,0.31);overflow:hidden;font-size:12px;color:#666}.select-menu-header{padding:8px 10px;background-color:#e9eeee;background-image:-moz-linear-gradient(#f6f8f8, #e9eeee);background-image:-webkit-linear-gradient(#f6f8f8, #e9eeee);background-image:linear-gradient(#f6f8f8, #e9eeee);background-repeat:repeat-x;border-bottom:1px solid #f0f3f3}.select-menu-header .select-menu-title{font-weight:bold;font-size:12px;color:#111;text-shadow:1px 1px 0 #fff}.select-menu-header .mini-icon{display:block;float:right;width:16px;height:16px;color:#CCC;cursor:pointer}.select-menu-header .mini-icon:hover{color:#555}.select-menu-filters{background-color:#F8F8F8;border-top:1px solid #ddd}.select-menu-text-filter{padding:10px 10px 0}.select-menu-text-filter:first-child:last-child{padding-bottom:10px;border-bottom:1px solid #ddd}.select-menu-text-filter input{display:block;width:100%;max-width:100%;padding:5px;border:1px solid #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.select-menu-text-filter input::-webkit-input-placeholder,.select-menu-text-filter input:-moz-placeholder{color:#aaa}.select-menu-tabs{height:31px;border-bottom:1px solid #ddd}.select-menu-tabs ul{overflow:hidden;padding:14px 10px 0 10px}.select-menu-tabs .select-menu-tab{display:inline-block}.select-menu-tabs a{height:18px;padding:4px 6px;font-size:11px;font-weight:bold;color:#888;-webkit-font-smoothing:antialiased;text-decoration:none;line-height:18px;border-radius:3px 3px 0 0;cursor:pointer}.select-menu-tabs a:hover{color:#333}.select-menu-tabs a.selected{padding:4px 5px;box-shadow:0 0 3px rgba(0,0,0,0.2);border:1px solid #ccc;border-bottom:1px solid #fff;background-color:#fff;color:#333}.select-menu-list{max-height:400px;overflow:auto;position:relative}.select-menu-list.filterable-empty .select-menu-no-results{display:block}.select-menu-item{padding:8px;cursor:pointer;border-bottom:1px solid #eee}.select-menu-item:last-child,.select-menu-item.last-visible{border-bottom:0;border-radius:0 0 3px 3px}.select-menu-item.select-menu-item-template{display:none}.select-menu-item.disabled,.select-menu-item.disabled.selected{color:#999}.select-menu-item.disabled .select-menu-item-gravatar,.select-menu-item.disabled.selected .select-menu-item-gravatar{opacity:.5}.select-menu-item .mini-icon{color:#333}.select-menu-item input[type="radio"]{display:none}.select-menu-item .select-menu-checkmark{color:transparent;vertical-align:top;margin-top:1px}.select-menu-item.navigation-focus,.select-menu-item.navigation-focus.selected{background-color:#4183c4;color:#fff}.select-menu-item.navigation-focus>.mini-icon,.select-menu-item.navigation-focus.selected>.mini-icon{color:#fff}.select-menu-item.navigation-focus .description,.select-menu-item.navigation-focus.selected .description{color:white}.select-menu-item.selected{font-weight:bold;color:#333}.select-menu-item.selected>.mini-icon{color:#333}.select-menu-item a{color:inherit;text-decoration:none}.select-menu-no-results{padding:9px;display:none;cursor:auto;color:#999}.select-menu-button-gravatar,.select-menu-item-gravatar{display:inline-block;border-radius:3px;vertical-align:middle;overflow:hidden;margin-right:5px;line-height:0}.select-menu-button-gravatar img,.select-menu-item-gravatar img{height:20px;width:20px;display:inline-block}.select-menu-button-gravatar{margin:6px 5px 6px 0}.select-menu-item-text{display:inline-block;vertical-align:top;margin-top:2px}.select-menu-item-text:first-child{margin-left:5px}.select-menu-item-text .description{color:#888;font-size:11px}.select-menu-footer{padding:8px;font-weight:bold;border-top:1px solid #eee}.select-menu-footer a{display:inline-block;margin-top:1px;vertical-align:top}.select-menu-footer .mini-icon{color:#666}.select-menu-new-item-form{display:none}.select-menu-new-item-form .mini-icon{color:#4183c4}.select-menu-new-item-form.is-enabled{display:block}.context-loader{position:absolute;top:0;left:50%;margin-left:-75px;width:110px;padding:10px 10px 10px 30px;font-weight:bold;font-size:12px;color:#666;background:url(https://gist.github.com/assets/spinners/octocat-spinner-16px-ae4ee8b41c48dda1fc05cabc1fa56c66.gif) 10px 50% no-repeat #eee;border:1px solid #ddd;border-top:1px solid #fff;border-radius:5px;border-top-left-radius:0;border-top-right-radius:0;z-index:20}@media screen and (-webkit-min-device-pixel-ratio: 2), screen and (max--moz-device-pixel-ratio: 2){.context-loader{background:url(https://gist.github.com/assets/spinners/octocat-spinner-32-EAF2F5-b4f54d2810a4cf15d5bb1841063419ee.gif) 10px 50% no-repeat #eee;background-size:16px auto}}.context-loader-container .context-loader{display:none}.context-loader-container .context-loader-overlay{opacity:1;-moz-transition:opacity 0.2s ease-in 0;-webkit-transition:opacity 0.2s ease-in 0}.context-loader-container.is-context-loading .context-loader{display:block;white-space:nowrap}.context-loader-container.is-context-loading .context-loader-overlay{opacity:0.5}html,body{color:black;height:100%}body{background-color:white;font:13.34px Helvetica,arial,freesans,clean,sans-serif;*font-size:small;line-height:1.4;min-width:980px}h1,h2,h3,h4,h5,h6{text-rendering:optimizeLegibility}#main{background:#fff url(https://gist.github.com/modules/header/background-v2.png) 0 0 repeat-x}a{color:#4183c4;text-decoration:none}a:active{outline:none}a:hover{text-decoration:underline}.container{margin:0 auto;width:960px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}table{font-size:inherit;font:100%}input[type=text],input[type=password],input[type=image],textarea{font:99% helvetica,arial,freesans,sans-serif}select,option{padding:0 0.25em}optgroup{margin-top:.5em}input.text{padding:1px 0}pre,code{font:12px Consolas,"Liberation Mono",Courier,monospace}.root-pane{float:left;width:148px}.column{float:right;width:792px}.user-mention,.team-mention{font-weight:bold;color:#333}.discussion-bubble{margin:20px 0}.discussion-bubble .boxed-group{margin:0}.discussion-bubble .discussion-bubble-avatar{position:relative;float:left;border-radius:3px}.discussion-bubble .discussion-bubble-content{position:relative;margin-left:60px}.discussion-bubble .discussion-bubble-content:before{content:"";display:block;height:0;width:0;border:10px solid #eee;border-width:10px 10px 10px 0;border-color:rgba(238,238,238,0) #eee rgba(238,238,238,0) rgba(238,238,238,0);position:absolute;left:-10px;top:15px}.discussion-bubble .form-actions{margin:10px 0 0 60px}.discussion-bubble textarea{-moz-box-sizing:border-box;box-sizing:border-box;border:0;min-height:60px;padding:6px;width:100%}.discussion-bubble-inner{min-height:60px;border:1px solid #cacaca;background-color:#fff}.comment.is-comment-editing .edit-comment-hide{display:none}.comment.is-comment-editing .form-content{display:block;opacity:1.0}.comment.is-comment-loading .context-loader{display:block}.comment.is-comment-loading .formatted-content,.comment.is-comment-loading .form-content{opacity:0.5}.comment.is-comment-error .comment-form-error{display:block}.comment+.comment{border-top:1px solid #cacaca}.comment-header{height:33px;padding:0 10px 0 6px;border-bottom:1px solid #ccc;background-color:#e1e1e1;background-image:-moz-linear-gradient(#f8f8f8, #e1e1e1);background-image:-webkit-linear-gradient(#f8f8f8, #e1e1e1);background-image:linear-gradient(#f8f8f8, #e1e1e1);background-repeat:repeat-x;font-size:12px}.comment-header .comment-header-gravatar{display:inline-block;margin-right:3px;vertical-align:middle;border-radius:3px}.comment-header .comment-type-icon{text-decoration:none}.comment-header .comment-header-author{display:inline-block;max-width:600px;height:33px;line-height:33px;font-weight:bold;color:#222;text-shadow:1px 1px 0 rgba(255,255,255,0.7);white-space:nowrap;text-overflow:ellipsis}.comment-header .comment-header-author a{color:#333333}.comment-header .comment-header-tag{margin-left:5px;padding:2px 5px 3px;font-size:11px;color:#fff;text-shadow:-1px -1px 0 rgba(0,0,0,0.2);background:#2d90c3;border-radius:2px}.comment-header .comment-header-right{float:right}.comment-header .comment-header-date{display:inline-block;margin:0;height:33px;font-size:11px;line-height:33px;font-style:normal;color:#777;text-shadow:1px 1px 0 rgba(255,255,255,0.7);line-height:33px}.comment-header .comment-header-actions{display:inline-block;vertical-align:middle;font-size:13px}.comment-header .comment-header-actions li{list-style-type:none;float:left;margin:0 0 0 8px;height:33px;line-height:31px}.comment-header .comment-header-actions li .mini-icon{-moz-transition:all 0.15s ease-in 0;-webkit-transition:all 0.15s ease-in 0;text-decoration:none}.comment-header .comment-header-actions li:hover .mini-icon{color:#4183c4}.comment-header a{color:#666666}.comment-header code{font-size:11px}.comment-header .mini-icon{color:#939AA0;margin:0 2px 0 1px;position:relative;top:2px}.comment-spammy{background-color:#ff9933;font-weight:bold;padding:8px 0 8px 10px}.repo-owner-comment .comment-header{background-color:#d8e5dd;background-image:-moz-linear-gradient(#f4faf6, #d8e5dd);background-image:-webkit-linear-gradient(#f4faf6, #d8e5dd);background-image:linear-gradient(#f4faf6, #d8e5dd);background-repeat:repeat-x}.repo-owner-comment .comment-header-tag{background:#2cc03e}.discussion-reference .comment-header,.discussion-commit-list .comment-header,.repo-collab-comment .comment-header{background-color:#dde8eb;background-image:-moz-linear-gradient(#f8fbfc, #dde8eb);background-image:-webkit-linear-gradient(#f8fbfc, #dde8eb);background-image:linear-gradient(#f8fbfc, #dde8eb);background-repeat:repeat-x}.inline-review-comment .inline-comments .comment-holder{max-width:704px}.inline-review-comment .inline-comments .inline-comment-form{max-width:724px}.comment-content{padding:0;color:#333333;font-size:12px;background:#fbfbfb}.comment-content .comment-body-title{padding:10px 10px 0 10px;font-weight:bold;color:#000}.comment-content .comment-body{padding:10px;font-size:13px;overflow:auto;width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.comment-content .form-content{padding:10px;display:none;opacity:1.0}.comment-content .form-content textarea{margin:0;padding:5px;width:100%;max-width:100%;height:100px;-moz-box-sizing:border-box;box-sizing:border-box}.comment-content .form-content input[type=text]{margin-bottom:5px;width:99%;padding:4px 2px}.comment-content .form-content input.title-field{font-size:20px;font-weight:bold}.comment-content .form-content .form-actions{margin:10px 0 0 0}.comment-content .email-format{line-height:1.5}.comment-content .context-loader{display:none}.comment-content .comment-cancel-button{float:left}.comment-form-error{display:none;margin:10px 10px 0;padding:5px 10px;font-weight:bold;color:#900;background-color:#FFEAEA;border:1px solid #e2a0a0}.uncommentable{color:#666666;font-weight:bold;margin:0;padding:8px 10px}.uncommentable .mini-icon{position:relative;top:2px}html,body{color:black;height:100%}body{background-color:white;font:13.34px Helvetica,arial,freesans,clean,sans-serif;*font-size:small;line-height:1.4;min-width:980px}h1,h2,h3,h4,h5,h6{text-rendering:optimizeLegibility}#main{background:#fff url(https://gist.github.com/modules/header/background-v2.png) 0 0 repeat-x}a{color:#4183c4;text-decoration:none}a:active{outline:none}a:hover{text-decoration:underline}.container{margin:0 auto;width:960px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}table{font-size:inherit;font:100%}input[type=text],input[type=password],input[type=image],textarea{font:99% helvetica,arial,freesans,sans-serif}select,option{padding:0 0.25em}optgroup{margin-top:.5em}input.text{padding:1px 0}pre,code{font:12px Consolas,"Liberation Mono",Courier,monospace}.root-pane{float:left;width:148px}.column{float:right;width:792px}.user-mention,.team-mention{font-weight:bold;color:#333}.file-box{background-color:#ececec;border:1px solid #ccc;position:relative}.file-box .highlight{border:0;padding:0}.file-box .mini-icon{position:relative;top:2px}.bubble{background-color:#eee;border-radius:3px;margin-bottom:12px;padding:3px}.bubble .file-box:first-child{border-bottom:none}.bubble .file-box:only-child{border-bottom:1px solid #ccc}.file-box .meta{background-color:#fafafa;border-bottom:1px solid #d8d8d8;color:#555;font-size:12px;position:relative;height:34px}.file-box .meta:before,.file-box .meta:after{content:" ";display:table}.file-box .meta:after{clear:both}.file-type-icon{color:#999999;line-height:34px;padding:0 2px 0 7px;display:block}.file-info .file-name{color:#333333;display:inline-block;font-size:13px;overflow:hidden;text-overflow:ellipsis;width:610px;white-space:nowrap;position:absolute;top:0;left:30px}.file-info{float:left;height:34px;line-height:33px}.file-language{color:#999999;font-weight:bold;float:left;padding-left:10px;padding-right:10px}.file-diffstat{border-left:1px solid #d8d8d8;color:#999999;cursor:default;font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:11px;font-weight:bold;line-height:0;text-align:right;display:inline-block;height:16px;padding:9px 14px 9px 10px}.file-diffstat a{text-decoration:none;color:#666}.file-diffstat .diffstat-bar{color:#d8d8d8;position:relative;display:inline-block;height:12px;text-decoration:none;text-align:left;font-family:'Octicons Regular';font-weight:normal;font-style:normal;display:inline-block;text-decoration:inherit;line-height:1;-webkit-font-smoothing:antialiased;font-size:16px;letter-spacing:-7px}.file-diffstat .diffstat-bar.diff-deleted,.file-diffstat .diffstat-bar i.minus{color:#bd2c00;font-style:normal}.file-diffstat .diffstat-bar.diff-added,.file-diffstat .diffstat-bar i.plus{color:#6cc644;font-style:normal}.file-actions{float:right;height:34px;line-height:34px}.file-actions .button-group{background:none;border:0;border-radius:0}.file-actions .button-group li{border-left:1px solid #d8d8d8;float:left;list-style-type:none}.file-actions-button{color:#333;font-size:13px;font-weight:bold;display:inline-block;padding:0 4px 0 10px;-moz-transition:all 0.1s ease-in 0;-webkit-transition:all 0.1s ease-in 0}.file-actions-button:hover{color:#4183c4;text-decoration:none}.file-actions-button .mini-icon{margin-right:6px;-moz-transition:none;-webkit-transition:none;-o-transition:color 0 ease-in;transition:none}.file-data{background-color:#f8f8ff;overflow:auto}.file-data .line-numbers{border-right:1px solid #eee;color:#aaa;font-family:Consolas,"Liberation Mono",Courier,monospace;font-size:12px;line-height:1.4;text-align:right;min-width:27px;padding:12px 6px;box-sizing:border-box;-khtml-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;-webkit-user-select:none;user-select:none}.file-data .line-numbers span{color:#aaa;cursor:pointer;display:block}.file-data .line-numbers span:hover{text-decoration:underline}.file-data pre,.line-data{font-family:Consolas,"Liberation Mono",Courier,monospace;font-size:12px;line-height:1.4;width:100%}.line-data{padding:12px;padding-right:0}.line-data .gd,.line-data .gi,.line-data .gu{display:block;margin-left:-12px;padding-left:12px}.line-data .gu{color:#999;background-color:#eaf2f5;font-weight:normal}.file-data.empty{color:#999999;padding:8px}.file-data.raw,.suppressed{font-weight:bold;font-size:16px;text-align:center;padding:26px 0}.suppressed{display:none}.file-box.collapsed .suppressed{display:block}.file-box.collapsed .file-data{display:none}.file-box .file-data pre{margin:0;padding:0}.file-box .lines .highlight{padding:12px 0}.truncated{background-color:#fff;border-bottom:1px solid #ccc;padding:6px 12px}.truncated p{margin:0}.file-box .image{text-align:center;padding:30px;position:relative}.file-box .image a{display:inline-block;line-height:0px}.file-box .image img,.file-box .image canvas{background:url(https://gist.github.com/assets/modules/gists/trans_bg-10cc4fc6aed9ba4aa753040212de4a50.gif) right bottom #eee;border:1px solid #fff;max-width:600px}.file-box .image .added-frame,.file-box .image .deleted-frame{border:1px solid #ddd;display:inline-block;line-height:0px;position:relative}.file-box .image .added-frame{border-color:#6cc644}.file-box .image .deleted-frame{border-color:#bd2c00}.file-box .image .border-wrap{background-color:white;border:1px solid #999;display:inline-block;line-height:0px;position:relative}html,body{color:black;height:100%}body{background-color:white;font:13.34px Helvetica,arial,freesans,clean,sans-serif;*font-size:small;line-height:1.4;min-width:980px}h1,h2,h3,h4,h5,h6{text-rendering:optimizeLegibility}#main{background:#fff url(https://gist.github.com/modules/header/background-v2.png) 0 0 repeat-x}a{color:#4183c4;text-decoration:none}a:active{outline:none}a:hover{text-decoration:underline}.container{margin:0 auto;width:960px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}table{font-size:inherit;font:100%}input[type=text],input[type=password],input[type=image],textarea{font:99% helvetica,arial,freesans,sans-serif}select,option{padding:0 0.25em}optgroup{margin-top:.5em}input.text{padding:1px 0}pre,code{font:12px Consolas,"Liberation Mono",Courier,monospace}.root-pane{float:left;width:148px}.column{float:right;width:792px}.user-mention,.team-mention{font-weight:bold;color:#333}#gist-form .discussion-bubble textarea{resize:vertical}#gist-form .name{background:#fff;border:1px solid #ccc;border-radius:3px;line-height:0;padding:1px 2px 1px}#gist-form .name .gist-name-textbox{background:transparent;border:0;color:#333333;outline:0;padding:4px}#gist-form .template{display:none}#gist-form .file{border:1px solid #d9d9d9;background:#fff}#gist-form .file .meta{background-color:#fafafa;border-bottom:1px solid #d8d8d8;color:#555;font-size:12px;height:26px;padding:6px;position:relative;text-align:left;text-shadow:0 1px 0 #fff}#gist-form .file .meta:before,#gist-form .file .meta:after{content:" ";display:table}#gist-form .file .meta:after{clear:both}#gist-form .file .meta input.gist-name-textbox:focus{background:#fff}#gist-form .file .meta .name,#gist-form .file .meta .language-chooser-container{display:inline-block}#gist-form .file .meta .language-chooser-container{position:relative;top:-1px}#gist-form .file .meta .language-chooser-container .language-chooser-context{margin-top:5px}#gist-form .edit-mode{display:inline-block;padding-right:4px}#gist-form .editor-options{position:absolute;top:6px;right:5px}#gist-form .editor-options .context-menu-container{display:inline-block;vertical-align:0}#gist-form .editor-options .indentation-size-chooser-container .context-pane{right:0}#gist-form .remove-button{vertical-align:text-bottom}#gist-form .remove-button:hover{text-decoration:none}#gist-form .bubble:only-child .remove-button{display:none}#gist-form .file .input textarea{border:0;border-left:1px solid #eee;font-size:12px;font-family:Monaco,"Liberation Mono",Courier,monospace;height:280px;margin-left:12px;outline:0;padding:10px;width:919px}#add-gist{float:left}#edit:before,#edit:after{content:" ";display:table}#edit:after{clear:both}#edit .form-actions{float:right}#edit .delete-actions{float:left;padding-left:5px}#edit .file .input textarea{width:919px}.previewable-comment-form{background:#fff;position:relative}.previewable-comment-form .tabnav{margin-bottom:10px;margin-top:10px;position:relative}.previewable-comment-form .tabnav ul.tabnav-tabs{padding-left:10px}.previewable-comment-form .comment{border:1px solid #cacaca}.previewable-comment-form .comment-header .comment-header-actions{display:none}.previewable-comment-form .comment-form-error{margin-bottom:10px}.previewable-comment-form .write-content,.previewable-comment-form .preview-content{display:none;padding:0 10px 10px}.previewable-comment-form.write-selected .write-content,.previewable-comment-form.preview-selected .preview-content{display:block}.previewable-comment-form .tabnav-widget.text{margin-right:11px}.previewable-comment-form textarea{display:block;width:100%;max-width:100%;min-height:100px;padding:10px;background:#fafafa;border:1px solid #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.previewable-comment-form textarea::-webkit-input-placeholder,.previewable-comment-form textarea:-moz-placeholder{color:#aaa}.form-actions{text-align:right;padding-bottom:5px}#gist-error{color:#900}.flash-messages{margin:20px auto}.flash-messages.container{margin-top:20px}.flash-messages.tighter{margin:15px auto}.flash{position:relative;margin:0 auto;padding:15px;font-weight:bold;font-size:12px;color:#264c72;border:1px solid #97c1da;border-radius:3px;background-color:#d0e3ef;background-image:-moz-linear-gradient(#d8ebf8, #d0e3ef);background-image:-webkit-linear-gradient(#d8ebf8, #d0e3ef);background-image:linear-gradient(#d8ebf8, #d0e3ef);background-repeat:repeat-x;box-shadow:0 1px 3px rgba(0,0,0,0.1);text-shadow:0 1px 0 rgba(255,255,255,0.8)}.flash+.flash{margin-top:5px}.flash .mini-icon-remove-close{position:absolute;top:50%;margin-top:-7px;right:15px;cursor:pointer;opacity:0.6;text-decoration:none}.flash .flash-action{float:right;margin-top:-5px}.flash:hover{border:1px solid #5f9fc6}.flash:hover .mini-icon-remove-close{opacity:1}.flash.flash-warn{color:#613A00;background-color:#f5dac0;background-image:-moz-linear-gradient(#ffe3c8, #f5dac0);background-image:-webkit-linear-gradient(#ffe3c8, #f5dac0);background-image:linear-gradient(#ffe3c8, #f5dac0);background-repeat:repeat-x;border:1px solid #dca874}.flash.flash-warn:hover{border:1px solid #cd8237}.flash.flash-error{color:#9c2400;background-color:#efd0d0;background-image:-moz-linear-gradient(#f8d8d8, #efd0d0);background-image:-webkit-linear-gradient(#f8d8d8, #efd0d0);background-image:linear-gradient(#f8d8d8, #efd0d0);background-repeat:repeat-x;border:1px solid #da9797}.flash.flash-error:hover{border:1px solid #c65f5f}html,body{color:black;height:100%}body{background-color:white;font:13.34px Helvetica,arial,freesans,clean,sans-serif;*font-size:small;line-height:1.4;min-width:980px}h1,h2,h3,h4,h5,h6{text-rendering:optimizeLegibility}#main{background:#fff url(https://gist.github.com/modules/header/background-v2.png) 0 0 repeat-x}a{color:#4183c4;text-decoration:none}a:active{outline:none}a:hover{text-decoration:underline}.container{margin:0 auto;width:960px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}table{font-size:inherit;font:100%}input[type=text],input[type=password],input[type=image],textarea{font:99% helvetica,arial,freesans,sans-serif}select,option{padding:0 0.25em}optgroup{margin-top:.5em}input.text{padding:1px 0}pre,code{font:12px Consolas,"Liberation Mono",Courier,monospace}.root-pane{float:left;width:148px}.column{float:right;width:792px}.user-mention,.team-mention{font-weight:bold;color:#333}.gist-item{margin-bottom:2em;position:relative}.gist-item:before,.gist-item:after{content:" ";display:table}.gist-item:after{clear:both}.gist-item ul.meta{position:absolute;right:0}.gist-item ul.meta>li{font-size:12px;font-weight:bold;list-style-type:none;display:inline-block;margin-left:12px}.gist-item ul.meta>li>a{display:block;text-decoration:none;color:#666666}.gist-item ul.meta>li>a:hover{color:#000;background:#fff}.gist-item ul.meta>li .mini-icon{line-height:0.6;opacity:0.5}.gist-item .byline{margin:3px 0 11px}.gist-item .creator{color:rgba(51,51,51,0.75);display:block;font-size:13px;font-weight:300;padding-left:42px;position:relative;vertical-align:text-top;width:440px}.gist-item .creator a{font-weight:bold}.gist-item .creator img{border-radius:3px;width:30px;height:30px;position:absolute;top:0;left:0;margin-left:3px}.gist-item .description{color:rgba(51,51,51,0.75);display:block;font-size:12px;vertical-align:text-top;margin-top:6px;margin-left:42px;width:440px}.gist-item .metadata{font-size:11px;margin-left:42px}.gist-item .metadata .datetime{color:#999999}.gist-item .metadata .text{color:#666}.gist-item.vis-secret .bubble{background-color:#f8eec7}.gist-item.vis-secret .file-box{border:1px solid #f7ca75}.gist-item.vis-secret .line-numbers{background-color:#f8eec7;border-color:#f7ca75}.gist-item.vis-secret .line-numbers span{color:#a1882b}.gist-item .data.corrupt{color:#bd2c00;font-weight:bold;font-size:16px;text-align:center;padding:26px 0}.gist-item .data.raw{font-weight:bold;font-size:16px;text-align:center;padding:26px 0}.gist-item .file-box{position:relative}.gist-item .bubble:hover{background-color:#d8eaf2;cursor:pointer}.gist-item .bubble:hover .data,.gist-item .bubble:hover #readme{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.gist-item .bubble:hover .file-box{border-color:#97c7dd}.gist-item .bubble:hover .link-overlay{visibility:visible}.link-overlay{height:100%;width:100%;position:absolute;visibility:hidden;z-index:50}.link-overlay .link{background-color:rgba(0,0,0,0.75);color:#fff;margin:-14px 0 0 0;padding:4px 8px 4px 10px;height:20px;position:absolute;top:20px;right:6px;z-index:100}.link-overlay .link .mini-icon{position:relative;top:2px}ul.filter-list{border-top:1px solid #f1f1f1;margin-top:20px;padding-top:20px}.pagination{margin:7px 0;display:inline-block;overflow:hidden;background-color:#efefef;background-image:-moz-linear-gradient(#fff, #efefef);background-image:-webkit-linear-gradient(#fff, #efefef);background-image:linear-gradient(#fff, #efefef);background-repeat:repeat-x;border:1px solid #eaeaea;border-bottom-color:#cacaca;border-bottom:none;border-radius:3px}.pagination a,.pagination span{float:left;padding:6px 10px 5px;margin:0;color:#777;font-size:13px;text-decoration:none;text-shadow:0 1px 0 #fff;border-right:1px solid rgba(0,0,0,0.04);border-left:1px solid rgba(255,255,255,0.7);border-bottom:1px solid #dadada}.pagination a:first-child,.pagination span:first-child{border-left:none;border-bottom-left-radius:3px}.pagination a:last-child,.pagination span:last-child{border-right:none;border-bottom-right-radius:3px}.pagination a:hover,.pagination span:hover{color:#4183c4;border-bottom-color:#CFDCE8;background-color:#dce6ef;background-image:-moz-linear-gradient(#fafbfd, #dce6ef);background-image:-webkit-linear-gradient(#fafbfd, #dce6ef);background-image:linear-gradient(#fafbfd, #dce6ef);background-repeat:repeat-x}.pagination a.current,.pagination a.current:hover,.pagination span.current,.pagination span.current:hover{color:#000;background-color:#ebebeb;background-image:-moz-linear-gradient(#fcfcfc, #ebebeb);background-image:-webkit-linear-gradient(#fcfcfc, #ebebeb);background-image:linear-gradient(#fcfcfc, #ebebeb);background-repeat:repeat-x;border-bottom-color:#D26911}.pagination a.disabled,.pagination a.gap,.pagination span.disabled,.pagination span.gap{color:#bbb;cursor:default}.pagination a.disabled:hover,.pagination a.gap:hover,.pagination span.disabled:hover,.pagination span.gap:hover{background-color:#efefef;background-image:-moz-linear-gradient(#fff, #efefef);background-image:-webkit-linear-gradient(#fff, #efefef);background-image:linear-gradient(#fff, #efefef);background-repeat:repeat-x;border-bottom-color:#dadada}.pagination.ajax_paginate{display:block}.pagination.ajax_paginate a{padding:6px;width:100%;text-align:center}.pagination.ajax_paginate.loading a{background:url(https://gist.github.com/assets/spinners/octocat-spinner-16px-ae4ee8b41c48dda1fc05cabc1fa56c66.gif) no-repeat center center;text-indent:-3000px}.sort-tabs .tabnav-tab{color:#999999;font-size:13px}.sort-tabs li.active .tabnav-tab{color:#333333}.spammy{background:#fcc;padding:6px 10px 5px;border-radius:3px;font-weight:normal}#readme .markdown-body,#readme .plain{background-color:#fff;padding:30px}#readme .plain pre{font-size:17px;white-space:pre-wrap}#files #readme{background-color:#fff;border:0 none;padding:20px;border-radius:0}#files #readme .markdown-body{border:0 none;padding:0;border-radius:0}#missing-readme{font:13.34px helvetica,arial,freesans,clean,sans-serif;text-align:center;background-color:#ffffcc;padding:0.7em;border:1px solid #ccc}#readme.rst .borderless,#readme.rst table.borderless td,#readme.rst table.borderless th{border:0}#readme.rst table.borderless td,#readme.rst table.borderless th{padding:0 0.5em 0 0 !important}#readme.rst .first{margin-top:0 !important}#readme.rst .last,#readme.rst .with-subtitle{margin-bottom:0 !important}#readme.rst .hidden{display:none}#readme.rst a.toc-backref{text-decoration:none;color:black}#readme.rst blockquote.epigraph{margin:2em 5em}#readme.rst dl.docutils dd{margin-bottom:0.5em}#readme.rst div.abstract{margin:2em 5em}#readme.rst div.abstract p.topic-title{font-weight:bold;text-align:center}#readme.rst div.admonition,#readme.rst div.attention,#readme.rst div.caution,#readme.rst div.danger,#readme.rst div.error,#readme.rst div.hint,#readme.rst div.important,#readme.rst div.note,#readme.rst div.tip,#readme.rst div.warning{margin:2em;border:medium outset;padding:1em}#readme.rst div.admonition p.admonition-title,#readme.rst div.hint p.admonition-title,#readme.rst div.important p.admonition-title,#readme.rst div.note p.admonition-title,#readme.rst div.tip p.admonition-title{font-weight:bold;font-family:sans-serif}#readme.rst div.attention p.admonition-title,#readme.rst div.caution p.admonition-title,#readme.rst div.danger p.admonition-title,#readme.rst div.error p.admonition-title,#readme.rst div.warning p.admonition-title{color:red;font-weight:bold;font-family:sans-serif}#readme.rst div.dedication{margin:2em 5em;text-align:center;font-style:italic}#readme.rst div.dedication p.topic-title{font-weight:bold;font-style:normal}#readme.rst div.figure{margin-left:2em;margin-right:2em}#readme.rst div.footer,#readme.rst div.header{clear:both;font-size:smaller}#readme.rst div.line-block{display:block;margin-top:1em;margin-bottom:1em}#readme.rst div.line-block div.line-block{margin-top:0;margin-bottom:0;margin-left:1.5em}#readme.rst div.sidebar{margin:0 0 0.5em 1em;border:medium outset;padding:1em;background-color:#ffffee;width:40%;float:right;clear:right}#readme.rst div.sidebar p.rubric{font-family:sans-serif;font-size:medium}#readme.rst div.system-messages{margin:5em}#readme.rst div.system-messages h1{color:red}#readme.rst div.system-message{border:medium outset;padding:1em}#readme.rst div.system-message p.system-message-title{color:red;font-weight:bold}#readme.rst div.topic{margin:2em}#readme.rst h1.section-subtitle,#readme.rst h2.section-subtitle,#readme.rst h3.section-subtitle,#readme.rst h4.section-subtitle,#readme.rst h5.section-subtitle,#readme.rst h6.section-subtitle{margin-top:0.4em}#readme.rst h1.title{text-align:center}#readme.rst h2.subtitle{text-align:center}#readme.rst hr.docutils{width:75%}#readme.rst img.align-left,#readme.rst .figure.align-left,#readme.rst object.align-left{clear:left;float:left;margin-right:1em}#readme.rst img.align-right,#readme.rst .figure.align-right,#readme.rst object.align-right{clear:right;float:right;margin-left:1em}#readme.rst img.align-center,#readme.rst .figure.align-center,#readme.rst object.align-center{display:block;margin-left:auto;margin-right:auto}#readme.rst .align-left{text-align:left}#readme.rst .align-center{clear:both;text-align:center}#readme.rst .align-right{text-align:right}#readme.rst div.align-right{text-align:left}#readme.rst ol.simple,#readme.rst ul.simple{margin-bottom:1em}#readme.rst ol.arabic{list-style:decimal}#readme.rst ol.loweralpha{list-style:lower-alpha}#readme.rst ol.upperalpha{list-style:upper-alpha}#readme.rst ol.lowerroman{list-style:lower-roman}#readme.rst ol.upperroman{list-style:upper-roman}#readme.rst p.attribution{text-align:right;margin-left:50%}#readme.rst p.caption{font-style:italic}#readme.rst p.credits{font-style:italic;font-size:smaller}#readme.rst p.label{white-space:nowrap}#readme.rst p.rubric{font-weight:bold;font-size:larger;color:maroon;text-align:center}#readme.rst p.sidebar-title{font-family:sans-serif;font-weight:bold;font-size:larger}#readme.rst p.sidebar-subtitle{font-family:sans-serif;font-weight:bold}#readme.rst p.topic-title{font-weight:bold}#readme.rst pre.address{margin-bottom:0;margin-top:0;font:inherit}#readme.rst pre.literal-block,#readme.rst pre.doctest-block{margin-left:2em;margin-right:2em}#readme.rst span.classifier{font-family:sans-serif;font-style:oblique}#readme.rst span.classifier-delimiter{font-family:sans-serif;font-weight:bold}#readme.rst span.interpreted{font-family:sans-serif}#readme.rst span.option{white-space:nowrap}#readme.rst span.pre{white-space:pre}#readme.rst span.problematic{color:red}#readme.rst span.section-subtitle{font-size:80%}#readme.rst table.citation{border-left:solid 1px gray;margin-left:1px}#readme.rst table.docinfo{margin:2em 4em}#readme.rst table.docutils{margin-top:0.5em;margin-bottom:0.5em}#readme.rst table.footnote{border-left:solid 1px #000;margin-left:1px}#readme.rst table.docutils td,#readme.rst table.docutils th,#readme.rst table.docinfo td,#readme.rst table.docinfo th{padding-left:0.5em;padding-right:0.5em;vertical-align:top}#readme.rst table.docutils th.field-name,#readme.rst table.docinfo th.docinfo-name{font-weight:bold;text-align:left;white-space:nowrap;padding-left:0}#readme.rst h1 tt.docutils,#readme.rst h2 tt.docutils,#readme.rst h3 tt.docutils,#readme.rst h4 tt.docutils,#readme.rst h5 tt.docutils,#readme.rst h6 tt.docutils{font-size:100%}#readme.rst ul.auto-toc{list-style-type:none}html,body{color:black;height:100%}body{background-color:white;font:13.34px Helvetica,arial,freesans,clean,sans-serif;*font-size:small;line-height:1.4;min-width:980px}h1,h2,h3,h4,h5,h6{text-rendering:optimizeLegibility}#main{background:#fff url(https://gist.github.com/modules/header/background-v2.png) 0 0 repeat-x}a{color:#4183c4;text-decoration:none}a:active{outline:none}a:hover{text-decoration:underline}.container{margin:0 auto;width:960px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}table{font-size:inherit;font:100%}input[type=text],input[type=password],input[type=image],textarea{font:99% helvetica,arial,freesans,sans-serif}select,option{padding:0 0.25em}optgroup{margin-top:.5em}input.text{padding:1px 0}pre,code{font:12px Consolas,"Liberation Mono",Courier,monospace}.root-pane{float:left;width:148px}.column{float:right;width:792px}.user-mention,.team-mention{font-weight:bold;color:#333}.export-references{list-style:none;margin-top:18px}.export-references li{color:#999999;font-size:11px;margin-bottom:6px}.export-references label{display:block;padding:6px 0 3px}.export-references .minibutton{padding:0 15px;width:116px}input.url-field{border-radius:3px;border:1px solid #ccc;font-family:Monaco,"Liberation Mono",Courier,monospace;font-size:11px;color:#666666;padding:0 5px 0 5px;width:136px;height:24px}.user-list{border-top:1px solid rgba(0,0,0,0.05);list-style:none}.user-list li{border-bottom:1px solid rgba(0,0,0,0.05);line-height:26px;padding:6px 0 6px 30px;position:relative}.user-list li a{font-weight:bold}.user-list li em,.user-list li code{color:rgba(0,0,0,0.25);font-style:normal}.user-list li img{border-radius:3px;margin-top:1px;position:absolute;left:0}.user-list li .actions{position:absolute;top:6px;right:0}.user-list li .status-modified{background-color:#6cc644;border-radius:3px;color:#fff;font-weight:bold;margin-right:1px;padding:5px 14px 6px}.gist-details:before,.gist-details:after{content:" ";display:table}.gist-details:after{clear:both}.gist-timestamp{color:#999999;font-size:11px;line-height:20px;letter-spacing:0;display:block;margin-top:-5px;margin-left:34px}.gist-timestamp .text{color:#666}.gist-description{color:#666666;font-size:14px;line-height:1.4;margin-bottom:20px}.gist-description p{margin:0}.gist-author img{border-radius:3px;margin-right:2px;position:relative;top:-1px;vertical-align:middle}.revision{margin-bottom:24px}.revision:last-child{margin-bottom:0}.revision .revision-meta{line-height:26px;padding:0 0 12px}.revision .revision-meta .creator{color:rgba(51,51,51,0.75);padding-left:30px;position:relative}.revision .revision-meta .creator img{border-radius:3px;width:23px;height:23px;position:absolute;top:-4px;left:0;margin-right:4px}.revision .minibutton{margin-left:6px}.revision .minibutton .mini-icon-arr-right{float:none}.revision .explain{float:right}.diff-data .line-numbers,.diff-data .line-data{padding-bottom:0;padding-top:0}.gist-advanced-options .select-menu-modal{width:175px}.tipsy{font-size:10px;position:absolute;padding:5px;z-index:100000}.tipsy-inner{background-color:#000;color:#FFF;max-width:200px;padding:5px 8px 4px 8px;text-align:center}.tipsy-inner{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.tipsy-arrow-n{border-bottom-color:#000}.tipsy-arrow-s{border-top-color:#000}.tipsy-arrow-e{border-left-color:#000}.tipsy-arrow-w{border-right-color:#000}.tipsy-n .tipsy-arrow{top:0px;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-nw .tipsy-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-sw .tipsy-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-se .tipsy-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-e .tipsy-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.tipsy-w .tipsy-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}#serverstats{display:none;height:34px;padding:0 15px;overflow:hidden;text-align:left;font-size:12px;line-height:34px;color:#999;text-shadow:0 1px 1px rgba(0,0,0,0.75);background:#333 url("/images/modules/serverstats/superheader_back-2.gif");box-shadow:inset 0 -2px 3px rgba(0,0,0,0.25)}#serverstats.enabled{display:block}.env-development #serverstats{background-image:url("/images/modules/serverstats/superheader_back-dev.gif")}.env-staging #serverstats{background-image:url("/images/modules/serverstats/superheader_back-test.gif")}#serverstats .container{max-width:1200px;width:auto;margin:0 auto}#serverstats p{display:inline-block;margin:0}#serverstats p strong{color:#ccc}#serverstats .socket-status{margin-left:20px;cursor:pointer}#serverstats .stats{float:right;margin:0;list-style:none}#serverstats .stats li{display:inline-block;margin-left:12px}#serverstats .stats a{font-weight:bold}#serverstats .stats a,#serverstats .stats strong{font-weight:bold;color:#fff}#serverstats .dot{position:relative;top:1px;display:inline-block;width:6px;height:6px;margin-right:3px;background-color:#2c9d00;border:2px solid #fff;border-radius:5px}#serverstats .dot.inactive{background-color:#9c2501}.win-perf{position:relative;top:2px;display:inline-block;width:75px;height:10px;margin:0 0 0 5px;list-style:none;background-color:rgba(0,0,0,0.5);border:1px solid rgba(0,0,0,0.7);border-radius:2px;box-shadow:0 1px 0 rgba(255,255,255,0.15)}.win-perf li{position:absolute;top:0;bottom:0;overflow:hidden;opacity:.8;color:transparent}.win-perf li:hover{opacity:1;cursor:default}.serverstats-branch .mini-icon{vertical-align:middle;color:#ccc}.serverstats-branch .current-branch{display:inline-block;padding:4px 6px;font-family:Consolas,"Liberation Mono",Courier,monospace;line-height:1;color:#ccc;background-color:rgba(0,0,0,0.25);background-image:-moz-linear-gradient(rgba(0,0,0,0.75), rgba(0,0,0,0.25));background-image:-webkit-linear-gradient(rgba(0,0,0,0.75), rgba(0,0,0,0.25));background-image:linear-gradient(rgba(0,0,0,0.75), rgba(0,0,0,0.25));background-repeat:repeat-x;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,0.2),inset 0 1px 2px rgba(0,0,0,0.25)}.enterprise .serverstats-branch .current-branch .branch-name{max-width:200px}.serverstats-branch .current-branch .sha{display:none}.serverstats-branch .current-branch:hover .sha{display:inline}#serverstats .switcher{margin-left:5px;margin-right:20px}#render_trace ul{margin:0 0 0 25px;width:90%;list-style-type:none}#render_trace ul li:hover{outline:2px solid #ccc;outline-offset:4px}#render_trace ul li .name{clear:both}#render_trace ul li .timing{float:right}#render_trace ul li .timing,#render_trace ul li .exclusive{padding-left:8px;color:#999}#render_trace ul li .even{background-color:#eee}#facebox .content.render_trace{width:550px}.tabnav .mini-icon,.gist-item .mini-icon{position:relative;top:1px}.button{line-height:1}.slow-loading-overlay{display:none}.pjax-slow-loading+.slow-loading-overlay{background-color:rgba(255,255,255,0.8);background-image:url(https://gist.github.com/assets/spinners/octocat-spinner-64-4be73748813dc3fea082d8eff1bc51a7.gif);background-size:32px;background-repeat:no-repeat;background-position:50% 50%;display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000}#dropzone{display:none;background:rgba(0,0,0,0.25);height:100%;position:fixed;top:0;left:0;width:100%;z-index:100}#dropzone #dropzone-pill{background:rgba(0,0,0,0.75);border-radius:6px;color:#fff;font-weight:bold;text-align:center;margin-left:-100px;margin-top:-60px;padding:20px;width:160px;height:80px;position:absolute;top:50%;left:50%}.none{color:#999999;font-size:13px;font-style:italic;font-weight:300}.button.glowing{background-color:#e6e1c0;background-image:-moz-linear-gradient(#fffad5, #e6e1c0);background-image:-webkit-linear-gradient(#fffad5, #e6e1c0);background-image:linear-gradient(#fffad5, #e6e1c0);background-repeat:repeat-x;border:1px solid #ddd7aa;border-bottom-color:#ccc27e}.button.glowing:hover{background-color:#dfd8ae;background-image:-moz-linear-gradient(#fff7bc, #dfd8ae);background-image:-webkit-linear-gradient(#fff7bc, #dfd8ae);background-image:linear-gradient(#fff7bc, #dfd8ae);background-repeat:repeat-x;border:1px solid #d5cc94;border-bottom-color:#ab9d44;text-shadow:0 1px rgba(255,255,255,0.9)}.button.glowing:active{background-color:#fff7bc;background-image:-moz-linear-gradient(#dfd8ae, #fff7bc);background-image:-webkit-linear-gradient(#dfd8ae, #fff7bc);background-image:linear-gradient(#dfd8ae, #fff7bc);background-repeat:repeat-x;border:1px solid #ccc27e;color:#666;text-shadow:0 1px rgba(255,255,255,0.9)}.button.glowing:disabled{background-color:#fffad5;background-image:none}.tabnav{margin:0 0 20px}.menu-container{float:none;width:142px}.css-truncate .css-truncate-target{max-width:146px}.css-truncate:hover .css-truncate-target{background:#fff}.explain{font-size:12px;color:#666666;position:relative}#toc{font:12px Consolas,"Liberation Mono",Courier,monospace;padding:0;margin:3px 0 16px}#toc .explain{margin:0}.recent-gists:before,.recent-gists:after{content:" ";display:table}.recent-gists:after{clear:both}.recent-gists ul{list-style:none}.recent-gists li{float:left;width:213px}.recent-gists .your-gists{float:right;width:108px}.recent-gists .meta>a{display:block}.recent-gists .secret .mega-icon{color:#e9dba5;position:relative;top:-2px}.recent-gists .mega-icon{color:#b9b9b9;float:left;top:-1px;left:-4px;position:relative}.recent-gists .meta{margin-left:34px}.recent-gists .metadata{color:#999999}.recent-gists .description{display:block}.recent-gists .description .blank{color:rgba(153,153,153,0.5)}.recent-gists .description .css-truncate-target{max-width:165px}.infotip{background:#fbffce;border-radius:3px;border:1px solid #deea53;color:#333;font-size:12px;margin:0;padding:10px}.infotip p{margin:0}#ajax-error-message{-moz-box-sizing:border-box;box-sizing:border-box;-moz-transition:top 0.5s ease-in 0;-webkit-transition:top 0.5s ease-in 0;display:none;position:fixed;top:-200px;width:100%;z-index:9999}#ajax-error-message.flash{padding:11px}#ajax-error-message.flash:hover{border-width:0 0 1px}#ajax-error-message.flash.flash-error{border-width:0 0 1px}#ajax-error-message.flash .mini-icon-remove-close{right:0}#ajax-error-message.visible{top:0;display:inherit}#ajax-error-message>.mini-icon-exclamation{vertical-align:text-top}#ajax-error-message .container{position:relative}@media print{*{background:transparent !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}body{font-size:13.34pt}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:1.5cm 1cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}#header{box-shadow:0 0 0 transparent;padding-bottom:10px}.header-actions,.topsearch,#footer{display:none}#user-links{visibility:hidden}.header-logo-wordmark[href]:after{content:''}.repo-label,.pagehead-actions{display:none}.gist-author a[href]:after{content:''}.gist form,.gist .root-pane{display:none}.gist .column{width:100%}.gist .actions{display:none}.gist .file-actions .button-group{display:none}.gist .markdown-body blockquote{color:#000 !important}.file-box .meta .info span.icon{border:0;padding-right:0}.file-box .meta .info span{border-left:1px solid #ddd}.uncommentable{display:none}.discussion-bubble *{color:#000 !important}.discussion-bubble a{text-decoration:none !important}.discussion-bubble .discussion-bubble-avatar{top:3px}.discussion-bubble-content:before{border:none !important}.comment-header-actions{display:none !important}.profiler-results{display:none}}
data/bin/readingme ADDED
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'listen'
4
+ require 'optparse'
5
+ require 'readingme'
6
+
7
+ # -----------------------------------------------------------------------------
8
+ # Option parsing...
9
+
10
+ parser = OptionParser.new do |opts|
11
+ opts.banner = "Usage: readingme [file]"
12
+ opts.on_tail('-h', '--help', 'Show this message') do
13
+ puts opts
14
+ exit 1
15
+ end
16
+ end
17
+ parser.parse!
18
+
19
+ input = ARGV[0] || "\\.md"
20
+
21
+ # -----------------------------------------------------------------------------
22
+ listener = Listen.to('./', only: %r[#{input}$]) do |modified, _, _|
23
+ table_processor = Readingme::TableProcessor
24
+ encoder = Readingme::Encoder
25
+ converter = Readingme::Converter
26
+ github_wrapper = Readingme::GithubWrapper
27
+
28
+ modified.each do |filename|
29
+ # pandoc_html_cmd = "pandoc -f markdown -t html --ascii"
30
+ # pandoc_textile_cmd = "pandoc -t textile -s #{output} -o #{output}.textile"
31
+
32
+ pipeline = table_processor | encoder | converter | github_wrapper
33
+ pipeline << File.open(filename, "r")
34
+ pipeline.close
35
+
36
+ output_filename = filename.gsub(/\.md$/,".html")
37
+
38
+ File.open(output_filename, "w") do |file|
39
+ file.write pipeline.read
40
+ end
41
+ end
42
+
43
+ # %x(build_tables.rb #{input} | encode.rb | pandoc -f markdown -t html --ascii | github_wrap.rb > #{output})
44
+ # %x(pandoc -t textile -s #{output} -o #{output}.textile)
45
+ end
46
+
47
+ listener.start
48
+
49
+ stop = false
50
+ trap(:INT){stop = true}
51
+ trap(:TERM){stop = true}
52
+ begin sleep(1) end while(!stop)
@@ -0,0 +1,13 @@
1
+ module Readingme
2
+ class Converter
3
+
4
+ class << self
5
+ def call input=$stdin, output=$stdout
6
+ encoded = input.read
7
+ converted = PandocRuby.convert(encoded, {from: :markdown, to: :html}, 'ascii')
8
+ output.write converted
9
+ end
10
+ end
11
+
12
+ end # class Converter
13
+ end # module Readingme
@@ -0,0 +1,60 @@
1
+ module Readingme
2
+ class Encoder
3
+ # =============================================================================
4
+ class << self
5
+ def call input=$stdin, output=$stdout
6
+ encoder = self.new
7
+ input.each do |line|
8
+ output.puts encoder.process_line(line)
9
+ end
10
+ end
11
+ end
12
+ # =============================================================================
13
+
14
+ EMPTY_LINE = /\A$\Z/
15
+ PRE_LINE = /( {4,}|\!table|`{3})/
16
+
17
+ # =============================================================================
18
+ def initialize
19
+ @prev_line = nil
20
+ @pre_mode = :off
21
+ @entities = HTMLEntities.new
22
+ end
23
+
24
+ # =============================================================================
25
+ def start_stop line
26
+ if @pre_mode == :off && @prev_line =~ EMPTY_LINE && line =~ PRE_LINE
27
+ @pre_mode = :on
28
+ elsif @pre_mode == :on && @prev_line =~ PRE_LINE && line =~ /\A$\Z|[^ ]+/
29
+ @pre_mode = :off
30
+ end
31
+ end
32
+
33
+ # =============================================================================
34
+ def process_line line
35
+ start_stop line
36
+
37
+ r_line = if @pre_mode == :off
38
+ @entities.encode(line, :named).
39
+ gsub("&lt;", "<").
40
+ gsub("&gt;", ">").
41
+ gsub("&quot;", "\"")
42
+ else
43
+ line
44
+ end
45
+ @prev_line = line
46
+
47
+ r_line
48
+ end
49
+
50
+ end # class Encoder
51
+ end # module Readingme
52
+
53
+ #------------------------------------
54
+ # input = ARGV[0] ? File.open(ARGV[0], "r") : $stdin
55
+ # output = ARGV[1] ? File.open(ARGV[1], "w") : $stdout
56
+
57
+ # Readingme::Encoder.process input, output
58
+ # input.close
59
+ # output.close
60
+
@@ -0,0 +1,35 @@
1
+ module Readingme
2
+ class GithubWrapper
3
+
4
+ class << self
5
+ def call input=$stdin, output=$stdout
6
+ stylesheet = "#{Readingme::APP_ROOT}/assets/readme.css"
7
+ output.puts <<-HTML
8
+ <!DOCTYPE html>
9
+ <html>
10
+ <head>
11
+ <style type="text/css">#{File.read(stylesheet)}</style>
12
+ <link rel="stylesheet" href="http://yandex.st/highlightjs/7.5/styles/default.min.css">
13
+ <script src="http://yandex.st/highlightjs/7.5/highlight.min.js"></script>
14
+ <script>hljs.initHighlightingOnLoad();</script>
15
+ </head>
16
+ <body>
17
+ <div id="readme">
18
+ <div class="markdown-body">#{input.read}</div>
19
+ </div>
20
+ </body>
21
+ </html>
22
+ HTML
23
+ end
24
+ end
25
+
26
+ end # class GithubWrapper
27
+ end # module Readingme
28
+
29
+ # -----------------------------------------------------------------------------
30
+ # input = ARGV[0] ? File.open(ARGV[0], "r") : $stdin
31
+ # output = ARGV[1] ? File.open(ARGV[1], "w") : $stdout
32
+
33
+ # Readingme::GithubWrapper.process input, output
34
+ # input.close
35
+ # output.close
@@ -0,0 +1,46 @@
1
+ module Pipelines
2
+ # =============================================================================
3
+ module Pipeable
4
+ def |(other)
5
+ Pipelines::Pipeline.new.tap do |pipeline|
6
+ pipeline | self
7
+ pipeline | other
8
+ end
9
+ end
10
+ end
11
+
12
+ # =============================================================================
13
+ class Pipeline
14
+ def initialize
15
+ @output, @input = IO.pipe
16
+ end
17
+
18
+ def add callable
19
+ l_out = @output
20
+ n_out, n_in = IO.pipe
21
+ @output = n_out
22
+ Thread.new do
23
+ callable.call(l_out, n_in)
24
+ n_in.close
25
+ end
26
+ self
27
+ end
28
+ alias_method :|, :add
29
+
30
+ def << data
31
+ data = Array(data) unless data.is_a? IO
32
+ data.each do |line|
33
+ @input.puts line
34
+ end
35
+ end
36
+
37
+ def close; @input.close; end
38
+ alias_method :stop, :close
39
+
40
+ def read; @output.read; end
41
+ def each(&block); @output.each(&block); end
42
+ end
43
+ end
44
+
45
+ Class.class_eval{ include Pipelines::Pipeable }
46
+ Proc.class_eval{ include Pipelines::Pipeable }
@@ -0,0 +1,78 @@
1
+ module Readingme
2
+ class TableProcessor
3
+
4
+ # =============================================================================
5
+ class << self
6
+ def call input=$stdin, output=$stdout
7
+ tab_proc = self.new
8
+ input.each do |line|
9
+ output.puts tab_proc.process_line(line)
10
+ end
11
+ end
12
+ end
13
+
14
+ # =============================================================================
15
+ def initialize
16
+ @state = :normal
17
+ end
18
+
19
+ STATE_TRANSITIONS = {
20
+ :normal => :header,
21
+ :header => :body,
22
+ :body => :normal
23
+ }
24
+
25
+ # =============================================================================
26
+ def process_line line
27
+ if line =~ /^```(table)?$/
28
+ if !$1 and @state == :normal
29
+ process_table_line line
30
+ else
31
+ start_stop
32
+ end
33
+ else
34
+ process_table_line line
35
+ end
36
+ end
37
+
38
+ private
39
+ # =============================================================================
40
+ def wrap_line line
41
+ wrapped_line = line.scan(/[^|]+/).map(&:strip).
42
+ reduce("") do |acc, data|
43
+ acc << wrap(data)
44
+ end
45
+ "<tr>#{wrapped_line}</tr>"
46
+ end
47
+
48
+ # =============================================================================
49
+ def wrap data
50
+ elem = @state == :header ? "th" : "td"
51
+ "<#{elem}>#{data}</#{elem}>"
52
+ end
53
+
54
+ # =============================================================================
55
+ def change_state
56
+ @state = STATE_TRANSITIONS[@state]
57
+ end
58
+
59
+ # =============================================================================
60
+ def start_stop
61
+ change_state
62
+ @state != :normal ? "<table>" : "</table>"
63
+ end
64
+
65
+ # =============================================================================
66
+ def process_table_line line
67
+ return line if @state == :normal
68
+
69
+ if line =~ /^ *-{3,}/
70
+ change_state
71
+ ""
72
+ else
73
+ wrap_line line
74
+ end
75
+ end
76
+
77
+ end # class TableProcessor
78
+ end # module Readingme
@@ -0,0 +1,3 @@
1
+ module Readingme
2
+ VERSION = "0.0.2"
3
+ end
data/lib/readingme.rb ADDED
@@ -0,0 +1,15 @@
1
+ require "htmlentities"
2
+ require 'pandoc-ruby'
3
+
4
+ require "readingme/version"
5
+
6
+ module Readingme
7
+ # Your code goes here...
8
+ APP_ROOT = File.expand_path("../..", __FILE__)
9
+ end
10
+
11
+ require 'readingme/pipelines'
12
+ require 'readingme/table_processor'
13
+ require 'readingme/encoder'
14
+ require 'readingme/converter'
15
+ require 'readingme/github_wrapper'
data/readingme.gemspec ADDED
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'readingme/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "readingme"
8
+ spec.version = Readingme::VERSION
9
+ spec.authors = ["LynxEyes"]
10
+ spec.email = ["ivo.jesus@gmail.com"]
11
+ spec.description = %q{Small Markdown to HTML encoder which uses Github readme stylesheet and highlight.js}
12
+ spec.summary = %q{Markdown to HTML encoder}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency 'listen'
22
+ spec.add_dependency 'htmlentities'
23
+ spec.add_dependency 'pandoc-ruby'
24
+ spec.add_development_dependency "bundler", "~> 1.3"
25
+ spec.add_development_dependency "rake"
26
+ end
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: readingme
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - LynxEyes
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-12-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: listen
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: htmlentities
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: pandoc-ruby
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: bundler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '1.3'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '1.3'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rake
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: Small Markdown to HTML encoder which uses Github readme stylesheet and
95
+ highlight.js
96
+ email:
97
+ - ivo.jesus@gmail.com
98
+ executables:
99
+ - readingme
100
+ extensions: []
101
+ extra_rdoc_files: []
102
+ files:
103
+ - .gitignore
104
+ - Gemfile
105
+ - LICENSE.txt
106
+ - README.md
107
+ - Rakefile
108
+ - assets/readme.css
109
+ - bin/readingme
110
+ - lib/readingme.rb
111
+ - lib/readingme/converter.rb
112
+ - lib/readingme/encoder.rb
113
+ - lib/readingme/github_wrapper.rb
114
+ - lib/readingme/pipelines.rb
115
+ - lib/readingme/table_processor.rb
116
+ - lib/readingme/version.rb
117
+ - readingme.gemspec
118
+ homepage: ''
119
+ licenses:
120
+ - MIT
121
+ post_install_message:
122
+ rdoc_options: []
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ! '>='
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ segments:
132
+ - 0
133
+ hash: -4367782002400049193
134
+ required_rubygems_version: !ruby/object:Gem::Requirement
135
+ none: false
136
+ requirements:
137
+ - - ! '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ segments:
141
+ - 0
142
+ hash: -4367782002400049193
143
+ requirements: []
144
+ rubyforge_project:
145
+ rubygems_version: 1.8.25
146
+ signing_key:
147
+ specification_version: 3
148
+ summary: Markdown to HTML encoder
149
+ test_files: []