aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md12
-rw-r--r--docs/Ansel_integration_guide.html924
-rw-r--r--docs/Ansel_integration_guide.md713
-rw-r--r--docs/Blur.jpgbin0 -> 125918 bytes
-rw-r--r--docs/GameWorks Binary SDK EULA _ NVIDIA Developer.txt317
-rw-r--r--docs/GhostingEverywhere.jpgbin0 -> 214863 bytes
-rw-r--r--docs/ImageAcne.jpgbin0 -> 824568 bytes
-rw-r--r--docs/ImageWithoutAcne.jpgbin0 -> 228708 bytes
-rw-r--r--docs/NvCameraConfiguration.exe_screen.pngbin0 -> 47096 bytes
-rw-r--r--docs/ScreenSpaceReflections.jpgbin0 -> 160061 bytes
-rw-r--r--docs/ScreenSpaceReflectionsReduced.jpgbin0 -> 154375 bytes
-rw-r--r--docs/StreakyReflections.jpgbin0 -> 160646 bytes
-rw-r--r--include/AnselSDK.h33
-rw-r--r--include/ansel/Camera.h63
-rw-r--r--include/ansel/Configuration.h180
-rw-r--r--include/ansel/Defines.h39
-rw-r--r--include/ansel/Hints.h67
-rw-r--r--include/ansel/Session.h105
-rw-r--r--include/ansel/Version.h52
-rw-r--r--include/nv/Quat.h10
-rw-r--r--include/nv/Vec3.h12
-rw-r--r--samples/AnselSDKDelayLoader/AnselSDKDelayLoader.vcxproj228
-rw-r--r--samples/AnselSDKDelayLoader/AnselSDKDelayLoader.vcxproj.filters19
-rw-r--r--samples/AnselSDKDelayLoader/source/DelayLoader.cpp281
-rw-r--r--samples/AnselSDKDelayLoader/source/DelayLoader.h41
25 files changed, 3094 insertions, 2 deletions
diff --git a/README.md b/README.md
index f63c168..18d2977 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,10 @@
-# AnselSDK
-This is where the SDK for NVIDIA Ansel is released to the public.
+Ansel SDK
+=========
+* Version: 1.1.1027.6e9b4e3a
+* Minimum driver version: 378.49
+
+To use this version of the SDK with your application the NVIDIA display driver must be of the minimum driver version
+listed above (or higher). On computers that have an older driver Ansel will not activate.
+
+Consult the [header files of the SDK](include) and the [integration guide](docs/Ansel_integration_guide.md) for detailed
+documentation.
diff --git a/docs/Ansel_integration_guide.html b/docs/Ansel_integration_guide.html
new file mode 100644
index 0000000..05da426
--- /dev/null
+++ b/docs/Ansel_integration_guide.html
@@ -0,0 +1,924 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8" />
+ <title>Ansel_integration_guide.md - Grip</title>
+ <link rel="icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAKCgr/FRUX/xYWGP8YGBr/GRkb/xsbHP8dHR7/Hh4f/x4eIP8fHyD/ICAh/yMjJP8kJCX/JiYo/ygoKv8pKSr/LCwu/y0tLv80NDT/QUFC/0ZGR/9MTE7/UFBR/1JSUv9bW1v/XFxc/2BgYP9hYWP/aGhp/2xsbP9ycnL/d3d3/3l5e/98fHz/f3+A/2dn/P9z3a//cNX8/4CAgP+Xl5f/nZ2e/56en/+fn5//n5+h/6amp/+rq6v/rKys/7CvsP+zs7T/uLi5/7u7u/+8vLz/wMDA/8fHx//Kysr/zc3N/9HR0f/d3d3/3t7e/+Xl5f/q6ur/6+vr/+3t7f/z8/P/9fX1//b29v/39/f/+Pj4//n5+f/6+vr/+/v7//z8/P/9/f3//v7+//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/NCYmJiYmJiYmJiYmJiYmNCZKSkpKSkpKSkpKSkpKSiYmSkpKRisdRkMbMklKSkomJkpKSSEiNUhEEQwpSUpKJiZKSi8LHhhAPAwBDDZKSiYmSkoWACA7SEc6HAEaSkomJkpKBxI/SkpKSj4ICkpKJiZKSgUTR0pKSkpGDwZKSiYmSkoTED1KSkpKOQQVSkomJkpKKgowMy4sNycIMUpKJiZKSkEZDgkDAgsNH0VKSiYmSkpKQigUBgkXLUhKSkomJkpKSkpKSkpKSkpKSkpKJiYmJiYmJiYmJiYmJiYmJiYmIyUkNDQ0NDQ0NDQ0NDQmOCYmJiYmJiYmJiYmJiYmOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" />
+ <link rel="stylesheet" href="/__/grip/static/octicons/octicons.css" />
+ <style>
+ .pl-c{color:#969896}.pl-c1,.pl-s .pl-v{color:#0086b3}.pl-e,.pl-en{color:#795da3}.pl-smi,.pl-s .pl-s1{color:#333}.pl-ent{color:#63a35c}.pl-k{color:#a71d5d}.pl-s,.pl-pds,.pl-s .pl-pse .pl-s1,.pl-sr,.pl-sr .pl-cce,.pl-sr .pl-sre,.pl-sr .pl-sra{color:#183691}.pl-v{color:#ed6a43}.pl-id{color:#b52a1d}.pl-ii{color:#f8f8f8;background-color:#b52a1d}.pl-sr .pl-cce{font-weight:bold;color:#63a35c}.pl-ml{color:#693a17}.pl-mh,.pl-mh .pl-en,.pl-ms{font-weight:bold;color:#1d3e81}.pl-mq{color:#008080}.pl-mi{font-style:italic;color:#333}.pl-mb{font-weight:bold;color:#333}.pl-md{color:#bd2c00;background-color:#ffecec}.pl-mi1{color:#55a532;background-color:#eaffea}.pl-mdr{font-weight:bold;color:#795da3}.pl-mo{color:#1d3e81}.CodeMirror{font-family:monospace;height:300px;color:black}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:white}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:black}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0 !important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-webkit-keyframes blink{0%{}50%{background-color:transparent}100%{}}@keyframes blink{0%{}50%{background-color:transparent}100%{}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:bold}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:#f00}.cm-invalidchar{color:#f00}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,0.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:white}.CodeMirror-scroll{overflow:scroll !important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px;*zoom:1;*display:inline}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none !important;border:none !important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:none;font-variant-ligatures:none}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background:#ffa;background:rgba(255,255,0,0.4)}.CodeMirror span{*vertical-align:text-bottom}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:none}.CodeMirror-dialog{position:absolute;left:0;right:0;background:inherit;z-index:15;padding:.1em .8em;overflow:hidden;color:inherit}.CodeMirror-dialog-top{border-bottom:1px solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid #eee;bottom:0}.CodeMirror-dialog input{border:none;outline:none;background:transparent;width:20em;color:inherit;font-family:monospace}.CodeMirror-dialog button{font-size:70%}.octicon{display:inline-block;vertical-align:text-top;fill:currentColor}/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}template,[hidden]{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:bold}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:0.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}*{box-sizing:border-box}input,select,textarea,button{font-family:inherit;font-size:inherit;line-height:inherit}body{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:14px;line-height:1.5;color:#333;background-color:#fff}a{color:#4078c0;text-decoration:none}a:hover,a:active{text-decoration:underline}strong{font-weight:600}hr,.rule{height:0;margin:15px 0;overflow:hidden;background:transparent;border:0;border-bottom:1px solid #ddd}hr::before,.rule::before{display:table;content:""}hr::after,.rule::after{display:table;clear:both;content:""}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}button{cursor:pointer}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:0}h1{font-size:32px;font-weight:600}h2{font-size:24px;font-weight:600}h3{font-size:20px;font-weight:600}h4{font-size:16px;font-weight:600}h5{font-size:14px;font-weight:600}h6{font-size:12px;font-weight:600}p{margin-top:0;margin-bottom:10px}small{font-size:90%}blockquote{margin:0}ul,ol{padding-left:0;margin-top:0;margin-bottom:0}ol ol,ul ol{list-style-type:lower-roman}ul ul ol,ul ol ol,ol ul ol,ol ol ol{list-style-type:lower-alpha}dd{margin-left:0}tt,code{font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:12px}pre{margin-top:0;margin-bottom:0;font:12px Consolas, "Liberation Mono", Menlo, Courier, monospace}.octicon{vertical-align:text-bottom}.flash{position:relative;padding:15px;font-size:14px;line-height:1.5;color:#246;background-color:#e2eef9;border:1px solid #bac6d3;border-radius:3px}.flash p:last-child{margin-bottom:0}.flash-messages{margin-bottom:20px}.flash-close{float:right;width:34px;height:44px;margin:-11px;line-height:40px;color:inherit;text-align:center;cursor:pointer;background:none;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0.6}.flash-close:hover{opacity:1}.flash-action{float:right;margin-top:-4px;margin-left:20px}.flash-warn{color:#4c4a42;background-color:#fff9ea;border-color:#dfd8c2}.flash-error{color:#911;background-color:#fcdede;border-color:#d2b2b2}.flash-full{margin-top:-1px;border-width:1px 0;border-radius:0}.flash-with-icon .container{padding-left:40px}.flash-with-icon .flash-icon{float:left;margin-top:3px;margin-left:-25px}.flash-content{margin-top:0;margin-bottom:0;line-height:1.5}.warning{padding:0.5em;margin-bottom:0.8em;font-weight:bold;background-color:#fffccc}.avatar{display:inline-block;overflow:hidden;line-height:1;vertical-align:middle;border-radius:3px}.avatar-small{border-radius:2px}.avatar-link{float:left;line-height:1}.avatar-group-item{display:inline-block;margin-bottom:3px}.avatar-parent-child{position:relative}.avatar-child{position:absolute;right:-15%;bottom:-9%;background-color:#fff;border-radius:2px;box-shadow:-2px -2px 0 rgba(255,255,255,0.8)}.avatar-stack{display:inline-block;white-space:nowrap}.avatar-stack .avatar{position:relative;z-index:2;display:inline-block;width:20px;height:20px;box-sizing:content-box;margin-right:-15px;background-color:#fff;border-right:1px solid #fff;border-radius:2px;-webkit-transition:margin 0.1s ease-in-out;transition:margin 0.1s ease-in-out}.avatar-stack .avatar:first-child{z-index:3}.avatar-stack .avatar:last-child{z-index:1;margin-right:0;border-right:0}.avatar-stack:hover .avatar{margin-right:3px}.avatar-stack:hover .avatar:last-child{margin-right:0}.blankslate{position:relative;padding:30px;text-align:center;background-color:#fafafa;border:1px solid #e5e5e5;border-radius:3px;box-shadow:inset 0 0 10px rgba(0,0,0,0.05)}.blankslate code{padding:2px 5px 3px;font-size:14px;background:#fff;border:1px solid #eee;border-radius:3px}.blankslate-icon{margin-right:5px;margin-bottom:10px;margin-left:5px;color:#aaa}.blankslate-capped{border-radius:0 0 3px 3px}.blankslate-spacious{padding:100px 60px 120px}.blankslate-narrow{width:485px;margin:0 auto}.blankslate-large h3{margin:0.75em 0;font-size:20px}.blankslate-large p{font-size:16px}.blankslate-large p.has-fixed-width{width:540px;margin:0 auto;text-align:left}.blankslate-clean-background{background:none;border:0;box-shadow:none}.btn{position:relative;display:inline-block;padding:6px 12px;font-size:14px;font-weight:600;line-height:20px;color:#333;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#eee;background-image:-webkit-linear-gradient(#fcfcfc, #eee);background-image:linear-gradient(#fcfcfc, #eee);border:1px solid #d5d5d5;border-radius:3px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn i{font-style:normal;font-weight:500;opacity:0.6}.btn .octicon{vertical-align:text-top}.btn .counter{text-shadow:none;background-color:#e5e5e5}.btn:focus{text-decoration:none;border-color:#51a7e8;outline:none;box-shadow:0 0 5px rgba(81,167,232,0.5)}.btn:focus:hover,.btn.selected:focus{border-color:#51a7e8}.btn:hover,.btn:active,.btn.zeroclipboard-is-hover,.btn.zeroclipboard-is-active{text-decoration:none;background-color:#ddd;background-image:-webkit-linear-gradient(#eee, #ddd);background-image:linear-gradient(#eee, #ddd);border-color:#ccc}.btn:active,.btn.selected,.btn.zeroclipboard-is-active{background-color:#dcdcdc;background-image:none;border-color:#b5b5b5;box-shadow:inset 0 2px 4px rgba(0,0,0,0.15)}.btn.selected:hover{background-color:#cfcfcf}.btn:disabled,.btn:disabled:hover,.btn.disabled,.btn.disabled:hover{color:rgba(102,102,102,0.5);cursor:default;background-color:rgba(229,229,229,0.5);background-image:none;border-color:rgba(197,197,197,0.5);box-shadow:none}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.15);background-color:#60b044;background-image:-webkit-linear-gradient(#8add6d, #60b044);background-image:linear-gradient(#8add6d, #60b044);border-color:#5ca941}.btn-primary .counter{color:#60b044;background-color:#fff}.btn-primary:hover{color:#fff;background-color:#569e3d;background-image:-webkit-linear-gradient(#79d858, #569e3d);background-image:linear-gradient(#79d858, #569e3d);border-color:#4a993e}.btn-primary:active,.btn-primary.selected{text-shadow:0 1px 0 rgba(0,0,0,0.15);background-color:#569e3d;background-image:none;border-color:#418737}.btn-primary.selected:hover{background-color:#4c8b36}.btn-primary:disabled,.btn-primary:disabled:hover,.btn-primary.disabled,.btn-primary.disabled:hover{color:#fefefe;background-color:#add39f;background-image:-webkit-linear-gradient(#c3ecb4, #add39f);background-image:linear-gradient(#c3ecb4, #add39f);border-color:#b9dcac #b9dcac #a7c89b}.btn-danger{color:#900}.btn-danger:hover{color:#fff;background-color:#b33630;background-image:-webkit-linear-gradient(#dc5f59, #b33630);background-image:linear-gradient(#dc5f59, #b33630);border-color:#cd504a}.btn-danger:active,.btn-danger.selected{color:#fff;background-color:#b33630;background-image:none;border-color:#9f312c}.btn-danger.selected:hover{background-color:#9f302b}.btn-danger:disabled,.btn-danger:disabled:hover,.btn-danger.disabled,.btn-danger.disabled:hover{color:#cb7f7f;background-color:#efefef;background-image:-webkit-linear-gradient(#fefefe, #efefef);background-image:linear-gradient(#fefefe, #efefef);border-color:#e1e1e1}.btn-danger:hover .counter,.btn-danger:active .counter,.btn-danger.selected .counter{color:#b33630;background-color:#fff}.btn-outline{color:#4078c0;background-color:#fff;background-image:none;border:1px solid #e5e5e5}.btn-outline .counter{background-color:#eee}.btn-outline:hover,.btn-outline:active,.btn-outline.selected,.btn-outline.zeroclipboard-is-hover,.btn-outline.zeroclipboard-is-active{color:#fff;background-color:#4078c0;background-image:none;border-color:#4078c0}.btn-outline:hover .counter,.btn-outline:active .counter,.btn-outline.selected .counter,.btn-outline.zeroclipboard-is-hover .counter,.btn-outline.zeroclipboard-is-active .counter{color:#4078c0;background-color:#fff}.btn-outline.selected:hover{background-color:#396cad}.btn-outline:disabled,.btn-outline:disabled:hover,.btn-outline.disabled,.btn-outline.disabled:hover{color:#767676;background-color:#fff;background-image:none;border-color:#e5e5e5}.btn-with-count{float:left;border-top-right-radius:0;border-bottom-right-radius:0}.btn-sm{padding:3px 10px;font-size:12px;line-height:20px}.hidden-text-expander{display:block}.hidden-text-expander.inline{position:relative;top:-1px;display:inline-block;margin-left:5px;line-height:0}.hidden-text-expander a,.ellipsis-expander{display:inline-block;height:12px;padding:0 5px 5px;font-size:12px;font-weight:bold;line-height:6px;color:#555;text-decoration:none;vertical-align:middle;background:#ddd;border:0;border-radius:1px}.hidden-text-expander a:hover,.ellipsis-expander:hover{text-decoration:none;background-color:#ccc}.hidden-text-expander a:active,.ellipsis-expander:active{color:#fff;background-color:#4183c4}.social-count{float:left;padding:3px 7px;font-size:12px;font-weight:600;line-height:20px;color:#333;vertical-align:middle;background-color:#fff;border:1px solid #ddd;border-left:0;border-top-right-radius:3px;border-bottom-right-radius:3px}.social-count:hover,.social-count:active{text-decoration:none}.social-count:hover{color:#4078c0;cursor:pointer}.btn-block{display:block;width:100%;text-align:center}.btn-link{display:inline-block;padding:0;font-size:inherit;color:#4078c0;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn-link:hover,.btn-link:focus{text-decoration:underline}.btn-link:focus{outline:none}.BtnGroup{display:inline-block;vertical-align:middle}.BtnGroup::before{display:table;content:""}.BtnGroup::after{display:table;clear:both;content:""}.BtnGroup+.BtnGroup,.BtnGroup+.btn{margin-left:5px}.BtnGroup-item{position:relative;float:left;border-right-width:0;border-radius:0}.BtnGroup-item:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.BtnGroup-item:last-child{border-right-width:1px;border-top-right-radius:3px;border-bottom-right-radius:3px}.BtnGroup-item.selected,.BtnGroup-item:focus,.BtnGroup-item:active,.BtnGroup-item:hover{border-right-width:1px}.BtnGroup-item.selected+.BtnGroup-item,.BtnGroup-item.selected+.BtnGroup-form .BtnGroup-item,.BtnGroup-item:focus+.BtnGroup-item,.BtnGroup-item:focus+.BtnGroup-form .BtnGroup-item,.BtnGroup-item:active+.BtnGroup-item,.BtnGroup-item:active+.BtnGroup-form .BtnGroup-item,.BtnGroup-item:hover+.BtnGroup-item,.BtnGroup-item:hover+.BtnGroup-form .BtnGroup-item{border-left-width:0}.BtnGroup-form{float:left}.BtnGroup-form:first-child .BtnGroup-item{border-top-left-radius:3px;border-bottom-left-radius:3px}.BtnGroup-form:last-child .BtnGroup-item{border-right-width:1px;border-top-right-radius:3px;border-bottom-right-radius:3px}.BtnGroup-form .BtnGroup-item{border-right-width:0;border-radius:0}.BtnGroup-form.selected .BtnGroup-item,.BtnGroup-form:focus .BtnGroup-item,.BtnGroup-form:active .BtnGroup-item,.BtnGroup-form:hover .BtnGroup-item{border-right-width:1px}.BtnGroup-form.selected+.BtnGroup-item,.BtnGroup-form.selected+.BtnGroup-form .BtnGroup-item,.BtnGroup-form:focus+.BtnGroup-item,.BtnGroup-form:focus+.BtnGroup-form .BtnGroup-item,.BtnGroup-form:active+.BtnGroup-item,.BtnGroup-form:active+.BtnGroup-form .BtnGroup-item,.BtnGroup-form:hover+.BtnGroup-item,.BtnGroup-form:hover+.BtnGroup-form .BtnGroup-item{border-left-width:0}.flex-table{display:table}.flex-table-item{display:table-cell;width:1%;white-space:nowrap;vertical-align:middle}.flex-table-item-primary{width:99%}input,textarea{-webkit-font-feature-settings:"liga" 0;font-feature-settings:"liga" 0}fieldset{padding:0;margin:0;border:0}label{font-weight:600}.form-control,.form-select{min-height:34px;padding:6px 8px;font-size:14px;line-height:20px;color:#333;vertical-align:middle;background-color:#fff;background-repeat:no-repeat;background-position:right 8px center;border:1px solid #ddd;border-radius:3px;outline:none;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075)}.form-control.focus,.form-control:focus,.form-select.focus,.form-select:focus{border-color:#51a7e8;outline:none;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(81,167,232,0.5)}.input-contrast{background-color:#fafafa}.input-contrast:focus{background-color:#fff}::-webkit-input-placeholder{color:#999}::-moz-placeholder{color:#999}:-ms-input-placeholder{color:#999}::placeholder{color:#999}.input-sm{min-height:28px;padding-top:3px;padding-bottom:3px;font-size:12px;line-height:20px}.input-lg{padding:6px 10px;font-size:16px}.input-block{display:block;width:100%}.input-monospace{font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace}.form-checkbox{padding-left:20px;margin:15px 0;vertical-align:middle}.form-checkbox label em.highlight{position:relative;left:-4px;padding:2px 4px;font-style:normal;background:#fffbdc;border-radius:3px}.form-checkbox input[type=checkbox],.form-checkbox input[type=radio]{float:left;margin:5px 0 0 -20px;vertical-align:middle}.form-checkbox .note{display:block;margin:0;font-size:12px;font-weight:normal;color:#666}.hfields{margin:15px 0}.hfields::before{display:table;content:""}.hfields::after{display:table;clear:both;content:""}.hfields .form-group{float:left;margin:0 30px 0 0}.hfields .form-group dt label{display:inline-block;margin:5px 0 0;color:#666}.hfields .form-group dt img{position:relative;top:-2px}.hfields .btn{float:left;margin:28px 25px 0 -20px}.hfields .form-select{margin-top:5px}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none;appearance:none}.form-actions::before{display:table;content:""}.form-actions::after{display:table;clear:both;content:""}.form-actions .btn{float:right}.form-actions .btn+.btn{margin-right:5px}.form-warning{padding:8px 10px;margin:10px 0;font-size:14px;color:#4c4a42;background:#fff9ea;border:1px solid #dfd8c2;border-radius:3px}.form-warning p{margin:0;line-height:1.5}.form-warning a{font-weight:bold}.form-select{display:inline-block;max-width:100%;height:34px;padding-right:24px;padding-right:8px \9;background:#fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAUCAMAAACzvE1FAAAADFBMVEUzMzMzMzMzMzMzMzMKAG/3AAAAA3RSTlMAf4C/aSLHAAAAPElEQVR42q3NMQ4AIAgEQTn//2cLdRKppSGzBYwzVXvznNWs8C58CiussPJj8h6NwgorrKRdTvuV9v16Afn0AYFOB7aYAAAAAElFTkSuQmCC") no-repeat right 8px center;background-image:none \9;background-size:8px 10px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-select::-ms-expand{opacity:0}.form-select[multiple]{height:auto}.select-sm{height:28px;min-height:28px;padding-top:3px;padding-bottom:3px;font-size:12px}.select-sm[multiple]{height:auto;min-height:0}.form-group{margin:15px 0}.form-group .form-control{width:440px;max-width:100%;margin-right:5px;background-color:#fafafa}.form-group .form-control:focus{background-color:#fff}.form-group .form-control.shorter{width:130px}.form-group .form-control.short{width:250px}.form-group .form-control.long{width:100%}.form-group textarea.form-control{width:100%;height:200px;min-height:200px}.form-group textarea.form-control.short{height:50px;min-height:50px}.form-group dt{margin:0 0 6px}.form-group label{position:relative}.form-group.flattened dt{float:left;margin:0;line-height:32px}.form-group.flattened dd{line-height:32px}.form-group dd h4{margin:4px 0 0}.form-group dd h4.is-error{color:#bd2c00}.form-group dd h4.is-success{color:#55a532}.form-group dd h4+.note{margin-top:0}.form-group.required dt label::after{padding-left:5px;color:#bd2c00;content:"*"}.form-group .success,.form-group .error,.form-group .indicator{display:none;font-size:12px;font-weight:bold}.form-group.loading{opacity:0.5}.form-group.loading .indicator{display:inline}.form-group.loading .spinner{display:inline-block;vertical-align:middle}.form-group.successful .success{display:inline;color:#55a532}.form-group.warn .warning,.form-group.warn .error,.form-group.errored .warning,.form-group.errored .error{position:absolute;z-index:10;display:inline-block;max-width:450px;padding:5px 8px;margin:3px 0 0;font-size:13px;font-weight:normal;border-style:solid;border-width:1px;border-radius:3px}.form-group.warn .warning::after,.form-group.warn .warning::before,.form-group.warn .error::after,.form-group.warn .error::before,.form-group.errored .warning::after,.form-group.errored .warning::before,.form-group.errored .error::after,.form-group.errored .error::before{position:absolute;bottom:100%;left:10px;z-index:15;width:0;height:0;pointer-events:none;content:" ";border:solid transparent}.form-group.warn .warning::after,.form-group.warn .error::after,.form-group.errored .warning::after,.form-group.errored .error::after{border-width:5px}.form-group.warn .warning::before,.form-group.warn .error::before,.form-group.errored .warning::before,.form-group.errored .error::before{margin-left:-1px;border-width:6px}.form-group.warn .warning{color:#4c4a42;background-color:#fff9ea;border-color:#dfd8c2}.form-group.warn .warning::after{border-bottom-color:#fff9ea}.form-group.warn .warning::before{border-bottom-color:#dfd8c2}.form-group.errored label{color:#bd2c00}.form-group.errored .error{color:#911;background-color:#fcdede;border-color:#d2b2b2}.form-group.errored .error::after{border-bottom-color:#fcdede}.form-group.errored .error::before{border-bottom-color:#d2b2b2}.note{min-height:17px;margin:4px 0 2px;font-size:12px;color:#767676}.note .spinner{margin-right:3px;vertical-align:middle}dl.form-group>dd .form-control.is-autocheck-loading,dl.form-group>dd .form-control.is-autocheck-successful,dl.form-group>dd .form-control.is-autocheck-errored{padding-right:30px}dl.form-group>dd .form-control.is-autocheck-loading{background-image:url("/images/spinners/octocat-spinner-16px.gif")}dl.form-group>dd .form-control.is-autocheck-successful{background-image:url("/images/modules/ajax/success.png")}dl.form-group>dd .form-control.is-autocheck-errored{background-image:url("/images/modules/ajax/error.png")}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){dl.form-group>dd .form-control.is-autocheck-loading,dl.form-group>dd .form-control.is-autocheck-successful,dl.form-group>dd .form-control.is-autocheck-errored{background-size:16px 16px}dl.form-group>dd .form-control.is-autocheck-loading{background-image:url("/images/spinners/octocat-spinner-32.gif")}dl.form-group>dd .form-control.is-autocheck-successful{background-image:url("/images/modules/ajax/[email protected]")}dl.form-group>dd .form-control.is-autocheck-errored{background-image:url("/images/modules/ajax/[email protected]")}}.form-cards{height:31px;margin:0 0 15px}.form-cards .card{float:left;width:47px;height:31px;text-indent:-9999px;background-image:url("/images/modules/pricing/[email protected]");background-position:0 0;opacity:0.6}.form-cards .card.visa{background-position:0 0}.form-cards .card.amex{background-position:-50px 0}.form-cards .card.mastercard{background-position:-100px 0}.form-cards .card.discover{background-position:-150px 0}.form-cards .card.jcb{background-position:-200px 0}.form-cards .card.dinersclub{background-position:-250px 0}.form-cards .card.enabled{opacity:1}.form-cards .card.disabled{opacity:0.2}.form-cards>.cards{margin:0}.form-cards>.cards>li{float:left;margin:0 4px 0 0;list-style-type:none}.form-cards>.cards>li.text{line-height:31px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.form-cards>.cards .card{background-image:url("/images/modules/pricing/[email protected]");background-size:300px 31px}}.status-indicator{display:inline-block;width:16px;height:16px;margin-left:5px;vertical-align:text-bottom}.status-indicator .octicon{display:none}.status-indicator-success{width:12px;margin-left:7px}.status-indicator-success::before{content:""}.status-indicator-success .octicon-check{display:inline-block;color:#6cc644;fill:#6cc644}.status-indicator-success .octicon-x{display:none}.status-indicator-failed{margin-left:7px}.status-indicator-failed::before{content:""}.status-indicator-failed .octicon-check{display:none}.status-indicator-failed .octicon-x{display:inline-block;color:#bd2c00;fill:#bd2c00}.status-indicator-loading{width:16px;background:url("/images/spinners/octocat-spinner-32-EAF2F5.gif") 0 0 no-repeat;background-size:16px}.inline-form{display:inline-block}.inline-form .btn-plain{background-color:transparent;border:0}.drag-and-drop{padding:7px 10px;margin:0;font-size:13px;line-height:16px;color:#767676;background-color:#fafafa;border:1px solid #ccc;border-top:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.drag-and-drop .default,.drag-and-drop .loading,.drag-and-drop .error{display:none}.drag-and-drop .error{color:#bd2c00}.drag-and-drop img{vertical-align:top}.is-default .drag-and-drop .default{display:inline-block}.is-uploading .drag-and-drop .loading{display:inline-block}.is-bad-file .drag-and-drop .bad-file{display:inline-block}.is-duplicate-filename .drag-and-drop .duplicate-filename{display:inline-block}.is-too-big .drag-and-drop .too-big{display:inline-block}.is-hidden-file .drag-and-drop .hidden-file{display:inline-block}.is-empty .drag-and-drop .empty{display:inline-block}.is-bad-permissions .drag-and-drop .bad-permissions{display:inline-block}.is-repository-required .drag-and-drop .repository-required{display:inline-block}.drag-and-drop-error-info{font-weight:normal;color:#767676}.drag-and-drop-error-info a{color:#4078c0}.is-failed .drag-and-drop .failed-request{display:inline-block}.manual-file-chooser{position:absolute;width:240px;padding:5px;margin-left:-80px;cursor:pointer;opacity:0.0001}.manual-file-chooser:hover+.manual-file-chooser-text{text-decoration:underline}.btn .manual-file-chooser{top:0;padding:0;line-height:34px}.upload-enabled textarea{display:block;border-bottom:1px dashed #ddd;border-bottom-right-radius:0;border-bottom-left-radius:0}.focused .drag-and-drop{border-color:#51a7e8;box-shadow:rgba(81,167,232,0.5) 0 0 3px}.dragover textarea,.dragover .drag-and-drop{box-shadow:#c9ff00 0 0 3px}.write-content{position:relative}.previewable-comment-form{position:relative}.previewable-comment-form .tabnav{position:relative;padding:10px 10px 0}.previewable-comment-form .comment{border:1px solid #cacaca}.previewable-comment-form .comment-form-error{margin-bottom:10px}.previewable-comment-form .write-content,.previewable-comment-form .preview-content{display:none;padding:0 0 10px;margin:0 10px}.previewable-comment-form.write-selected .write-content,.previewable-comment-form.preview-selected .preview-content{display:block}.previewable-comment-form textarea{display:block;width:100%;min-height:100px;max-height:500px;padding:10px;resize:vertical}.form-action-spacious{margin-top:10px}div.composer{margin-top:0;border:0}.composer .comment-form-textarea{height:200px;min-height:200px}.composer .tabnav{margin:0 0 10px}h2.account{margin:15px 0 0;font-size:18px;font-weight:normal;color:#666}p.explain{position:relative;font-size:12px;color:#666}p.explain strong{color:#333}p.explain .octicon{margin-right:5px;color:#bbb}p.explain .minibutton{top:-4px;float:right}.form-group label{position:static}.container{width:980px;margin-right:auto;margin-left:auto}.container::before{display:table;content:""}.container::after{display:table;clear:both;content:""}.container-md{max-width:768px;margin-right:auto;margin-left:auto}.container-md::before{display:table;content:""}.container-md::after{display:table;clear:both;content:""}.container-lg{max-width:1004px;margin-right:auto;margin-left:auto}.container-lg::before{display:table;content:""}.container-lg::after{display:table;clear:both;content:""}.container-xl{max-width:1280px;margin-right:auto;margin-left:auto}.container-xl::before{display:table;content:""}.container-xl::after{display:table;clear:both;content:""}.columns{margin-right:-10px;margin-left:-10px}.columns::before{display:table;content:""}.columns::after{display:table;clear:both;content:""}.column{float:left;padding-right:10px;padding-left:10px}.one-third{width:33.333333%}.two-thirds{width:66.666667%}.one-fourth{width:25%}.one-half{width:50%}.three-fourths{width:75%}.one-fifth{width:20%}.four-fifths{width:80%}.single-column{padding-right:10px;padding-left:10px}.table-column{display:table-cell;width:1%;padding-right:10px;padding-left:10px;vertical-align:top}.centered{display:block;float:none;margin-right:auto;margin-left:auto}.col-1{width:8.33333%}.col-2{width:16.66667%}.col-3{width:25%}.col-4{width:33.33333%}.col-5{width:41.66667%}.col-6{width:50%}.col-7{width:58.33333%}.col-8{width:66.66667%}.col-9{width:75%}.col-10{width:83.33333%}.col-11{width:91.66667%}.col-12{width:100%}@media (min-width: 544px){.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}}@media (min-width: 768px){.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}}@media (min-width: 1004px){.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}}@media (min-width: 1280px){.col-xl-1{width:8.33333%}.col-xl-2{width:16.66667%}.col-xl-3{width:25%}.col-xl-4{width:33.33333%}.col-xl-5{width:41.66667%}.col-xl-6{width:50%}.col-xl-7{width:58.33333%}.col-xl-8{width:66.66667%}.col-xl-9{width:75%}.col-xl-10{width:83.33333%}.col-xl-11{width:91.66667%}.col-xl-12{width:100%}}.gut-sm{margin-right:-6px;margin-left:-6px}.gut-sm>[class*="col-"]{padding-right:6px !important;padding-left:6px !important}.gut-md{margin-right:-12px;margin-left:-12px}.gut-md>[class*="col-"]{padding-right:12px !important;padding-left:12px !important}.gut-lg{margin-right:-24px;margin-left:-24px}.gut-lg>[class*="col-"]{padding-right:24px !important;padding-left:24px !important}.markdown-body{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body::before{display:table;content:""}.markdown-body::after{display:table;clear:both;content:""}.markdown-body>*:first-child{margin-top:0 !important}.markdown-body>*:last-child{margin-bottom:0 !important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:#c00}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre{margin-top:0;margin-bottom:16px}.markdown-body hr{height:0.25em;padding:0;margin:24px 0;background-color:#e7e7e7;border:0}.markdown-body blockquote{padding:0 1em;color:#777;border-left:0.25em solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;color:#555;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #ccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb}.markdown-body .loweralpha{list-style-type:lower-alpha}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.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{padding-bottom:0.3em;font-size:2em;border-bottom:1px solid #eee}.markdown-body h2{padding-bottom:0.3em;font-size:1.5em;border-bottom:1px solid #eee}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:0.875em}.markdown-body h6{font-size:0.85em;color:#777}.markdown-body ul,.markdown-body ol{padding-left:2em}.markdown-body ul.no-list,.markdown-body ol.no-list{padding:0;list-style-type:none}.markdown-body ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:0.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:bold}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:bold}.markdown-body table th,.markdown-body table td{padding:6px 13px;border:1px solid #ddd}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{max-width:none;vertical-align:text-top;background-color:transparent}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{display:block;float:left;width:auto;padding:7px;margin:13px 0 0;overflow:hidden;border:1px solid #ddd}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{display:block;padding:5px 0 0;clear:both;color:#333}.markdown-body span.align-center{display:block;overflow:hidden;clear:both}.markdown-body span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;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;margin:13px 0 0;overflow:hidden;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.markdown-body span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.markdown-body code,.markdown-body tt{padding:0;padding-top:0.2em;padding-bottom:0.2em;margin:0;font-size:85%;background-color:rgba(0,0,0,0.04);border-radius:3px}.markdown-body code::before,.markdown-body code::after,.markdown-body tt::before,.markdown-body tt::after{letter-spacing:-0.2em;content:"\00a0"}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{text-decoration:inherit}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body pre code,.markdown-body pre tt{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code::before,.markdown-body pre code::after,.markdown-body pre tt::before,.markdown-body pre tt::after{content:normal}.counter{display:inline-block;padding:2px 5px;font-size:12px;font-weight:600;line-height:1;color:#666;background-color:#eee;border-radius:20px}.menu{margin-bottom:15px;list-style:none;background-color:#fff;border:1px solid #d8d8d8;border-radius:3px}.menu-item{position:relative;display:block;padding:8px 10px;text-shadow:0 1px 0 #fff;border-bottom:1px solid #eee}.menu-item:first-child{border-top:0;border-top-left-radius:2px;border-top-right-radius:2px}.menu-item:first-child::before{border-top-left-radius:2px}.menu-item:last-child{border-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.menu-item:last-child::before{border-bottom-left-radius:2px}.menu-item:hover{text-decoration:none;background-color:#f9f9f9}.menu-item.selected{font-weight:bold;color:#222;cursor:default;background-color:#fff}.menu-item.selected::before{position:absolute;top:0;bottom:0;left:0;width:2px;content:"";background-color:#d26911}.menu-item .octicon{width:16px;margin-right:5px;color:#333;text-align:center}.menu-item .counter{float:right;margin-left:5px}.menu-item .menu-warning{float:right;color:#d26911}.menu-item .avatar{float:left;margin-right:5px}.menu-item.alert .counter{color:#bd2c00}.menu-heading{display:block;padding:8px 10px;margin-top:0;margin-bottom:0;font-size:13px;font-weight:bold;line-height:20px;color:#555;background-color:#f7f7f7;border-bottom:1px solid #eee}.menu-heading:hover{text-decoration:none}.menu-heading:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.menu-heading:last-child{border-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.tabnav{margin-top:0;margin-bottom:15px;border-bottom:1px solid #ddd}.tabnav .counter{margin-left:5px}.tabnav-tabs{margin-bottom:-1px}.tabnav-tab{display:inline-block;padding:8px 12px;font-size:14px;line-height:20px;color:#666;text-decoration:none;background-color:transparent;border:1px solid transparent;border-bottom:0}.tabnav-tab.selected{color:#333;background-color:#fff;border-color:#ddd;border-radius:3px 3px 0 0}.tabnav-tab:hover,.tabnav-tab:focus{text-decoration:none}.tabnav-extra{display:inline-block;padding-top:10px;margin-left:10px;font-size:12px;color:#666}.tabnav-extra>.octicon{margin-right:2px}a.tabnav-extra:hover{color:#4078c0;text-decoration:none}.tabnav-btn{margin-left:10px}.filter-list{list-style-type:none}.filter-list.small .filter-item{padding:4px 10px;margin:0 0 2px;font-size:12px}.filter-list.pjax-active .filter-item{color:#767676;background-color:transparent}.filter-list.pjax-active .filter-item.pjax-active{color:#fff;background-color:#4078c0}.filter-item{position:relative;display:block;padding:8px 10px;margin-bottom:5px;overflow:hidden;font-size:14px;color:#767676;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-radius:3px}.filter-item:hover{text-decoration:none;background-color:#eee}.filter-item.selected{color:#fff;background-color:#4078c0}.filter-item .count{float:right;font-weight:bold}.filter-item .bar{position:absolute;top:2px;right:0;bottom:2px;z-index:-1;display:inline-block;background-color:#f1f1f1}.subnav{margin-bottom:20px}.subnav::before{display:table;content:""}.subnav::after{display:table;clear:both;content:""}.subnav-bordered{padding-bottom:20px;border-bottom:1px solid #eee}.subnav-flush{margin-bottom:0}.subnav-item{position:relative;float:left;padding:6px 14px;font-weight:600;line-height:20px;color:#666;border:1px solid #e5e5e5}.subnav-item+.subnav-item{margin-left:-1px}.subnav-item:hover,.subnav-item:focus{text-decoration:none;background-color:#f5f5f5}.subnav-item.selected,.subnav-item.selected:hover,.subnav-item.selected:focus{z-index:2;color:#fff;background-color:#4078c0;border-color:#4078c0}.subnav-item:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.subnav-item:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.subnav-search{position:relative;margin-left:10px}.subnav-search-input{width:320px;padding-left:30px;color:#767676;border-color:#d5d5d5}.subnav-search-input-wide{width:500px}.subnav-search-icon{position:absolute;top:9px;left:8px;display:block;color:#ccc;text-align:center;pointer-events:none}.subnav-search-context .btn{color:#555;border-top-right-radius:0;border-bottom-right-radius:0}.subnav-search-context .btn:hover,.subnav-search-context .btn:focus,.subnav-search-context .btn:active,.subnav-search-context .btn.selected{z-index:2}.subnav-search-context+.subnav-search{margin-left:-1px}.subnav-search-context+.subnav-search .subnav-search-input{border-top-left-radius:0;border-bottom-left-radius:0}.subnav-search-context .select-menu-modal-holder{z-index:30}.subnav-search-context .select-menu-modal{width:220px}.subnav-search-context .select-menu-item-icon{color:inherit}.subnav-spacer-right{padding-right:10px}.state{display:inline-block;padding:4px 8px;font-weight:600;line-height:20px;color:#fff;text-align:center;background-color:#999;border-radius:3px}.state-open,.state-proposed,.state-reopened{background-color:#6cc644}.state-merged{background-color:#6e5494}.state-closed{background-color:#bd2c00}.state-renamed{background-color:#fffa5d}.tooltipped{position:relative}.tooltipped::after{position:absolute;z-index:1000000;display:none;padding:5px 8px;font:normal normal 11px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";-webkit-font-smoothing:subpixel-antialiased;color:#fff;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:rgba(0,0,0,0.8);border-radius:3px;opacity:0}.tooltipped::before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:rgba(0,0,0,0.8);pointer-events:none;content:"";border:5px solid transparent;opacity:0}@-webkit-keyframes tooltip-appear{from{opacity:0}to{opacity:1}}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.tooltipped:hover::before,.tooltipped:hover::after,.tooltipped:active::before,.tooltipped:active::after,.tooltipped:focus::before,.tooltipped:focus::after{display:inline-block;text-decoration:none;-webkit-animation-name:tooltip-appear;animation-name:tooltip-appear;-webkit-animation-duration:0.1s;animation-duration:0.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-delay:0.4s;animation-delay:0.4s}.tooltipped-no-delay:hover::before,.tooltipped-no-delay:hover::after,.tooltipped-no-delay:active::before,.tooltipped-no-delay:active::after,.tooltipped-no-delay:focus::before,.tooltipped-no-delay:focus::after{opacity:1;-webkit-animation:none;animation:none}.tooltipped-multiline:hover::after,.tooltipped-multiline:active::after,.tooltipped-multiline:focus::after{display:table-cell}.tooltipped-s::after,.tooltipped-se::after,.tooltipped-sw::after{top:100%;right:50%;margin-top:5px}.tooltipped-s::before,.tooltipped-se::before,.tooltipped-sw::before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,0.8)}.tooltipped-se::after{right:auto;left:50%;margin-left:-15px}.tooltipped-sw::after{margin-right:-15px}.tooltipped-n::after,.tooltipped-ne::after,.tooltipped-nw::after{right:50%;bottom:100%;margin-bottom:5px}.tooltipped-n::before,.tooltipped-ne::before,.tooltipped-nw::before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,0.8)}.tooltipped-ne::after{right:auto;left:50%;margin-left:-15px}.tooltipped-nw::after{margin-right:-15px}.tooltipped-s::after,.tooltipped-n::after{-webkit-transform:translateX(50%);transform:translateX(50%)}.tooltipped-w::after{right:100%;bottom:50%;margin-right:5px;-webkit-transform:translateY(50%);transform:translateY(50%)}.tooltipped-w::before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:rgba(0,0,0,0.8)}.tooltipped-e::after{bottom:50%;left:100%;margin-left:5px;-webkit-transform:translateY(50%);transform:translateY(50%)}.tooltipped-e::before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:rgba(0,0,0,0.8)}.tooltipped-multiline::after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-break:break-word;word-wrap:normal;white-space:pre-line;border-collapse:separate}.tooltipped-multiline.tooltipped-s::after,.tooltipped-multiline.tooltipped-n::after{right:auto;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltipped-multiline.tooltipped-w::after,.tooltipped-multiline.tooltipped-e::after{right:100%}@media screen and (min-width: 0\0){.tooltipped-multiline::after{width:250px}}.tooltipped-sticky::before,.tooltipped-sticky::after{display:inline-block}.tooltipped-sticky.tooltipped-multiline::after{display:table-cell}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.tooltipped-w::after{margin-right:4.5px}}.css-truncate.css-truncate-target,.css-truncate .css-truncate-target{display:inline-block;max-width:125px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:top}.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}.anim-fade-in{-webkit-animation-name:fade-in;animation-name:fade-in;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}.anim-fade-in.fast{-webkit-animation-duration:300ms;animation-duration:300ms}@-webkit-keyframes fade-in{0%{opacity:0}100%{opacity:1}}@keyframes fade-in{0%{opacity:0}100%{opacity:1}}.anim-fade-up{opacity:0;-webkit-animation-name:fade-up;animation-name:fade-up;-webkit-animation-duration:0.3s;animation-duration:0.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-delay:1s;animation-delay:1s}@-webkit-keyframes fade-up{0%{opacity:0.8;-webkit-transform:translateY(100%);transform:translateY(100%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fade-up{0%{opacity:0.8;-webkit-transform:translateY(100%);transform:translateY(100%)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.anim-fade-down{-webkit-animation-name:fade-down;animation-name:fade-down;-webkit-animation-duration:0.3s;animation-duration:0.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes fade-down{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0.5;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes fade-down{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0.5;-webkit-transform:translateY(100%);transform:translateY(100%)}}.anim-grow-x{width:0%;-webkit-animation-name:grow-x;animation-name:grow-x;-webkit-animation-duration:0.3s;animation-duration:0.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-delay:0.5s;animation-delay:0.5s}@-webkit-keyframes grow-x{to{width:100%}}@keyframes grow-x{to{width:100%}}.anim-shrink-x{-webkit-animation-name:shrink-x;animation-name:shrink-x;-webkit-animation-duration:0.3s;animation-duration:0.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-delay:0.5s;animation-delay:0.5s}@-webkit-keyframes shrink-x{to{width:0%}}@keyframes shrink-x{to{width:0%}}.anim-scale-in{-webkit-animation-name:scale-in;animation-name:scale-in;-webkit-animation-duration:0.15s;animation-duration:0.15s;-webkit-animation-timing-function:cubic-bezier(0.2, 0, 0.13, 1.5);animation-timing-function:cubic-bezier(0.2, 0, 0.13, 1.5)}@-webkit-keyframes scale-in{0%{opacity:0;-webkit-transform:scale(0.5);transform:scale(0.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes scale-in{0%{opacity:0;-webkit-transform:scale(0.5);transform:scale(0.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.anim-pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}@-webkit-keyframes pulse{0%{opacity:0.3}10%{opacity:1}100%{opacity:0.3}}@keyframes pulse{0%{opacity:0.3}10%{opacity:1}100%{opacity:0.3}}.anim-pulse-in{-webkit-animation-name:pulse-in;animation-name:pulse-in;-webkit-animation-duration:0.5s;animation-duration:0.5s}@-webkit-keyframes pulse-in{0%{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}50%{-webkit-transform:scale3d(1.1, 1.1, 1.1);transform:scale3d(1.1, 1.1, 1.1)}100%{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}@keyframes pulse-in{0%{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}50%{-webkit-transform:scale3d(1.1, 1.1, 1.1);transform:scale3d(1.1, 1.1, 1.1)}100%{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}.border{border:1px #e5e5e5 solid !important}.border-top{border-top:1px #e5e5e5 solid !important}.border-right{border-right:1px #e5e5e5 solid !important}.border-bottom{border-bottom:1px #e5e5e5 solid !important}.border-left{border-left:1px #e5e5e5 solid !important}.border-y{border-top:1px #e5e5e5 solid !important;border-bottom:1px #e5e5e5 solid !important}.border-blue{border-color:#c5d5dd !important}.border-gray-light{border-color:#eee !important}.border-gray-dark{border-color:#ddd !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:3px !important}.rounded-2{border-radius:6px !important}.bg-white{background-color:#fff !important}.bg-blue{background-color:#4078c0 !important}.bg-blue-light{background-color:#f2f8fa !important}.bg-gray-dark{background-color:#333 !important}.bg-gray{background-color:#f5f5f5 !important}.bg-gray-light{background-color:#fafafa !important}.bg-green{background-color:#6cc644 !important}.bg-red{background-color:#bd2c00 !important}.bg-yellow{background-color:#ffd36b !important}.text-blue{color:#4078c0 !important}.text-red{color:#bd2c00 !important}.text-gray-light{color:#999 !important}.text-gray{color:#767676 !important}.text-gray-dark{color:#333 !important}.text-green{color:#55a532 !important}.text-orange{color:#c9510c !important}.text-purple{color:#6e5494 !important}.text-white{color:#fff !important}.text-inherit{color:inherit !important}.link-blue{color:#4078c0 !important}.link-gray-dark{color:#333 !important}.link-gray{color:#767676 !important}.text-renamed{color:#fffa5d !important}.text-pending{color:#cea61b !important}.muted-link{color:#767676 !important}.muted-link:hover{color:#4078c0 !important;text-decoration:none}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.top-0{top:0 !important}.right-0{right:0 !important}.bottom-0{bottom:0 !important}.left-0{left:0 !important}.v-align-middle{vertical-align:middle !important}.v-align-top{vertical-align:top !important}.v-align-bottom{vertical-align:bottom !important}.v-align-text-top{vertical-align:text-top !important}.v-align-text-bottom{vertical-align:text-bottom !important}.overflow-hidden{overflow:hidden !important}.overflow-scroll{overflow:scroll !important}.overflow-auto{overflow:auto !important}.clearfix::before{display:table;content:""}.clearfix::after{display:table;clear:both;content:""}.float-right{float:right !important}.float-left{float:left !important}@media (min-width: 544px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}}@media (min-width: 1004px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}}@media (min-width: 1280px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}}.width-fit{max-width:100% !important}.width-full{width:100% !important}.height-full{height:100% !important}.min-width-0{min-width:0 !important}.v-hidden{visibility:hidden !important}.v-visible{visibility:visible !important}.d-table{display:table !important}.d-table-cell{display:table-cell !important}.table-fixed{table-layout:fixed !important}.d-block{display:block !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-none{display:none !important}@media (min-width: 544px){.d-sm-table{display:table !important}.d-sm-table-cell{display:table-cell !important}.d-sm-block{display:block !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-none{display:none !important}}@media (min-width: 768px){.d-md-table{display:table !important}.d-md-table-cell{display:table-cell !important}.d-md-block{display:block !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-none{display:none !important}}@media (min-width: 1004px){.d-lg-table{display:table !important}.d-lg-table-cell{display:table-cell !important}.d-lg-block{display:block !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-none{display:none !important}}@media (min-width: 1280px){.d-xl-table{display:table !important}.d-xl-table-cell{display:table-cell !important}.d-xl-block{display:block !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-none{display:none !important}}@media (max-width: 544px){.hide-sm{display:none !important}}@media (min-width: 544px) and (max-width: 768px){.hide-md{display:none !important}}@media (min-width: 768px) and (max-width: 1004px){.hide-lg{display:none !important}}@media (min-width: 1004px){.hide-xl{display:none !important}}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:3px !important}.mt-1{margin-top:3px !important}.mr-1{margin-right:3px !important}.mb-1{margin-bottom:3px !important}.ml-1{margin-left:3px !important}.mx-1{margin-right:3px !important;margin-left:3px !important}.my-1{margin-top:3px !important;margin-bottom:3px !important}.m-2{margin:6px !important}.mt-2{margin-top:6px !important}.mr-2{margin-right:6px !important}.mb-2{margin-bottom:6px !important}.ml-2{margin-left:6px !important}.mx-2{margin-right:6px !important;margin-left:6px !important}.my-2{margin-top:6px !important;margin-bottom:6px !important}.m-3{margin:12px !important}.mt-3{margin-top:12px !important}.mr-3{margin-right:12px !important}.mb-3{margin-bottom:12px !important}.ml-3{margin-left:12px !important}.mx-3{margin-right:12px !important;margin-left:12px !important}.my-3{margin-top:12px !important;margin-bottom:12px !important}.m-4{margin:24px !important}.mt-4{margin-top:24px !important}.mr-4{margin-right:24px !important}.mb-4{margin-bottom:24px !important}.ml-4{margin-left:24px !important}.mx-4{margin-right:24px !important;margin-left:24px !important}.my-4{margin-top:24px !important;margin-bottom:24px !important}.m-5{margin:36px !important}.mt-5{margin-top:36px !important}.mr-5{margin-right:36px !important}.mb-5{margin-bottom:36px !important}.ml-5{margin-left:36px !important}.mx-5{margin-right:36px !important;margin-left:36px !important}.my-5{margin-top:36px !important;margin-bottom:36px !important}.m-6{margin:48px !important}.mt-6{margin-top:48px !important}.mr-6{margin-right:48px !important}.mb-6{margin-bottom:48px !important}.ml-6{margin-left:48px !important}.mx-6{margin-right:48px !important;margin-left:48px !important}.my-6{margin-top:48px !important;margin-bottom:48px !important}@media (min-width: 544px){.m-sm-0{margin:0 !important}.mt-sm-0{margin-top:0 !important}.mr-sm-0{margin-right:0 !important}.mb-sm-0{margin-bottom:0 !important}.ml-sm-0{margin-left:0 !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}}@media (min-width: 544px){.m-sm-1{margin:3px !important}.mt-sm-1{margin-top:3px !important}.mr-sm-1{margin-right:3px !important}.mb-sm-1{margin-bottom:3px !important}.ml-sm-1{margin-left:3px !important}.mx-sm-1{margin-right:3px !important;margin-left:3px !important}.my-sm-1{margin-top:3px !important;margin-bottom:3px !important}}@media (min-width: 544px){.m-sm-2{margin:6px !important}.mt-sm-2{margin-top:6px !important}.mr-sm-2{margin-right:6px !important}.mb-sm-2{margin-bottom:6px !important}.ml-sm-2{margin-left:6px !important}.mx-sm-2{margin-right:6px !important;margin-left:6px !important}.my-sm-2{margin-top:6px !important;margin-bottom:6px !important}}@media (min-width: 544px){.m-sm-3{margin:12px !important}.mt-sm-3{margin-top:12px !important}.mr-sm-3{margin-right:12px !important}.mb-sm-3{margin-bottom:12px !important}.ml-sm-3{margin-left:12px !important}.mx-sm-3{margin-right:12px !important;margin-left:12px !important}.my-sm-3{margin-top:12px !important;margin-bottom:12px !important}}@media (min-width: 544px){.m-sm-4{margin:24px !important}.mt-sm-4{margin-top:24px !important}.mr-sm-4{margin-right:24px !important}.mb-sm-4{margin-bottom:24px !important}.ml-sm-4{margin-left:24px !important}.mx-sm-4{margin-right:24px !important;margin-left:24px !important}.my-sm-4{margin-top:24px !important;margin-bottom:24px !important}}@media (min-width: 544px){.m-sm-5{margin:36px !important}.mt-sm-5{margin-top:36px !important}.mr-sm-5{margin-right:36px !important}.mb-sm-5{margin-bottom:36px !important}.ml-sm-5{margin-left:36px !important}.mx-sm-5{margin-right:36px !important;margin-left:36px !important}.my-sm-5{margin-top:36px !important;margin-bottom:36px !important}}@media (min-width: 544px){.m-sm-6{margin:48px !important}.mt-sm-6{margin-top:48px !important}.mr-sm-6{margin-right:48px !important}.mb-sm-6{margin-bottom:48px !important}.ml-sm-6{margin-left:48px !important}.mx-sm-6{margin-right:48px !important;margin-left:48px !important}.my-sm-6{margin-top:48px !important;margin-bottom:48px !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0{margin-top:0 !important}.mr-md-0{margin-right:0 !important}.mb-md-0{margin-bottom:0 !important}.ml-md-0{margin-left:0 !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}}@media (min-width: 768px){.m-md-1{margin:3px !important}.mt-md-1{margin-top:3px !important}.mr-md-1{margin-right:3px !important}.mb-md-1{margin-bottom:3px !important}.ml-md-1{margin-left:3px !important}.mx-md-1{margin-right:3px !important;margin-left:3px !important}.my-md-1{margin-top:3px !important;margin-bottom:3px !important}}@media (min-width: 768px){.m-md-2{margin:6px !important}.mt-md-2{margin-top:6px !important}.mr-md-2{margin-right:6px !important}.mb-md-2{margin-bottom:6px !important}.ml-md-2{margin-left:6px !important}.mx-md-2{margin-right:6px !important;margin-left:6px !important}.my-md-2{margin-top:6px !important;margin-bottom:6px !important}}@media (min-width: 768px){.m-md-3{margin:12px !important}.mt-md-3{margin-top:12px !important}.mr-md-3{margin-right:12px !important}.mb-md-3{margin-bottom:12px !important}.ml-md-3{margin-left:12px !important}.mx-md-3{margin-right:12px !important;margin-left:12px !important}.my-md-3{margin-top:12px !important;margin-bottom:12px !important}}@media (min-width: 768px){.m-md-4{margin:24px !important}.mt-md-4{margin-top:24px !important}.mr-md-4{margin-right:24px !important}.mb-md-4{margin-bottom:24px !important}.ml-md-4{margin-left:24px !important}.mx-md-4{margin-right:24px !important;margin-left:24px !important}.my-md-4{margin-top:24px !important;margin-bottom:24px !important}}@media (min-width: 768px){.m-md-5{margin:36px !important}.mt-md-5{margin-top:36px !important}.mr-md-5{margin-right:36px !important}.mb-md-5{margin-bottom:36px !important}.ml-md-5{margin-left:36px !important}.mx-md-5{margin-right:36px !important;margin-left:36px !important}.my-md-5{margin-top:36px !important;margin-bottom:36px !important}}@media (min-width: 768px){.m-md-6{margin:48px !important}.mt-md-6{margin-top:48px !important}.mr-md-6{margin-right:48px !important}.mb-md-6{margin-bottom:48px !important}.ml-md-6{margin-left:48px !important}.mx-md-6{margin-right:48px !important;margin-left:48px !important}.my-md-6{margin-top:48px !important;margin-bottom:48px !important}}@media (min-width: 1004px){.m-lg-0{margin:0 !important}.mt-lg-0{margin-top:0 !important}.mr-lg-0{margin-right:0 !important}.mb-lg-0{margin-bottom:0 !important}.ml-lg-0{margin-left:0 !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}}@media (min-width: 1004px){.m-lg-1{margin:3px !important}.mt-lg-1{margin-top:3px !important}.mr-lg-1{margin-right:3px !important}.mb-lg-1{margin-bottom:3px !important}.ml-lg-1{margin-left:3px !important}.mx-lg-1{margin-right:3px !important;margin-left:3px !important}.my-lg-1{margin-top:3px !important;margin-bottom:3px !important}}@media (min-width: 1004px){.m-lg-2{margin:6px !important}.mt-lg-2{margin-top:6px !important}.mr-lg-2{margin-right:6px !important}.mb-lg-2{margin-bottom:6px !important}.ml-lg-2{margin-left:6px !important}.mx-lg-2{margin-right:6px !important;margin-left:6px !important}.my-lg-2{margin-top:6px !important;margin-bottom:6px !important}}@media (min-width: 1004px){.m-lg-3{margin:12px !important}.mt-lg-3{margin-top:12px !important}.mr-lg-3{margin-right:12px !important}.mb-lg-3{margin-bottom:12px !important}.ml-lg-3{margin-left:12px !important}.mx-lg-3{margin-right:12px !important;margin-left:12px !important}.my-lg-3{margin-top:12px !important;margin-bottom:12px !important}}@media (min-width: 1004px){.m-lg-4{margin:24px !important}.mt-lg-4{margin-top:24px !important}.mr-lg-4{margin-right:24px !important}.mb-lg-4{margin-bottom:24px !important}.ml-lg-4{margin-left:24px !important}.mx-lg-4{margin-right:24px !important;margin-left:24px !important}.my-lg-4{margin-top:24px !important;margin-bottom:24px !important}}@media (min-width: 1004px){.m-lg-5{margin:36px !important}.mt-lg-5{margin-top:36px !important}.mr-lg-5{margin-right:36px !important}.mb-lg-5{margin-bottom:36px !important}.ml-lg-5{margin-left:36px !important}.mx-lg-5{margin-right:36px !important;margin-left:36px !important}.my-lg-5{margin-top:36px !important;margin-bottom:36px !important}}@media (min-width: 1004px){.m-lg-6{margin:48px !important}.mt-lg-6{margin-top:48px !important}.mr-lg-6{margin-right:48px !important}.mb-lg-6{margin-bottom:48px !important}.ml-lg-6{margin-left:48px !important}.mx-lg-6{margin-right:48px !important;margin-left:48px !important}.my-lg-6{margin-top:48px !important;margin-bottom:48px !important}}@media (min-width: 1280px){.m-xl-0{margin:0 !important}.mt-xl-0{margin-top:0 !important}.mr-xl-0{margin-right:0 !important}.mb-xl-0{margin-bottom:0 !important}.ml-xl-0{margin-left:0 !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}}@media (min-width: 1280px){.m-xl-1{margin:3px !important}.mt-xl-1{margin-top:3px !important}.mr-xl-1{margin-right:3px !important}.mb-xl-1{margin-bottom:3px !important}.ml-xl-1{margin-left:3px !important}.mx-xl-1{margin-right:3px !important;margin-left:3px !important}.my-xl-1{margin-top:3px !important;margin-bottom:3px !important}}@media (min-width: 1280px){.m-xl-2{margin:6px !important}.mt-xl-2{margin-top:6px !important}.mr-xl-2{margin-right:6px !important}.mb-xl-2{margin-bottom:6px !important}.ml-xl-2{margin-left:6px !important}.mx-xl-2{margin-right:6px !important;margin-left:6px !important}.my-xl-2{margin-top:6px !important;margin-bottom:6px !important}}@media (min-width: 1280px){.m-xl-3{margin:12px !important}.mt-xl-3{margin-top:12px !important}.mr-xl-3{margin-right:12px !important}.mb-xl-3{margin-bottom:12px !important}.ml-xl-3{margin-left:12px !important}.mx-xl-3{margin-right:12px !important;margin-left:12px !important}.my-xl-3{margin-top:12px !important;margin-bottom:12px !important}}@media (min-width: 1280px){.m-xl-4{margin:24px !important}.mt-xl-4{margin-top:24px !important}.mr-xl-4{margin-right:24px !important}.mb-xl-4{margin-bottom:24px !important}.ml-xl-4{margin-left:24px !important}.mx-xl-4{margin-right:24px !important;margin-left:24px !important}.my-xl-4{margin-top:24px !important;margin-bottom:24px !important}}@media (min-width: 1280px){.m-xl-5{margin:36px !important}.mt-xl-5{margin-top:36px !important}.mr-xl-5{margin-right:36px !important}.mb-xl-5{margin-bottom:36px !important}.ml-xl-5{margin-left:36px !important}.mx-xl-5{margin-right:36px !important;margin-left:36px !important}.my-xl-5{margin-top:36px !important;margin-bottom:36px !important}}@media (min-width: 1280px){.m-xl-6{margin:48px !important}.mt-xl-6{margin-top:48px !important}.mr-xl-6{margin-right:48px !important}.mb-xl-6{margin-bottom:48px !important}.ml-xl-6{margin-left:48px !important}.mx-xl-6{margin-right:48px !important;margin-left:48px !important}.my-xl-6{margin-top:48px !important;margin-bottom:48px !important}}.mx-auto{margin-right:auto !important;margin-left:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-right:0 !important;padding-left:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:3px !important}.pt-1{padding-top:3px !important}.pr-1{padding-right:3px !important}.pb-1{padding-bottom:3px !important}.pl-1{padding-left:3px !important}.px-1{padding-right:3px !important;padding-left:3px !important}.py-1{padding-top:3px !important;padding-bottom:3px !important}.p-2{padding:6px !important}.pt-2{padding-top:6px !important}.pr-2{padding-right:6px !important}.pb-2{padding-bottom:6px !important}.pl-2{padding-left:6px !important}.px-2{padding-right:6px !important;padding-left:6px !important}.py-2{padding-top:6px !important;padding-bottom:6px !important}.p-3{padding:12px !important}.pt-3{padding-top:12px !important}.pr-3{padding-right:12px !important}.pb-3{padding-bottom:12px !important}.pl-3{padding-left:12px !important}.px-3{padding-right:12px !important;padding-left:12px !important}.py-3{padding-top:12px !important;padding-bottom:12px !important}.p-4{padding:24px !important}.pt-4{padding-top:24px !important}.pr-4{padding-right:24px !important}.pb-4{padding-bottom:24px !important}.pl-4{padding-left:24px !important}.px-4{padding-right:24px !important;padding-left:24px !important}.py-4{padding-top:24px !important;padding-bottom:24px !important}.p-5{padding:36px !important}.pt-5{padding-top:36px !important}.pr-5{padding-right:36px !important}.pb-5{padding-bottom:36px !important}.pl-5{padding-left:36px !important}.px-5{padding-right:36px !important;padding-left:36px !important}.py-5{padding-top:36px !important;padding-bottom:36px !important}.p-6{padding:48px !important}.pt-6{padding-top:48px !important}.pr-6{padding-right:48px !important}.pb-6{padding-bottom:48px !important}.pl-6{padding-left:48px !important}.px-6{padding-right:48px !important;padding-left:48px !important}.py-6{padding-top:48px !important;padding-bottom:48px !important}@media (min-width: 544px){.p-sm-0{padding:0 !important}.pt-sm-0{padding-top:0 !important}.pr-sm-0{padding-right:0 !important}.pb-sm-0{padding-bottom:0 !important}.pl-sm-0{padding-left:0 !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}}@media (min-width: 544px){.p-sm-1{padding:3px !important}.pt-sm-1{padding-top:3px !important}.pr-sm-1{padding-right:3px !important}.pb-sm-1{padding-bottom:3px !important}.pl-sm-1{padding-left:3px !important}.px-sm-1{padding-right:3px !important;padding-left:3px !important}.py-sm-1{padding-top:3px !important;padding-bottom:3px !important}}@media (min-width: 544px){.p-sm-2{padding:6px !important}.pt-sm-2{padding-top:6px !important}.pr-sm-2{padding-right:6px !important}.pb-sm-2{padding-bottom:6px !important}.pl-sm-2{padding-left:6px !important}.px-sm-2{padding-right:6px !important;padding-left:6px !important}.py-sm-2{padding-top:6px !important;padding-bottom:6px !important}}@media (min-width: 544px){.p-sm-3{padding:12px !important}.pt-sm-3{padding-top:12px !important}.pr-sm-3{padding-right:12px !important}.pb-sm-3{padding-bottom:12px !important}.pl-sm-3{padding-left:12px !important}.px-sm-3{padding-right:12px !important;padding-left:12px !important}.py-sm-3{padding-top:12px !important;padding-bottom:12px !important}}@media (min-width: 544px){.p-sm-4{padding:24px !important}.pt-sm-4{padding-top:24px !important}.pr-sm-4{padding-right:24px !important}.pb-sm-4{padding-bottom:24px !important}.pl-sm-4{padding-left:24px !important}.px-sm-4{padding-right:24px !important;padding-left:24px !important}.py-sm-4{padding-top:24px !important;padding-bottom:24px !important}}@media (min-width: 544px){.p-sm-5{padding:36px !important}.pt-sm-5{padding-top:36px !important}.pr-sm-5{padding-right:36px !important}.pb-sm-5{padding-bottom:36px !important}.pl-sm-5{padding-left:36px !important}.px-sm-5{padding-right:36px !important;padding-left:36px !important}.py-sm-5{padding-top:36px !important;padding-bottom:36px !important}}@media (min-width: 544px){.p-sm-6{padding:48px !important}.pt-sm-6{padding-top:48px !important}.pr-sm-6{padding-right:48px !important}.pb-sm-6{padding-bottom:48px !important}.pl-sm-6{padding-left:48px !important}.px-sm-6{padding-right:48px !important;padding-left:48px !important}.py-sm-6{padding-top:48px !important;padding-bottom:48px !important}}@media (min-width: 768px){.p-md-0{padding:0 !important}.pt-md-0{padding-top:0 !important}.pr-md-0{padding-right:0 !important}.pb-md-0{padding-bottom:0 !important}.pl-md-0{padding-left:0 !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}}@media (min-width: 768px){.p-md-1{padding:3px !important}.pt-md-1{padding-top:3px !important}.pr-md-1{padding-right:3px !important}.pb-md-1{padding-bottom:3px !important}.pl-md-1{padding-left:3px !important}.px-md-1{padding-right:3px !important;padding-left:3px !important}.py-md-1{padding-top:3px !important;padding-bottom:3px !important}}@media (min-width: 768px){.p-md-2{padding:6px !important}.pt-md-2{padding-top:6px !important}.pr-md-2{padding-right:6px !important}.pb-md-2{padding-bottom:6px !important}.pl-md-2{padding-left:6px !important}.px-md-2{padding-right:6px !important;padding-left:6px !important}.py-md-2{padding-top:6px !important;padding-bottom:6px !important}}@media (min-width: 768px){.p-md-3{padding:12px !important}.pt-md-3{padding-top:12px !important}.pr-md-3{padding-right:12px !important}.pb-md-3{padding-bottom:12px !important}.pl-md-3{padding-left:12px !important}.px-md-3{padding-right:12px !important;padding-left:12px !important}.py-md-3{padding-top:12px !important;padding-bottom:12px !important}}@media (min-width: 768px){.p-md-4{padding:24px !important}.pt-md-4{padding-top:24px !important}.pr-md-4{padding-right:24px !important}.pb-md-4{padding-bottom:24px !important}.pl-md-4{padding-left:24px !important}.px-md-4{padding-right:24px !important;padding-left:24px !important}.py-md-4{padding-top:24px !important;padding-bottom:24px !important}}@media (min-width: 768px){.p-md-5{padding:36px !important}.pt-md-5{padding-top:36px !important}.pr-md-5{padding-right:36px !important}.pb-md-5{padding-bottom:36px !important}.pl-md-5{padding-left:36px !important}.px-md-5{padding-right:36px !important;padding-left:36px !important}.py-md-5{padding-top:36px !important;padding-bottom:36px !important}}@media (min-width: 768px){.p-md-6{padding:48px !important}.pt-md-6{padding-top:48px !important}.pr-md-6{padding-right:48px !important}.pb-md-6{padding-bottom:48px !important}.pl-md-6{padding-left:48px !important}.px-md-6{padding-right:48px !important;padding-left:48px !important}.py-md-6{padding-top:48px !important;padding-bottom:48px !important}}@media (min-width: 1004px){.p-lg-0{padding:0 !important}.pt-lg-0{padding-top:0 !important}.pr-lg-0{padding-right:0 !important}.pb-lg-0{padding-bottom:0 !important}.pl-lg-0{padding-left:0 !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}}@media (min-width: 1004px){.p-lg-1{padding:3px !important}.pt-lg-1{padding-top:3px !important}.pr-lg-1{padding-right:3px !important}.pb-lg-1{padding-bottom:3px !important}.pl-lg-1{padding-left:3px !important}.px-lg-1{padding-right:3px !important;padding-left:3px !important}.py-lg-1{padding-top:3px !important;padding-bottom:3px !important}}@media (min-width: 1004px){.p-lg-2{padding:6px !important}.pt-lg-2{padding-top:6px !important}.pr-lg-2{padding-right:6px !important}.pb-lg-2{padding-bottom:6px !important}.pl-lg-2{padding-left:6px !important}.px-lg-2{padding-right:6px !important;padding-left:6px !important}.py-lg-2{padding-top:6px !important;padding-bottom:6px !important}}@media (min-width: 1004px){.p-lg-3{padding:12px !important}.pt-lg-3{padding-top:12px !important}.pr-lg-3{padding-right:12px !important}.pb-lg-3{padding-bottom:12px !important}.pl-lg-3{padding-left:12px !important}.px-lg-3{padding-right:12px !important;padding-left:12px !important}.py-lg-3{padding-top:12px !important;padding-bottom:12px !important}}@media (min-width: 1004px){.p-lg-4{padding:24px !important}.pt-lg-4{padding-top:24px !important}.pr-lg-4{padding-right:24px !important}.pb-lg-4{padding-bottom:24px !important}.pl-lg-4{padding-left:24px !important}.px-lg-4{padding-right:24px !important;padding-left:24px !important}.py-lg-4{padding-top:24px !important;padding-bottom:24px !important}}@media (min-width: 1004px){.p-lg-5{padding:36px !important}.pt-lg-5{padding-top:36px !important}.pr-lg-5{padding-right:36px !important}.pb-lg-5{padding-bottom:36px !important}.pl-lg-5{padding-left:36px !important}.px-lg-5{padding-right:36px !important;padding-left:36px !important}.py-lg-5{padding-top:36px !important;padding-bottom:36px !important}}@media (min-width: 1004px){.p-lg-6{padding:48px !important}.pt-lg-6{padding-top:48px !important}.pr-lg-6{padding-right:48px !important}.pb-lg-6{padding-bottom:48px !important}.pl-lg-6{padding-left:48px !important}.px-lg-6{padding-right:48px !important;padding-left:48px !important}.py-lg-6{padding-top:48px !important;padding-bottom:48px !important}}@media (min-width: 1280px){.p-xl-0{padding:0 !important}.pt-xl-0{padding-top:0 !important}.pr-xl-0{padding-right:0 !important}.pb-xl-0{padding-bottom:0 !important}.pl-xl-0{padding-left:0 !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}}@media (min-width: 1280px){.p-xl-1{padding:3px !important}.pt-xl-1{padding-top:3px !important}.pr-xl-1{padding-right:3px !important}.pb-xl-1{padding-bottom:3px !important}.pl-xl-1{padding-left:3px !important}.px-xl-1{padding-right:3px !important;padding-left:3px !important}.py-xl-1{padding-top:3px !important;padding-bottom:3px !important}}@media (min-width: 1280px){.p-xl-2{padding:6px !important}.pt-xl-2{padding-top:6px !important}.pr-xl-2{padding-right:6px !important}.pb-xl-2{padding-bottom:6px !important}.pl-xl-2{padding-left:6px !important}.px-xl-2{padding-right:6px !important;padding-left:6px !important}.py-xl-2{padding-top:6px !important;padding-bottom:6px !important}}@media (min-width: 1280px){.p-xl-3{padding:12px !important}.pt-xl-3{padding-top:12px !important}.pr-xl-3{padding-right:12px !important}.pb-xl-3{padding-bottom:12px !important}.pl-xl-3{padding-left:12px !important}.px-xl-3{padding-right:12px !important;padding-left:12px !important}.py-xl-3{padding-top:12px !important;padding-bottom:12px !important}}@media (min-width: 1280px){.p-xl-4{padding:24px !important}.pt-xl-4{padding-top:24px !important}.pr-xl-4{padding-right:24px !important}.pb-xl-4{padding-bottom:24px !important}.pl-xl-4{padding-left:24px !important}.px-xl-4{padding-right:24px !important;padding-left:24px !important}.py-xl-4{padding-top:24px !important;padding-bottom:24px !important}}@media (min-width: 1280px){.p-xl-5{padding:36px !important}.pt-xl-5{padding-top:36px !important}.pr-xl-5{padding-right:36px !important}.pb-xl-5{padding-bottom:36px !important}.pl-xl-5{padding-left:36px !important}.px-xl-5{padding-right:36px !important;padding-left:36px !important}.py-xl-5{padding-top:36px !important;padding-bottom:36px !important}}@media (min-width: 1280px){.p-xl-6{padding:48px !important}.pt-xl-6{padding-top:48px !important}.pr-xl-6{padding-right:48px !important}.pb-xl-6{padding-bottom:48px !important}.pl-xl-6{padding-left:48px !important}.px-xl-6{padding-right:48px !important;padding-left:48px !important}.py-xl-6{padding-top:48px !important;padding-bottom:48px !important}}.h1,.h2,.h3,.h4,.h5,.h6{font-weight:600 !important}.h1{font-size:26px !important}@media (min-width: 768px){.h1{font-size:32px !important}}.h2{font-size:22px !important}@media (min-width: 768px){.h2{font-size:24px !important}}.h3{font-size:18px !important}@media (min-width: 768px){.h3{font-size:20px !important}}.h4{font-size:16px !important}@media (min-width: 768px){.h4{font-size:16px !important}}.h5{font-size:14px !important}.h6{font-size:12px !important}.f1{font-size:26px !important}@media (min-width: 768px){.f1{font-size:32px !important}}.f2{font-size:22px !important}@media (min-width: 768px){.f2{font-size:24px !important}}.f3{font-size:18px !important}@media (min-width: 768px){.f3{font-size:20px !important}}.f4{font-size:16px !important}@media (min-width: 768px){.f4{font-size:16px !important}}.f5{font-size:14px !important}.f6{font-size:12px !important}.f00-light{font-size:40px !important;font-weight:300 !important}@media (min-width: 768px){.f00-light{font-size:48px !important}}.f0-light{font-size:32px !important;font-weight:300 !important}@media (min-width: 768px){.f0-light{font-size:40px !important}}.f1-light{font-size:26px !important;font-weight:300 !important}@media (min-width: 768px){.f1-light{font-size:32px !important}}.f2-light{font-size:22px !important;font-weight:300 !important}@media (min-width: 768px){.f2-light{font-size:24px !important}}.f3-light{font-size:18px !important;font-weight:300 !important}@media (min-width: 768px){.f3-light{font-size:20px !important}}.text-small{font-size:12px !important}.lead{margin-bottom:30px;font-size:20px;font-weight:300;color:#555}.lh-condensed-ultra{line-height:1 !important}.lh-condensed{line-height:1.25 !important}.lh-default{line-height:1.5 !important}.text-right{text-align:right !important}.text-left{text-align:left !important}.text-center{text-align:center !important}.text-normal{font-weight:normal !important}.text-bold{font-weight:600 !important}.text-italic{font-style:italic !important}.text-uppercase{text-transform:uppercase !important}.no-underline{text-decoration:none !important}.no-wrap{white-space:nowrap !important}.text-emphasized{font-weight:600;color:#333}.table-list{display:table;width:100%;color:#999;table-layout:fixed;border-bottom:1px solid #e5e5e5}.table-list ol{list-style-type:decimal}.table-list-bordered .table-list-cell:first-child{border-left:1px solid #eee}.table-list-bordered .table-list-cell:last-child{border-right:1px solid #eee}.table-list-item{position:relative;display:table-row;list-style:none}.table-list-item.unread .table-list-cell:first-child{box-shadow:2px 0 0 #4078c0 inset}.table-list-cell{position:relative;display:table-cell;padding:8px 10px;font-size:12px;vertical-align:top;border-top:1px solid #eee}.table-list-cell.flush-left{padding-left:0}.table-list-cell.flush-right{padding-right:0}.table-list-cell-checkbox{width:30px;padding-right:0;padding-left:0;text-align:center}.table-list-header{position:relative;margin-top:20px;background-color:#f8f8f8;border:1px solid #e5e5e5;border-radius:3px 3px 0 0}.table-list-header::before{display:table;content:""}.table-list-header::after{display:table;clear:both;content:""}.table-list-header .btn-link{position:relative;display:inline-block;padding-top:13px;padding-bottom:13px;font-weight:normal}.table-list-heading{margin-left:10px}.table-list-header-select-all{float:left;width:30px;padding:12px 10px;margin-right:5px;margin-left:-1px;text-align:center}.table-list-header-meta{display:inline-block;padding-top:13px;padding-bottom:13px;color:#767676}.table-list-header-toggle h4{padding:12px 0}.table-list-filters:first-child .table-list-header-toggle:first-child{padding-left:12px}.table-list-header-toggle.states .selected{font-weight:600}.table-list-header-toggle .btn-link{color:#767676}.table-list-header-toggle .btn-link .octicon{margin-right:2px}.table-list-header-toggle .btn-link:hover{color:#222;text-decoration:none}.table-list-header-toggle .btn-link.selected,.table-list-header-toggle .btn-link.selected:hover{color:#222}.table-list-header-toggle .btn-link+.btn-link{margin-left:10px}.table-list-header-toggle .btn-link:disabled,.table-list-header-toggle .btn-link.disabled{pointer-events:none;opacity:0.5}.table-list-header-toggle .select-menu{position:relative}.table-list-header-toggle .select-menu-item.selected{font-weight:600}.table-list-header-toggle .select-menu-button{padding-right:15px;padding-left:15px}.table-list-header-toggle .select-menu-button:hover,.table-list-header-toggle .select-menu-button.selected,.table-list-header-toggle .select-menu-button.selected:hover{color:#222}.table-list-header-toggle .select-menu-modal-holder{right:10px}.table-list-header-toggle .select-menu-modal-holder .select-menu-modal{margin-top:-1px}.table-list-header-next{margin-top:20px;margin-bottom:-1px}.table-list-header-next .table-list-header-select-all{padding-left:14px}.table-list-header-next .select-all-dropdown{padding-top:10px;padding-bottom:10px}.bulk-actions-header{position:-webkit-sticky;position:sticky;top:0;z-index:32;height:50px}.bulk-actions-header.is-stuck{background-color:#fff;border-color:transparent}.bulk-actions-header.is-stuck::after{position:fixed;top:0;right:0;left:0;z-index:-1;display:block;height:50px;content:"";border-bottom:1px solid rgba(0,0,0,0.1);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.table-list-triage{display:none}.triage-mode .table-list-filters{display:none}.triage-mode .table-list-triage{display:block}.member-list-item .table-list-cell{padding-top:10px;padding-bottom:10px;vertical-align:middle}.member-list-item .table-list-cell-checkbox{width:30px}.member-list-item.adminable .member-info{padding-left:5px}.member-list-item .member-link{display:block;text-decoration:none}.member-list-item .member-link:hover .member-username{color:#4078c0}.member-visibility .octicon{font-size:14px}.member-info{width:450px;padding-left:10px;font-size:14px}.member-info .member-list-avatar{float:left;margin-right:15px}.member-info .member-fullname{max-width:200px;font-weight:normal;color:#767676}.member-info-content{margin-bottom:5px;overflow:hidden}.member-username{display:block;margin-top:4px;color:#333}.member-username .octicon{position:relative;top:-2px;margin-left:2px;font-size:12px;color:#aaa}.member-username.css-truncate-target{display:block}.member-meta{color:#767676;text-align:center}.member-meta .member-meta-link{color:#767676}.member-meta .member-meta-link:hover{color:#4078c0;text-decoration:none}.member-meta>.btn-link{color:#767676}.member-meta>.btn-link:hover{color:#4078c0;text-decoration:none}.member-meta .select-menu-modal{width:310px}.member-meta .select-menu-modal-holder{right:0;text-align:left}.member-meta .octicon{font-size:14px}.member-follow{text-align:right}.member-selected-actions{display:inline}.member-list-select-all-label{font-weight:normal}.member-list-select-all-label .some-selected{display:none}.triage-mode .some-selected{display:inline}.triage-mode .none-selected{display:none}.member-toolbar-actions{margin-top:9px;margin-right:9px}.member-action{margin-right:5px}.member-role-select{position:relative;display:inline-block}.member-role-select .select-menu-modal{width:310px}.member-role-menu .select-menu-item-text{padding-right:8px}.member-list-item-next .table-list-cell{padding-top:10px;padding-bottom:10px;vertical-align:middle}.member-list-item-next .table-list-cell-checkbox{width:30px;padding-right:0;padding-left:10px}.member-list-item-next .member-avatar-cell{width:58px;padding-right:0}.member-list-item-next .member-fullname{line-height:1.3;color:#4078c0}.member-list-item-next .member-username{display:block;margin:0}.member-list-item-next .member-meta{font-size:14px}.member-list-item-next .member-follow{text-align:right}.member-list-item-next .dropdown-menu-content{text-align:left}.autocomplete-results{position:absolute;z-index:99;display:none;max-height:20em;overflow-y:auto;font-size:13px;list-style:none;background:#fff;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,0.3)}.autocomplete-results .no-results{display:none}.autocomplete-group{width:100%;overflow:hidden}.autocomplete-item{display:block;padding:5px;overflow:hidden;font-weight:bold;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.autocomplete-item.selected,.autocomplete-item.navigation-focus{color:#fff;text-decoration:none;background-color:#4078c0}.autocomplete-item.selected .organization-member,.autocomplete-item.selected .ldap-group-dn,.autocomplete-item.navigation-focus .organization-member,.autocomplete-item.navigation-focus .ldap-group-dn{color:#f2f2f2}.autocomplete-item .secondary-label{font-weight:normal}.autocomplete-item .organization-member{float:right;padding-top:1px;color:#808080}.suggester-container{position:absolute;top:0;left:0;z-index:30;-webkit-transform:translateZ(0);transform:translateZ(0)}.suggester{position:relative;top:0;left:0;display:none;min-width:180px;margin-top:20px;background:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,0.1)}.suggester.active{display:block}.suggester ul{padding:0;margin:0;list-style:none}.suggester li{display:block;padding:5px 10px;font-weight:bold;border-bottom:1px solid #ddd}.suggester li small{font-weight:normal;color:#767676}.suggester li:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.suggester li:first-child a{border-top-left-radius:3px;border-top-right-radius:3px}.suggester li.navigation-focus{color:#fff;text-decoration:none;background:#4078c0}.suggester li.navigation-focus small{color:#fff}.markdown-body .csv-data td,.markdown-body .csv-data th{padding:5px;overflow:hidden;font-size:12px;line-height:1;text-align:left;white-space:nowrap}.markdown-body .csv-data .blob-num{padding:10px 8px 9px;text-align:right;background:#fff;border:0}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{font-weight:bold;background:#f8f8f8;border-top:0}.too-long-message{display:none;color:#cea61b}.is-too-long-error .too-long-message{display:block}.check-for-fork{display:inline-block}.check-for-fork img{vertical-align:text-bottom}.check-for-fork.is-error .check-for-fork-loading{display:none}.check-for-fork.is-error .check-for-fork-error{display:inline-block}.check-for-fork-error{display:none}.file-commit-form{padding-left:64px}.file-commit-form .commit-form-avatar{float:left;margin-left:-64px;border-radius:4px}.file-commit-form .commit-form{position:relative;padding:15px;margin-bottom:10px;border:1px solid #ddd;border-radius:3px}.file-commit-form .commit-form::after,.file-commit-form .commit-form::before{position:absolute;top:11px;right:100%;left:-16px;display:block;width:0;height:0;pointer-events:none;content:" ";border-color:transparent;border-style:solid solid outset}.file-commit-form .commit-form::after{margin-top:1px;margin-left:2px;border-width:7px;border-right-color:#fff}.file-commit-form .commit-form::before{border-width:8px;border-right-color:#ddd}.file-commit-form .commit-message{min-height:100px}.file-commit-form-heading{margin-bottom:10px}.quick-pull-choice .form-checkbox{padding-left:25px;margin:10px 0}.quick-pull-choice .form-checkbox label{font-weight:normal}.quick-pull-choice .form-checkbox .octicon{width:16px;margin-right:3px;text-align:center}.quick-pull-choice dl.form-group,.quick-pull-choice .form-checkbox:last-child{margin-bottom:0}.quick-pull-choice .quick-pull-branch-name{display:none;padding-left:48px;margin-top:5px}.quick-pull-choice .new-branch-name-input{position:relative;margin-top:5px}.quick-pull-choice .new-branch-name-input input{width:240px;padding-left:26px;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace}.quick-pull-choice .new-branch-name-input .quick-pull-new-branch-icon{position:absolute;top:9px;left:10px;color:#b0c4ce}.quick-pull-choice.will-create-branch .quick-pull-branch-name{display:inline-block}.boxed-group{position:relative;margin-bottom:30px;border-radius:3px}.boxed-group .counter{color:#fff;background-color:#babec0}.boxed-group.flush .boxed-group-inner{padding:0}.boxed-group.condensed .boxed-group-inner{padding:0;font-size:12px}.boxed-group>h3,.boxed-group .heading{display:block;padding:9px 10px 10px;margin:0;font-size:14px;line-height:17px;background-color:#f5f5f5;border:1px solid #d8d8d8;border-bottom:0;border-radius:3px 3px 0 0}.boxed-group>h3.border-light,.boxed-group .heading.border-light{border-color:#e5e5e5}.boxed-group>h3 a,.boxed-group .heading a{color:inherit}.boxed-group>h3 a.boxed-group-breadcrumb,.boxed-group .heading a.boxed-group-breadcrumb{font-weight:normal;color:#666;text-decoration:none}.boxed-group>h3 .avatar,.boxed-group .heading .avatar{margin-top:-4px}.boxed-group .tabnav.heading{padding:0}.boxed-group .tabnav.heading .tabnav-tab.selected{border-top:0}.boxed-group .tabnav.heading li:first-child .selected{border-left-color:#fff;border-top-left-radius:3px}.boxed-group .tabnav-tab{border-top:0;border-radius:0}.boxed-group code.heading{font-size:12px}.boxed-group.dangerzone>h3{color:#fff;text-shadow:0 -1px 0 #900;background-color:#df3e3e;border:1px solid #a00}.boxed-group.dangerzone .boxed-group-inner{border-top:0}.boxed-group.condensed>h3{padding:6px 6px 7px;font-size:12px}.boxed-group.condensed>h3 .octicon{padding:0 6px 0 2px}.one-half .boxed-group,.dashboard-sidebar .boxed-group{margin-bottom:20px}.boxed-group .bleed-flush{width:100%;padding:0 10px;margin-left:-10px}.boxed-group .compact{margin-top:10px;margin-bottom:10px}.boxed-group-inner{padding:10px;color:#666;background:#fff;border:1px solid #d8d8d8;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.boxed-group-inner .markdown-body{padding:20px 10px 10px;font-size:13px}.boxed-group-inner.markdown-body{padding-top:10px;padding-bottom:10px}.boxed-group-inner.inline-error{padding-top:40px;padding-bottom:40px;text-align:center}.boxed-group-inner.seamless{padding:0}.boxed-group-inner .tabnav{padding-right:10px;padding-left:10px;margin-right:-10px;margin-left:-10px}.boxed-group-inner .tabnav-tab.selected{border-top:1px solid #ddd}.boxed-group-inner .help{padding:1em 10px 1em 35px;margin:1em -10px -10px;clear:both;color:#767676;border-top:1px solid #ddd}.boxed-group-inner .help .octicon{margin-right:5px;margin-left:-25px}.boxed-group-inner .boxed-group-list+.help{margin-top:0}.boxed-action{float:right;margin-left:10px}.boxed-group-action{position:relative;z-index:2;float:right;margin:6px 10px 0 0}.boxed-group-action.flush{margin-top:0;margin-right:0}.field-with-errors{display:inline}.compact-options{margin:-6px 0 13px}.compact-options>li{display:inline-block;margin:0 12px 0 0;font-weight:bold;list-style-type:none}.compact-options>li label{float:left}.compact-options>li .spinner{display:block;float:left;width:16px;height:16px;margin-left:5px}.boxed-group-list{margin:0;list-style:none}.boxed-group-list:first-child>li:first-child{border-top:0}.boxed-group-list>li{display:block;padding:5px 10px;margin-right:-10px;margin-left:-10px;line-height:23px;border-bottom:1px solid #e5e5e5}.boxed-group-list>li:first-child{border-top:1px solid #ddd}.boxed-group-list>li:last-of-type{border-bottom:0}.boxed-group-list>li.selected{background:#e5f9e2}.boxed-group-list>li.approved .btn-sm,.boxed-group-list>li.rejected .btn-sm{display:none}.boxed-group-list>li.rejected a{text-decoration:line-through}.boxed-group-list>li .avatar{margin-top:-2px;margin-right:4px}.boxed-group-list>li .octicon{width:24px;margin-right:4px}.boxed-group-list>li .btn-sm{float:right;margin:-1px 0 0 10px}.boxed-group-list>li .BtnGroup{float:right}.boxed-group-list>li .BtnGroup .btn-sm{float:left}.boxed-group.flush .boxed-group-list li{width:auto;padding-right:0;padding-left:0;margin-left:0}.boxed-group-list.standalone{margin-top:-1px}.boxed-group-list.standalone>li:first-child{border-top:0}.boxed-group-standalone{margin-top:-10px;margin-bottom:-10px}.boxed-group-standalone>li:last-child{border-radius:0 0 2px 2px}.boxed-group-table{width:100%;text-align:left}.boxed-group-table tr:last-child td{border-bottom:0}.boxed-group-table th{padding:9px;background-color:#fafafa;border-bottom:1px solid #eee}.boxed-group-table td{padding:9px;vertical-align:top;border-bottom:1px solid #eee}.ajax-error-message{position:fixed;top:-200px;left:50%;z-index:9999;display:none;width:974px;margin:0 3px;margin-left:-487px;-webkit-transition:top 0.5s ease-in-out;transition:top 0.5s ease-in-out}.ajax-error-message.visible{top:0}.ajax-error-message>.octicon-alert{vertical-align:text-top}.boxed-group-success,.boxed-group-warning,.boxed-group-info{padding:10px 15px;margin:-10px -10px 10px;border-style:solid;border-width:1px 0}.boxed-group-success .btn-sm,.boxed-group-warning .btn-sm,.boxed-group-info .btn-sm{margin:-5px 0}.boxed-group-success:first-child,.boxed-group-warning:first-child,.boxed-group-info:first-child{border-top:0}.boxed-group-success{color:#22662c;background-color:#e2f9e5;border-color:#bad3be}.boxed-group-warning{color:#4c4a42;background-color:#fff9ea;border-color:#dfd8c2}.boxed-group-info{color:inherit;border-color:inherit}.branch-name{display:inline-block;padding:2px 6px;font:12px Consolas, "Liberation Mono", Menlo, Courier, monospace;color:rgba(0,0,0,0.5);background-color:rgba(209,227,237,0.5);border-radius:3px}.branch-name .octicon{margin:1px -2px 0 0;color:#b0c4ce}a.branch-name{color:#4078c0}.breadcrumb{margin-bottom:10px;font-size:18px;color:#767676}.breadcrumb .separator::before,.breadcrumb .separator::after{content:" "}.breadcrumb strong.final-path{color:#333}.breadcrumb .zeroclipboard-button{display:inline-block;margin-left:5px}.breadcrumb .repo-root{font-weight:bold}.breadcrumb .octicon{vertical-align:-2px}.editor-license-template,.editor-gitignore-template{position:relative;top:3px;display:none;float:right;font-size:14px}.editor-license-template.is-visible,.editor-gitignore-template.is-visible{display:block}.editor-license-template .select-menu-git-ignore,.editor-license-template .select-menu-license-picker,.editor-gitignore-template .select-menu-git-ignore,.editor-gitignore-template .select-menu-license-picker{right:0}.starring-container .unstarred,.starring-container.on .starred{display:block}.starring-container.on .unstarred,.starring-container .starred{display:none}.starring-container.loading{opacity:0.5}.user-following-container .follow,.user-following-container.on .unfollow{display:inline-block}.user-following-container.on .follow,.user-following-container .unfollow{display:none}.user-following-container.loading{opacity:0.5}.members .user-following-container{float:right}.close-button{padding:0;background:transparent;border:0;outline:none}.btn-invisible{color:#4078c0;background-color:#fff;background-image:none;border:0}.btn-invisible:hover,.btn-invisible:active,.btn-invisible:focus,.btn-invisible.selected,.btn-invisible.zeroclipboard-is-hover,.btn-invisible.zeroclipboard-is-active{color:#4078c0;background:none;outline:none;box-shadow:none}.btn-octicon{display:inline-block;padding:5px;margin-left:5px;line-height:1;color:#767676;vertical-align:middle;background:transparent;border:0}.btn-octicon:hover{color:#4078c0}.btn-octicon.disabled{color:#bbb;cursor:default}.btn-octicon.disabled:hover{color:#bbb}.btn-octicon-danger:hover{color:#bd2c00}.commit-ref{position:relative;display:inline-block;padding:0 5px;font:0.75em/2 Consolas, "Liberation Mono", Menlo, Courier, monospace;color:#336479;white-space:nowrap;background-color:#e8f0f8;border-radius:3px}.commit-ref .user{color:#598a9f}a.commit-ref:hover{text-decoration:none;text-shadow:-1px -1px 0 rgba(0,0,0,0.2);background-image:-webkit-linear-gradient(#74a4d4, #2a5177);background-image:linear-gradient(#74a4d4, #2a5177);border-color:#2a5177}.capped-cards{list-style:none}.capped-cards .capped-card{float:left;width:450px}.capped-card{margin:10px;list-style:none;border:1px solid #ddd;border-radius:2px}.capped-card::before{display:table;content:""}.capped-card::after{display:table;clear:both;content:""}.capped-card:nth-child(odd){margin-left:0}.capped-card:nth-child(even){margin-right:0}.capped-card h3{padding:10px;margin:0;line-height:100%;border-bottom:1px solid #eee}.capped-card>p{display:block;padding:0 10px 10px;margin:0;font-size:15px;line-height:100%;color:#767676;border-bottom:1px solid #eee}.capped-card-content{display:block;background:#f7f7f7}.capped-card-content::before{display:table;content:""}.capped-card-content::after{display:table;clear:both;content:""}.clone-url h5{margin-top:0;margin-bottom:10px}.clone-url .input-group{width:100%}.file-editor-textarea{width:100%;padding:5px 4px;font:12px Consolas, "Liberation Mono", Menlo, Courier, monospace;resize:vertical;border:0;border-radius:0;outline:none}.container-preview .tabnav-tabs{margin:-6px 0 -6px -11px}.container-preview .tabnav-tabs .tabnav-tab{padding:12px 15px;border-radius:0}.container-preview .tabnav-tabs>.selected:first-child{border-top-left-radius:3px}.container-preview .tabnav-tabs .selected{font-weight:bold}.container-preview.show-code .commit-create,.container-preview.show-code .actions{display:block}.container-preview.show-code .commit-preview,.container-preview.show-code .loading-preview-msg,.container-preview.show-code .no-changes-preview-msg,.container-preview.show-code .error-preview-msg{display:none}.container-preview:not(.show-code) .commit-create,.container-preview:not(.show-code) .actions{display:none}.container-preview.loading-preview .loading-preview-msg{display:block}.container-preview.loading-preview .no-changes-preview-msg,.container-preview.loading-preview .error-preview-msg,.container-preview.loading-preview .commit-preview{display:none}.container-preview.show-preview .commit-preview{display:block}.container-preview.show-preview .loading-preview-msg,.container-preview.show-preview .no-changes-preview-msg,.container-preview.show-preview .error-preview-msg{display:none}.container-preview.no-changes-preview .no-changes-preview-msg{display:block}.container-preview.no-changes-preview .loading-preview-msg,.container-preview.no-changes-preview .error-preview-msg,.container-preview.no-changes-preview .commit-preview{display:none}.container-preview.error-preview .error-preview-msg{display:block}.container-preview.error-preview .loading-preview-msg,.container-preview.error-preview .no-changes-preview-msg,.container-preview.error-preview .commit-preview{display:none}.container-preview p.preview-msg{padding:30px;font-size:16px}.cm-s-github.CodeMirror{font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:12px;line-height:18px;background:#fff}.cm-s-github .CodeMirror-gutters{background:#fff}.cm-s-github .CodeMirror-linenumber{padding:0px 13px 0px 19px}.cm-s-github .CodeMirror-cursor{color:#000}.cm-s-github .CodeMirror-activeline-background{background:#f5f5f5 !important}.cm-s-github .CodeMirror-selected{background:#c8c8fa}.cm-s-github .cm-comment{color:#969896}.cm-s-github .cm-string{color:#183691}.cm-s-github .cm-string-2{color:#0086b3}.cm-s-github .cm-tag{color:#63a35c}.cm-s-github .cm-keyword{color:#a71d5d}.cm-s-github .cm-error,.cm-s-github .cm-invalidchar{font-style:italic;font-weight:bold;color:#b52a1d;text-decoration:underline}.cm-s-github .cm-variable{color:#ed6a43}.cm-s-github .cm-variable-2{color:#795da3}.code-list .file-box{border:1px solid #ddd;border-radius:3px}.code-list em{padding:2px;margin:0 -2px;font-style:normal;font-weight:bold;color:#333;background-color:rgba(255,255,140,0.5);border-radius:3px}.code-list .title{min-height:24px;margin:-3px 0 10px 38px;font-weight:bold;line-height:1.2}.code-list .repo-specific .title,.code-list .repo-specific .full-path{margin-left:0}.code-list .match-count,.code-list .updated-at{margin:0;font-weight:normal}.code-list .language{float:right;margin-left:10px;font-size:12px;color:rgba(51,51,51,0.75)}.code-list .avatar{float:left}.code-list .code-list-item+.code-list-item{padding-top:20px;margin-top:20px;margin-bottom:10px;border-top:1px solid #eee}.code-list .blob-num{padding:0}.code-list .blob-num::before{content:normal}.code-list .blob-num a{padding:0 10px;color:inherit}.code-list .blob-num a:hover{color:#4078c0}.code-list .blob-code{white-space:pre-wrap}.code-list .divider .blob-num,.code-list .divider .blob-code{padding-top:0;padding-bottom:0;cursor:default;background-color:#f8fafd}.code-list .divider .blob-num{height:18px;padding:0 10px;line-height:15px;background-color:#f0f5fa}.code-list .full-path{margin:0 0 0 40px}.code-list .full-path .octicon-repo{color:#767676}.code-list .full-path .octicon-lock{color:#e9dba4}.code-list .full-path a{color:#999}.code-list-item-private .file-box{border:1px solid #fadda5}.code-list-item-private .blob-num{background-color:#fff9ea;border-right:1px solid #fadda5}.code-list-item-private .blob-num a{color:#4c4a42}.code-list-item-private .divider .blob-num,.code-list-item-private .divider .blob-code{color:#4c4a42;background-color:#fff9ea}.details-collapse .collapse{position:relative;display:none;height:0;overflow:hidden;-webkit-transition:height 0.35s ease-in-out;transition:height 0.35s ease-in-out}.details-collapse.open .collapse{display:block;height:auto;overflow:visible}.comment .email-format{line-height:1.5}.previewable-edit .previewable-comment-form{display:none}.previewable-edit .previewable-comment-form::before{display:table;content:""}.previewable-edit .previewable-comment-form::after{display:table;clear:both;content:""}.previewable-edit .previewable-comment-form .tabnav-tabs{display:inline-block}.previewable-edit .previewable-comment-form .form-actions{float:right;margin-right:10px;margin-bottom:10px}.previewable-edit.is-comment-editing .timeline-comment-header{display:none}.is-comment-editing .timeline-comment-actions,.is-comment-editing .edit-comment-hide{display:none}.is-comment-editing .previewable-comment-form{display:block}.is-comment-loading .previewable-comment-form{opacity:0.5}.is-comment-stale .comment-form-stale{display:block}.comment-body{width:100%;padding:15px;overflow:visible;font-size:14px}.comment-body .highlight{overflow:visible !important;background-color:transparent}.comment-form-textarea{width:100%;max-width:100%;height:100px;min-height:100px;margin:0;font-size:14px;line-height:1.6}.comment-form-textarea.dragover{border:solid 1px #4078c0}.discussion-topic-header{position:relative;padding:10px;word-wrap:break-word}.comment-form-error,.comment-form-stale{display:none;padding:15px 10px;margin:10px;color:#900;background-color:#fcdede;border:1px solid #d2b2b2;border-radius:3px}.comment-form-error.comment-form-bottom,.comment-form-stale.comment-form-bottom{margin-bottom:10px}.email-format{line-height:1.5em !important}.email-format div{white-space:pre-wrap}.email-format .email-hidden-reply{display:none;white-space:pre-wrap}.email-format .email-hidden-reply.expanded{display:block}.email-format .email-quoted-reply,.email-format .email-signature-reply{padding:0 15px;margin:15px 0;color:#767676;border-left:4px solid #ddd}.email-format .email-hidden-toggle a{display:inline-block;height:12px;padding:0 9px;font-size:12px;font-weight:bold;line-height:6px;color:#555;text-decoration:none;vertical-align:middle;background:#ddd;border-radius:1px}.email-format .email-hidden-toggle a:hover{background-color:#ccc}.email-format .email-hidden-toggle a:active{color:#fff;background-color:#4078c0}.comment-email-format div{white-space:normal}.comment-email-format .email-hidden-reply{display:none;white-space:normal}.comment-email-format .email-hidden-reply.expanded{display:block}.comment-email-format blockquote,.comment-email-format p{margin:0}.blankslate.conversation-limited{padding:20px 0 10px;margin:15px}.locked-conversation .write-tab,.locked-conversation .preview-tab{color:#ccc}.commit-form{position:relative;padding:15px;border:1px solid #ddd;border-radius:3px}.commit-form::after,.commit-form::before{position:absolute;top:11px;right:100%;left:-16px;display:block;width:0;height:0;pointer-events:none;content:" ";border-color:transparent;border-style:solid solid outset}.commit-form::after{margin-top:1px;margin-left:2px;border-width:7px;border-right-color:#fff}.commit-form::before{border-width:8px;border-right-color:#ddd}.commit-form .input-block{margin-top:10px;margin-bottom:10px}.commit-form-avatar{float:left;margin-left:-64px;border-radius:3px}.commit-form-actions::before{display:table;content:""}.commit-form-actions::after{display:table;clear:both;content:""}.commit-form-actions .BtnGroup{margin-right:5px}.commit-form-actions .check-for-fork{line-height:34px}.merge-commit-message{resize:vertical}.commit-sha{padding:0.2em 0.4em;font-size:90%;font-weight:normal;background-color:#f5f5f5;border:1px solid #eee;border-radius:0.2em}.commit-partial-notice{margin-top:20px;margin-bottom:20px}.commit-paginate-container{float:right;margin:-5px 0 0;text-align:inherit}.commit .commit-title,.commit .commit-title a{color:#4e575b}.commit .commit-title.blank,.commit .commit-title.blank a{color:#9cabb1}.commit .commit-title .issue-link{font-weight:bold;color:#4078c0}.commit .sha-block,.commit .sha{font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:12px}.commit.open .commit-desc{display:block}.commit-link{font-weight:normal;color:#4078c0}.commit-email-flash{display:inline}.commit-desc{display:none}.commit-desc pre{max-width:700px;margin-top:10px;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:11px;line-height:1.45;color:#596063;white-space:pre-wrap}.commit-desc+.commit-branches{padding-top:8px;margin-top:2px;border-top:solid 1px #d1e2eb}.commit-author-section{color:#333}.commit-author-section span.user-mention{font-weight:normal}.commit-tease{position:relative;padding:10px;margin-bottom:-1px;font-size:13px;line-height:20px;color:#68777d;background-color:#f2f9fc;border:1px solid #c9e6f2;border-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0}.commit-tease .muted-link{color:inherit}.commit-tease .loader{float:left;margin:2px 5px 0 2px}.commit-tease .message{color:inherit}.commit-tease .avatar{margin-top:-1px}.commit-tease.open .commit-desc{display:block}.branch-infobar+.commit-tease{border-top-left-radius:0;border-top-right-radius:0}.commit-tease-comments{margin-right:15px}.commit-tease-sha{display:inline-block;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:90%;color:#445055}.commit-tease-contributors{padding:5px 10px;margin:10px -10px -10px;background-color:#fff;border-top:1px solid #c9e6f2;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.commit-tease-contributors::before{display:table;content:""}.commit-tease-contributors::after{display:table;clear:both;content:""}.commit-tease-contributors .contributors-toggle{float:left;margin-right:10px}.commit-tease-contributors .avatar-link{float:left;margin-right:3px}.commit-tease-contributors .loader-loading{margin:2px 5px 2px 0}.commit-tease-contributors.error .loader-loading{display:none}.commit-tease-contributors.error .loader-error{display:block}.commits-listing{position:relative;padding-bottom:20px;margin-bottom:15px}.commits-listing::before{position:absolute;top:0;bottom:0;left:14px;z-index:-1;display:block;width:2px;content:"";background-color:#f3f3f3}.commits-listing .discussion-item-icon{margin-right:5px;margin-left:-1px}.commits-listing .timeline-commits{padding-left:8px;margin-bottom:20px}.commits-listing .timeline-commits:last-child{margin-bottom:0}.commits-listing-padded{padding-left:39px}.commit-group{margin-top:10px;list-style-type:none}.commit-group-title{margin-top:15px;margin-left:-31px;color:#767676}.commit-group-title .octicon-git-commit{margin-right:17px;color:#ccc;background:#fff}.commits-list-item.navigation-focus{background:#f7fbfc}.commits-list-item .commit-title{margin:0;font-size:15px;font-weight:bold;color:#333}.commits-list-item .commit-meta{margin-top:1px;font-weight:normal;color:#767676}.commits-list-item .status .octicon{height:14px;line-height:14px}.commits-list-item .commit-author{color:#767676}.commits-list-item .octicon-arrow-right{margin:0 3px}.commits-list-item .btn-outline{margin-top:2px}.commits-list-item .commit-desc pre{margin-top:5px;margin-bottom:10px;color:#767676}.commits-list-item .commit-desc pre a{word-break:break-word}.commit-avatar-cell{width:47px}.commit-avatar-cell.table-list-cell{padding-right:0}.commit-indicator{margin-left:5px}.commit-links-cell{width:335px;text-align:right}.commit-links-group{margin-right:5px}.timeline-commits{width:100%;margin-top:5px;border-collapse:separate}.timeline-commits+.timeline-commits{margin-top:15px}.timeline-commits td{padding-top:4px;padding-right:8px;padding-bottom:4px;font-size:12px;line-height:16px;vertical-align:top;background-color:transparent}.discussion-item .timeline-commits .commit-author{display:none}.timeline-commits .commit-gravatar{width:16px;padding-left:10px}.timeline-commits .commit-author{width:200px;padding-right:20px;white-space:nowrap}.timeline-commits .author{font-weight:bold;color:#555}.timeline-commits .commit-message{max-width:550px;min-height:0}.timeline-commits .commit-message>code a{color:#555}.timeline-commits .commit-message>code a:hover{color:#4078c0}.timeline-commits .commit-desc pre{overflow:visible;color:#767676}.timeline-commits .hidden-text-expander{margin-top:3px;margin-left:0;vertical-align:top}.timeline-commits .hidden-text-expander .ellipsis-expander{height:13px;background-color:#eee}.timeline-commits .hidden-text-expander .ellipsis-expander:hover{color:#fff;background-color:#4078c0}.timeline-commits .commit-sig-status{width:60px;padding-right:4px;text-align:right}.timeline-commits .commit-ci-status{width:16px;padding-right:4px}.timeline-commits .commit-ci-status .octicon{margin-right:1px;margin-left:1px;vertical-align:bottom}.timeline-commits .commit-ci-status .octicon-primitive-dot{width:9px;margin-right:3px;margin-left:2px}.timeline-commits .commit-meta{width:50px;text-align:right}.commit-icon{display:table-cell;width:16px;color:#ccc}.commit-icon .octicon{background-color:#fff}.commit-id{color:#bbb}.commit-id:hover{color:#4078c0}.full-commit{padding:8px 8px 0;margin:10px 0;font-size:14px;background:#e6f1f6;border:1px solid #c5d5dd;border-radius:3px}.full-commit:first-child{margin-top:0}.full-commit .btn-outline,.full-commit .btn-outline:disabled{background-color:transparent;border:1px solid #cedee5}.full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}.full-commit p.commit-title{margin:0 0 8px;font-size:18px;font-weight:bold;color:#213f4d}.full-commit .branches-list{display:inline;margin-right:10px;margin-left:2px;vertical-align:middle;list-style:none}.full-commit .branches-list li{display:inline-block;padding-left:3px;font-weight:bold;color:#596063}.full-commit .branches-list li::before{padding-right:6px;font-weight:normal;content:"+"}.full-commit .branches-list li:first-child{padding-left:0}.full-commit .branches-list li:first-child::before{padding-right:0;content:""}.full-commit .branches-list li.loading{font-weight:normal;color:#818c90}.full-commit .branches-list li.pull-request{font-weight:normal;color:#818c90}.full-commit .branches-list li.pull-request::before{margin-left:-8px;content:""}.full-commit .branches-list li.pull-request-error{margin-bottom:-1px}.full-commit .branches-list li a{color:inherit}.full-commit .commit-meta{padding:8px;margin-right:-8px;margin-left:-8px;background:#fff;border-top:1px solid #d8e6ec;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.full-commit .sha-block{margin-left:15px;font-size:12px;line-height:24px;color:#767676}.full-commit .sha-block>.sha{color:#444}.full-commit .sha-block>a{color:#444;text-decoration:none;border-bottom:1px dotted #ccc}.full-commit .sha-block>a:hover{border-bottom:1px solid #444}.full-commit .commit-desc{display:block;margin:-5px 0 10px}.full-commit .commit-desc pre{max-width:100%;overflow:visible;font-size:13px;word-wrap:break-word}.branches-tag-list{display:inline;margin-right:10px;margin-left:2px;vertical-align:middle;list-style:none}.branches-tag-list .more-commit-details,.branches-tag-list.open .hidden-text-expander{display:none}.branches-tag-list.open .more-commit-details{display:inline-block}.branches-tag-list li{display:inline-block;padding-left:3px}.branches-tag-list li:first-child{padding-left:0;font-weight:bold;color:#596063}.branches-tag-list li.loading{font-weight:normal;color:#818c90}.branches-tag-list li.abbrev-tags{cursor:pointer}.branches-tag-list li a,.branches-tag-list li .ellipsis-expander{color:inherit}.branches-tag-list li .ellipsis-expander{background-color:#dae5eb}.branches-tag-list li .ellipsis-expander:hover{background-color:#d1dbe0}.commit-branches{min-height:18px;margin-top:-6px;margin-bottom:8px;font-size:12px;color:#818c90;vertical-align:middle}.commit-branches .octicon{vertical-align:middle}.commit-loader .loader-error{display:none;margin:0;font-size:12px;font-weight:bold;color:#bd2c00}.commit-loader.error .loader-loading{display:none}.commit-loader.error .loader-error{display:block}.historical-banner{padding:15px 20px 15px 130px;margin-bottom:20px;overflow:hidden;color:#333;background:#fff;border:1px solid #e5e5e5;border-radius:5px}.historical-banner h2{margin:0 0 5px}.historical-banner p{margin:0}.historical-banner .illustration{position:absolute;top:12px;left:20px;color:rgba(0,0,0,0.1)}.roses-divider{margin-bottom:20px;text-align:center}.commit-comments-heading{max-width:780px;margin-bottom:15px}.commit-comment-count{display:inline-block;margin-right:15px;margin-bottom:0}.commit-build-statuses{position:relative;display:inline-block;text-align:left}.commit-build-statuses .octicon-primitive-dot{width:10px}.commit-build-statuses.active .dropdown-menu-content{display:block}.commit-build-statuses.active .tooltipped::before,.commit-build-statuses.active .tooltipped::after{display:none}.commit-build-statuses .dropdown-menu{min-width:400px;max-width:500px;padding-top:0;padding-bottom:0}.commit-build-statuses .dropdown-menu .merge-status-list{max-height:170px;border-bottom:0}.commit-build-statuses .dropdown-menu-w,.commit-build-statuses .dropdown-menu-e{top:-11px}.commit-build-statuses .merge-status-item:last-child{border-radius:0 0 2px 2px}.dropdown-signed-commit{display:inline-block}.dropdown-signed-commit .dropdown-menu{width:260px;padding-top:0;padding-bottom:0;margin-top:7px;font-size:13px;line-height:1.4;color:#333;text-align:left}.dropdown-signed-commit .dropdown-menu::after{border-bottom-color:#f9f9f9}.dropdown-signed-commit .dropdown-menu-w{top:-28px;margin-top:0}.dropdown-signed-commit .dropdown-menu-w::after{border-bottom-color:transparent;border-left-color:#f9f9f9}.signed-commit-header{padding-top:12px;padding-bottom:12px;line-height:1.3;white-space:normal;border-collapse:separate;background-color:#f9f9f9;border-bottom:solid 1px #e5e5e5;border-top-left-radius:3px;border-top-right-radius:3px}.signed-commit-header .octicon-verified{color:#6cc644}.signed-commit-header .octicon-unverified{color:#bbb}.signed-commit-signer{padding-right:12px;padding-left:12px;margin-top:12px;border-collapse:separate}.signed-commit-footer{padding:12px;font-size:12px;line-height:1.5}.signed-commit-cert-info{margin-bottom:6px}.signed-commit-cert-info td{vertical-align:top}.signed-commit-cert-info td:first-child{width:44px;padding-right:12px}.signed-commit-badge{display:inline-block;padding:1px 4px;font-size:10px;color:#767676;vertical-align:middle;background:none;border:solid 1px #e5e5e5;border-radius:2px}.signed-commit-badge:hover{text-decoration:none;border-color:#ccc}.signed-commit-badge:focus{outline:none}.signed-commit-badge.verified{color:#55a532}.signed-commit-badge.verified:hover{border-color:#6cc644}.signed-commit-badge-small{margin-top:-2px;margin-right:3px}.signed-commit-badge-medium{padding:3px 8px;font-size:12px;border-radius:3px}.signed-commit-badge-large{padding:6px 12px;margin-top:2px;margin-right:9px;font-size:13px;line-height:20px;border-radius:3px}.signed-commit-verified-label{color:#55a532;white-space:nowrap}.signed-commit-signer-name{font-size:14px;text-align:left}.signed-commit-signer-name .signer{display:block;font-weight:bold;color:#333}.table-of-contents{margin:15px 0}.table-of-contents li{padding:7px 0;list-style-type:none}.table-of-contents li+li{border-top:1px solid #eee}.table-of-contents li>.octicon{margin-right:3px}.table-of-contents .octicon-diff-removed{color:#bd2c00}.table-of-contents .octicon-diff-renamed{color:#677a85}.table-of-contents .octicon-diff-modified{color:#d0b44c}.table-of-contents .octicon-diff-added{color:#6cc644}.toc-select .select-menu-modal{width:420px}.toc-select .select-menu-item-heading{color:#333}.toc-select .select-menu-item-icon.octicon-diff-removed{color:#bd2c00}.toc-select .select-menu-item-icon.octicon-diff-renamed{color:#677a85}.toc-select .select-menu-item-icon.octicon-diff-modified{color:#d0b44c}.toc-select .select-menu-item-icon.octicon-diff-added{color:#6cc644}.toc-select .navigation-focus .select-menu-item-heading,.toc-select .navigation-focus .text-green,.toc-select .navigation-focus .text-red,.toc-select .navigation-focus .octicon-diff-removed,.toc-select .navigation-focus .octicon-diff-renamed,.toc-select .navigation-focus .octicon-diff-modified,.toc-select .navigation-focus .octicon-diff-added,.toc-select .navigation-focus .diffstat{color:#fff}.toc-select .description{max-width:320px}.toc-diff-stats{padding-left:20px;line-height:26px}.toc-diff-stats .octicon{float:left;margin-top:3px;margin-left:-20px;color:#ccc}.toc-diff-stats .btn-link{font-weight:bold}.toc-diff-stats+.content{padding-top:5px}.conversation-list-heading{height:0;margin:35px 0 10px;font-size:16px;font-weight:normal;color:#999;text-align:center;border-bottom:1px solid #ddd}.conversation-list-heading .inner{position:relative;top:-10px;display:inline-block;padding:0 5px;background:#fff}.simple-conversation-list{margin:15px 0;font-size:13px;color:#999}.simple-conversation-list>li{padding:11px 0 8px;margin:0;list-style-type:none;border-top:1px solid #eee}.simple-conversation-list>li:first-child{border-top:0}.simple-conversation-list>li .title{font-weight:bold}.simple-conversation-list>li .num{color:#999}.simple-conversation-list>li .state{padding-top:2px;padding-bottom:2px;margin-top:-3px;margin-right:3px}.simple-conversation-list>li .meta{float:right;margin-left:10px}.simple-conversation-list.varied-states>li{padding-left:90px}.simple-conversation-list.varied-states>li::before{display:table;content:""}.simple-conversation-list.varied-states>li::after{display:table;clear:both;content:""}.simple-conversation-list.varied-states>li .state{float:left;width:80px;margin-left:-90px}.copyable-terminal{position:relative;padding:10px 55px 10px 10px;background-color:#f7f7f7;border-radius:3px}.copyable-terminal-content{overflow:auto}.copyable-terminal-button{position:absolute;top:5px;right:5px}.copyable-terminal-button .zeroclipboard-button{float:right}.copyable-terminal-button .zeroclipboard-button .octicon{padding-left:1px;margin:0 auto}.date-selector{z-index:9;display:none;width:225px;text-align:left;text-decoration:none}.date-selector .month-nav,.date-selector .year-nav{position:relative;display:block;padding:0;margin-top:5px;margin-bottom:5px;line-height:20px;text-align:center}.date-selector .month-nav{float:left;width:55%}.date-selector .year-nav{float:right;width:35%}.date-selector .date-button{position:absolute;top:0;width:18px;height:18px;padding:4px;font-size:12px;line-height:12px;color:#4078c0;cursor:pointer}.date-selector .prev{left:0}.date-selector .next{right:0}.date-selector table{width:100%;clear:both}.date-selector tr{font-size:0}.date-selector th,.date-selector td{display:inline-block;width:32px;height:32px;padding:0;margin-top:-1px;margin-left:-1px;font-size:12px;font-weight:normal;line-height:28px;text-align:center}.date-selector td{color:#4078c0;cursor:default;background:#fff;border:1px solid #ccc}.date-selector td.today{background:#eee}.date-selector td.selected,.date-selector td.selectable-day:hover{position:relative;z-index:10;color:#fff;cursor:pointer;background:#4078c0;border-color:#33609a}.date-selector td.unselected-month{color:#ccc}.blob-wrapper{overflow-x:auto;overflow-y:hidden;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.diff-table{width:100%;border-collapse:separate}.diff-table .line-comments{padding:10px;vertical-align:top;border-top:1px solid #eee}.diff-table .line-comments:first-child+.empty-cell{border-left-width:1px}.diff-table tr:not(:last-child) .line-comments{border-top:1px solid #eee;border-bottom:1px solid #eee}.blob-num{width:1%;min-width:50px;padding-right:10px;padding-left:10px;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:12px;line-height:20px;color:rgba(0,0,0,0.3);text-align:right;white-space:nowrap;vertical-align:top;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:solid #eee;border-width:0 1px 0 0}.blob-num:hover{color:rgba(0,0,0,0.6)}.blob-num::before{content:attr(data-line-number)}.blob-num.non-expandable{cursor:default}.blob-num.non-expandable:hover{color:rgba(0,0,0,0.3)}.blob-code{position:relative;padding-right:10px;padding-left:10px;line-height:20px;vertical-align:top}.blob-code-inner{overflow:visible;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:12px;color:#333;word-wrap:normal;white-space:pre}.blob-code-inner .x-first{border-top-left-radius:0.2em;border-bottom-left-radius:0.2em}.blob-code-inner .x-last{border-top-right-radius:0.2em;border-bottom-right-radius:0.2em}.blob-code-inner::before{content:""}.soft-wrap .diff-table{table-layout:fixed}.soft-wrap .blob-code{padding-left:18px;text-indent:-7px}.soft-wrap .blob-code-inner{word-wrap:break-word;white-space:pre-wrap}.soft-wrap .no-nl-marker{display:none}.soft-wrap .add-line-comment{margin-left:-28px}.blob-num-hunk,.blob-code-hunk,.blob-num-expandable,.blob-code-expandable{color:rgba(0,0,0,0.3);vertical-align:middle;border-color:#d2dff0}.blob-num-hunk,.blob-num-expandable{background-color:#edf2f9}.blob-code-hunk,.blob-code-expandable{padding-top:4px;padding-bottom:4px;background-color:#f4f7fb;border-width:1px 0}.blob-expanded .blob-num,.blob-expanded .blob-code{background-color:#fafafa}.blob-expanded+tr:not(.blob-expanded) .blob-num,.blob-expanded+tr:not(.blob-expanded) .blob-code{border-top:1px solid #eee}.blob-expanded .blob-num-hunk{border-top:1px solid #eee}tr:not(.blob-expanded)+.blob-expanded .blob-num,tr:not(.blob-expanded)+.blob-expanded .blob-code{border-top:1px solid #eee}.blob-num-expandable{padding:0;font-size:12px;text-align:center}.blob-num-expandable .octicon{vertical-align:top}.blob-num-expandable .diff-expander{display:block;width:auto;height:auto;padding:4px 11px 4px 10px;margin-right:-1px;color:#767676;cursor:pointer}.blob-num-expandable .diff-expander:hover{color:#fff;text-shadow:none;background-color:#4078c0;border-color:#4078c0}.blob-code-addition{background-color:#eaffea}.blob-code-addition .x{color:#333;background-color:#a6f3a6}.blob-num-addition{background-color:#dbffdb;border-color:#c1e9c1}.blob-code-deletion{background-color:#ffecec}.blob-code-deletion .x{color:#333;background-color:#f8cbcb}.blob-num-deletion{background-color:#ffdddd;border-color:#f1c0c0}.selected-line.blob-code{background-color:#f8eec7}.selected-line.blob-code .x{background-color:transparent}.selected-line.blob-num{background-color:#f6e8b5;border-color:#f0db88}.add-line-comment{position:relative;z-index:5;float:left;width:22px;height:22px;margin:-2px -10px -2px -20px;line-height:21px;color:#fff;text-align:center;text-indent:0;cursor:pointer;background-color:#4078c0;background-image:-webkit-linear-gradient(#5386c6, #4078c0);background-image:linear-gradient(#5386c6, #4078c0);border-radius:3px;box-shadow:0 1px 4px rgba(0,0,0,0.15);opacity:0;-webkit-transition:-webkit-transform 0.1s ease-in-out;transition:transform 0.1s ease-in-out;-webkit-transform:scale(0.8, 0.8);transform:scale(0.8, 0.8)}.add-line-comment:hover{-webkit-transform:scale(1, 1);transform:scale(1, 1)}.is-hovered .add-line-comment,.add-line-comment:focus{opacity:1}.add-line-comment .octicon{vertical-align:text-top;pointer-events:none}.add-line-comment.octicon-check{background:#333;opacity:1}.inline-comment-form{border:1px solid #ddd;border-radius:3px}.inline-review-comment{margin-top:0 !important;margin-bottom:10px !important}.inline-review-comment .gc:first-child+tr .blob-num,.inline-review-comment .gc:first-child+tr .blob-code{padding-top:5px}.inline-review-comment tr:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.inline-review-comment tr:last-child .blob-num,.inline-review-comment tr:last-child .blob-code{padding-bottom:8px}.inline-review-comment tr:last-child .blob-num:first-child,.inline-review-comment tr:last-child .blob-code:first-child{border-bottom-left-radius:2px}.inline-review-comment tr:last-child .blob-num:last-child,.inline-review-comment tr:last-child .blob-code:last-child{border-bottom-right-radius:2px}.timeline-inline-comments{width:100%;table-layout:fixed}.timeline-inline-comments .inline-comments,.show-inline-notes .inline-comments{display:table-row}.inline-comments{display:none}.inline-comments.is-collapsed{display:none}.inline-comments .line-comments.is-collapsed{visibility:hidden}.inline-comments .line-comments+.blob-num{border-left-width:1px}.inline-comments .timeline-comment{margin-bottom:10px}.inline-comments .inline-comment-form,.inline-comments .inline-comment-form-container{max-width:780px}.comment-holder{max-width:780px}.line-comments+.line-comments,.empty-cell+.line-comments{border-left:1px solid #eee}.inline-comment-form-container .inline-comment-form,.inline-comment-form-container.open .inline-comment-form-actions{display:none}.inline-comment-form-container .inline-comment-form-actions,.inline-comment-form-container.open .inline-comment-form{display:block}body.split-diff .container,body.full-width .container{width:100%;padding-right:30px;padding-left:30px}body.split-diff .repository-content,body.full-width .repository-content{width:100%}body.split-diff .new-pr-form,body.full-width .new-pr-form{max-width:980px}body.split-diff .new-pr-form .discussion-sidebar,body.full-width .new-pr-form .discussion-sidebar{width:200px}.file-diff-split{table-layout:fixed}.file-diff-split .blob-code+.blob-num{border-left-width:1px}.file-diff-split .blob-code-inner{word-wrap:break-word;white-space:pre-wrap}.file-diff-split .empty-cell{cursor:default;background-color:#fafafa;border-right-color:#eee}.diffstat{font-size:12px;font-weight:600;color:#666;white-space:nowrap;cursor:default}.block-diff-deleted,.block-diff-added,.block-diff-neutral{display:inline-block;width:8px;height:8px;margin-left:1px}.block-diff-deleted,.text-red .block-diff-neutral{background-color:#bd2c00}.block-diff-added,.text-green .block-diff-neutral{background-color:#55a532}.block-diff-neutral{background-color:#ddd}.dropdown{position:relative}.dropdown.active .dropdown-menu-content{display:block;pointer-events:all}.dropdown-caret{display:inline-block;width:0;height:0;vertical-align:middle;content:"";border:4px solid;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.dropdown-menu{position:absolute;top:100%;left:0;z-index:100;width:160px;padding-top:5px;padding-bottom:5px;margin-top:2px;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:4px;box-shadow:0 3px 12px rgba(0,0,0,0.15)}.dropdown-menu::before,.dropdown-menu::after{position:absolute;display:inline-block;content:""}.dropdown-menu::before{border:8px solid transparent;border-bottom-color:rgba(0,0,0,0.15)}.dropdown-menu::after{border:7px solid transparent;border-bottom-color:#fff}.dropdown-menu-no-overflow{width:auto}.dropdown-menu-no-overflow .dropdown-item{padding:4px 15px;overflow:visible;text-overflow:inherit}.dropdown-item{display:block;padding:4px 10px 4px 15px;overflow:hidden;color:#333;text-overflow:ellipsis;white-space:nowrap}.dropdown-item:hover,.dropdown-item.zeroclipboard-is-hover{color:#fff;text-decoration:none;background-color:#4078c0}.dropdown-item:hover>.octicon,.dropdown-item.zeroclipboard-is-hover>.octicon{color:inherit;opacity:1}.dropdown-item.btn-link{width:100%;text-align:left}.dropdown-signout{width:100%;text-align:left;background:none;border:0}.dropdown-divider{height:1px;margin:8px 1px;background-color:#e5e5e5}.dropdown-header{padding:4px 15px;font-size:12px;color:#767676}.dropdown-menu-content{display:none}.dropdown-menu-content.anim-scale-in{position:relative;z-index:100;pointer-events:none}.dropdown-menu-w{right:100%;left:auto;width:auto;margin-top:0;margin-right:10px}.dropdown-menu-w::before{top:10px;right:-16px;left:auto;border-color:transparent;border-left-color:rgba(0,0,0,0.15)}.dropdown-menu-w::after{top:11px;right:-14px;left:auto;border-color:transparent;border-left-color:#fff}.dropdown-menu-e{left:100%;width:auto;margin-top:0;margin-left:10px}.dropdown-menu-e::before{top:10px;left:-16px;border-color:transparent;border-right-color:rgba(0,0,0,0.15)}.dropdown-menu-e::after{top:11px;left:-14px;border-color:transparent;border-right-color:#fff}.dropdown-menu-ne{top:auto;left:0}.dropdown-menu-ne::before,.dropdown-menu-ne::after{top:auto;right:auto}.dropdown-menu-ne::before{bottom:-8px;left:9px;border-top:8px solid rgba(0,0,0,0.15);border-right:8px solid transparent;border-bottom:0;border-left:8px solid transparent}.dropdown-menu-ne::after{bottom:-7px;left:10px;border-top:7px solid #fff;border-right:7px solid transparent;border-bottom:0;border-left:7px solid transparent}.dropdown-menu-s{right:50%;left:auto;-webkit-transform:translateX(50%);transform:translateX(50%)}.dropdown-menu-s::before{top:-16px;right:50%;-webkit-transform:translateX(50%);transform:translateX(50%)}.dropdown-menu-s::after{top:-14px;right:50%;-webkit-transform:translateX(50%);transform:translateX(50%)}.dropdown-menu-sw{right:0;left:auto}.dropdown-menu-sw::before{top:-16px;right:9px;left:auto}.dropdown-menu-sw::after{top:-14px;right:10px;left:auto}.dropdown-menu-se::before{top:-16px;left:9px}.dropdown-menu-se::after{top:-14px;left:10px}g-emoji{font-family:"Apple Color Emoji", "Segoe UI", "Segoe UI Emoji", "Segoe UI Symbol";font-size:18px;font-weight:normal;line-height:20px;vertical-align:middle}html.emoji-size-boost g-emoji{margin-right:3px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){html.emoji-size-boost g-emoji{margin-right:0;font-size:21px}}.emoji-icon{display:inline-block;width:20px;height:20px;vertical-align:middle;background-repeat:no-repeat;background-size:20px 20px}.emoji-result{display:inline-block;height:20px;font-size:18px;font-weight:normal;vertical-align:middle}.exploregrid{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-box-align:stretch;-webkit-align-items:stretch;align-items:stretch;list-style:none}.exploregrid-item-wrap{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}.exploregrid-item{-webkit-box-flex:1;-webkit-flex:1;flex:1;position:relative;display:block;height:100%;padding-top:24px;font-size:14px;color:#555;border:1px solid rgba(0,0,0,0.075);border-bottom-color:rgba(0,0,0,0.125);border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,0.05),0 5px 10px rgba(0,0,0,0.05);-webkit-transition:border-color 0.1s ease-in-out, box-shadow 0.1s ease-in-out;transition:border-color 0.1s ease-in-out, box-shadow 0.1s ease-in-out}.exploregrid-item:hover{text-decoration:none;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.15);box-shadow:0 1px 3px rgba(0,0,0,0.05),0 8px 15px rgba(0,0,0,0.1)}.exploregrid-item:hover .exploregrid-item-title{color:#4078c0}.exploregrid-item:hover .exploregrid-item-header{opacity:1}.exploregrid-item-mini{float:left;width:100%;height:auto;margin:0 0 15px}.exploregrid-item-mini .exploregrid-item-header{height:10px}.exploregrid-item-mini .exploregrid-item-title{font-size:16px}.exploregrid-item-header{position:absolute;top:0;left:0;width:100%;height:18px;background-color:#f5f5f5;border:1px solid rgba(0,0,0,0.1);border-top-left-radius:4px;border-top-right-radius:4px;opacity:0.8;-webkit-transition:opacity 0.1s ease-in-out;transition:opacity 0.1s ease-in-out}.exploregrid-item-title{margin-top:0;margin-bottom:5px;font-size:20px;font-weight:normal;line-height:1.2;color:#333}.exploregrid-item-meta{position:absolute;bottom:12px;display:block;color:#767676}.exploregrid-item-meta-details{margin-right:10px}.exploregrid-item-meta-details .octicon{width:16px;text-align:center}.facebox{position:absolute;top:0;left:0;z-index:100;padding-bottom:40px}.facebox ul{margin-bottom:15px;margin-left:25px}.facebox .facebox-staff-links{padding:10px 15px;margin:-15px -15px 15px;background-color:#f5f5f5;border-bottom:1px solid #e5e5e5}.facebox .facebox-staff-links li{display:inline-block;margin-right:10px;color:#767676;list-style:none}.facebox .facebox-staff-links a{font-weight:bold}.facebox pre{padding:10px;background-color:#eee;border:1px solid #ddd;border-radius:3px}.facebox .shortcuts{width:860px}.facebox .facebox-user-list{max-height:400px;margin-bottom:0;margin-left:0;overflow:auto}.facebox .lineprofiler{width:900px}.facebox .lineprofiler pre{overflow-x:scroll;word-wrap:normal;white-space:pre}.facebox .allocation-trace-facebox{width:900px;padding-right:0;padding-left:0;overflow-x:scroll}.facebox-popup{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.25);border-radius:5px;box-shadow:0 0 18px rgba(0,0,0,0.4)}.facebox-content{width:455px;padding:15px}.facebox-content::before{display:table;content:""}.facebox-content::after{display:table;clear:both;content:""}.facebox-close{position:absolute;top:8px;right:5px;padding:10px;cursor:pointer;background-color:transparent;border:0;opacity:0.25;-webkit-appearance:none;-moz-appearance:none;appearance:none}.facebox-close:hover{opacity:1}.facebox-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.facebox-overlay-hide{z-index:-100}.facebox-overlay-active{z-index:99;background-color:#000}.facebox-loading{min-height:64px;background-image:url("/images/spinners/octocat-spinner-64.gif");background-repeat:no-repeat;background-position:center center}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.facebox-loading{background-image:url("/images/spinners/octocat-spinner-128.gif");background-size:64px 64px}}.facebox-header{padding:15px;margin:-15px -15px 15px;font-size:18px;font-weight:normal;border-bottom:1px solid #e5e5e5}.facebox-header:focus{outline:none}.facebox-footer{padding:10px 15px;margin:0 -15px -15px;text-align:right;background:#fafafa;border-top:1px solid #e5e5e5;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.facebox-footer .help{margin:0;color:#767676;text-align:center}.facebox-alert,.facebox-danger{padding:10px 15px;margin:-16px -15px 15px;border-style:solid;border-width:1px 0}.facebox-alert{color:#796620;background-color:#f8eec7;border-color:#f2e09a}.facebox-danger{padding-left:40px;color:#9c342e;background-color:#f7d9d7;border-color:#f2c4c2}.facebox-danger .octicon{float:left;margin-left:-25px}.facebox-separator{margin:20px -15px}.facebox-staff-search .hfields{margin-top:0;margin-bottom:0}.facebox-staff-search .hfields .form-control{width:340px;margin-right:0}.facebox-staff-search .hfields .btn{margin-top:29px;margin-right:0}.facebox-staff-search .status-check-list{float:none;margin:15px 0 0}.keyboard-shortcuts{float:right}.keyboard-shortcuts .mini-icon{position:relative;top:2px;margin-left:5px}.keyboard-mappings{font-size:12px;color:#555}.keyboard-mappings th{padding-top:25px;font-size:14px;line-height:1.5;color:#333;text-align:left}.keyboard-mappings tbody:first-child tr:first-child th{padding-top:0}.keyboard-mappings td{padding-top:3px;padding-bottom:3px;line-height:20px;vertical-align:top}.keyboard-mappings .keys{padding-right:10px;color:#767676;text-align:right;white-space:nowrap}.keyboard-mappings .platform-mac{display:none}.macintosh .keyboard-mappings .platform-mac{display:inline}.macintosh .keyboard-mappings .platform-other{display:none}.facebox-user-list-item{padding:3px 0;font-weight:bold;vertical-align:middle;list-style:none}.facebox-user-list-item a{color:#000}.facebox-user-list-item img{margin-right:5px;vertical-align:middle;border-radius:3px}.linejump .linejump-input{width:340px;background-color:#fafafa}.linejump .linejump-input,.linejump .btn{padding:10px 15px;font-size:16px}.linejump+.facebox-close{top:18px}.repo-transfer-tip{margin-bottom:0}.feed-icon{display:block;width:18px;height:18px;color:#fff;text-align:center;background:#f37538;border-radius:3px}.flash-banner{position:fixed;top:0;z-index:42;width:100%;border-top:0;border-right:0;border-left:0;border-radius:0}.signed-in-tab-flash,.signed-out-tab-flash{display:none}.stale-session-flash.is-signed-in .signed-in-tab-flash{display:inline}.stale-session-flash.is-signed-out .signed-out-tab-flash{display:inline}.org-privileges-tour-dismiss{padding:4px 8px;margin:-3px 0 0 10px;color:#767676}.site-footer{position:relative;padding-top:40px;padding-bottom:40px;margin-top:40px;font-size:12px;line-height:1.5;color:#767676;border-top:1px solid #eee}.site-footer::before{display:table;content:""}.site-footer::after{display:table;clear:both;content:""}.site-footer .octicon-mark-github{position:absolute;top:38px;left:50%;margin-left:-12px;font-size:24px;color:#ccc}.site-footer .octicon-mark-github:hover{color:#bbb}.no-footer .site-footer-container{display:none}.site-footer-seamless .site-footer{margin-top:0;border-top:0}.site-footer-links{margin:0;list-style:none}.site-footer-links li{display:inline-block;line-height:16px}.site-footer-links li+li{margin-left:10px}.gollum-editor{padding:10px 0 0;margin:10px 0 50px;border:0}.gollum-editor .comment-form-head.tabnav{border:1px solid #ddd}.gollum-editor .gollum-editor-body{height:390px;margin:13px 0 5px;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;line-height:22px;resize:vertical}.gollum-editor .gollum-editor-body+.collapsed,.gollum-editor .gollum-editor-body+.expanded{margin-top:7px;border-top:1px solid #ddd}.gollum-editor .collapsed,.gollum-editor .expanded{display:block;padding:10px 0 5px;overflow:hidden;border-bottom:1px solid #ddd}.gollum-editor .collapsed a.button,.gollum-editor .expanded a.button{display:block;float:left;width:25px;height:25px;padding:0;margin:2px 5px 7px 0;overflow:hidden;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);border:1px solid #ddd;border-radius:3px}.gollum-editor .collapsed a.button:hover,.gollum-editor .expanded a.button:hover{color:#fff;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,0.3);background-image:-webkit-linear-gradient(#599bdc, #3072b3);background-image:linear-gradient(#599bdc, #3072b3)}.gollum-editor .collapsed a.button span,.gollum-editor .expanded a.button span{margin:4px}.gollum-editor .collapsed h4,.gollum-editor .expanded h4{float:left;padding:6px 0 0 4px;margin:0;font-size:16px;text-shadow:0 -1px 0 #fff}.gollum-editor .collapsed a.button span.octicon-triangle-right{display:inline-block}.gollum-editor .collapsed textarea,.gollum-editor .collapsed a.button span.octicon-triangle-down{display:none}.gollum-editor .expanded a.button span.octicon-triangle-down{display:inline-block}.gollum-editor .expanded a.button span.octicon-triangle-right{display:none}.gollum-editor .expanded textarea{display:block;width:883px;height:84px;padding:6px;margin:8px 0;clear:both;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:12px;resize:vertical;border:1px solid #ddd}.gollum-editor a.gollum-minibutton,.gollum-editor a.gollum-minibutton:visited{display:block;padding:5px 12px;margin:0 0 0 9px;font-size:12px;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;cursor:pointer;background-image:-webkit-linear-gradient();background-image:linear-gradient();border:1px solid #d4d4d4;border-radius:3px}.gollum-editor a.gollum-minibutton:hover,.gollum-editor a.gollum-minibutton:visited:hover{color:#fff;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,0.3);background-image:-webkit-linear-gradient(#599bdc, #3072b3);background-image:linear-gradient(#599bdc, #3072b3);border-color:#518cc6 #518cc6 #2a65a0}.singleline{display:block;margin:20px 0}.singleline label{display:block;margin-bottom:6px}.gollum-editor-title-field{margin:0 0 10px;border-bottom:0}.gollum-editor-page-title{margin-top:0;font-weight:bold}.gollum-editor-page-title.ph{color:#000}.gollum-editor-function-bar{padding-bottom:10px;margin:10px 0;border:0;border-bottom:1px solid #ddd}.gollum-editor-function-bar .gollum-editor-function-buttons{display:none;float:left}.gollum-editor-function-bar.active .gollum-editor-function-buttons{display:block}.gollum-editor-function-bar .gollum-editor-format-selector{float:left;margin-left:20px}.gollum-editor-function-bar .gollum-editor-format-selector select{margin:0}.gollum-editor-function-bar .gollum-editor-format-selector label{padding:0 5px 0 0;font-size:11px;font-weight:bold;line-height:17px;color:#767676}.gollum-editor-function-buttons .btn-sm{width:30px;padding-right:0;padding-left:0;text-align:center}.gollum-editor-function-buttons .btn-sm .octicon{margin-right:0}.gollum-error-message{display:none;padding-top:12px;font-size:1.8em;color:#f33}.gollum-editor-help{padding:0;overflow:hidden;border:1px solid #ddd;border-radius:3px}.gollum-editor-help-parent,.gollum-editor-help-list{display:block;float:left;width:160px;height:170px;padding:10px 0;margin:0;overflow:auto;list-style-type:none;border-right:1px solid #eee}.gollum-editor-help-parent li,.gollum-editor-help-list li{padding:0;margin:0;font-size:12px;line-height:1.6}.gollum-editor-help-parent li a,.gollum-editor-help-list li a{display:block;padding:2px 12px;font-weight:bold;text-shadow:0 -1px 0 #fff;border:1px solid transparent;border-width:1px 0}.gollum-editor-help-parent li a:hover,.gollum-editor-help-list li a:hover{text-decoration:none;background:#fff;border-color:#f0f0f0;box-shadow:none}.gollum-editor-help-parent li a.selected,.gollum-editor-help-list li a.selected{color:#000;background:#fff;border:1px solid #eee;border-width:1px 0;border-bottom-color:#e7e7e7;box-shadow:0 1px 2px #f0f0f0}.gollum-editor-help-list{background:#fafafa}.gollum-editor-help-wrapper{height:170px;padding:10px;overflow:auto;background:#fff}.gollum-editor-help-content{padding:0;margin:0 10px 0 5px;font-size:12px;line-height:1.8}.gollum-editor-help-content p{padding:0;margin:0 0 10px}.ie .gollum-editor .singleline input{padding-top:0.25em;padding-bottom:0.75em}.gollum-footer{font-size:12px;line-height:19px}.gollum-dialog-dialog h4{padding:0 0 6px;margin:0 0 12px;font-size:16px;font-weight:bold;line-height:normal;color:#333;text-shadow:0 -1px 0 #f7f7f7;border-bottom:1px solid #ddd}.gollum-dialog-dialog-body{padding:0;margin:0;font-size:12px;line-height:16px}.gollum-dialog-dialog-body fieldset{display:block;padding:0 12px;margin:0;overflow:hidden;border:0}.gollum-dialog-dialog-body fieldset .field{padding:0;margin:0 0 18px}.gollum-dialog-dialog-body fieldset .field:last-child{margin:0 0 12px}.gollum-dialog-dialog-body fieldset label{display:block;min-width:80px;padding:0;margin:0;font-size:14px;font-weight:bold;line-height:1.6;color:#666}.gollum-dialog-dialog-body fieldset .form-control{display:block;width:100%;margin:3px 0 0}.gollum-dialog-dialog-body fieldset .code{font-family:Monaco, "Courier New", Courier, monospace}.gollum-dialog-dialog-buttons{padding:12px 0 0;margin:14px 0 0;overflow:hidden;border-top:1px solid #ddd}a.gollum-minibutton,a.gollum-minibutton:visited{float:right;width:auto;padding:4px 12px;margin:0 0 0 9px;font-size:12px;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;cursor:pointer;background-image:-webkit-linear-gradient();background-image:linear-gradient();border:1px solid #d4d4d4;border-radius:3px}a.gollum-minibutton:hover,a.gollum-minibutton:visited:hover{color:#fff;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,0.3);background-image:-webkit-linear-gradient(#599bdc, #3072b3);background-image:linear-gradient(#599bdc, #3072b3);border-color:#518cc6 #518cc6 #2a65a0}.wiki-wrapper .ie .gollum-editor{padding-bottom:1em}.wiki-wrapper .wiki-content .previewable-comment-form.write-selected .write-content,.wiki-wrapper .wiki-content .previewable-comment-form.preview-selected .preview-content{padding:0;margin:0}.wiki-wrapper .wiki-content .comment-body{padding:5px 0 20px}.wiki-wrapper hr{margin:25px 0 20px}.wiki-wrapper.comment-body{width:920px}include-fragment,poll-include-fragment{display:block}.input-group{display:table}.input-group .form-control{position:relative;width:100%}.input-group .form-control:focus{z-index:2}.input-group .form-control+.btn{margin-left:0}.input-group.inline{display:inline-table}.input-group .form-control,.input-group-button{display:table-cell}.input-group-button{width:1%;vertical-align:middle}.input-group .form-control:first-child,.input-group-button:first-child .btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-button:first-child .btn{margin-right:-1px}.input-group .form-control:last-child,.input-group-button:last-child .btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-button:last-child .btn{margin-left:-1px}.issue-list em{padding:3px;font-style:normal;font-weight:bold;background-color:rgba(255,255,140,0.5);border-radius:3px}.issue-list .title{min-height:24px;padding:0;margin:0 80px 10px 0;font-size:18px;font-weight:normal;line-height:24px;word-wrap:break-word}.issue-list .title .octicon{position:absolute;top:-4px;left:0;color:#888}.issue-list .title .closed.octicon{color:#bd2c00}.issue-list .title .open.octicon{color:#6cc644}.issue-list .title .merged.octicon{color:#6e5494}.issue-list .description{margin:0 0 10px;overflow:hidden;line-height:20px}.issue-list-meta{margin:0;list-style-type:none}.issue-list-meta::before{display:table;content:""}.issue-list-meta::after{display:table;clear:both;content:""}.issue-list-meta>li{display:inline-block;margin-right:10px}.issue-list-meta a{color:#333}.issue-list-meta .octicon{color:#888;vertical-align:bottom}.issue-list-item{position:relative;padding:0 0 20px 40px;margin:0 0 20px;border-bottom:1px solid #f1f1f1}.jcrop-holder{text-align:left;direction:ltr;touch-action:none}.jcrop-vline,.jcrop-hline{position:absolute;font-size:0;background:#fff url("/images/spinners/Jcrop.gif")}.jcrop-vline{width:1px !important;height:100%}.jcrop-vline.right{right:0}.jcrop-hline{width:100%;height:1px !important}.jcrop-hline.bottom{bottom:0}.jcrop-tracker{width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.jcrop-handle{width:7px;height:7px;font-size:1px;background-color:#333;border:1px #eee solid}.jcrop-handle.ord-n{top:0;left:50%;margin-top:-4px;margin-left:-4px}.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px}.jcrop-handle.ord-e{top:50%;right:0;margin-top:-4px;margin-right:-4px}.jcrop-handle.ord-w{top:50%;left:0;margin-top:-4px;margin-left:-4px}.jcrop-handle.ord-nw{top:0;left:0;margin-top:-4px;margin-left:-4px}.jcrop-handle.ord-ne{top:0;right:0;margin-top:-4px;margin-right:-4px}.jcrop-handle.ord-se{right:0;bottom:0;margin-right:-4px;margin-bottom:-4px}.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px}.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{width:100%;height:7px}.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{width:7px;height:100%}.jcrop-dragbar.ord-n{margin-top:-4px}.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px}.jcrop-dragbar.ord-e{right:0;margin-right:-4px}.jcrop-dragbar.ord-w{margin-left:-4px}.jcrop-light .jcrop-vline,.jcrop-light .jcrop-hline{background:#fff;opacity:0.7 !important}.jcrop-light .jcrop-handle{background-color:#000;border-color:#fff;border-radius:3px}.jcrop-dark .jcrop-vline,.jcrop-dark .jcrop-hline{background:#000;opacity:0.7 !important}.jcrop-dark .jcrop-handle{background-color:#fff;border-color:#000;border-radius:3px}.jcrop-holder img,img.jcrop-preview{max-width:none}kbd{display:inline-block;padding:3px 5px;font:11px Consolas, "Liberation Mono", Menlo, Courier, monospace;line-height:10px;color:#555;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #ccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb}.badmono{font-family:sans-serif;font-weight:bold}.labels{position:relative}.label{display:inline-block;padding:3px 4px;font-size:12px;font-weight:600;line-height:1;color:#fff;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.12)}.label:hover{text-decoration:none}.label-admin{color:#666;background-color:#eee}.label-generic{margin-top:-1px;margin-bottom:-1px;font-weight:normal;color:#767676;background-color:transparent;border:1px solid #eee;box-shadow:none}.label-recommended{color:#60b044;border:1px solid #60b044}.label-neutral{background-color:#767676}.label-private{font-weight:normal;color:#4c4a42;background-color:#ffefc6}a.label-link{border:1px solid transparent}a.label-link:hover{text-decoration:none}.label-membership-pending{background-color:#c9510c}.label-active{background-color:#6cc644}.repository-lang-stats{position:relative}.repository-lang-stats ol.repository-lang-stats-numbers li{display:table-cell;width:1%;padding:10px 5px;text-align:center;white-space:nowrap;border-bottom:0}.repository-lang-stats ol.repository-lang-stats-numbers li span.percent{float:none}.repository-lang-stats ol.repository-lang-stats-numbers li>a,.repository-lang-stats ol.repository-lang-stats-numbers li>span{font-weight:bold;color:#999;text-decoration:none}.repository-lang-stats ol.repository-lang-stats-numbers li .lang{color:#333}.repository-lang-stats ol.repository-lang-stats-numbers li .language-color{display:inline-block;width:10px;height:10px;border-radius:50%}.repository-lang-stats ol.repository-lang-stats-numbers li a:hover{background:transparent}.stats-switcher-viewport{height:41px;overflow:hidden}.stats-switcher-viewport .stats-switcher-wrapper{position:relative;top:0;-webkit-transition:top 0.25s ease-in-out;transition:top 0.25s ease-in-out}.stats-switcher-viewport.is-revealing-lang-stats .stats-switcher-wrapper{top:-41px}.stats-switcher-viewport.is-revealing-overview .stats-switcher-wrapper{top:41px}.repository-lang-stats-graph{display:table;width:100%;overflow:hidden;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid #ddd;border-top:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.repository-lang-stats-graph .language-color{display:table-cell;line-height:8px;text-indent:-9999px}.repository-lang-stats-graph .language-color:first-child{border-bottom-left-radius:2px}.repository-lang-stats-graph .language-color:last-child{border-bottom-right-radius:2px}body{min-width:1020px;word-wrap:break-word}.page-content{padding-top:20px}.container-sm{width:530px}.list-group-item{position:relative;display:block;padding:8px 10px 10px 40px;margin-bottom:-1px;border:1px solid #e5e5e5}.list-group-item::before{display:table;content:""}.list-group-item::after{display:table;clear:both;content:""}.list-group-item a:hover{text-decoration:none}.list-group-item:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.list-group-item.closed{background-color:#fcfcfc}.list-group-item.selectable{padding-left:60px}.list-group-item.selected{background-color:#ffffef}.list-group-item.navigation-focus{background-color:#f5f9fc}.list-group-item .list-group-item-summary a{color:#767676}.list-group-item .list-group-item-summary a.quiet{color:#999}.list-group-item .status{position:relative;top:2px;float:right;margin-right:-9px}.list-group-item .type-icon{position:relative;top:1px;width:16px;text-align:center;vertical-align:middle}.list-group-item .assignee{float:right}.list-group-item .assignee img{display:block;border-radius:2px}.list-group-item .labels{top:-2px;display:inline-block;margin-bottom:-2px;margin-left:4px}.list-group-item-name{margin:0 60px 2px 0;font-size:15px;line-height:1.3;word-wrap:break-word}.list-group-item-name .type-icon{float:left;margin-top:1px;margin-left:-24px}.list-group-item-link{color:#333}.closed.octicon,.reverted.octicon{color:#bd2c00}.open.octicon{color:#6cc644}.merged.octicon{color:#6e5494}.list-group-item-summary{margin-top:2px}.list-group-item-summary p{margin:0 0 5px}.standalone .list-group-item-summary p{margin-bottom:0}.animated-ellipsis-container{display:inline-block;width:12px;height:12px;overflow:hidden;-webkit-transform:translateZ(0);transform:translateZ(0)}.animated-ellipsis-container>.animated-ellipsis{display:inline-block;overflow:hidden;vertical-align:bottom;-webkit-animation:ellipsis 1s infinite;animation:ellipsis 1s infinite}@-webkit-keyframes ellipsis{from{width:2px}to{width:12px}}@keyframes ellipsis{from{width:2px}to{width:12px}}.large-loading-area{padding:100px 0;text-align:center}.user-mention,.team-mention{font-weight:600;color:#333;white-space:nowrap}.news .account-switcher{margin-bottom:20px}.news .release{margin-top:0;margin-bottom:0}.news blockquote{color:#666}.news h1{margin-bottom:0}.news .alert{position:relative;padding:0 0 1em 45px;overflow:hidden;border-top:1px solid #f1f1f1}.news .alert .commits{padding-left:40px}.news .alert .css-truncate.css-truncate-target,.news .alert .css-truncate .css-truncate-target{max-width:180px}.news .alert p{margin:0}.news .alert .markdown-body blockquote{padding:0 0 0 40px;border:0 none}.news .alert .octicon{color:#bbb}.news .alert .dashboard-event-icon{position:absolute;top:18px;left:22px;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.news .alert .body{padding:1em 0 0;overflow:hidden;font-size:14px;border-bottom:0}.news .alert .time{font-size:12px;color:#bbb}.news .alert .title{padding:0;font-weight:600}.news .alert .title .subtle{color:#bbb}.news .alert .gravatar{float:left;margin-right:0.6em;line-height:0;background-color:#fff;border-radius:3px}.news .alert .simple .title{display:inline-block;font-size:13px;font-weight:normal;color:#666}.news .alert .simple .time{display:inline-block}.news .alert .branch-link,.news .alert .pull-info{display:inline-block;padding:3px 7px;margin-top:5px;font-size:12px;color:rgba(0,0,0,0.5);background:#e8f1f6;border-radius:3px}.news .alert .branch-link em,.news .alert .pull-info em{font-style:normal;font-weight:bold}.news .alert .branch-link{position:relative;top:-2px;margin:0;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;color:#4183c4}.news .alert .branch-link .octicon{display:none}.news .alert:first-child{border-top:0}.news .alert:first-child .body{padding-top:0}.news .alert:first-child .dashboard-event-icon{top:0}.news .github-welcome .done{color:#666;text-decoration:line-through}.news .commits li{margin-top:0.15em;list-style-type:none}.news .commits li.more{padding-top:2px;font-size:11px}.news .commits li .committer{display:none;padding-left:0.5em}.news .commits li img{margin:0 1px 0 0;vertical-align:middle;background-color:#fff;border-radius:2px}.news .commits li img.emoji{padding:0;margin:0;border:0}.news .commits li .message{display:inline-block;max-width:390px;margin-top:2px;overflow:hidden;font-size:13px;line-height:1.3;text-overflow:ellipsis;white-space:nowrap;vertical-align:top}.news div.message,.news li blockquote{display:inline;font-size:13px;color:#666}.outline-box-group{border-radius:3px}.outline-box{padding:20px;border:solid 1px #d8d8d8}.outline-box:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.outline-box:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.outline-box+.outline-box{border-top:0}.outline-box-highlighted{background-color:#f7fafd;border-color:#c9d6e3}.owner-select-grid{margin-left:-8px}.owner-select-grid::before{display:table;content:""}.owner-select-grid::after{display:table;clear:both;content:""}.owner-select-target{float:left;padding:10px;margin:0 10px 20px;font-weight:bold;text-align:center;cursor:pointer;background-color:#f2f2f2;border:0;border-radius:3px}.owner-select-target:hover,.owner-select-target:focus{color:#fff;background-color:#4078c0}.owner-select-target:active{color:#fff;background-color:#33609a}.owner-select-target .css-truncate-target{max-width:90px}.owner-select-target.disabled{color:#999;cursor:not-allowed}.owner-select-target.disabled .user-mention{color:#999}.owner-select-target.disabled .owner-select-avatar{opacity:0.3}.owner-select-avatar{display:block;margin-bottom:9px}.pagehead{position:relative;padding-top:20px;padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid #eee}.pagehead.admin{background:url("/images/modules/pagehead/background-yellowhatch-v3.png") 0 0 repeat-x}.pagehead ul.pagehead-actions{position:relative;z-index:31;float:right;margin:0}.pagehead .path-divider{margin:0 0.25em}.pagehead h1{margin-top:0;margin-bottom:0;font-size:20px;font-weight:normal;line-height:28px}.pagehead h1 .avatar{margin-top:-2px;margin-right:9px;margin-bottom:-2px}.pagehead .account-switcher{margin-top:-3px;margin-bottom:-3px}.pagehead .underline-nav{height:69px;margin-top:-20px;margin-bottom:-20px}.pagehead-heading{color:inherit}.pagehead-actions>li{float:left;margin:0 10px 0 0;font-size:11px;color:#333;list-style-type:none}.pagehead-actions>li:last-child{margin-right:0}.pagehead-actions .octicon-mute{color:#c00}.pagehead-actions .select-menu{position:relative}.pagehead-actions .select-menu::before{display:table;content:""}.pagehead-actions .select-menu::after{display:table;clear:both;content:""}.pagehead-actions .select-menu-modal-holder{top:100%}.pagehead-tabs-item{float:left;padding:8px 15px 11px;color:#666;white-space:nowrap;border:solid transparent;border-width:3px 1px 1px;border-radius:3px 3px 0 0}.pagehead-tabs-item .octicon{color:#bbb;vertical-align:text-top}.pagehead-tabs-item .counter{color:#777}.pagehead-tabs-item:hover{color:#333;text-decoration:none}.pagehead-tabs-item.selected{font-weight:bold;color:#333;background-color:#fff;border-color:#d26911 #e5e5e5 transparent}.pagehead-tabs-item.selected>.octicon{color:inherit}.repohead.experiment-repo-nav{padding-bottom:0;background-color:#fafafa}.repohead .repohead-details-container{margin-bottom:20px}.repohead.mirror h1,.repohead.fork h1{height:auto;margin-top:-5px;margin-bottom:15px}.repohead h1{position:relative;float:left;max-width:635px;padding-left:18px;font-size:18px;line-height:26px;color:#666}.repohead h1.private .octicon{color:#e9dba5}.repohead h1 .octicon{position:absolute;top:0;left:0;margin-top:5px;color:#bbb}.repohead .octicon-mirror{left:-3px}.repohead .octicon-lock{top:10px}.repohead span.fork-flag,.repohead span.mirror-flag{display:block;font-size:11px;line-height:10px;white-space:nowrap}.reponav{position:relative;top:1px;margin-top:-5px}.reponav::before{display:table;content:""}.reponav::after{display:table;clear:both;content:""}.reponav-dropdown{position:relative;float:left}.reponav-dropdown.active .dropdown-menu-content{display:block}.reponav-dropdown.active .dropdown-menu{left:15px}.reponav-item{float:left;padding:7px 15px 8px;color:#666;white-space:nowrap;border:solid transparent;border-width:3px 1px 1px;border-radius:3px 3px 0 0}.reponav-item .octicon{color:#bbb}.reponav-item .counter{color:#555}.reponav-item:hover,.reponav-item:focus{color:#333;text-decoration:none}.reponav-item.selected{color:#111;background-color:#fff;border-color:#d26911 #e5e5e5 transparent}.reponav-item.selected>.octicon{color:inherit}.pagination::before{display:table;content:""}.pagination::after{display:table;clear:both;content:""}.pagination a,.pagination span,.pagination em{position:relative;float:left;padding:7px 12px;margin-left:-1px;font-size:13px;font-style:normal;font-weight:600;color:#4078c0;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:#fff;border:1px solid #e5e5e5}.pagination a:first-child,.pagination span:first-child,.pagination em:first-child{margin-left:0;border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination a:last-child,.pagination span:last-child,.pagination em:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.pagination a:hover,.pagination a:focus,.pagination span:hover,.pagination span:focus,.pagination em:hover,.pagination em:focus{z-index:2;text-decoration:none;background-color:#e7e7e7;border-color:#e5e5e5}.pagination .selected{z-index:3}.pagination .current,.pagination .current:hover{z-index:3;color:#fff;background-color:#4078c0;border-color:#4078c0}.pagination .gap,.pagination .disabled,.pagination .gap:hover,.pagination .disabled:hover{color:#d3d3d3;cursor:default;background-color:#fafafa}.ajax-pagination-form .ajax-pagination-btn{width:100%;padding:6px;margin-top:20px;font-weight:bold;color:#4078c0;background:#fff;border:1px solid #e5e5e5;border-radius:3px}.ajax-pagination-form .ajax-pagination-btn:hover,.ajax-pagination-form .ajax-pagination-btn:focus{background-color:#f5f5f5}.ajax-pagination-form.loading .ajax-pagination-btn{text-indent:-3000px;background-color:#f5f5f5;background-image:url("/images/spinners/octocat-spinner-16px-EAF2F5.gif");background-repeat:no-repeat;background-position:center center;border-color:#c5c5c5}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.ajax-pagination-form.loading .ajax-pagination-btn{background-image:url("/images/spinners/octocat-spinner-32-EAF2F5.gif");background-size:16px auto}}.paginate-container{margin-top:20px;margin-bottom:15px;text-align:center}.paginate-container .pagination{display:inline-block}.progress-bar{display:block;height:15px;overflow:hidden;background-color:#eee;border-radius:3px}.progress-bar .progress{display:block;height:100%;background-color:#6cc644}.reverse-progress-container{position:relative;height:3px;background-color:#e5e9eb;background-image:-webkit-linear-gradient(left, #599e47, #306a94, #492860, #c03d32, #d17337);background-image:linear-gradient(to right, #599e47, #306a94, #492860, #c03d32, #d17337);background-size:100% 3px}.reverse-progress-bar{position:absolute;right:0;height:100%;background-color:#e5e9eb}.progress-bar-small{height:10px}.progress-bar-inline .progress-bar{width:100%;border-color:#e5e5e5;border-style:solid;border-width:1px;border-top:0;border-radius:0}.steps{display:table;width:100%;padding:0;margin:30px auto 0;overflow:hidden;list-style:none;border:1px solid #ddd;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.05)}.steps li{display:table-cell;width:33.3%;padding:10px 15px;color:#ccc;cursor:default;background-color:#fafafa;border-left:1px solid #ddd}.steps li.current{color:#333;background-color:#fff}.steps li.current .octicon{color:#4078c0}.steps li .octicon{float:left;margin-right:15px;margin-bottom:5px}.steps li .step{display:block}.steps li:first-child{border-left:0}.steps .complete{color:#767676}.steps .complete .octicon{color:#6cc644}.prose-diff .anchor{display:none}.prose-diff .show-rich-diff{color:#4183c4;text-decoration:none;cursor:pointer}.prose-diff .show-rich-diff:hover{text-decoration:underline}.prose-diff.collapsed .rich-diff-level-zero.expandable{cursor:pointer}.prose-diff.collapsed .rich-diff-level-zero.expandable .vicinity{display:block}.prose-diff.collapsed .rich-diff-level-zero.expandable .unchanged:not(.vicinity){display:none}.prose-diff.collapsed .rich-diff-level-zero.expandable .octicon{display:block;margin:20px auto;color:#d3d3d3}.prose-diff.collapsed .rich-diff-level-zero.expandable:hover .octicon{color:#000}.prose-diff.collapsed .rich-diff-level-zero.expandable:only-child::before{font-size:18px;color:#d3d3d3;content:"Sorry, no visible changes to display."}.prose-diff.collapsed .rich-diff-level-zero.expandable:only-child:hover::before{color:#000}.prose-diff.collapsed .rich-diff-level-zero.expandable>.removed,.prose-diff.collapsed .rich-diff-level-zero.expandable>del{display:none;text-decoration:none}.prose-diff .markdown-body{padding:30px;padding-left:15px}.prose-diff .markdown-body>ins{box-shadow:inset 4px 0 0 #7fcb5c}.prose-diff .markdown-body>del{text-decoration:none;box-shadow:inset 4px 0 0 #c94114}.prose-diff .markdown-body>ins,.prose-diff .markdown-body>del{display:block;border-radius:0}.prose-diff .markdown-body>ins>.rich-diff-level-zero,.prose-diff .markdown-body>ins>.rich-diff-level-one,.prose-diff .markdown-body>del>.rich-diff-level-zero,.prose-diff .markdown-body>del>.rich-diff-level-one{margin-left:15px}.prose-diff .markdown-body>ins:first-child *,.prose-diff .markdown-body>del:first-child *{margin-top:0}.prose-diff .rich-diff-level-zero.added{box-shadow:inset 4px 0 0 #7fcb5c}.prose-diff .rich-diff-level-zero.removed{box-shadow:inset 4px 0 0 #c94114}.prose-diff .rich-diff-level-zero.changed{box-shadow:inset 4px 0 0 #ffc045}.prose-diff .rich-diff-level-zero.unchanged,.prose-diff .rich-diff-level-zero.vicinity{margin-left:15px}.prose-diff .rich-diff-level-zero.added,.prose-diff .rich-diff-level-zero.removed,.prose-diff .rich-diff-level-zero.changed{display:block;border-radius:0}.prose-diff .rich-diff-level-zero.added>.rich-diff-level-one,.prose-diff .rich-diff-level-zero.removed>.rich-diff-level-one,.prose-diff .rich-diff-level-zero.changed>.rich-diff-level-one{margin-left:15px}.prose-diff .rich-diff-level-zero.added:first-child *,.prose-diff .rich-diff-level-zero.removed:first-child *,.prose-diff .rich-diff-level-zero.changed:first-child *{margin-top:0}.prose-diff :not(.changed)>:not(.github-user-ins):not(.github-user-del)>.removed,.prose-diff :not(.changed)>:not(.github-user-ins):not(.github-user-del)>del{text-decoration:none}.prose-diff .changed del,.prose-diff .changed del pre,.prose-diff .changed del code,.prose-diff .changed del>div,.prose-diff .changed .removed,.prose-diff .changed .removed pre,.prose-diff .changed .removed code,.prose-diff .changed .removed>div{color:#a33;text-decoration:line-through;background:#ffeaea}.prose-diff .changed ins,.prose-diff .changed ins code,.prose-diff .changed ins pre,.prose-diff .changed .added{background:#eaffea;border-bottom:1px solid #3cb371}.prose-diff>.markdown-body .github-user-ins{text-decoration:underline}.prose-diff>.markdown-body .github-user-del{text-decoration:line-through}.prose-diff>.markdown-body li ul.added{background:#eaffea}.prose-diff>.markdown-body li ul.removed{color:#a33;background:#ffeaea}.prose-diff>.markdown-body li ul.removed:not(.github-user-ins){text-decoration:line-through}.prose-diff>.markdown-body li.added.moved-up .octicon,.prose-diff>.markdown-body li.added.moved-down .octicon{margin-right:5px;margin-left:5px;color:#d3d3d3}.prose-diff>.markdown-body li.added.moved{background:#ffffea}.prose-diff>.markdown-body li.removed.moved{display:none}.prose-diff>.markdown-body pre{padding:10px 20px}.prose-diff>.markdown-body th.changed,.prose-diff>.markdown-body td.changed{background:#ffffea;border-left-color:#ddd}.prose-diff>.markdown-body :not(li.moved).removed{color:#a33;text-decoration:line-through;background:#ffeaea}.prose-diff>.markdown-body :not(.github-user-ins):not(li.moved).removed{text-decoration:line-through}.prose-diff>.markdown-body :not(li.moved).added,.prose-diff>.markdown-body li:not(.moved).added{background:#eaffea}.prose-diff>.markdown-body :not(.github-user-del):not(li.moved).added li:not(.moved):not(.github-user-del).added{text-decoration:none}.prose-diff>.markdown-body li:not(.moved).removed{color:#a33;background:#ffeaea}.prose-diff>.markdown-body li:not(.moved):not(.github-user-ins).removed{text-decoration:line-through}.prose-diff>.markdown-body .added,.prose-diff>.markdown-body ins+.added,.prose-diff>.markdown-body ins{border-top:0;border-bottom:0}.prose-diff>.markdown-body .added:not(.github-user-del):not(.github-user-ins),.prose-diff>.markdown-body ins+.added:not(.github-user-del):not(.github-user-ins),.prose-diff>.markdown-body ins:not(.github-user-del):not(.github-user-ins){text-decoration:none}.prose-diff>.markdown-body img.added,.prose-diff>.markdown-body img.removed{border-style:solid;border-width:1px}.prose-diff>.markdown-body ins pre:not(.github-user-del):not(.github-user-ins),.prose-diff>.markdown-body ins code:not(.github-user-del):not(.github-user-ins),.prose-diff>.markdown-body ins>div:not(.github-user-del):not(.github-user-ins){text-decoration:none}.prose-diff>.markdown-body ul>ins,.prose-diff>.markdown-body ul>del{display:block;padding:0}.prose-diff>.markdown-body .added>li,.prose-diff>.markdown-body .removed>li{margin-top:0;margin-bottom:0}span.changed_tag,em.changed_tag,strong.changed_tag,b.changed_tag,i.changed_tag,code.changed_tag{border-bottom:1px dotted #808080;border-radius:0}a.added_href,a.changed_href,span.removed_href{border-bottom:1px dotted #808080;border-radius:0}.diff-view .file-type-prose .rich-diff{display:none}.diff-view .file-type-prose.display-rich-diff .rich-diff{display:block}.diff-view .file-type-prose.display-rich-diff .file-diff{display:none}.protip{margin-top:20px;text-align:center}.protip code{padding:2px;background-color:#f4f4f4;border-radius:3px}.protip-callout{padding:8px 10px;margin-bottom:20px;color:#4c4a42;text-align:left;border:solid 1px #eee;border-radius:3px}.radio-group::before{display:table;content:""}.radio-group::after{display:table;clear:both;content:""}.radio-label{float:left;padding:8px 10px 8px 35px;margin-left:-1px;color:#333;cursor:pointer;border:1px solid #d9d9d9}:checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}.radio-label .octicon{padding-right:5px}.radio-label:first-of-type{margin-left:0;border-top-left-radius:3px;border-bottom-left-radius:3px}.radio-label:last-of-type{padding-right:16px;border-top-right-radius:3px;border-bottom-right-radius:3px}.radio-input{z-index:3;float:left;margin:11px -35px 0 12px}.add-reaction-btn{opacity:0;-webkit-transition:opacity 0.1s ease-in-out;transition:opacity 0.1s ease-in-out;-webkit-transform:translateZ(0)}.add-reaction-plus-icon{margin-right:-1px}.reaction-popover-container{display:inline-block}.reaction-popover-container.active .tooltipped::before,.reaction-popover-container.active .tooltipped::after{display:none}.reaction-popover-container.active .add-reaction-btn{opacity:1}.add-reaction-popover.dropdown-menu{width:220px}.add-reaction-popover.dropdown-menu-ne{bottom:100%;left:6px;margin-bottom:3px}.reaction-popover-form .loading-spinner{display:none;float:right}.reaction-popover-form.loading .loading-spinner{display:inline}.add-reactions-options::before{display:table;content:""}.add-reactions-options::after{display:table;clear:both;content:""}.add-reactions-options-item{float:left;width:34px;line-height:29px;-webkit-transition:-webkit-transform 0.15s cubic-bezier(0.2, 0, 0.13, 2);transition:transform 0.15s cubic-bezier(0.2, 0, 0.13, 2);-webkit-transform:scale(1);transform:scale(1)}.add-reactions-options-item:hover,.add-reactions-options-item:focus{text-decoration:none;-webkit-transform:scale(1.2);transform:scale(1.2)}.add-reactions-options-item:active{background-color:#eaf3ff}.comment-reactions::before{display:table;content:""}.comment-reactions::after{display:table;clear:both;content:""}.comment-reactions .reaction-popover-container{z-index:100}.comment-reactions.has-reactions{border-top:1px solid #e5e5e5}.comment-reactions.has-reactions:hover .add-reaction-btn{opacity:1}.comment-reactions .user-has-reacted{background-color:#f2f8fa}.comment-reactions .add-reaction-btn{border-right:0}.reaction-summary-item{float:left;padding:9px 15px 7px;line-height:18px;border-right:1px solid #e5e5e5}.reaction-summary-item:hover,.reaction-summary-item:focus{text-decoration:none}.comment-reactions-options .reaction-summary-item:first-child{border-bottom-left-radius:2px}.render-container{padding:30px;line-height:0;text-align:center;background:#ddd}.render-container .render-viewer{display:none;width:100%;height:100%;border:0}.render-container .octospinner{display:none}.render-container .render-viewer-error,.render-container .render-viewer-fatal,.render-container .render-viewer-invalid{display:none}.render-container.is-render-automatic .octospinner{display:inline-block}.render-container.is-render-requested .octospinner{display:inline-block}.render-container.is-render-requested.is-render-failed .render-viewer-error{display:inline-block}.render-container.is-render-requested.is-render-failed .render-viewer,.render-container.is-render-requested.is-render-failed .render-viewer-fatal,.render-container.is-render-requested.is-render-failed .render-viewer-invalid,.render-container.is-render-requested.is-render-failed .octospinner{display:none}.render-container.is-render-requested.is-render-failed-fatal .render-viewer-fatal{display:inline-block}.render-container.is-render-requested.is-render-failed-fatal .render-viewer,.render-container.is-render-requested.is-render-failed-fatal .render-viewer-error,.render-container.is-render-requested.is-render-failed-fatal .render-viewer-invalid,.render-container.is-render-requested.is-render-failed-fatal .octospinner{display:none}.render-container.is-render-requested.is-render-failed-invalid .render-viewer-invalid{display:inline-block}.render-container.is-render-requested.is-render-failed-invalid .render-viewer,.render-container.is-render-requested.is-render-failed-invalid .render-viewer-error,.render-container.is-render-requested.is-render-failed-invalid .render-viewer-fatal,.render-container.is-render-requested.is-render-failed-invalid .octospinner{display:none}.render-container.is-render-ready.is-render-requested:not(.is-render-failed){height:500px;padding:0;background:none}.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer{display:block}.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer-error,.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer-fatal,.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .octospinner{display:none}.render-notice{padding:20px 15px;font-size:14px;color:#4c4a42;background-color:#fff9ea;border-color:#dfd8c2}.labels-list .blankslate{display:none}.labels-list .table-list-header{display:block}.labels-list.is-empty .blankslate{display:block}.labels-list.is-empty .table-list-header{display:none}.labels-list-item .table-list-cell{width:100%}.labels-list-item .label{display:inline-block;padding:0 10px;margin-right:5px;font-size:16px;font-weight:bold;line-height:2;text-align:center;border-radius:3px;-webkit-transition:opacity 0.2s linear;transition:opacity 0.2s linear}.labels-list-item .label .octicon{margin-right:3px}.labels-list-item .label:hover{opacity:0.85}.labels-list-item.open .label,.labels-list-item.open .label-description,.labels-list-item.open .labels-list-action{display:none}.labels-list-item.open .label-delete{display:block;text-align:left}.labels-list-item.edit .label,.labels-list-item.edit .label-description,.labels-list-item.edit .labels-list-action{display:none}.labels-list-item.edit .label-edit{display:block}.label-description{padding:8px 10px;color:#767676}.label-delete-confirmation{line-height:34px}.labels-list-actions{margin-left:60px}.labels-list-action{display:block;float:left;padding:8px 10px;color:#767676}.labels-list-action .octicon{margin-right:2px}.labels-list-action .octicon-pencil{font-size:14px}.new-label{display:none;padding:10px;margin-bottom:15px;background-color:#fafafa;border:1px solid #e5e5e5;border-radius:3px}.new-label .label-edit{display:block}.new-label .label-edit::before{display:table;content:""}.new-label .label-edit::after{display:table;clear:both;content:""}.new-label-actions{float:right}.open .new-label{display:block}.label-spinner{display:none;float:left;margin-top:9px;margin-left:-35px}.label-edit::before{display:table;content:""}.label-edit::after{display:table;clear:both;content:""}.label-edit label{display:block;margin-bottom:5px}.label-edit .error{float:left;margin-top:8px;margin-left:10px;color:#f00}.label-edit.is-valid .color-editor .octicon-check{display:block}.label-edit.loading .label-spinner{display:block}.color-editor{position:relative;float:left;width:100px}.color-editor.open .label-colors{display:block}.color-editor-bg{position:absolute;left:0;z-index:10;width:20px;height:20px;margin-top:7px;margin-left:7px;cursor:pointer;border-radius:3px}.color-editor-input{width:100px;padding-left:34px;border-color:#ccc !important}.color-editor-input:focus{border-color:#51a7e8 !important}.color-editor-input:focus ~ .label-colors{display:block}.invalid-color-indicator{position:absolute;top:7px;left:7px;z-index:11;display:none;width:20px;height:20px;font-weight:bold;line-height:20px;color:#fff;text-align:center}.label-edit-name{float:left;width:40%;margin-right:10px}.label-colors{display:none;float:left;width:auto;padding-right:5px;padding-left:5px}.label-edit,.label-delete{display:none}.label-delete-form{display:inline}.label-delete-form.loading .label-delete-spinner{display:block}.label-delete-spinner{display:none;float:left;margin-top:10px;margin-right:10px}.color-chooser{display:table-row;height:25px;list-style:none}.color-chooser li{display:table-cell;width:1%}.color-chooser li:hover{position:relative;z-index:2;outline:2px solid #fff;box-shadow:0 0 5px 2px rgba(0,0,0,0.25)}.color-chooser .color-cooser-color{display:block;width:25px;height:25px;text-align:center;cursor:pointer}.repo-list{position:relative}.repo-list .participation-graph{position:absolute;right:0;bottom:0;left:0;z-index:-1}.repo-list .participation-graph.disabled{display:none}.repo-list .participation-graph .bars{position:absolute;bottom:0}.repo-list-item{position:relative;padding-top:30px;padding-bottom:30px;list-style:none;border-bottom:1px solid #eee}.repo-list-item-with-avatar{padding-left:42px}.repo-list-item-hanging-avatar{float:left;margin-left:-42px}.repo-list-name{margin:0 0 8px;font-size:20px;line-height:1.2}.repo-list-name .prefix,.repo-list-name .slash{font-weight:normal}.repo-list-name .slash{margin-right:-4px;margin-left:-4px}.repo-list-description{max-width:550px;margin-top:8px;margin-bottom:0;font-size:14px;color:#666}.repo-list-stats{float:right;margin-top:6px;font-size:12px;font-weight:bold;color:#888}.repo-list-stats .repo-list-stat-item{display:inline-block;margin-left:8px;color:#888;text-decoration:none}.repo-list-stats .repo-list-stat-item:hover{color:#4078c0}.repo-list-stats .repo-list-stat-item .language-muted-link{margin-left:3px;color:#888}.repo-list-info{display:inline-block;height:100%;margin-bottom:0;font-size:12px;color:#888;vertical-align:middle}.repo-list-info .octicon{margin-top:-3px;font-size:12px;vertical-align:middle}.repo-list-meta{display:block;margin-top:8px;margin-bottom:0;font-size:13px;color:#888}.repo-list-meta .avatar{margin-top:-2px}.repo-list-meta a:hover{text-decoration:none}.select-menu-button::after{display:inline-block;width:0;height:0;vertical-align:-2px;content:"";border:4px solid;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.select-menu-button.icon-only{padding-left:7px}.select-menu-button.primary::after{border-top-color:#fff}.select-menu-button.primary::after:active{background-color:#4a993e}.select-menu-button-large::after{margin-left:10px;vertical-align:-3px;border-width:5px}.select-menu .spinner{float:left;margin:4px 0 0 -24px}.select-menu.active .select-menu-modal-holder{display:block}.select-menu.select-menu-modal-right{position:relative}.select-menu.select-menu-modal-right .select-menu-modal-holder{right:0}.select-menu .select-menu-clear-item{display:block}.select-menu .select-menu-clear-item .octicon{color:inherit}.select-menu .select-menu-clear-item+.select-menu-no-results{display:none !important}.select-menu.is-loading .select-menu-loading-overlay{display:block}.select-menu.is-loading .select-menu-modal{min-height:200px}.select-menu-loading-overlay{position:absolute;top:0;z-index:5;display:none;width:100%;height:100%;background-color:rgba(255,255,255,0.8);border:1px solid transparent;border-radius:5px}.select-menu-loading-overlay .octicon-octoface{position:absolute;top:50%;left:50%;margin:-16px 0 0 -16px}.select-menu-modal-holder{position:absolute;z-index:30;display:none}.select-menu-modal{position:relative;width:300px;margin-top:4px;margin-bottom:20px;overflow:hidden;font-size:12px;color:#666;background-color:#fff;background-clip:padding-box;border:1px solid rgba(200,200,200,0.4);border-radius:3px;box-shadow:0 3px 12px rgba(0,0,0,0.15)}.select-menu-modal-narrow{width:200px}.select-menu-header{padding:8px 10px;line-height:16px;background:#f5f5f5;border-bottom:1px solid rgba(200,200,200,0.4)}.select-menu-header .select-menu-title{font-weight:600;color:#333;text-shadow:0 1px 0 #fff}.select-menu-header .octicon{display:block;float:right;color:#ccc;cursor:pointer}.select-menu-header .octicon:hover{color:#555}.select-menu-header:focus{outline:none}.select-menu-filters{background-color:#f8f8f8}.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;border-radius:3px}.select-menu-text-filter input::-webkit-input-placeholder{color:#aaa}.select-menu-text-filter input::-moz-placeholder{color:#aaa}.select-menu-text-filter input:-ms-input-placeholder{color:#aaa}.select-menu-text-filter input::placeholder{color:#aaa}.select-menu-tabs{padding:10px 10px 0;border-bottom:1px solid #ddd}.select-menu-tabs ul{position:relative;bottom:-1px}.select-menu-tabs .select-menu-tab{display:inline-block}.select-menu-tabs a,.select-menu-tabs .select-menu-tab-nav{display:inline-block;padding:4px 8px 2px;font-size:11px;font-weight:600;color:#888;text-decoration:none;cursor:pointer;background:transparent;border:1px solid transparent;border-radius:3px 3px 0 0}.select-menu-tabs a:hover,.select-menu-tabs .select-menu-tab-nav:hover{color:#333}.select-menu-tabs a.selected,.select-menu-tabs .select-menu-tab-nav.selected{color:#333;background-color:#fff;border-color:#ddd;border-bottom-color:#fff}.select-menu-list{position:relative;max-height:400px;overflow:auto}.select-menu-list.select-menu-tab-bucket{display:none}.select-menu-list.select-menu-tab-bucket.selected{display:block}.select-menu-list.is-showing-new-item-form .select-menu-new-item-form{display:block}.select-menu-list.is-showing-new-item-form .select-menu-no-results,.select-menu-list.is-showing-new-item-form .select-menu-clear-item{display:none}.select-menu-blankslate{padding:16px;text-align:center}.select-menu-blankslate svg{display:block;margin-right:auto;margin-bottom:9px;margin-left:auto;fill:#929292}.select-menu-blankslate h3{font-size:14px;color:#333}.select-menu-blankslate p{width:195px;margin-right:auto;margin-bottom:0;margin-left:auto}.select-menu-item{display:block;padding:8px 8px 8px 30px;overflow:hidden;color:inherit;cursor:pointer;border-bottom:1px solid #eee}.select-menu-item .select-menu-item-text .octicon-x{display:none;float:right;margin:1px 10px 0 0;opacity:0.6}.select-menu-item:hover{text-decoration:none}.select-menu-item.select-menu-item-template{display:none}.select-menu-item.disabled,.select-menu-item.disabled.selected{color:#999;cursor:default}.select-menu-item.disabled .description,.select-menu-item.disabled.selected .description{color:#999}.select-menu-item.disabled .select-menu-item-gravatar,.select-menu-item.disabled.selected .select-menu-item-gravatar{opacity:0.5}.select-menu-item .octicon{vertical-align:middle}.select-menu-item .octicon-check{visibility:hidden}.select-menu-item input[type="radio"]{display:none}.select-menu-item.navigation-focus,.select-menu-item.navigation-focus.selected,.select-menu-item.navigation-focus.select-menu-action,.select-menu-item.navigation-focus .description-inline{color:#fff;background-color:#4078c0}.select-menu-item.navigation-focus>.octicon,.select-menu-item.navigation-focus.selected>.octicon,.select-menu-item.navigation-focus.select-menu-action>.octicon,.select-menu-item.navigation-focus .description-inline>.octicon{color:#fff}.select-menu-item.navigation-focus .description,.select-menu-item.navigation-focus.selected .description,.select-menu-item.navigation-focus.select-menu-action .description,.select-menu-item.navigation-focus .description-inline .description{color:#fff}.select-menu-item.navigation-focus.disabled{color:rgba(255,255,255,0.5)}.select-menu-item.navigation-focus.disabled .description{color:rgba(255,255,255,0.6)}.select-menu-item>.octicon-dash{display:none}.select-menu-item.indeterminate>.octicon-check{display:none}.select-menu-item.indeterminate>.octicon-dash{display:block}.select-menu-item.selected{color:#333}.select-menu-item.selected .description{color:#666}.select-menu-item.selected>.octicon{color:#333}.select-menu-item.selected .octicon-check{color:inherit;visibility:visible}.select-menu-item.selected .select-menu-item-text .octicon-x{display:block;color:inherit}.select-menu.label-select-menu .select-menu-item:active{background-color:transparent !important}.select-menu-item a{color:inherit;text-decoration:none}.select-menu-item .hidden-select-button-text{display:none}.select-menu-item .css-truncate-target{max-width:100%}.select-menu-item-parent{pointer-events:none}.select-menu-item-parent:hover{cursor:default}.select-menu-item-parent.navigation-focus,.select-menu-item-parent.navigation-focus.selected{color:#333;background-color:#f2f8fa}.select-menu-item-parent.navigation-focus .octicon-check,.select-menu-item-parent.navigation-focus.selected .octicon-check{color:#333}.select-menu-item-icon{float:left;margin-left:-20px}form.select-menu-item>div:first-child{display:none !important}.select-menu-list:last-child .select-menu-item:last-child,.select-menu-item.last-visible{border-bottom:0;border-radius:0 0 3px 3px}.select-menu-action{font-weight:normal;color:#555}.select-menu-action>.octicon{color:inherit}.select-menu-action:hover{color:#4078c0}.select-menu-no-results{display:none;padding:9px;color:#767676;cursor:auto}.select-menu-list.filterable-empty .select-menu-no-results,.select-menu-no-results:only-child{display:block}.select-menu-button-gravatar,.select-menu-item-gravatar{width:20px;overflow:hidden;line-height:0}.select-menu-button-gravatar img,.select-menu-item-gravatar img{display:inline-block;width:20px;height:20px;border-radius:3px}.select-menu-item-gravatar{float:left;width:20px;height:20px;margin-right:8px;border-radius:2px}.select-menu-button-gravatar{float:left;margin-right:5px}.select-menu-item-text{display:block;text-align:left}.select-menu-item-text .description{display:block;max-width:265px;font-size:12px;color:#767676}.select-menu-item-text .description-inline{font-size:10px;color:#767676}.select-menu-item-heading{display:block;margin-top:0;margin-bottom:0;font-size:14px;font-weight:600}.select-menu-item-heading .description{display:inline;font-weight:normal}.select-menu-new-item-form{display:none}.select-menu-new-item-form .octicon{color:#4078c0}.modal-backdrop{display:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.menu-active .modal-backdrop{position:fixed;top:0;left:0;z-index:20;display:block;width:100vw;height:100vh}.shelf{padding-top:20px;margin-bottom:20px;background-color:#fefefe;border-bottom:1px solid #eee}.shelf .container{position:relative}.shelf-title{margin:0;font-size:30px;font-weight:normal}.shelf-content{width:800px;margin:50px auto;text-align:center}.shelf-lead{margin-top:10px;margin-bottom:30px;font-size:18px;color:#666}.shelf-dismiss{position:absolute;top:0;right:0;font-size:12px;color:#999}.shelf-dismiss:hover{color:#4078c0;text-decoration:none}.shelf-dismiss .close-button{width:28px;height:28px;padding:3px 5px;color:#999;border:1px solid #ddd;border-radius:28px}.shelf-cta{padding:10px 50px;font-size:16px}.intro-shelf{margin-top:0;color:#234766;background-image:-webkit-linear-gradient(270deg, rgba(255,255,255,0) 60%, #fff),-webkit-linear-gradient(20deg, #e0f1ff 32%, #fffae3);background-image:linear-gradient(180deg, rgba(255,255,255,0) 60%, #fff),linear-gradient(70deg, #e0f1ff 32%, #fffae3);border-bottom:#fff}.intro-shelf .shelf-lead{color:#5a83a5}.intro-shelf .shelf-cta{box-shadow:0 2px 12px 0 #b6d8f4}.intro-shelf .shelf-cta.btn-secondary{margin-left:20px;box-shadow:0 2px 8px 0 #e6e6e6}.orgs-help-shelf{padding-top:20px;padding-bottom:20px;margin-top:-20px;margin-bottom:20px;border-bottom:1px solid #eee}.orgs-help-shelf .orgs-help-title{font-size:30px;font-weight:normal}.orgs-help-shelf-content{width:800px;margin:50px auto;text-align:center}.orgs-help-shelf-content .orgs-help-lead{padding-right:45px;padding-left:45px;font-size:18px}.orgs-help-shelf-content .orgs-help-divider{display:block;width:150px;margin:40px auto;content:"";border-top:1px solid #ddd}.orgs-help-lead{margin-top:10px;margin-bottom:30px;color:#666}.orgs-help-items{margin-bottom:40px}.orgs-help-item-octicon{width:70px;height:70px;margin:0 auto 15px;text-align:center;background-color:#fff;border:solid 1px #e5e5e5;border-radius:50px}.orgs-help-item-octicon .octicon{margin-top:20px;color:#4078c0}.orgs-help-item-title{margin-bottom:10px;font-weight:normal}.orgs-help-item-content{margin-top:0;font-size:14px;color:#666}.orgs-help-dismiss{float:right;margin-top:5px;margin-right:10px;font-size:12px;color:#767676}.orgs-help-dismiss:hover{color:#4078c0;text-decoration:none}.orgs-help-dismiss .octicon{position:relative;top:1px}.revoke-all-repo-access,.revoke-active-repo-access{display:none}.orgs-help-title{margin-top:0;margin-bottom:0}.simple-box{padding:15px;margin-bottom:20px;background-color:#fff;border:1px solid #ddd;border-radius:3px}.simple-box-title{padding:15px;margin:-15px -15px 0;font-size:18px;border-bottom:1px solid #eee}.simple-box-footer{padding:15px;margin:15px -15px -15px;background-color:#fcfcfc;border-top:1px solid #eee;border-radius:0 0 3px 3px}.simple-stacked-bar{display:table;width:100%;height:10px;background-color:#eee}.bar-section{display:table-cell}.bar-section[style="width:0.0%"]{display:none}.bar-section-positive{background-color:#6cc644}.bar-section-negative{background-color:#bd2c00}.bar-section-alt{background-color:#6e5494}.subhead{padding-bottom:5px;margin-bottom:15px;border-bottom:1px solid #e5e5e5}.subhead-spacious{margin-top:45px}.subhead-heading{font-weight:normal}.subhead-description{margin-bottom:0;font-size:14px;color:#767676}.subhead-actions{margin-top:-4px}.facebox .sudo{padding:0}.facebox .sudo .auth-form-header{border-width:0 0 1px}.facebox .sudo .auth-form-header .mini-icon{display:none}.facebox .sudo .auth-form-body{border-width:0}.facebox .sudo+.facebox-close{padding:5px;color:#fff}.sudo-prompt,.sudo-error{display:none}.survey-container{z-index:22;width:1000px;margin:auto}.survey-box-position{padding-bottom:6px;margin-bottom:-6px}.survey-box{width:348px;background-color:#fff;border:1px solid #ddd;border-radius:3px}.survey-box-shadowed{box-shadow:0 3px 12px rgba(0,0,0,0.15)}.survey-box-header{padding:12px 18px;overflow:hidden;background-color:#444;border-top-left-radius:2px;border-top-right-radius:2px}.survey-box-title{overflow:hidden;font-weight:bold;color:#fff}.survey-box-close{padding:12px 18px;margin:-12px -18px;color:rgba(255,255,255,0.8)}.survey-box-close:hover{color:#fff}.survey-box-body{padding:12px 18px}.survey-box-lead{font-size:16px;font-weight:bold;color:#555}.survey-box-footer{padding:18px;border-top:1px solid #eee}.tab-size[data-tab-size="1"]{-moz-tab-size:1;-o-tab-size:1;tab-size:1}.tab-size[data-tab-size="2"]{-moz-tab-size:2;-o-tab-size:2;tab-size:2}.tab-size[data-tab-size="3"]{-moz-tab-size:3;-o-tab-size:3;tab-size:3}.tab-size[data-tab-size="4"]{-moz-tab-size:4;-o-tab-size:4;tab-size:4}.tab-size[data-tab-size="5"]{-moz-tab-size:5;-o-tab-size:5;tab-size:5}.tab-size[data-tab-size="6"]{-moz-tab-size:6;-o-tab-size:6;tab-size:6}.tab-size[data-tab-size="7"]{-moz-tab-size:7;-o-tab-size:7;tab-size:7}.tab-size[data-tab-size="8"]{-moz-tab-size:8;-o-tab-size:8;tab-size:8}.tab-size[data-tab-size="9"]{-moz-tab-size:9;-o-tab-size:9;tab-size:9}.tab-size[data-tab-size="10"]{-moz-tab-size:10;-o-tab-size:10;tab-size:10}.tab-size[data-tab-size="11"]{-moz-tab-size:11;-o-tab-size:11;tab-size:11}.tab-size[data-tab-size="12"]{-moz-tab-size:12;-o-tab-size:12;tab-size:12}.tag-input-container{position:relative}.tag-input-container .suggester{position:absolute;z-index:100;width:100%;margin-top:-1px}.tag-input-container ul{list-style:none}.tag-input{width:100%;padding:0 5px 3px;margin-top:5px;overflow:auto}.tag-input input{float:left;padding-left:2px;margin:0;margin-top:3px;background:none;border:0;box-shadow:none}.tag-input input:focus{box-shadow:none}.tag-input .tag-input-tag{float:left;margin:5px;margin-bottom:0;margin-left:0}.tag-input-tag{position:relative;padding:6px 30px 6px 10px;background:#eee;border-radius:3px}.tag-input-tag .remove{position:absolute;top:6px;right:6px;display:block;width:18px;height:18px;font-size:15px;line-height:16px;color:#fff;text-align:center;text-decoration:none;cursor:pointer;background:#c8c8c8;border-radius:18px}.tag-input-tag .remove:hover{background:#bd2c00}.task-list-item{list-style-type:none}.task-list-item label{font-weight:normal}.task-list-item.enabled label{cursor:pointer}.task-list-item+.task-list-item{margin-top:3px}.task-list-item .handle{display:none}.task-list-item-checkbox{margin:0 0.2em 0.25em -1.6em;vertical-align:middle}.reorderable-task-lists .markdown-body .contains-task-list{padding:0}.reorderable-task-lists .markdown-body li:not(.task-list-item){margin-left:26px}.reorderable-task-lists .markdown-body ol:not(.contains-task-list) li,.reorderable-task-lists .markdown-body ul:not(.contains-task-list) li{margin-left:0}.reorderable-task-lists .markdown-body li p{margin-top:0}.reorderable-task-lists .markdown-body .task-list-item{padding-right:15px;padding-left:42px;margin-right:-15px;margin-left:-15px;border:1px solid transparent}.reorderable-task-lists .markdown-body .task-list-item+.task-list-item{margin-top:0}.reorderable-task-lists .markdown-body .task-list-item .contains-task-list{padding-top:4px}.reorderable-task-lists .markdown-body .task-list-item .handle{display:block;float:left;width:20px;padding:2px 0 0 2px;margin-left:-43px;opacity:0}.reorderable-task-lists .markdown-body .task-list-item .drag-handle{fill:#333}.reorderable-task-lists .markdown-body .task-list-item.hovered{background:#fafafa;border-top-color:#ededed;border-bottom-color:#ededed}.reorderable-task-lists .markdown-body .task-list-item.hovered>.handle{opacity:1}.reorderable-task-lists .markdown-body .task-list-item.is-dragging{opacity:0}.reorderable-task-lists .markdown-body .task-list-item.is-ghost{border-right-color:#ededed;border-left-color:#ededed}.review-comment-contents .markdown-body .task-list-item{padding-left:42px;margin-right:-12px;margin-left:-12px;border-top-left-radius:3px;border-bottom-left-radius:3px}.review-comment-contents .markdown-body .task-list-item.hovered{border-left-color:#ededed}.team-grid{position:relative;margin-right:-10px;margin-left:-10px}.team-grid::before{display:table;content:""}.team-grid::after{display:table;clear:both;content:""}.team-grid .team{position:relative;float:left;width:480px;padding:15px;margin-right:10px;margin-bottom:20px;margin-left:10px;border:1px solid #eee;border-radius:3px}.team-grid .team-name{display:block;margin-top:-2px;font-size:18px;font-weight:bold;color:#333;text-decoration:none}.team-grid .team-name .css-truncate-target{max-width:315px}.team-grid .team-name:focus,.team-grid .team-name:hover{color:#4078c0}.team-grid .team-name:focus{outline:none}.team-grid .team-description{max-width:80%;margin-top:5px;font-size:14px;color:#767676;text-overflow:ellipsis;white-space:nowrap}.team-grid .team-label-ldap{float:right}.team-grid .team-members{width:478px;padding:10px 15px;margin:0 -15px -15px;background-color:#f8f8f8;border-top:1px solid #eee;border-radius:0 0 3px 3px}.team-grid .team-members .btn-sm{margin-top:1px;margin-bottom:1px}.team-grid .team-member{display:inline-block;width:30px;height:30px;vertical-align:top}.team-grid .team-member:hover{text-decoration:none}.team-grid .blankslate{margin-right:10px;margin-left:10px}.team-grid .team-actions-form{float:right}.team-label-ldap{display:inline-block;padding:0 9px;line-height:25px;color:#767676;text-transform:uppercase;cursor:default;border:1px solid #eaeaea;border-radius:3px;box-shadow:none}.team-label-ldap.header-label-ldap{padding:3px 5px}.team-member-ellipsis{display:inline-block;width:30px;height:30px;font-weight:bold;line-height:24px;color:#767676;text-align:center;vertical-align:top;background-color:#ddd;border-radius:3px}.team-member-ellipsis:hover{color:#333;text-decoration:none}.team-listing .table-list-cell{padding-top:10px;padding-bottom:10px;vertical-align:middle}.team-listing .table-list-cell-checkbox{width:30px;padding-right:0;padding-left:10px}.team-listing .team-info{width:280px}.team-listing .team-name{line-height:1.3;color:#4078c0}.team-listing .description{display:block}.team-listing .team-avatars{width:380px;white-space:nowrap}.team-listing .team-meta{font-size:14px}.team-listing .team-menu{padding-right:15px}.toolbar-commenting{float:right}.toolbar-commenting .dropdown.active .dropdown-menu-content{display:block}.toolbar-commenting .dropdown-menu-s{width:100px}.toolbar-commenting .dropdown-item{font-weight:bold;line-height:1em;background:none;border:0}.toolbar-commenting .dropdown-item:hover{color:#4078c0}.toolbar-commenting .dropdown-item:focus{color:#4078c0;outline:none}.toolbar-item{display:block;float:left;padding:4px 5px;color:#767676;background:none;border:0}.toolbar-item.dropdown,.toolbar-item.select-menu{padding:0}.toolbar-item .select-menu-modal{margin-top:2px}.toolbar-item .select-menu-item{padding-left:8px}.toolbar-item .menu-target{display:block;padding:4px 5px;color:#767676;background:none;border:0}.toolbar-item .menu-target:hover,.toolbar-item:hover{color:#4078c0}.toolbar-item .menu-target:focus,.toolbar-item:focus{color:#4078c0;outline:none}.toolbar-item .dropdown-caret{margin-left:-3px}.toolbar-item:disabled{color:#ddd}.toolbar-item .octicon-link,.toolbar-item .octicon-tasklist{margin-left:-3px}.toolbar-item .octicon-mention{margin-left:-4px}.toolbar-item .octicon-bold{margin-left:-2px}.toolbar-group{display:inline-block;margin-left:20px}.toolbar-group:first-child{margin-left:0}.toolbar-help{float:left;margin-top:-2px;margin-bottom:10px;margin-left:1px}.toolbar-help .octicon{vertical-align:bottom}.dropdown-header1{font-size:20px}.dropdown-header2{font-size:18px}.dropdown-header3{font-size:14px}.typeahead-result{position:relative;display:block;min-width:100%;padding:10px;margin-top:0;color:#333;cursor:pointer}.typeahead-result::before{display:table;content:""}.typeahead-result::after{display:table;clear:both;content:""}.typeahead-result:first-child{border-top:0}.typeahead-result:focus,.typeahead-result:hover,.typeahead-result.navigation-focus{text-decoration:none}.typeahead-result:hover,.typeahead-result.navigation-focus{color:#fff;background-color:#4078c0}.typeahead-result:hover .octicon-plus,.typeahead-result.navigation-focus .octicon-plus{color:#fff}.member-suggestion{padding-left:44px}.member-suggestion .avatar{float:left;margin-right:10px;margin-left:-34px}.member-suggestion .member-suggestion-info{width:90%;margin-top:2px;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-suggestion .member-name{font-size:12px;color:#767676}.member-suggestion .member-email{margin-top:0;margin-bottom:0}.member-suggestion .octicon-plus,.member-suggestion .octicon-check{position:absolute;top:50%;right:15px;margin-top:-8px;color:#ddd}.member-suggestion .already-member-note,.member-suggestion .non-member-note,.member-suggestion .non-member-action{margin-top:0;margin-bottom:0;color:#767676}.member-suggestion .non-member-action{display:none}.member-suggestion:hover .member-name,.member-suggestion:hover .non-member-note,.member-suggestion:hover .already-member-note,.member-suggestion:hover .non-member-action,.member-suggestion:hover .member-email,.member-suggestion.navigation-focus .member-name,.member-suggestion.navigation-focus .non-member-note,.member-suggestion.navigation-focus .already-member-note,.member-suggestion.navigation-focus .non-member-action,.member-suggestion.navigation-focus .member-email{color:#fff}.member-suggestion:hover .non-member-note,.member-suggestion.navigation-focus .non-member-note{display:none}.member-suggestion:hover .non-member-action,.member-suggestion.navigation-focus .non-member-action{display:block}.member-suggestion:hover .octicon,.member-suggestion.navigation-focus .octicon{color:#fff}.member-suggestion.not-a-member .member-info,.member-suggestion.disabled .member-info{margin-top:-2px}.member-suggestion.disabled{opacity:0.5}.non-member-result{padding-left:31px}.non-member-result.disabled{pointer-events:none;opacity:0.5}.team-suggestion{padding-left:32px}.team-suggestion .octicon{float:left;margin-top:2px;margin-left:-22px}.team-suggestion .team-suggestion-info{margin:2px 0 0}.team-suggestion .team-suggestion-info .css-truncate-target{max-width:none}.team-suggestion .team-size,.team-suggestion .team-description{font-size:12px;color:#767676}.team-suggestion.navigation-focus .team-size,.team-suggestion.navigation-focus .team-description{color:#fff}.email-suggestion{padding-left:32px}.email-suggestion .octicon-mail{margin-left:-20px;color:#999}.email-suggestion .member-suggestion-info{margin-top:1px}.repo-access-add-team .team-name{font-size:13px}.repo-access-add-team .team-description{display:block}.repo-access-add-team .team-size,.repo-access-add-team .team-description{font-size:12px;color:#767676}.repo-access-add-team.navigation-focus .team-size,.repo-access-add-team.navigation-focus .team-description{color:#fff}.underline-nav{display:table;height:62px}.underline-nav-item{display:table-cell;padding-right:20px;padding-left:20px;font-size:14px;color:#767676;vertical-align:middle;border-bottom:2px solid transparent}.underline-nav-item:hover,.underline-nav-item:focus{color:#333;text-decoration:none}.underline-nav-item.selected{color:#333;border-bottom-color:#c9510c}#user-content-toc{overflow:visible}#user-content-toc tr{border-top:0}#user-content-toc td{padding:0 20px;background-color:#f7f7f7;border:0;border-radius:3px}#user-content-toc ul{padding-left:0;font-weight:bold;list-style:none}#user-content-toc ul li{padding-left:0.2em}#user-content-toc ul ul{font-weight:normal}#user-content-toc ul ul li::before{float:left;margin-top:-0.2em;margin-right:0.2em;font-size:1.2em;line-height:1;color:#aaa;content:"\231e"}#user-content-toc ul ul ul{padding-left:0.9em}#user-content-toctitle h2{margin-top:1em;margin-bottom:0.5em;font-size:1.25em;border-bottom:0}.user-list em{padding:3px;font-style:normal;font-weight:bold;background-color:rgba(255,255,140,0.5);border-radius:3px}.user-list .avatar{position:absolute;top:0;left:0}.user-list-info{min-height:48px;padding:0;font-size:18px;font-weight:normal;line-height:20px}.user-list-bio{margin:8px 0 0}.user-list-meta{margin:8px 0 0;overflow:hidden;list-style-type:none}.user-list-meta>li{float:left;margin-right:10px}.user-list-meta a{color:#333}.user-list-meta .octicon{vertical-align:text-bottom}.user-list-item{position:relative;padding:0 0 20px 58px;margin:0 0 20px;border-bottom:1px solid #f1f1f1}.follow-list{list-style-type:none}.follow-list .follow-list-item{width:305px;height:100px;padding-bottom:20px;margin-right:20px;margin-bottom:20px}.follow-list .follower-list-align-top{vertical-align:top}.follow-list .flagged-banner{width:75px;padding:3px 0;font-size:10px;font-weight:bold;color:#fff;text-transform:uppercase;background-color:#bd2c00;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.follow-list .follow-list-name{margin-bottom:1px;font-weight:normal}.follow-list .follow-list-name a{color:inherit}.follow-list .follow-list-info{margin-bottom:0.6em;font-size:12px;color:#767676}.follow-list .css-truncate.css-truncate-target{max-width:190px}.user-select-contain{-ms-user-select:element;-webkit-user-select:contain;-moz-user-select:contain;user-select:contain}.wiki-list em{padding:3px;font-style:normal;font-weight:bold;background-color:rgba(255,255,140,0.5);border-radius:3px}.wiki-list .avatar{float:left}.wiki-list .title{min-height:24px;margin:-3px 0 10px 38px;font-weight:bold;line-height:1.2}.wiki-list .title .updated-at{font-weight:normal}.wiki-list .repo-specific .title,.wiki-list .repo-specific .full-path{margin-left:0}.wiki-list .description{margin:0 0 10px;overflow:hidden;line-height:20px}.wiki-list .wiki-list-item+.wiki-list-item{padding-top:20px;margin-top:20px;margin-bottom:10px;border-top:1px solid #eee}.zeroclipboard-link{padding:0;margin:0;color:#4078c0;cursor:pointer;background:none;border:0}.zeroclipboard-link .octicon{display:block}
+
+
+ .marketing .pagehead h1{font-size:30px}.marketing .pagehead p{margin-top:4px;margin-bottom:0;font-size:14px;color:#767676}.marketing .pagehead ul.actions{margin-top:10px}.marketing h2 .secure{float:right;padding:1px 0;font-size:11px;font-weight:bold;color:#6cc644;text-transform:uppercase}.marketing .questions p{font-size:14px}.marketing-header{margin-bottom:40px}.marketing-header h1{margin-top:0;margin-bottom:0;font-size:42px;font-weight:300}.marketing-header .lead{max-width:750px;margin:10px auto 0;color:#767676}.marketing-header .btn{padding:12px 20px;margin-top:15px;font-size:18px;font-weight:normal;border-radius:6px}.marketing-section{position:relative;padding-top:80px;padding-bottom:80px;font-size:16px;line-height:1.5;text-align:center;border-bottom:1px solid #e5e5e5}.marketing-section::before{display:table;content:""}.marketing-section::after{display:table;clear:both;content:""}.marketing-section h3{font-size:21px;font-weight:normal}.marketing-section-stripe{background-color:#f9f9f9}.marketing-hero-octicon{position:relative;width:100px;height:100px;margin:0 auto 15px;text-align:center;border:solid 1px #e5e5e5;border-radius:50px}.marketing-hero-octicon .octicon{margin-top:22px;color:#4078c0}.marketing-hero-octicon .octicon-checklist{position:relative;right:-3px}.marketing-grid{font-size:14px}.marketing-grid .column{padding:20px 25px 40px}.marketing-grid p{max-width:90%;margin:0 auto;color:#5a5a5a}.marketing-grid .octicon{color:#4078c0}.hanging-list li,.hanging-icon-list li{margin:10px 0;font-size:14px}.hanging-list li{margin-left:12px;list-style-position:inside}.hanging-icon-list li{padding-left:25px;list-style-type:none}.hanging-icon-list .octicon{float:left;margin-left:-20px;color:#767676}.hanging-icon-list .octicon-check{color:#6cc644}.hanging-icon-list .octicon-x{color:#bd2c00}.logos-page h3{font-size:18px}.logos-download{position:relative;display:block;float:left;width:32%;height:290px;padding-top:20px;margin-bottom:30px;text-align:center;border:1px solid #ddd;border-radius:6px}.logos-download+.logos-download{margin-left:2%}.logos-download .gh-logo{margin-top:70px}.logos-download .gh-octocat{margin-top:10px}.logos-download-link{position:absolute;right:0;bottom:0;left:0;display:block;padding:15px 20px;font-size:16px;font-weight:bold;background-color:#f5f5f5;border-top:1px solid #ddd;border-radius:0 0 5px 5px}.logos-download-link .octicon{vertical-align:2px}.logos-download:hover{text-decoration:none}.logos-download:hover .logos-download-link{background-color:#eee}.nonprofit-head{position:relative;padding:100px 0 120px;overflow:hidden;text-align:center;border-bottom:1px solid #eee}.nonprofit-head .title{display:inline-block;margin-bottom:20px;font-size:30px;font-weight:300;color:#767676;border-bottom:1px solid #ccc}.nonprofit-head .title .octicon{color:#333}.nonprofit-head .logo{vertical-align:middle}.nonprofit h1{position:relative;font-size:28px;font-weight:300;line-height:1.5em}.nonprofit h2{font-weight:normal}.heart{position:absolute;top:40%;left:50%;width:12px;height:12px;margin-left:400px;background:#83d6c0;box-shadow:140px 30px 0 #efa, 120px -120px 0 #aded84, 220px -60px 0 #ded, 30px 240px 0 #ada, 60px -60px 0 #d76666, 60px -30px 0 #ff846f, 60px 0 0 #f9a7a7, 60px 30px 0 #ffc8c8, 60px 60px 0 #ffd8d8, 30px 60px 0 #baf2ca, 30px 30px 0 #98eaac, 30px 0 0 #80d896, 30px -30px 0 #6dd085, 30px -60px 0 #55be6f, 0 -60px 0 #4cc2a7, 0 -30px 0 #73d3b9, 0 30px 0 #93e3cd, 0 60px 0 #adf9e4, -30px 60px 0 #ffe1b9, -30px 30px 0 #ffd194, -30px 0 0 #ffc86f, -60px 0 0 #fd9ff0, -60px 30px 0 #ffbaf7, -60px 60px 0 #fccdf7, -180px 60px 0 #9df;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.heart:first-child{margin-left:-400px;-webkit-transform:rotate(-45deg),scaleX(-1);transform:rotate(-45deg),scaleX(-1)}.octo-earth{position:absolute;bottom:-150px;left:50%;margin-left:-120px;-webkit-animation:rotate 20s infinite linear;animation:rotate 20s infinite linear}@-webkit-keyframes rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@keyframes rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}.nonprofit-steps{margin-left:30px;font-size:20px;font-weight:300}.nonprofit-steps li{margin-bottom:10px}.nonprofit-steps ul{margin:15px 0 0 20px;list-style:square}.nonprofit-section{padding:50px 0;background:#f5f5f5}.nonprofit-section h1{text-align:center}.nonprofit-section .dialog{width:640px;padding:30px;margin:30px auto 0;background:#fff}.nonprofit-section .dialog p:last-child{margin-bottom:0}.dialog.edu-callout{padding:25px;border:5px solid #aec}.dialog.edu-callout .octicon{float:left;padding-top:10px;padding-bottom:10px;margin-right:15px;color:#418f65}.integrations-hero-octicon.marketing-hero-octicon{width:75px;height:75px;border-width:5px}.integrations-hero-octicon.marketing-hero-octicon .octicon{margin-top:15px}.marketing-blue-octicon{color:#34acbf;border-color:#34acbf}.marketing-blue-octicon .octicon{color:#34acbf}.marketing-turquoise-octicon{color:#75bbb6;border-color:#75bbb6}.marketing-turquoise-octicon .octicon{color:#75bbb6}.marketing-purple-octicon{color:#b086b7;border-color:#b086b7}.marketing-purple-octicon .octicon{color:#b086b7}.marketing-graphic{position:relative}.marketing-graphic .in-page-link{position:absolute;top:0;bottom:0;display:block;width:20%;content:" "}.marketing-graphic .in-page-link.code,.marketing-graphic .in-page-link.build{left:20%}.marketing-graphic .in-page-link.collaborate{left:40%}.marketing-graphic .in-page-link.ship,.marketing-graphic .in-page-link.deploy{left:60%}.pbl-intgrs .site-footer{margin-top:-99px;border-top:1px solid #e5e5e5}.pbl-intgrs-intro{padding:60px 0;background:#ecf9f8;background-image:-webkit-linear-gradient(45deg, #ecf9f8 0%, #fbf4fc 100%);background-image:linear-gradient(45deg, #ecf9f8 0%, #fbf4fc 100%)}.pbl-intgrs-intro .marketing-header{margin-bottom:0}.pbl-intgrs-intro h1{margin-bottom:20px;font-size:48px;font-weight:200}.pbl-intgrs-intro .lead{max-width:540px;font-size:18px;font-weight:300;color:rgba(87,87,87,0.7)}.pbl-intgrs-intro .marketing-graphic{margin:52px 0 0}.pbl-intgrs-intro .integrations-hero-octicon.marketing-hero-octicon{width:75px;height:75px;margin:-30px auto 30px;border-width:5px}.pbl-intgrs-intro .integrations-hero-octicon.marketing-hero-octicon .octicon{font-size:34px;line-height:66px}.pbl-intgrs-list .lead{color:#767676}.pbl-intgrs-list .lead.narrow{max-width:520px}.pbl-intgrs-outro{padding-top:118px;padding-bottom:218px;background:#ecf9f8;background-image:-webkit-linear-gradient(45deg, #ecf9f8 0%, #fbf4fc 100%);background-image:linear-gradient(45deg, #ecf9f8 0%, #fbf4fc 100%)}.pbl-intgrs-outro .lead{width:550px;color:rgba(87,87,87,0.7)}.btn.outro-button{padding:14px 65px;font-size:20px;font-weight:200;color:#fff;text-decoration:none;text-shadow:none;background:#75bbb6;border:0;-webkit-transition:opacity ease 0.1s;transition:opacity ease 0.1s}.btn.outro-button:hover{opacity:0.8}.pbl-intgrs-logo-container{min-height:80px;margin-bottom:20px}.intgrs-dir .marketing-graphic{padding-right:0;margin:0}.intgrs-dir .site-footer{margin-top:40px}.intgrs-dir-section h2{margin-top:0;margin-bottom:20px;font-size:26px;font-weight:300}.intgrs-dir-intro{padding:40px 0;margin:0;text-align:left;background-image:-webkit-linear-gradient(200deg, #48227d 0%, #2f569c 100%);background-image:linear-gradient(-110deg, #48227d 0%, #2f569c 100%);border-bottom:0}.pagehead+.intgrs-dir-intro{margin-top:-20px}.intgrs-dir-intro.ultra-slim{padding:20px 0}.intgrs-dir-intro .directory-header-back{margin-top:10px;font-size:18px;color:#fff}.intgrs-dir-intro .directory-header-back:hover{color:#d7def1;text-decoration:none}.intgrs-dir-intro .directory-header-back .octicon{vertical-align:middle}.intgrs-dir-intro .directory-header-back .header-link{color:#96dad9}.intgrs-dir-intro .column{padding-right:40px;padding-left:0}.intgrs-dir-intro .directory-tag-line{margin-bottom:0;font-size:28px;font-weight:400;color:#fff}.intgrs-dir-intro .lead{margin-top:10px;margin-bottom:6px;font-size:18px;font-weight:normal;color:#d7def1}.intgrs-lstng-search{display:inline-block;width:33%;margin-left:20px}.intgrs-lstng-search .subnav-search-input{width:100%}.intgrs-lstng-categories-container{display:inline-block;float:left;width:20%}.intgrs-lstng-categories-container .intgrs-lstng-categories{top:0}.intgrs-lstng-categories-container .filter-item{padding:6px 10px;margin-right:-10px;margin-left:-10px}.intgrs-lstng-container{display:inline-block;width:80%;text-align:left}.intgrs-lstng-item{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;width:31.4%;font-size:14px;border:1px solid #ededed;border-radius:4px;-webkit-transition:border-color 0.15s ease 0s, -webkit-transform 0.15s ease 0s, box-shadow 0.15s ease 0s, color 0.15s ease 0s;transition:border-color 0.15s ease 0s, transform 0.15s ease 0s, box-shadow 0.15s ease 0s, color 0.15s ease 0s}.intgrs-lstng-item:hover{border-color:#51a7e8;box-shadow:0 0 5px rgba(81,167,232,0.5);-webkit-transform:scale(1.05);transform:scale(1.05)}.intgrs-lstng-item .intgrs-lstng-logo{display:block;margin:0 auto 10px}.intgrs-lstng-item .draft-tag{position:absolute;top:-1px;left:10px}.intgrs-lstng-item-link{display:block;width:100%;height:181px;padding-top:20px}.intgrs-lstng-item-link:hover{text-decoration:none}.intgrs-lstng-item-link:hover .intgrs-lstng-item-header{color:#4078c0}.intgrs-lstng-item-header{margin:15px 10px 0;font-size:14px;font-weight:bold;color:#333}.intgrs-lstng-item-description{position:relative;height:2.8em;padding:0 10px;margin-top:5px;overflow:hidden;font-size:13px;color:#767676}.intgrs-lstng-item-description::after{position:absolute;right:0;bottom:0;padding:0 15px 0 20px;color:transparent;content:"\00a0";background-image:-webkit-linear-gradient(left, rgba(255,255,255,0), #fff 80%);background-image:linear-gradient(to right, rgba(255,255,255,0), #fff 80%)}.intgr-header{padding-bottom:30px;margin-top:30px;margin-bottom:30px;font-size:16px;border-bottom:1px solid #eee}.intgr-header h2{font-size:30px;font-weight:400}.intgr-header p{width:530px;margin-top:5px;color:#767676}.intgr-header h2,.intgr-header p{margin-bottom:0;margin-left:120px}.intgr-install-callout{padding:20px;margin-top:-135px;margin-bottom:20px;background-color:#fff;border:1px solid #eee;border-radius:4px}.intgr-install-callout .btn{padding:12px 20px;font-size:18px}.intgr-install-callout p{margin-top:15px;margin-bottom:0;line-height:1.6}.intgr-install-callout .boxed-group-list .tooltipped{cursor:pointer}.intgr-install-callout .boxed-group-list .tooltipped.not-allowed{cursor:not-allowed}.intgr-install-callout .boxed-group-list .octicon{margin-top:3px;margin-left:4px}.intgr-install-callout .boxed-group-list.is-parent{margin-top:20px;margin-bottom:-20px}.intgr-install-callout .boxed-group-list li{padding:5px 20px;margin-right:-20px;margin-left:-20px}.intgr-install-callout .boxed-group-list li.muted{background-color:#fafafa}.intgr-install-callout .boxed-group-list li:first-child{border-top:1px solid #ddd}.intgr-install-callout .avatar-paragraph{position:relative;padding-left:50px}.intgr-install-callout .dropdown-menu{top:37px;width:313px;margin-right:-1px}.intgr-install-callout .dropdown-menu .boxed-group-list li{margin-right:0;margin-left:0}.intgr-install-callout .dropdown-menu .boxed-group-list li:only-child{border-radius:3px}.intgr-install-callout .dropdown-menu .boxed-group-list li:first-child{border-radius:3px 3px 0 0}.intgr-install-callout .dropdown-menu .boxed-group-list li:last-child{border-radius:0 0 3px 3px}.intgr-install-callout .avatar-octicon-lockup{position:absolute;top:2px;left:0}.intgr-install-callout .avatar-octicon-lockup .octicon{position:absolute;right:-6px;bottom:-6px;text-shadow:-2px -2px 0 #fff}.intgr-install-callout .avatar-octicon-lockup .octicon::after{position:absolute;top:6px;left:-1px;display:block;width:7px;height:2px;content:"";background-color:#fff;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.intgr-info-list{padding:0 20px;color:#767676}.intgr-info-list .btn-outline{margin-bottom:5px}.intgr-info-list dd{margin-bottom:30px}.intgr-info-list li{list-style-type:none}.intgr-admin-link{position:relative;display:inline-block;height:25px;padding-left:23px;font-size:13px;vertical-align:middle;border:1px solid #ededed;border-radius:3px}.intgr-admin-link.draft-tag{padding-left:25px;border:0}.intgr-admin-link.draft-tag .octicon,.intgr-admin-link.draft-tag:hover .octicon{color:#fff}.intgr-admin-link.draft-tag:hover{text-decoration:none;background-color:#000}.intgr-admin-link:hover .octicon{color:#4078c0}.intgr-admin-link .octicon{position:absolute;top:3px;left:5px;color:#767676}.intgr-feat-header{position:relative;width:85%;padding:0 65px 10px;color:#d7def1}.intgr-feat-header .intgr-admin-link{border-color:rgba(215,222,241,0.6)}.intgr-feat-header .intgr-admin-link .octicon{color:#d7def1}.intgr-feat-header .intgr-admin-link:hover .octicon{color:#fff}.intgr-feat-header .marketing-hero-octicon{position:absolute;top:0;left:5px;width:50px;height:50px;border-width:3px}.intgr-feat-header .marketing-hero-octicon .octicon{margin-top:11px}.intgr-feat-header h2{margin:0;font-size:25px;line-height:50px;color:#fff}.intgr-feat-header p{max-width:580px;margin:0;font-size:18px}.integrations-breadcrumb{display:inline-block;font-weight:normal;color:#8296cc}.integrations-breadcrumb-link{line-height:0;color:#d7def1}.integrations-breadcrumb-link:hover{color:#fff;text-decoration:none}.integration-settings-callout{padding:20px 20px 20px 80px;margin-bottom:10px;text-align:left;background-color:#fff;border-color:#d8d8d8;box-shadow:none}.integration-settings-callout h3{margin:0}.integration-settings-callout p{width:450px;margin:0;font-size:12px;color:#767676}.integration-settings-callout .marketing-hero-octicon{float:left;width:40px;height:40px;margin:5px 0 0 -60px;border-width:2px}.integration-settings-callout .marketing-hero-octicon .octicon-code{width:17px;height:20px;margin-top:7px}.integration-settings-callout .browse-directory-btn{margin-left:20px}.integrations-callout-standalone .integration-settings-callout{margin-bottom:20px;border-color:#e5e5e5;border-radius:3px}.integrations-auth-wrapper{width:511px;margin:60px auto}.integrations-auth-header{font-size:20px;text-align:center}.integrations-permissions-group dt{font-size:18px;font-weight:normal}.integrations-permissions-group .integrations-permission{position:relative;padding-left:22px;margin-bottom:10px;list-style-type:none}.integrations-permissions-group .integrations-permission .octicon{position:absolute;top:1px;left:0;margin-right:10px}.integrations-install-target .select-menu{vertical-align:middle}.integrations-install-target input[type=radio]{margin-right:10px}.integrations-install-target .flash{background-color:transparent}.integrations-install-target .flash-error{background-color:transparent;border:0}.integrations-install-target .octicon-lock,.integrations-install-target .octicon-repo{margin-right:3px}.integrations-install-target .octicon-lock{color:#4c4a42}.integrations-install-target .private{background-color:#fff9ea}.integrations-install-target .navigation-focus.private{background-color:#4078c0}.integrations-install-target .navigation-focus .octicon-lock{color:inherit}.integration-description p.truncated-description{display:block;margin-bottom:0}.integration-description .full-description{display:none;margin-bottom:0}.integration-description.open .truncated-description{display:none}.integration-description.open .full-description{display:block}.integration-categories{margin-top:20px}.integration-landing .markdown-body p{margin-top:16px}.integration-landing .integration-description{font-size:18px;font-weight:300;color:#555}.integration-landing .body-type-next{font-size:16px;line-height:1.6;word-wrap:break-word}.integration-landing .item-author{padding-right:20px}.integration-landing .band{padding:40px 0}.integration-landing .band p:last-child{margin-bottom:0}.integration-settings-show .octicon-header .octicon{margin-right:10px;color:#999;vertical-align:middle}.integration-settings-show .listgroup-item{line-height:inherit}.integration-settings-show .listgroup .listgroup-padded .listgroup-item{min-height:40px;padding:15px}.integration-settings-show .listgroup-item-title{line-height:21px;color:#333}.integration-settings-show .subhead.subhead-nude{margin-bottom:4px;border-bottom-width:0 !important}.integration-settings-show .fw-normal{font-weight:normal !important}.listgroup-item{line-height:inherit}.listgroup-item.disabled{background-color:#fafafa}.listgroup-item.disabled .listgroup-item-title{color:#333}.listgroup.listgroup-padded .listgroup-item{min-height:40px;padding:15px}.listgroup-danger{border-color:#fcdede}.listgroup-danger .listgroup-item{border-color:#fcdede}.integration-key-management-wrapper .integration-key-downloading{display:none}.integration-key-management-wrapper.downloading .integration-key-downloading{display:block}.integration-key-management-wrapper.downloading .integration-key-management{display:none}.integration-key-management-wrapper .blankslate{margin-bottom:30px}.integration-permissions-selector .select-menu-item-text .octicon{position:relative;top:-1px;margin-right:4px}.integration-permissions-container{color:#333}.integration-permissions-container .integration-permissions-info{display:inline-block;width:74%}.integration-permissions-container .listgroup-item-title{display:inline-block;width:25%;vertical-align:top}.integration-permissions-container .listgroup-item-body{display:inline-block;max-width:72%}.integration-permissions-container .send-events{display:block}.integration-permissions-container .send-events .hook-event{line-height:1.6;vertical-align:top}.integration-permissions-container .send-events .flash{background-color:transparent}.integration-permissions-container .send-events .flash-error{background-color:transparent;border:0}.nice-meta-list{display:block;padding:12px 0;list-style-type:none}.nice-meta-list dt{color:#999}.nice-meta-list dd{margin-bottom:12px}.link-small{color:#767676;-webkit-transition:color 500ms ease;transition:color 500ms ease}.listgroup-item:hover .link-small{color:#4078c0}.bot-identifier{padding:1px 6px;font-size:12px;font-weight:normal;color:#767676;background-color:none;border:1px solid #d8d8d8;border-radius:3px}.features-next .lead strong{color:#444}.features-next .native-mobile-screens{padding-left:0;line-height:0;list-style-type:none;border-bottom:solid 1px #d9d9d9}.features-next .native-mobile-screens li{display:inline;margin-right:5px;margin-left:5px}.team-org-chart{width:470px;margin:30px auto}.team-org-chart .octicon{vertical-align:middle}.team-org-group{padding:10px;margin-bottom:13px;font-size:16px;text-align:center;background-color:#fff;border:solid 1px #ccc;border-radius:3px}.team-org-group strong{color:#333}.team-org-team{display:inline-block;width:147px;height:120px;vertical-align:top}.team-org-team+.team-org-team{margin-left:10px}.jersey-red{color:#bd2c00}.jersey-green{color:#6cc644}.jersey-orange{color:#c9510c}.team-org-members{margin-top:15px}.team-org-members .octicon{color:#aaa}.team-org-repos .octicon{margin:0 5px;color:#bbb}.team-animation{-webkit-animation-duration:12s;animation-duration:12s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.team-design{-webkit-animation-name:teamDesign;animation-name:teamDesign}.team-dev{-webkit-animation-name:teamDev;animation-name:teamDev}.team-marketing{-webkit-animation-name:teamMarketing;animation-name:teamMarketing}.team-dev-design{-webkit-animation-name:teamDevDesign;animation-name:teamDevDesign}.team-dev-design-marketing{-webkit-animation-name:teamDevDesignMarketing;animation-name:teamDevDesignMarketing}.features-section img{max-width:100%}.features-section code{padding:3px 5px;font-size:0.9em;background-color:#e7e7e7;border-radius:2px}.features-section p{max-width:750px;margin-right:auto;margin-left:auto}.features-repo-count{white-space:nowrap}.features-content-right{float:right;width:470px;text-align:left}.features-content-left{float:left;width:470px;text-align:left}.diagram-icon{position:absolute;width:53px;height:53px;line-height:55px;color:#4078c0;text-align:center;background-color:#fff;border:solid 4px #4078c0;border-radius:50px}.diagram-icon svg{margin-top:-11px}.diagram-icon-small{position:absolute;color:#4078c0}.diagram-icon-small svg{margin-top:-3px}.diagram-icon-branch{top:-13px;left:81px;-webkit-animation:bounceIn 0.6s ease-in-out 0.25s 1 normal both;animation:bounceIn 0.6s ease-in-out 0.25s 1 normal both}.diagram-icon-pr{top:89px;left:405px;-webkit-animation:bounceIn 0.6s ease-in-out 1.8s 1 normal both;animation:bounceIn 0.6s ease-in-out 1.8s 1 normal both}.diagram-icon-merge{top:-13px;left:843px;-webkit-animation:bounceIn 0.6s ease-in-out 3.7s 1 normal both;animation:bounceIn 0.6s ease-in-out 3.7s 1 normal both}.diagram-icon-commit-1{top:101px;left:240px;background-color:#fff;-webkit-animation:bounceIn 0.6s ease-in-out 1.3s 1 normal both;animation:bounceIn 0.6s ease-in-out 1.3s 1 normal both}.diagram-icon-commit-2{top:101px;left:295px;background-color:#fff;-webkit-animation:bounceIn 0.6s ease-in-out 1.4s 1 normal both;animation:bounceIn 0.6s ease-in-out 1.4s 1 normal both}.diagram-icon-commit-3{top:101px;left:350px;background-color:#fff;-webkit-animation:bounceIn 0.6s ease-in-out 1.5s 1 normal both;animation:bounceIn 0.6s ease-in-out 1.5s 1 normal both}.diagram-icon-discussion-1{top:79px;left:488px;opacity:0.3;-webkit-animation:bounceIn 0.6s ease-in-out 2s 1 normal both;animation:bounceIn 0.6s ease-in-out 2s 1 normal both}.diagram-icon-commit-4{top:101px;left:515px;background-color:#fff;-webkit-animation:bounceIn 0.6s ease-in-out 2.1s 1 normal both;animation:bounceIn 0.6s ease-in-out 2.1s 1 normal both}.diagram-icon-discussion-2{top:131px;left:542px;opacity:0.3;-webkit-animation:bounceIn 0.6s ease-in-out 2.2s 1 normal both;animation:bounceIn 0.6s ease-in-out 2.2s 1 normal both}.diagram-icon-commit-5{top:101px;left:570px;background-color:#fff;-webkit-animation:bounceIn 0.6s ease-in-out 2.3s 1 normal both;animation:bounceIn 0.6s ease-in-out 2.3s 1 normal both}.diagram-icon-discussion-3{top:79px;left:597px;opacity:0.3;-webkit-animation:bounceIn 0.6s ease-in-out 2.4s 1 normal both;animation:bounceIn 0.6s ease-in-out 2.4s 1 normal both}.diagram-icon-commit-6{top:101px;left:625px;background-color:#fff;-webkit-animation:bounceIn 0.6s ease-in-out 2.5s 1 normal both;animation:bounceIn 0.6s ease-in-out 2.5s 1 normal both}.diagram-icon-discussion-4{top:131px;left:652px;opacity:0.3;-webkit-animation:bounceIn 0.6s ease-in-out 2.6s 1 normal both;animation:bounceIn 0.6s ease-in-out 2.6s 1 normal both}.diagram-icon-commit-7{top:101px;left:680px;background-color:#fff;-webkit-animation:bounceIn 0.6s ease-in-out 2.7s 1 normal both;animation:bounceIn 0.6s ease-in-out 2.7s 1 normal both}.diagram-icon-discussion-5{top:79px;left:707px;opacity:0.3;-webkit-animation:bounceIn 0.6s ease-in-out 2.8s 1 normal both;animation:bounceIn 0.6s ease-in-out 2.8s 1 normal both}.features-branch-diagram{position:relative;margin-top:40px;margin-bottom:50px}.preload .diagram-animation{opacity:0;-webkit-animation:none !important;animation:none !important}.mobile .diagram-animation{opacity:1;-webkit-animation:none !important;animation:none !important}.features-highlight{display:inline-block;padding:10px;margin:8px 0;background-color:#e7e7e7;border-radius:3px}.features-highlight i{font-style:normal;color:#4078c0}.features-callout{display:inline-block;width:450px;padding:10px;margin-top:15px;margin-bottom:45px;font-size:14px;line-height:1.4;color:#767676;text-align:left;border:solid 1px #eee;border-radius:3px}.features-callout>p{margin-bottom:0}.features-callout .btn-fake{cursor:default}.features-callout .btn-fake:hover,.features-callout .btn-fake:active{background-color:#eee;background-image:-webkit-linear-gradient(#fcfcfc, #eee);background-image:linear-gradient(#fcfcfc, #eee);border-color:#d5d5d5;box-shadow:inherit}.features-callout .btn-fake .octicon{vertical-align:text-top}.features-copy-minor{font-size:12px;color:#555}.svn-callout{padding-top:30px;padding-left:217px;clear:both;line-height:0.8;text-align:left}.svn-callout-heading{font-size:18px;color:#444}.svn-callout-logo{float:left;margin-top:-1px;margin-left:-70px}@-webkit-keyframes teamDev{3%{color:#bd2c00;fill:#bd2c00;border-color:#bd2c00}27%{color:#bd2c00;fill:#bd2c00;border-color:#bd2c00}30%{color:#bbb;fill:#bbb;border-color:#ccc}}@keyframes teamDev{3%{color:#bd2c00;fill:#bd2c00;border-color:#bd2c00}27%{color:#bd2c00;fill:#bd2c00;border-color:#bd2c00}30%{color:#bbb;fill:#bbb;border-color:#ccc}}@-webkit-keyframes teamDesign{34%{color:#bbb;fill:#bbb;border-color:#ccc}37%{color:#6cc644;fill:#6cc644;border-color:#6cc644}60%{color:#6cc644;fill:#6cc644;border-color:#6cc644}63%{color:#bbb;fill:#bbb;border-color:#ccc}}@keyframes teamDesign{34%{color:#bbb;fill:#bbb;border-color:#ccc}37%{color:#6cc644;fill:#6cc644;border-color:#6cc644}60%{color:#6cc644;fill:#6cc644;border-color:#6cc644}63%{color:#bbb;fill:#bbb;border-color:#ccc}}@-webkit-keyframes teamMarketing{67%{color:#bbb;fill:#bbb;border-color:#ccc}70%{color:#c9510c;fill:#c9510c;border-color:#c9510c}94%{color:#c9510c;fill:#c9510c;border-color:#c9510c}}@keyframes teamMarketing{67%{color:#bbb;fill:#bbb;border-color:#ccc}70%{color:#c9510c;fill:#c9510c;border-color:#c9510c}94%{color:#c9510c;fill:#c9510c;border-color:#c9510c}}@-webkit-keyframes teamDevDesign{3%{color:#bd2c00;fill:#bd2c00;border-color:#bd2c00}27%{color:#bd2c00;fill:#bd2c00;border-color:#bd2c00}30%{color:#bbb;fill:#bbb;border-color:#ccc}34%{color:#bbb;fill:#bbb;border-color:#ccc}37%{color:#6cc644;fill:#6cc644;border-color:#6cc644}60%{color:#6cc644;fill:#6cc644;border-color:#6cc644}63%{color:#bbb;fill:#bbb;border-color:#ccc}}@keyframes teamDevDesign{3%{color:#bd2c00;fill:#bd2c00;border-color:#bd2c00}27%{color:#bd2c00;fill:#bd2c00;border-color:#bd2c00}30%{color:#bbb;fill:#bbb;border-color:#ccc}34%{color:#bbb;fill:#bbb;border-color:#ccc}37%{color:#6cc644;fill:#6cc644;border-color:#6cc644}60%{color:#6cc644;fill:#6cc644;border-color:#6cc644}63%{color:#bbb;fill:#bbb;border-color:#ccc}}@-webkit-keyframes teamDevDesignMarketing{3%{color:#bd2c00;fill:#bd2c00;border-color:#bd2c00}27%{color:#bd2c00;fill:#bd2c00;border-color:#bd2c00}30%{color:#bbb;fill:#bbb;border-color:#ccc}34%{color:#bbb;fill:#bbb;border-color:#ccc}37%{color:#6cc644;fill:#6cc644;border-color:#6cc644}60%{color:#6cc644;fill:#6cc644;border-color:#6cc644}63%{color:#bbb;fill:#bbb;border-color:#ccc}67%{color:#bbb;fill:#bbb;border-color:#ccc}70%{color:#c9510c;fill:#c9510c;border-color:#c9510c}94%{color:#c9510c;fill:#c9510c;border-color:#c9510c}}@keyframes teamDevDesignMarketing{3%{color:#bd2c00;fill:#bd2c00;border-color:#bd2c00}27%{color:#bd2c00;fill:#bd2c00;border-color:#bd2c00}30%{color:#bbb;fill:#bbb;border-color:#ccc}34%{color:#bbb;fill:#bbb;border-color:#ccc}37%{color:#6cc644;fill:#6cc644;border-color:#6cc644}60%{color:#6cc644;fill:#6cc644;border-color:#6cc644}63%{color:#bbb;fill:#bbb;border-color:#ccc}67%{color:#bbb;fill:#bbb;border-color:#ccc}70%{color:#c9510c;fill:#c9510c;border-color:#c9510c}94%{color:#c9510c;fill:#c9510c;border-color:#c9510c}}@-webkit-keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(0.3);transform:scale(0.3)}50%{opacity:1;-webkit-transform:scale(1.05);transform:scale(1.05)}70%{-webkit-transform:scale(0.9);transform:scale(0.9)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(0.3);transform:scale(0.3)}50%{opacity:1;-webkit-transform:scale(1.05);transform:scale(1.05)}70%{-webkit-transform:scale(0.9);transform:scale(0.9)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.segmented-nav-tab{display:none;margin-top:40px}.segmented-nav-tab::before{display:table;content:""}.segmented-nav-tab::after{display:table;clear:both;content:""}.segmented-nav-tab.active{display:block}.list-of-octicons{margin-bottom:28px;margin-left:26px;list-style:none}.list-of-octicons li{position:relative;margin-bottom:20px}.list-of-octicons .octicon{position:absolute;top:3px;margin-left:-22px;color:#4078c0}.about-header{height:300px;background-color:#111;background-image:url("/images/modules/about/about-header.jpg");background-position:50%;background-size:cover}.about-header.team{background-image:url("/images/modules/about/team-header.jpg")}.about-header.press{background-image:url("/images/modules/about/press-header.jpg")}.about-header.jobs{background-image:url("/images/modules/about/jobs-header.jpg")}.social-callout-twitter{padding-right:18px;margin-top:40px;margin-bottom:20px}.social-callout-twitter:hover .social-callout-twitter-logo{background-image:url("/images/icons/twitter-white.png")}.social-callout-twitter-logo{display:inline-block;width:32px;height:32px;vertical-align:middle;background:url("/images/icons/twitter.png") 0 0 no-repeat;background-size:32px auto}.account-membership-form .become-a-member,.account-membership-form .already-a-member{display:none}.account-membership-form.is-member .already-a-member{display:block}.account-membership-form.is-not-member .become-a-member{display:block}.billing-plans tbody td{width:25%;vertical-align:middle}.billing-plans .current{background-color:#f2ffed}.billing-plans .name{font-size:14px;font-weight:bold;color:#333}.billing-plans .coupon{font-size:12px}.billing-plans .coupon td{color:#fff;background-color:#6cc644}.billing-plans .coupon .text-right{white-space:nowrap}.billing-plans .coupon.expiring td{background-color:#df6e00}.billing-plans .coupon.expiring .coupon-label::after{border-bottom-color:#df6e00}.billing-plans tbody>.selected{background-color:#fdffce}.coupon-label{position:relative;padding:9px;margin:-9px}.coupon-label::after{position:absolute;bottom:100%;left:15px;width:0;height:0;pointer-events:none;content:" ";border:solid transparent;border-width:5px;border-bottom-color:#6cc644}.boxed-group-table .toggle-currency{font-size:11px;font-weight:normal}.has-removed-contents{display:none}.currency-notice{margin-bottom:10px}.org-login{margin-top:-30px;margin-bottom:30px}.org-login img{width:450px;padding:1px;margin:10px -25px;border:1px solid #ccc}.plan-notice{padding:10px;margin-bottom:0;border-top:1px solid #eee}.avatar-cell{width:40px}.member-list-item .member-username{display:inline}.member-list-item .member-link{display:inline}.actor-and-action{font-weight:bold}.vertical-separator{margin-right:8px;margin-left:5px;border-left:1px solid #808080}.audit-log-search .audit-search-form{margin-bottom:10px}.audit-log-search .audit-results-actions{margin:15px 0}.audit-log-search .audit-search-clear{margin-bottom:0}.auth-form{width:340px;margin:0 auto}.auth-form .form-group.warn .warning,.auth-form .form-group.warn .error,.auth-form .form-group.errored .warning,.auth-form .form-group.errored .error{max-width:274px}.auth-form-header{padding:10px 20px;margin:0;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.3);background-color:#829aa8;border:1px solid #768995;border-radius:3px 3px 0 0}.auth-form-header h1{font-size:16px}.auth-form-header h1 a{color:#fff}.auth-form-header .octicon{position:absolute;top:10px;right:20px;color:rgba(0,0,0,0.4);text-shadow:0 1px 0 rgba(255,255,255,0.1)}.auth-form-message{max-height:140px;padding:20px 20px 10px;overflow-y:scroll;border:1px solid #d8dee2;border-radius:3px}.auth-form-message ul{padding-left:inherit;margin-bottom:inherit}.auth-form-body{padding:20px;font-size:14px;background-color:#fff;border:1px solid #d8dee2;border-top:0;border-radius:0 0 3px 3px}.auth-form-body .input-block{margin-top:5px;margin-bottom:15px}.auth-form-body p{margin:10px 0}.auth-form-body ul{padding-left:inherit;margin-bottom:inherit}.two-factor-help{position:relative;padding:10px 10px 10px 36px;margin:60px 0 auto auto;border:1px solid #eaeaea;border-radius:3px}.two-factor-help h4{margin-top:0;margin-bottom:5px}.two-factor-help .octicon-device-mobile{position:absolute;top:10px;left:10px}.two-factor-help .octicon-key{position:absolute;left:10px}.two-factor-help ul{list-style-type:none}.u2f-send-code-spinner{position:relative;bottom:2px;display:none;vertical-align:bottom}.loading .u2f-send-code-spinner{display:inline}.u2f-login-spinner{top:2px}.u2f-auth-header{padding-bottom:10px;margin-bottom:20px;border-bottom:1px solid #eaeaea}.auth-form-body .u2f-auth-form-body{padding:0px}.u2f-auth-form-body{padding:30px 30px 20px;text-align:center}.u2f-auth-form-body button{margin-top:20px}.u2f-auth-form-body .u2f-enabled{display:block}.u2f-auth-form-body .u2f-disabled{display:none}.u2f-auth-form-body.unavailable .u2f-enabled{display:none}.u2f-auth-form-body.unavailable .u2f-disabled{display:block}.u2f-auth-icon{color:#aaa}.flash.sms-error,.flash.sms-success{display:none;margin:0 0 10px}.is-sent .sms-success{display:block}.is-sent .sms-error{display:none}.is-not-sent .sms-success{display:none}.is-not-sent .sms-error{display:block}.session-authentication{background-color:#f9f9f9}.session-authentication .header-logged-out{background-color:transparent;border-bottom:0}.session-authentication .header-logo{display:block;color:#333;text-align:center}.session-authentication .flash{padding:15px 20px;margin:0 auto;margin-bottom:10px;font-size:13px;border-style:solid;border-width:1px;border-radius:5px}.session-authentication .flash .container{width:auto}.session-authentication .flash .flash-close{height:40px}.session-authentication .flash.is-signed-in,.session-authentication .flash.is-signed-out{width:100%;border-top:0;border-right:0;border-left:0;border-radius:0}.session-authentication .auth-form label{display:block;margin-bottom:7px;font-weight:normal}.session-authentication .auth-form .btn{margin-top:20px}.session-authentication .auth-form .u2f-error{margin-bottom:0}.session-authentication .label-link{float:right;font-size:12px}.session-authentication .auth-form-header{margin-bottom:15px;color:#333;text-align:center;text-shadow:none;background-color:transparent;border:0}.session-authentication .auth-form-header h1{font-size:24px;font-weight:300;letter-spacing:-0.5px}.session-authentication .auth-form-body{border-top:1px solid #d8dee2;border-radius:5px}.session-authentication .auth-form-body.u2f-auth-form-body{padding:20px}.session-authentication .create-account-callout{padding:15px 20px;text-align:center;border:1px solid #d8dee2;border-radius:5px}.session-authentication .two-factor-help{padding:0 0 0 20px;margin-top:20px;border:0}.session-authentication .two-factor-help .octicon-device-mobile{top:3px;left:0}.session-authentication .two-factor-help .octicon-key{top:0;left:0}.session-authentication .site-footer{border-top:0}.session-authentication .site-footer-links{text-align:center}.session-authentication .site-footer-links a{color:#9b9b9b}.session-authentication.enterprise .header-logged-out{padding:48px 0 28px;background-color:transparent}.session-authentication.hosted .header-logged-out{padding:40px 0 20px;background-color:transparent}.cvv-hint{position:relative;padding-right:15px}.cvv-hint:hover .cvv-hint-tooltip{display:block}.cvv-hint-tooltip{position:absolute;left:-5px;z-index:1000;display:none;padding:15px;background-color:#fff;border:1px solid #d0d0d0;border-radius:3px;-webkit-transform:translateX(-100%) translateY(-50%);transform:translateX(-100%) translateY(-50%)}.credit-card{position:relative;width:250px;height:150px;padding:20px;margin-top:5px;background-color:#f5f5f5;border-radius:10px}.credit-card.amex{margin-top:15px}.credit-card.amex .title{position:relative;top:-5px;z-index:1;font-family:"Arial Black", "Arial Bold", Gadget, sans-serif;color:#999;text-align:center;letter-spacing:1px;-webkit-transform:scale(1.3, 1);transform:scale(1.3, 1)}.credit-card.amex .card-number{position:relative;display:inline-block;margin-top:40px;font-size:15px;white-space:nowrap}.credit-card.amex .gladiator{position:absolute;top:50px;left:50%;width:70px;height:80px;margin-left:-35px;background-color:#f5f5f5;border:3px solid #fff;border-radius:50%;box-shadow:0 0 1px #aaa}.credit-card.normal .strap{height:20px;margin:-5px -20px 15px;background-color:#555}.credit-card.normal .signature{display:inline-block;width:150px;height:30px;font-family:"Brush Script MT", cursive;font-size:17px;line-height:33px;color:#767676;text-indent:10px;letter-spacing:-1px;white-space:nowrap;background-color:#fff}.credit-card .cvv{position:relative;top:-10px;left:-7px;display:inline-block;padding:2px 5px;font-family:monospace;font-size:10px;line-height:1;text-align:center;border:2px solid #f00;border-top-left-radius:20px 10px;border-top-right-radius:20px 10px;border-bottom-right-radius:20px 10px;border-bottom-left-radius:20px 10px}.credit-card .cvv span{position:absolute;right:100%;margin-right:5px;color:#767676}.credit-card .text{display:block;font-family:monospace;font-size:7px;font-weight:bold;line-height:1.1;text-transform:uppercase}.billing-addon-items table input{width:5em}.billing-addon-items td{vertical-align:middle;border-bottom:0}.billing-addon-items td.fixed{width:150px}.billing-addon-items td.black{color:#000}.billing-addon-items tr{border-bottom:1px solid #eee}.billing-addon-items tr:last-child{border-bottom-width:0}.billing-addon-items tr:nth-child(even){background-color:#fafafa}.billing-addon-items tr.total-row{color:#bd2c00;background-color:#fff}.billing-addon-items tr.dark-row{background-color:#fafafa;border-bottom-width:1px}.billing-addon-items .new-addon-items{margin-left:5px}.billing-addon-items .addon-cost{color:#999}.billing-addon-items .discounted-original-price{color:#666}.billing-addon-items .form-submit,.billing-addon-items .payment-method{margin-left:10px}.billing-addon-items .payment-summary{margin-right:10px;margin-left:10px}.billing-credit-card .javascript-disabled-overlay{position:absolute;top:0;left:0;z-index:1;display:none;width:100%;height:100%;background-color:#fff;opacity:0.5}.billing-credit-card.disabled .javascript-disabled-overlay,.billing-credit-card.unsupported .javascript-disabled-overlay{display:block}.billing-actions{padding-bottom:10px}.help.billing-next-payment-help{margin-top:0}.billing-extra-box{padding-left:10px;margin:10px 0 0;border-left:3px solid #eee}.billing-section{padding:15px 10px;line-height:1.5em;border-bottom:1px solid #eee}.billing-section.oneliner{padding-bottom:14px}.billing-section.oneliner .action-button{margin-top:-4px;margin-bottom:-4px}.billing-section p{margin:10px 0 0}.billing-section .disabled-message{color:#bd2c00}.billing-section .action-button{float:right;margin-bottom:5px;margin-left:10px}.billing-section .btn-octicon{float:right;padding:4px;margin-left:5px}.billing-section .section-label{position:absolute;width:85px;font-weight:normal;color:#767676;text-align:right}.billing-section .section-content{margin-left:100px;color:#333}.billing-section .pending-invitations-link,.billing-section .subtle-link{color:#767676}.billing-section:last-child{border-bottom:0}.billing-section.info-section{overflow:hidden;color:#767676;background:#f9f9f9;border-bottom:0}.billing-section.info-section .octicon-info{font-size:30px;color:#ddd}.billing-section .usage-bar{max-width:304px}.usage-bar{width:100%;margin:5px 0 0;background:#eee;border-radius:20px}.usage-bar.exceeded .progress{background:#bd2c00}.usage-bar .progress{position:relative;max-width:100%;height:5px;background:#67d07c;border-radius:20px;-webkit-transition:width 0.3s;transition:width 0.3s}.usage-bar .progress.no-highlight{background:#999}.live-update-seats-usage{margin:10px 0 5px}.billing-per-seat-callout{position:relative}.billing-per-seat-callout::after{position:absolute;top:1px;left:25px;display:block;width:12px;height:12px;content:"";background-color:#fafafa;box-shadow:1px -1px 0 0 #eee;-webkit-transform:translate(-50%, -50%) rotate(-45deg);transform:translate(-50%, -50%) rotate(-45deg)}.per-seat-help{padding:10px;border-bottom:1px solid #eee}.per-seat-help .per-seat-help-heading{margin:5px 0 10px;color:#bd2c00}.per-seat-help .per-seat-help-heading .octicon-alert{margin-right:3px;font-size:14px}.per-seat-help-list{list-style:none}.per-seat-help-list li{margin:5px 0}.per-seat-help-list .octicon-chevron-right{float:left;margin:0 6px 7px 7px;color:#999}.billing-data-usage-meter{margin-bottom:15px}.billing-data-usage-meter:last-child{margin-bottom:5px}.packs-table .desc{width:1%;white-space:nowrap}.pack-upgrade-plus{font-size:16px;font-weight:bold;color:#6cc644;text-align:center}.lfs-data-icon{color:#767676;text-align:center}.lfs-data-icon.dark{color:#333}.lfs-data-icon.octicon-database{margin-right:3px;margin-left:2px}.setup-wrapper .paypal-container{margin-bottom:30px}.setup-wrapper .paypal-logged-in .paypal-container{margin-bottom:10px}.payment-methods{position:relative}.payment-methods .selected-payment-method{display:none}.payment-methods .selected-payment-method::before{display:table;content:""}.payment-methods .selected-payment-method::after{display:table;clear:both;content:""}.payment-methods .selected-payment-method.active{display:block}.payment-methods .pay-with-header{margin:5px 0}.payment-methods .pay-with-paypal .setup-creditcard-form,.payment-methods .pay-with-paypal .paypal-form-actions,.payment-methods .pay-with-paypal .terms,.payment-methods .pay-with-paypal .paypal-signed-in,.payment-methods .pay-with-paypal .paypal-down-flash,.payment-methods .pay-with-paypal .loading-paypal-spinner{display:none}.payment-methods.paypal-loading .loading-paypal-spinner{display:block}.payment-methods.paypal-down .paypal-down-flash{display:block}.payment-methods.paypal-logged-in .paypal-sign-in{display:none}.payment-methods.paypal-logged-in .setup-creditcard-form,.payment-methods.paypal-logged-in .paypal-form-actions,.payment-methods.paypal-logged-in .terms,.payment-methods.paypal-logged-in .paypal-signed-in{display:block}.payment-methods.has-paypal-account .paypal-sign-in{display:none}.payment-methods.has-paypal-account .paypal-signed-in{display:block}.contact-us-alert{padding:10px;padding-left:30px;font-size:12px;background-color:#fff9ea;border-bottom:1px solid #eee}.contact-us-alert .octicon{position:absolute;margin-left:-20px;color:#767676}.setup-main .contact-us-alert{margin:0 0 20px;border:1px solid #ddd;border-radius:3px}.paypal-label{margin:15px 0 10px;font-weight:bold}.paypal-container{display:inline-block;margin-bottom:15px;vertical-align:top;background-color:#f9f9f9;border-radius:4px}.braintree-paypal-loggedin{padding:11px 16px !important;background-position:12px 50% !important;border:1px solid #ddd !important;border-radius:4px}.bt-pp-name{margin-left:20px !important}.bt-pp-email{margin-left:15px !important}.bt-pp-cancel{font-size:0 !important;line-height:1 !important;color:#a00 !important;text-decoration:none !important}.payment-history .id,.payment-history .date,.payment-history .receipt,.payment-history .status,.payment-history .amount{width:1%;white-space:nowrap}.payment-history .break-all{word-break:break-all}.payment-history .receipt{text-align:center}.payment-history .currency,.payment-history .status{color:#767676}.payment-history .status-icon{width:14px;text-align:center}.payment-history .succeeded .status{color:#6cc644}.payment-history .refunded,.payment-history .failed{background:#f5f5f5}.payment-history .refunded td,.payment-history .failed td{opacity:0.5}.payment-history .refunded .receipt,.payment-history .refunded .status,.payment-history .failed .receipt,.payment-history .failed .status{opacity:1}.payment-history .refunded .status{color:#999}.payment-history .failed .status{color:#bd2c00}.paypal-icon{margin:0 2px 0 1px;vertical-align:middle}.inline-form-action{display:inline}.boxed-group .boxed-group-content{margin:10px}.currency-container .local-currency,.currency-container .local-currency-block{display:none}.currency-container.open .local-currency{display:inline}.currency-container.open .local-currency-block{display:block}.currency-container.open .default-currency{display:none}.strong-label{display:inline-block;margin-bottom:5px;font-weight:bold}.discounted-original-price{font-weight:normal;color:#767676;text-decoration:line-through}.billing-managers-abilities-list{list-style:none}.billing-managers-abilities-list li{margin-bottom:6px}.billing-managers-abilities-list .octicon{width:24px;text-align:center}.billing-managers-abilities-list .octicon-check{color:#6cc644}.billing-managers-abilities-list .octicon-x{color:#bd2c00}.billing-manager-input{width:500px}.billing-manager-banner{padding:30px 20px;margin-bottom:30px;overflow:hidden;background:#f9f9f9;border-bottom:1px solid #eee}.billing-manager-banner .container{position:relative}.billing-manager-banner-text{margin-left:210px;font-size:14px;color:#555}.billing-manager-banner-text .btn{margin-top:8px;margin-right:8px}.billing-manager-banner-title{font-size:12px;font-weight:bold;color:#767676}.billing-manager-icon{position:absolute;top:-35px;left:0;width:180px;height:180px;font-size:180px;color:#e0e0e0}.golden-ticket-banner{margin-top:30px;margin-bottom:15px;text-align:center;border-top:1px solid #e6d445}.golden-ticket{height:60px;margin-top:-30px}.golden-ticket-button{float:left;width:50%;padding:30px 20px;font-size:18px;font-weight:normal}.golden-ticket-button .octicon{margin-right:10px;vertical-align:middle}.golden-ticket-button:first-child{border-radius:3px 0 0 3px}.golden-ticket-button:last-child{border-left:0;border-radius:0 3px 3px 0}.golden-ticket-confirm .setup-header{text-align:center;border:0}.seats-change-arrow{margin:0 10px}.billing-note-block{margin:15px 0}.plan-choice{position:relative;display:block;padding:15px;padding-left:40px;font-weight:normal;background-color:#fafafa;border:1px solid #e0e0e0}.plan-choice.open,.plan-choice.selected{background-color:#fff}.plan-choice-top{border-radius:3px 3px 0 0}.plan-choice-bottom{margin-bottom:20px;border-top:0;border-radius:0 0 3px 3px}.plan-choice-radio{position:absolute;top:18px;left:15px}.plan-choice-exp{margin-top:5px;font-size:12px;color:#767676}.seat-field{width:50px;margin-right:5px}.billing-form-title{font-size:16px}.billing-line-items{margin-top:10px}.billing-line-item{padding:10px 0;font-size:12px;list-style:none;border-top:1px solid #e0e0e0}.billing-line-item::before{display:table;content:""}.billing-line-item::after{display:table;clear:both;content:""}.billing-line-item-last{font-weight:bold;border-top-width:3px}.line-item-value{float:right}.billing-confirmation{width:750px;margin-top:50px}.billing-confirmation .light-label{margin:5px 0;font-weight:normal;color:#999}.billing-confirmation .pending-invitations{font-weight:normal}.billing-confirmation .form-value{margin:3px 0 15px;font-weight:bold}.billing-confirmation .paypal-container{margin-bottom:0}.billing-confirmation-header{padding:5px 0;margin:20px 0;border-bottom:1px solid #e0e0e0}.price-side-note{color:#767676}.price-box{padding:15px}.price-box h2{margin:5px 0}.billing-confirmation-box{margin:20px 0;border:2px solid #6cc644;border-radius:3px}.billing-confirmation-box .boxes::before{display:table;content:""}.billing-confirmation-box .boxes::after{display:table;clear:both;content:""}.billing-confirmation-box.twoup .price-box{float:left;width:50%}.billing-confirmation-box.twoup .price-box:first-child{border-right:1px solid #e0e0e0}.billing-confirmation-box.twoup .price-box:last-child{margin-left:-1px;border-left:1px solid #e0e0e0}.next-charge-box{padding:10px 15px;background:#f9f9f9;border-top:1px solid #e0e0e0}.inline-payment-box{margin:20px 0}.condensed-payment-methods .radio-input:checked+.radio-label .cancel-changing-payment{display:inline}.condensed-payment-methods .cancel-changing-payment{display:none}.condensed-payment-methods .vat-field,.condensed-payment-methods .cc-field,.condensed-payment-methods .expiration-field,.condensed-payment-methods .country-field,.condensed-payment-methods .vat-field{margin-top:15px}.condensed-payment-methods .vat-field{width:100%;margin-bottom:0}.condensed-payment-methods .cc-field{width:42%}.condensed-payment-methods .expiration-field,.condensed-payment-methods .state-field{width:30%}.condensed-payment-methods .expiration-field{white-space:nowrap}.condensed-payment-methods .expiration-field .select{width:40%}.condensed-payment-methods .expiration-divider{width:20%;line-height:30px;text-align:center}.condensed-payment-methods .cvv-field,.condensed-payment-methods .postcode-field{width:28%;margin-top:15px;margin-bottom:0}.condensed-payment-methods .state-field.column,.condensed-payment-methods .postcode-field.column{margin-top:15px;margin-bottom:0}.condensed-payment-methods .country-field{width:42%}.condensed-payment-methods .state-field{width:30%}.condensed-payment-methods .is-international .country-field{width:72%}.condensed-payment-methods .is-international.no-postcodes .country-field{width:100%}.heat[data-heat="1"]{background-color:#ffeca7}.heat[data-heat="2"]{background-color:#ffdd8c}.heat[data-heat="3"]{background-color:#ffdd7c}.heat[data-heat="4"]{background-color:#fba447}.heat[data-heat="5"]{background-color:#f68736}.heat[data-heat="6"]{background-color:#f37636}.heat[data-heat="7"]{background-color:#ca6632}.heat[data-heat="8"]{background-color:#c0513f}.heat[data-heat="9"]{background-color:#a2503a}.heat[data-heat="10"]{background-color:#793738}.blame-breadcrumb .css-truncate-target{max-width:680px}.blame-commit,.blame-commit+.blame-line{border-top:1px solid #e9e9e9}.blame-container{margin-top:-1px}.blame-blob-num{background-color:#fdfdfd}.blame-commit-info{position:relative;width:350px;min-width:350px;max-width:350px;padding:8px 16px 8px 10px;vertical-align:top}.reblame{position:absolute;top:0px;right:-12px;bottom:0px;height:23px;padding:1px 4px;margin:auto 0;color:#fff;cursor:pointer;background-color:#4078c0;background-image:-webkit-linear-gradient(#5386c6, #4078c0);background-image:linear-gradient(#5386c6, #4078c0);border-radius:3px;box-shadow:0 1px 4px rgba(0,0,0,0.15);opacity:0;-webkit-transition:-webkit-transform 0.1s ease-in-out;transition:transform 0.1s ease-in-out;-webkit-transform:scale(0.8, 0.8);transform:scale(0.8, 0.8)}.reblame:hover{-webkit-transform:scale(1, 1);transform:scale(1, 1)}.blame-commit-info:hover .reblame{opacity:1}.blame-commit-avatar{float:left;margin-right:5px}.blame-commit-title{display:inline-block;max-width:230px;overflow:hidden;line-height:1.1;text-overflow:ellipsis;white-space:nowrap;vertical-align:top}.blame-commit-title,.blame-commit-title .message{font-weight:bold;color:#333}.blame-sha{float:right;font:11px Consolas, "Liberation Mono", Menlo, Courier, monospace}.blame-commit-meta{overflow:hidden;font-size:12px;line-height:1.1;color:#767676;text-overflow:ellipsis;white-space:nowrap}.line-age{width:2px;padding:0 1px}.line-age-legend{float:right;margin-top:-25px;font-size:12px;color:#767676}.line-age-legend ol{display:inline-block;margin:0 5px;list-style:none}.line-age-legend ol li{display:inline-block;width:8px;height:10px}.editor-abort{display:inline;font-size:14px}.blob-interaction-bar{position:relative;background-color:#f2f2f2;border-bottom:1px solid #e5e5e5}.blob-interaction-bar::before{display:table;content:""}.blob-interaction-bar::after{display:table;clear:both;content:""}.blob-interaction-bar .octicon-search{position:absolute;top:10px;left:10px;font-size:12px;color:#767676}.blob-filter{width:100%;padding:4px 20px 5px 30px;font-size:12px;border:0;border-radius:0;outline:none}.blob-filter:focus{outline:none}.html-blob{margin-bottom:15px}.blog-title{color:#333}.blog-title-group{font-size:20px;font-weight:normal;line-height:34px}.blog-search{position:relative;float:right}.blog-search .blog-search-input{width:200px;padding-left:28px}.blog-search .octicon-search{position:absolute;top:9px;left:7px;z-index:5;color:#767676}.blog-search-results em{padding:0.1em;background-color:#faffa6}.blog-aside{float:right;width:200px}.blog-aside .btn{margin-bottom:20px;text-align:center}.blog-aside .rss{display:inline-block;margin-left:5px;color:#999}.blog-aside .rss .octicon{float:left;margin-right:5px;color:#c9510c}.blog-content{width:685px}.blog-content h1,.blog-content h2,.blog-content h3{font-weight:500}.blog-content .markdown-body::after{clear:none}.blog-content .markdown-body h2{font-size:20px}.blog-content .markdown-body h3{font-size:18px}.blog-draft-indicator{color:#bd2c00}.blog-post{margin-bottom:60px}.blog-post-meta{margin-bottom:20px;color:#999;list-style:none}.blog-post-meta .meta-item{display:inline;padding-right:20px}.blog-post-meta a{color:#999}.blog-post-meta .author-avatar{vertical-align:top;border-radius:3px}.blog-post-title{margin-top:0;margin-bottom:10px;font-size:32px}.blog-home{display:block;float:left;width:16px;margin-top:-2px;margin-left:-25px;color:#ccc}.blog-home:hover{color:#767676}.blog-home .octicon{vertical-align:middle}.blog-post-body{font-size:16px;line-height:1.6;color:#444}.blog-post-body .anchor{display:none}.blog-post-body img{padding:3px;border:1px solid #d8d8d8}.blog-post-body img.emoji{padding:0;border:0}.blog-post-body iframe{width:100%;border:0}.blog-feedback{margin:50px 0;background-color:#fafafa;border:1px solid #ddd;border-bottom-color:#ccc;border-radius:3px;box-shadow:inset 0 1px 0 #fff, 0 1px 5px #f1f1f1}.blog-feedback-header{padding:10px;margin:0;font-size:14px;font-weight:bold;border-bottom:1px solid #ddd;box-shadow:0 1px 0 #fff}.blog-feedback-header.with-twitter{background:url("/images/icons/twitter.png") 648px 1px no-repeat;background-size:32px auto}.blog-feedback-description{padding:10px;margin:0;color:#767676}.Box{background-color:#fff;border:1px solid #ddd;border-radius:3px}.Box-header{padding:12px;overflow:hidden;background-color:#f5f5f5;border-bottom:1px solid #ddd;border-top-left-radius:2px;border-top-right-radius:2px}.Box-title{overflow:hidden;font-weight:bold}.Box-close{padding:12px 12px;margin:-12px -12px;color:#888}.Box-close:hover{color:#4078c0}.Box-body{padding:12px 12px}.Box-body-row{padding:12px 12px;margin:12px -12px -12px;list-style-type:none;border-top:1px solid #eee}.Box-body-row:first-of-type{margin-top:-12px;border-top:0}.Box-body-row.unread{box-shadow:2px 0 0 #4078c0 inset}.Box-body-row.navigation-focus .Box-row--drag-button{color:#4078c0;cursor:-webkit-grab;cursor:grab;opacity:100}.Box-body-row.navigation-focus.is-dragging .Box-row--drag-button{cursor:-webkit-grabbing;cursor:grabbing}.Box-body-row.navigation-focus.sortable-chosen{background-color:#fafafa}.Box-body-row.navigation-focus.sortable-ghost{background-color:#f5f5f5}.Box-body-row.navigation-focus.sortable-ghost .Box-row--drag-hide{opacity:0}@media (min-width: 1004px){.Box-body-row--highlight.navigation-focus{background-color:#f5f5f5}}.Box-body-row--highlight .Box-row-link{color:#333;text-decoration:none}.Box-body-row--highlight .Box-row-link:hover{color:#4078c0;text-decoration:none}.Box-row--drag-button{opacity:0}.Box-row--checkbox{position:relative;top:1px}.Box-footer{padding:12px;border-top:1px solid #eee}.Box--scrollable{max-height:324px;overflow:scroll}.merge-pr{padding-top:10px;margin:20px 0 0;border-top:1px solid #ddd}.merge-pr.open .merge-branch-form{display:block}.merge-pr.open .branch-action{display:none}.status-heading{margin-bottom:1px}.merge-status-list{max-height:0;padding:0;margin:15px -15px -16px -55px;overflow-y:auto;border:solid #eee;border-width:1px 0 0;-webkit-transition:max-height 0.25s ease-in-out;transition:max-height 0.25s ease-in-out}.statuses-toggle-opened{display:none}.merge-status-item{position:relative;padding:10px 15px;background-color:#fafafa;border-bottom:1px solid #eee}.merge-status-item:last-child{border-bottom:0}.merge-status-item .css-truncate-target{width:68%;max-width:68%}.status-meta{color:#767676}.branch-action-item-icon{float:left;margin-left:-40px}.merge-status-icon{width:30px;margin-top:2px;margin-right:10px}.merge-status-details{margin-left:10px}.merge-pr-more-commits{margin-top:10px;margin-bottom:10px;margin-left:60px;font-size:12px;color:#767676}.branch-action{padding-left:60px;margin-top:15px;margin-bottom:15px}.branch-action .merge-branch-heading{margin-bottom:4px}.branch-action-icon{float:left;width:44px;height:44px;padding:6px;margin-left:-60px;color:#fff;text-align:center;border-radius:3px}.branch-action-body{position:relative;background-color:#fff;border:1px solid #ddd;border-radius:3px}.branch-action-body::after,.branch-action-body::before{position:absolute;top:11px;right:100%;left:-16px;display:block;width:0;height:0;pointer-events:none;content:" ";border-color:transparent;border-style:solid solid outset}.branch-action-body::after{margin-top:1px;margin-left:2px;border-width:7px;border-right-color:#fff}.branch-action-body::before{border-width:8px;border-right-color:#ddd}.branch-action-body .spinner{display:block;float:left;width:32px;height:32px;margin-right:15px;background:url("/images/spinners/octocat-spinner-32.gif") no-repeat}.branch-action-body .merge-message,.branch-action-body .merge-branch-form{padding:15px;background-color:#fafafa;border-top:1px solid #e5e5e5;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.post-merge-message{padding:15px}.branch-action-item{padding:15px 15px 15px 55px;font-size:13px;line-height:1.4}.branch-action-item+.branch-action-item,.branch-action-item+.mergeability-details{border-top:1px solid #e5e5e5}.branch-action-item.open>.merge-status-list{max-height:215px;margin-bottom:-15px}.branch-action-item.open .statuses-toggle-opened{display:inline}.branch-action-item.open .statuses-toggle-closed{display:none}.branch-action-btn{margin-left:15px}.branch-action-item-simple{padding-left:15px}.branch-action-item-simple .merge-status-list{margin-left:-15px}.branch-action-item-simple .merge-status-item{padding-left:12px}.branch-action-state-clean .branch-action-icon{background-color:#6cc644}.branch-action-state-clean .branch-action-body{border-color:#95c97e}.branch-action-state-clean .branch-action-body::before{border-right-color:#95c97e}.branch-action-state-unknown .branch-action-icon,.branch-action-state-unstable .branch-action-icon{background-color:#cea61b}.branch-action-state-unknown .branch-action-body,.branch-action-state-unstable .branch-action-body{border-color:#e2cc7a}.branch-action-state-unknown .branch-action-body::before,.branch-action-state-unstable .branch-action-body::before{border-right-color:#e2cc7a}.branch-action-state-merged .branch-action-icon{background-color:#6e5494}.branch-action-state-merged .branch-action-body{border-color:#cbc0db}.branch-action-state-merged .branch-action-body::before{border-right-color:#cbc0db}.branch-action-state-dirty .branch-action-icon,.branch-action-state-closed-dirty .branch-action-icon,.is-rebasing .branch-action-state-dirty-if-rebasing .branch-action-icon{background-color:#888}.branch-action-state-dirty .branch-action-body,.branch-action-state-closed-dirty .branch-action-body,.is-rebasing .branch-action-state-dirty-if-rebasing .branch-action-body{border-color:#ddd}.branch-action-state-dirty .branch-action-body::before,.branch-action-state-closed-dirty .branch-action-body::before,.is-rebasing .branch-action-state-dirty-if-rebasing .branch-action-body::before{border-right-color:#ddd}.branch-action-state-error .branch-action-icon{background-color:#d84837}.branch-action-state-error .branch-action-body{border-color:#e97a74}.branch-action-state-error .branch-action-body::before{border-right-color:#e97a74}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.branch-action-body .spinner{background-image:url("/images/spinners/octocat-spinner-64.gif");background-size:32px 32px}}.merge-branch-form{display:none;margin:15px 0}.merge-branch-form .commit-form{border-color:#95c97e}.merge-branch-form .commit-form::before{border-right-color:#95c97e}.merge-branch-form.error .commit-form,.merge-branch-form.danger .commit-form{border-color:#e97a74}.merge-branch-form.error .commit-form::before,.merge-branch-form.danger .commit-form::before{border-right-color:#e97a74}.merge-button-matrix-merge-form .merge-branch-form{display:block}.completeness-indicator{width:30px;height:30px;text-align:center}.completeness-indicator .octicon{display:block;margin-top:7px;margin-right:auto;margin-left:auto}.completeness-indicator .octicon-alert{margin-top:6px}.completeness-indicator-success{color:#fff;background-color:#6cc644;border-radius:50%}.completeness-indicator-error{color:#fff;background-color:#bd2c00;border-radius:50%}.completeness-indicator-problem{color:#fff;background-color:#888;border-radius:50%}.pull-merging .pull-merging-error{display:none}.pull-merging.is-error .pull-merging-error{display:block}.pull-merging.is-error .merge-pr{display:none}.RecentBranches{background-color:#fff9ea;border:1px solid #dfd8c2;border-radius:3px}.RecentBranches-item{line-height:28px;color:#a19e7f}.RecentBranches-item+.RecentBranches-item{border-top:1px solid #e5e2c8}.RecentBranches-item-link{color:#6b694f}.RecentBranches-item-link.css-truncate-target{max-width:400px}.RecentBranches--default{background-color:#e2eef9;border-color:#bac6d3}.RecentBranches--default .RecentBranches-item{color:#325472;border-top-color:#bac6d3}.RecentBranches--default .RecentBranches-item-link{color:#4078c0}.range-editor{position:relative;padding:5px 15px 5px 40px;margin-top:15px;margin-bottom:15px;background-color:#fafafa;border:1px solid #e5e5e5;border-radius:3px}.range-editor .dots{font-size:16px}.range-editor .select-menu{position:relative;display:inline-block}.range-editor .select-menu.fork-suggester{display:none}.range-editor .branch-name{line-height:22px}.range-editor .branch .css-truncate-target,.range-editor .fork-suggester .css-truncate-target{max-width:180px}.range-editor .pre-mergability{display:inline-block;padding:5px;line-height:26px;vertical-align:middle}.range-editor .pre-mergability .octicon{vertical-align:text-bottom}.range-editor.is-cross-repo .select-menu.fork-suggester{display:inline-block}.range-editor-icon{float:left;margin-top:10px;margin-left:-25px;color:#767676}.gh-header-new-pr{margin-bottom:15px}.gh-header-new-pr .gh-header-meta{padding-bottom:0;margin-top:5px;border-bottom:0}.gh-header-new-pr .branch-name{display:inline}.compare-pr-header{display:none}.is-pr-composer-expanded .compare-show-header{display:none}.is-pr-composer-expanded .compare-pr-header{display:block}.range-cross-repo-pair{display:inline-block;padding:5px;white-space:nowrap}ul.comparison-list{width:350px;margin:25px auto 15px;font-size:14px;text-align:left;background:#fff;border:1px solid #ddd;border-radius:3px}ul.comparison-list>li{padding:7px 10px;list-style-type:none;border-top:1px solid #eee}ul.comparison-list>li a{font-weight:bold}ul.comparison-list>li em{float:right;font-style:normal;color:#767676}ul.comparison-list>li .octicon{position:relative;top:1px;color:#aaa}ul.comparison-list>li .css-truncate-target{max-width:200px}ul.comparison-list>li.title{font-size:12px;font-weight:bold;color:#aaa;text-transform:uppercase;background:#fafafa;border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.branches .page-header{margin-bottom:20px}.branches .clear-search{display:none}.branches .loading-overlay{position:absolute;top:0;z-index:20;display:none;width:100%;height:100%;padding-top:50px;text-align:center;background-color:rgba(255,255,255,0.7)}.branches .loading-overlay .spinner{display:inline-block}.branches.is-search-mode .clear-search{display:inline-block}.branches.is-loading .loading-overlay{display:block}.branches .status{display:inline-block;width:16px;text-align:center}.branches .status .octicon{position:relative}.branches .status .octicon-primitive-dot{width:10px}.branches .pull-request-link{top:0;display:inline;padding:2px 5px;line-height:1em}.branches .branch-actions{position:relative;top:-3px;right:-4px;float:right}.branches .branch-actions form{display:inline}.branches .branch-actions .octicon{width:16px;text-align:center}.branch-groups{position:relative}.branch-group{width:100%;margin-bottom:20px;border-radius:3px}.branch-group::before{display:table;content:""}.branch-group::after{display:table;clear:both;content:""}.branch-group-heading{padding:6px 12px;text-shadow:0 1px 0 #fff;background:#f5f5f5;border:1px solid #ddd;border-bottom:0}.branch-group-heading+.branch-summary{border-top:1px solid #ddd}.branch-group-heading .branch-name{color:#fff;text-shadow:none;background:#767676}.branch-group-name{font-weight:bold;color:#767676}.branch-group-heading:first-child,.branch-summary:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.branch-group-heading:last-child,.branch-summary:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.branches-view-switcher{display:inline-block;vertical-align:middle}.branch-search{position:relative;float:right;vertical-align:middle}.branch-search .clear-search{position:absolute;top:9px;right:12px;color:#999}.branch-search-field{width:250px;padding-right:25px}.no-results-message{padding:12px;color:rgba(0,0,0,0.5);text-align:center;border:1px solid #ddd;border-radius:0 0 3px 3px}.branch-summary{padding:12px;color:rgba(0,0,0,0.5);border:1px solid #ddd;border-bottom:0}.branch-summary:last-child{border-bottom:1px solid #ddd}.branch-summary .branch-spinner{display:none;vertical-align:text-bottom}.branch-summary.loading .branch-delete-icon{display:none}.branch-summary.loading .branch-spinner{display:inline-block}.branch-summary.is-deleted .existing-branch-summary{display:none}.branch-summary.is-deleted .deleted-branch-summary{display:block}.deleted-branch-summary{display:none}.deleted-branch-summary .css-truncate-target{max-width:500px}.deleted-branch-summary .branch-name{text-decoration:line-through;opacity:0.5}.deleted-branch-summary .branch-spinner{position:relative;top:4px;right:5px;float:right}.pr-details{display:inline-block;width:144px;text-align:right}.pr-details .state{width:80px;padding:1px 5px;margin-left:5px;font-size:12px;text-decoration:none}.branch-delete{display:inline-block;margin:4px 2px 0 8px;color:#bd2c00}.branch-delete.disabled{color:#ddd}.more-branches{display:block;width:100%;padding:6px;color:#4078c0;text-align:center;text-decoration:none;background:#f1f7fa;border:1px solid #dae5eb;border-radius:0 0 3px 3px}.more-branches:hover{background:#e6f1f6}.more-branches .octicon{position:relative;top:1px;margin-left:5px}.branch-details{display:inline-block;width:490px;margin-right:10px}.branch-details .css-truncate-target{max-width:240px}.branch-details .octicon-shield{margin-right:2px}.branch-meta{font-size:12px;line-height:20px;color:#aaa}.default-label{display:inline-block;width:150px;text-align:center;vertical-align:top}.default-label .sha{font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace}.default-label .sha .ellipses{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";color:inherit}.default-label .sha .octicon{padding-right:4px}.branch-a-b-count{display:inline-block;vertical-align:middle}.branch-a-b-count .count-half{position:relative;float:left;width:90px;padding-bottom:6px;text-align:right}.branch-a-b-count .count-half:last-child{text-align:left;border-left:1px solid #bbb}.branch-a-b-count .count-value{position:relative;top:-1px;display:block;padding:0 3px;font-size:10px}.branch-a-b-count .bar{position:absolute;min-width:3px;height:4px}.branch-a-b-count .meter{position:absolute;height:4px;background-color:#ccc}.branch-a-b-count .meter.zero{background-color:transparent}.branch-a-b-count .bar-behind{right:0;border-radius:3px 0 0 3px}.branch-a-b-count .bar-behind .meter{right:0;border-radius:3px 0 0 3px}.branch-a-b-count .bar-ahead{left:0;border-radius:0 3px 3px 0}.branch-a-b-count .bar-ahead .meter{border-radius:0 3px 3px 0}.branch-a-b-count .bar-ahead.even,.branch-a-b-count .bar-behind.even{min-width:2px;background:#eee}.code-frequency .addition{fill:#6cc644;fill-opacity:1}.code-frequency .deletion{fill:#bd2c00;fill-opacity:1}.cadd{font-weight:bold;color:#6cc644}.cdel{font-weight:bold;color:#bd2c00}.codesearch-head{padding-bottom:20px}.codesearch-head.pagehead h1{float:left;width:250px;line-height:33px}.advanced-search-form h3{margin-top:20px}.advanced-search-form .flattened dt{width:230px}.advanced-search-form .flattened dt label{font-weight:normal}.advanced-search-form .flattened dd{margin-left:250px}.advanced-search-form .form-checkbox{margin-left:250px}.advanced-search-form fieldset{padding-bottom:20px;margin-bottom:30px;border-bottom:1px solid #f1f1f1}.codesearch-results .repo-list{margin-top:-20px}.codesearch-results .repo-list-name{font-weight:normal}.codesearch-results .repo-list-name .octicon{vertical-align:middle}.codesearch-results .repo-list-name a,.codesearch-results .code-list .title a{word-wrap:break-word}.codesearch-results .repo-list-name em,.codesearch-results .repo-list-description em{padding:3px;font-style:normal;font-weight:bold;background-color:rgba(255,255,140,0.5);border-radius:3px}.codesearch-results .sort-prefix{font-style:normal;font-weight:500;opacity:0.6}.meta-search-links{margin-top:20px}.meta-search-links a{margin-right:10px}.codesearch-aside .menu .octicon{width:16px;margin-right:5px;text-align:center}.codesearch-aside .meta-search-links{margin-top:20px}.codesearch-aside .meta-search-links a{margin-right:10px}.codesearch-aside .filter-list{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid #f1f1f1}.codesearch-aside .filter-list li{position:relative}.codesearch-aside .filter-list li span.bar{position:absolute;top:2px;right:0;bottom:2px;z-index:-1;display:inline-block;background:#f1f1f1}.simple-search-page{padding-top:100px;padding-bottom:100px}.search-form-fluid .flex-table-item-primary{position:relative;padding-right:6px}.search-form-fluid .completed-query{position:absolute;top:7px;right:8px;left:8px;z-index:1;margin:0;overflow:hidden;white-space:nowrap}.search-form-fluid .completed-query span{opacity:0}.search-form-fluid .search-page-label{position:relative;display:block;font-weight:normal;cursor:text}.search-form-fluid .search-page-label.focus .completed-query{opacity:0.6}.search-form-fluid .search-page-input{position:relative;z-index:2;min-height:0;padding:0;margin:0;background:none;border:0;box-shadow:none}.search-form-fluid .search-page-input:focus{box-shadow:none}.token-warning{position:absolute;top:10px;right:18px;color:#000}.sort-bar{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid #f1f1f1}.sort-bar .sort-label{padding-right:5px;font-size:13px;font-weight:200;color:#666}.sort-bar .select-menu{float:right}.facebox .markdown-body .octicon{vertical-align:inherit}.commit-activity-graphs .dots{display:none}.commit-activity-master{margin-top:20px}.is-graph-loading .commit-activity-master{display:none}rect{shape-rendering:crispedges}rect.max{fill:#ffc644}g.bar{fill:#1db34f}g.mini{fill:#f17f49}g.active rect{fill:#bd380f}circle.focus{fill:#555}.dot text{fill:#555;stroke:none}.compare-cutoff,.diff-cutoff{padding:8px 0;margin:5px 0;font-weight:bold;color:#4c4a42;text-align:center;background-color:#fff9ea;border:solid 1px #dfd8c2;border-radius:3px}span.no-nl-marker{position:relative;color:#bd2c00;vertical-align:middle}.symlink .no-nl-marker{display:none}.existing-pull{margin:10px 0}.existing-pull .list-group-item::before{display:table;content:""}.existing-pull .list-group-item::after{display:table;clear:both;content:""}.existing-pull .existing-pull-contents{float:left;width:680px}.existing-pull .existing-pull-button{float:right;margin-top:3px}.existing-pull .existing-pull-number{font-weight:normal;color:#aaa}.existing-pull .css-truncate{max-width:700px}.existing-pull .css-truncate p{display:inline}.compare-pr-placeholder{padding:15px;margin:15px 0;font-size:14px;color:#4c4a42;background-color:#fff9ea;border:solid 1px #dfd8c2;border-radius:3px}.compare-pr-placeholder p{margin:7px 0;color:#6d6c60}.compare-pr-placeholder .btn{margin-right:10px;margin-bottom:-2px}.compare-pr-placeholder .help-link{padding:3px;margin-top:5px;margin-right:-3px;color:#9c997d;text-decoration:none}.compare-pr .new-pr-form{display:none}.compare-pr .contributing{display:none}.compare-pr.open .compare-pr-placeholder{display:none}.compare-pr.open .new-pr-form{display:block}.compare-pr.open .contributing{display:block}.contact-github textarea{height:100px;resize:vertical}.contact-github .contact-checklist>li{margin:5px 0 5px 18px;list-style-position:outside}.documentation-results-wrapper{position:relative;top:-19px}.documentation-results{position:absolute;top:0;z-index:2;width:400px;margin-top:5px;box-shadow:0 0 5px rgba(0,0,0,0.2)}.documentation-results ul{width:100%}.documentation-results ul li:first-child a{border-top-left-radius:3px;border-top-right-radius:3px}.documentation-results .documentation-results-footer a{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.documentation-results a{display:block;padding:5px 10px;font-weight:bold;color:#333;text-decoration:none;cursor:pointer;background-color:#fff;border:solid #ddd;border-width:0 1px 1px;outline:none}.documentation-results a:hover{color:#fff;background-color:#3586c3}.documentation-results a.selected{color:#fff;background-color:#3586c3}ul.documentation-results-group{list-style-type:none}.contact-form-extras{display:none}.select-menu-item{text-align:left;background-color:#fff;border-top:0;border-right:0;border-left:0}.contributions-setting .contributions-setting-link{font-size:13px}.contributions-setting .dropdown-menu{left:-85px;z-index:80}.contributions-setting .select-menu-modal{width:330px}.contributions-setting .select-menu-item-text{font-weight:normal}.calendar-graph{height:126px;padding:5px 0 0;text-align:center}.calendar-graph.days-selected rect.day{opacity:0.5}.calendar-graph.days-selected rect.day.active{opacity:1}.calendar-graph .dots{width:64px;height:64px;margin:20px auto 0}.calendar-graph text.month{font-size:10px;fill:#767676}.calendar-graph text.wday{font-size:9px;fill:#767676}.contrib-footer{padding:0 10px 12px;font-size:11px}.contrib-legend{float:right}.contrib-legend .legend{position:relative;bottom:-1px;display:inline-block;margin:0 5px;list-style:none}.contrib-legend .legend li{display:inline-block;width:10px;height:10px}.contrib-square{font-size:22px;line-height:0.9;color:#d6e685}.contribution-activity h2{margin:30px 0 15px;font-size:18px;font-weight:normal}.contribution-activity .select-menu-button{position:relative;top:-4px}.contribution-activity.loading .contribution-activity-listing{display:none}.contribution-activity.loading .contribution-activity-show-more{display:none}.contribution-activity.loading .contribution-activity-spinner{display:block}.contribution-activity-spinner{display:none;width:64px;height:64px;margin:20px auto 0}.contribution-activity-spinner.next{margin:0 auto}ul.simple-conversation-list a.meta{color:#767676}li.contribution{padding:10px 0;list-style:none}li.contribution h3{display:inline-block;margin:0;font-size:14px}li.contribution .cmeta{display:block;font-size:12px}li.contribution .cmt{color:#767676}li.contribution .d{color:#c00}li.contribution .a{color:#8cac29}li.contribution .num{color:#767676}.tint-box{position:relative;margin-bottom:10px;background:#f3f3f3;border-radius:6px}.tint-box.transparent{background:#fff}.tint-box .activity{padding-top:100px;margin-top:0}.contrib-data{padding:0;margin:0 0 10px;list-style:none}.contributors-graph .capped-card .avatar{float:left;width:32px;height:32px;margin-right:5px}.contributors-graph .capped-card h3{font-weight:normal}.contributors-graph .capped-card .ameta{display:block;font-size:12px;color:#ccc}.contributors-graph .capped-card .rank{float:right;font-size:13px;color:#767676}.contributors-graph .capped-card .cmt{color:#767676}.contributors-graph .capped-card path{fill:#f17f49}.contributors-graph .capped-card .midlabel{fill:#ccc}.d{color:#bd2c00}.a{color:#6cc644}.logged-out.enter-coupon{background-color:#f9f9f9}.logged-out.enter-coupon .coupon-form-body{margin-bottom:-20px;background-image:none;box-shadow:0 1px 3px rgba(0,0,0,0.075),inset 1px 0 #fff,0 0 200px #fff}.logged-out.enter-coupon .header-logged-out{background-color:#fff}.logged-out.enter-coupon .site-footer{border-top:0}.coupons .setup-plans td img{margin-top:-2px;vertical-align:middle}.coupons .coupon-form-body{width:270px;padding:20px;margin:100px auto 60px;font-size:14px;text-align:center;background-color:#fff;background-image:-webkit-linear-gradient(#fefefe, #fafafa);background-image:linear-gradient(#fefefe, #fafafa);border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.075),inset 1px 0 #fff}.coupons .coupon-form-body .input-block{margin-bottom:15px}.coupons .coupon-form-body .btn{display:block;width:100%}.coupon-icon{width:80px;height:80px;margin:0 auto 15px;color:#4078c0;border:1px solid #dedede;border-radius:40px}.coupon-icon .octicon{margin-top:15px;margin-right:2px}.coupon-signin-title{margin-top:40px}.coupon-title{margin-bottom:20px;font-weight:500}.coupons-list-options{margin-bottom:15px}.coupons-list-options .select-menu,.coupons-list-options .BtnGroup{display:inline-block;margin-right:10px}.coupons-list-options .pagination{float:right;margin:0}.user-repos .mini-repo-list-item{padding-right:6px}.user-repos .mini-repo-list-item .repo-and-owner{max-width:100%}.user-repos .mini-repo-list-item .owner{max-width:145px}.example-octofication{float:right;width:335px;margin:0}.octofication{margin-bottom:15px}.octofication .message{min-height:56px;padding:10px 10px 10px 50px;border:solid 1px #4078c0;border-radius:3px}.octofication .message h3{margin:1px 20px 3px 0;font-size:14px;line-height:1.2}.octofication .message p{padding:0;margin:0;font-size:12px;color:#555}.octofication .message p+p{margin-top:15px}.octofication .broadcast-icon{position:relative;float:left;margin-left:-40px;color:#4078c0}.octofication .broadcast-icon-mask{position:absolute;top:0;left:0;width:10px;height:16px;background-color:#fff;opacity:0;-webkit-animation:broadCastMaskFade 1s ease-in-out 2s 2;animation:broadCastMaskFade 1s ease-in-out 2s 2}.octofication .broadcast-icon-mask:last-child{right:0;left:auto}.octofication .notice-dismiss{position:relative;top:-2px;float:right;color:#bbb}.octofication .notice-dismiss:hover{color:#666}.octofication-more{margin:5px 0;font-size:11px;text-align:right}@-webkit-keyframes broadCastMaskFade{0%{opacity:0}30%{opacity:1}70%{opacity:1}100%{opacity:0}}@keyframes broadCastMaskFade{0%{opacity:0}30%{opacity:1}70%{opacity:1}100%{opacity:0}}.github-jobs-promotion{margin-bottom:15px}.github-jobs-promotion p{position:relative;padding:10px 18px;font-size:12px;color:#1b3650;text-align:center;background-image:-webkit-linear-gradient(#f5fbff, #e4f0ff);background-image:linear-gradient(#f5fbff, #e4f0ff);border:1px solid #cee0e7;border-radius:3px}.github-jobs-promotion p a{color:#1b3650}.github-jobs-promotion a.jobs-logo{display:block;text-align:center}.github-jobs-promotion a.jobs-logo:hover{text-decoration:none}.github-jobs-promotion a.jobs-logo strong{display:inline-block;width:62px;height:12px;text-indent:-9999px;vertical-align:middle;background:url("/images/modules/jobs/logo.png") 0 0 no-repeat;background-size:62px auto}.github-jobs-promotion .job-location{white-space:nowrap}.github-jobs-promotion a.octicon-info{position:absolute;right:5px;bottom:5px;color:#a9b8be;text-decoration:none;cursor:pointer;opacity:0.8}.github-jobs-promotion p:hover .octicon-info{opacity:1}.dashboard h1{margin-bottom:0.5em;font-size:160%}.dashboard h1 a{font-size:70%;font-weight:normal}.dashboard .notice{padding:15px;margin-top:0;margin-bottom:0;text-align:center}.release-assets{padding-left:40px}.release-assets li{margin-top:0.15em;list-style-type:none}.release-assets .more{padding-top:2px;font-size:11px}.news-full,.page-profile .news{float:none;width:auto}.saml-signed-out-notice{position:relative;width:450px;padding:10px 10px 10px 70px;margin:50px auto 30px;border:1px solid #eee;border-radius:3px}.saml-signed-out-notice .octicon{position:absolute;top:30px;left:20px;color:#ddd}.saml-signed-out-notice h3{margin-bottom:0}.saml-signed-out-notice p{margin-top:5px}.survey-box.simple-box{position:fixed;right:25px;bottom:-20px;z-index:25;max-width:400px;padding-bottom:0;background-color:#f9f9f9;border-bottom:0;border-radius:4px 4px 0 0;box-shadow:0 0 10px rgba(0,0,0,0.05);-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.survey-box.simple-box .simple-box-title{padding-bottom:0;margin-bottom:-7px;font-size:14px;line-height:1.3;border-bottom:0}.survey-box.simple-box .simple-box-footer{padding:7px;margin:0 -15px;background-color:#fff}.survey-box.simple-box .close-button{margin-top:-5px;color:#aaa}.newsfeed-placeholder{padding:30px;border:2px dashed #ddd;border-radius:5px}.newsfeed-placeholder h3{margin-bottom:10px;line-height:1.2}.newsfeed-placeholder .btn-outline{margin-top:10px}.newsfeed-placeholder-graphic{float:left;margin-right:40px}.dashboard-notice{position:relative;padding:15px 15px 15px 55px;margin-bottom:20px;font-size:14px;background-color:#fafafa;border:solid 1px #d8d8d8;border-radius:3px}.dashboard-notice .dismiss{position:absolute;top:10px;right:10px;width:16px;height:16px;color:#bbb;cursor:pointer}.dashboard-notice .dismiss:hover{color:#666}.dashboard-notice .notice-icon{position:absolute;top:15px;left:15px}.dashboard-notice .octicon-organization{color:#4078c0}.dashboard-notice h2{margin-top:9px;margin-bottom:16px;font-size:18px;font-weight:normal;color:#000}.dashboard-notice p.no-title{padding-right:5px}.dashboard-notice .inset-figure{float:right;margin-bottom:15px;margin-left:20px}.dashboard-notice ul{margin-left:18px}.dashboard-notice li{padding-bottom:15px}.dashboard-notice .coupon{padding:10px;margin:15px 0;font-size:20px;font-weight:bold;text-align:center;background:#fff;border:1px dashed #d1e5ff}.dashboards-overview-lead{width:700px}.dashboards-overview-cards .boxed-group{width:100%;margin:10px 0}.dashboards-overview-cards .boxed-group .graph-canvas path{stroke:#1db34f;stroke-opacity:0.5}.dashboards-overview-cards .is-no-activity .blankslate{display:block}.dashboards-overview-cards .is-no-activity .dashboards-overview-graph{display:none}.dashboards-overview-cards .blankslate{display:none;padding-top:47px;background-color:#fff;border:0;box-shadow:none}.dashboards-overview-cards .octicon-arrow-down,.dashboards-overview-cards .octicon-arrow-up{display:none}.dashboards-overview-cards .is-increase .octicon-arrow-up{display:inline-block}.dashboards-overview-cards .is-decrease .octicon-arrow-down{display:inline-block}.dashboards-overview-cards .octicon-arrow-down{color:#bd2c00}.dashboards-overview-cards .octicon-arrow-up{color:#1db34f}.dashboards-overview-cards .graph-canvas .dots{padding:43px 0}.dashboards-overview-cards .summary-stats{height:78px}.dashboards-overview-cards .summary-stats .created_at{color:#1db34f}.dashboards-overview-cards .summary-stats .closed_at,.dashboards-overview-cards .summary-stats .merged_at{color:#4078c0}.dashboards-overview-cards .summary-stats .totals-num{margin:0 7px}.dashboards-overview-cards .summary-stats .single{width:100%}.dashboards-overview-graph{height:160px}.dashboards-overview-graph .path{fill:none;stroke-width:2}.dashboards-overview-graph path.created_at{stroke:#1db34f}.dashboards-overview-graph path.merged_at,.dashboards-overview-graph path.closed_at{stroke:#1d7fb3}.dashboards-overview-graph .y line{stroke:#1db34f}.dashboards-overview-graph .y.unique line{stroke:#1d7fb3}.dashboards-overview-graph .overlay{fill-opacity:0}.created_at circle{fill:#1db34f;stroke:#fff;stroke-width:2}.merged_at circle,.closed_at circle{fill:#1d7fb3;stroke:#fff;stroke-width:2}dl.form.developer-select-account{margin-top:0}.developer-wrapper .setup-info-module .features-list{margin-left:16px}.developer-wrapper .setup-info-module .features-list .octicon{margin-left:-17px}.developer-thanks h2{font-size:38px;font-weight:normal}.developer-thanks .hook{margin-top:2px;margin-bottom:30px;font-size:18px;font-weight:300;color:#666}.developer-thanks-image{position:relative;bottom:-45px;float:left;width:400px}.developer-thanks-section{margin:130px 0 0 470px}.developer-next-steps{font-size:18px;font-weight:300;list-style:none}.developer-next-steps li{margin-top:10px}.developer-next-steps li:first-child{margin-top:0}.developer-next-steps .octicon{margin-right:10px;color:#6cc644;vertical-align:middle}.discussion-timeline{position:relative;float:left;width:760px}.discussion-timeline::before{position:absolute;top:0;bottom:0;left:79px;z-index:-1;display:block;width:2px;content:"";background-color:#f3f3f3}.discussion-timeline .email-hidden-container{margin:3px 0}.discussion-sidebar{position:-webkit-sticky;position:sticky;top:0;z-index:21;float:right;width:200px}.discussion-sidebar-item{padding-top:15px;font-size:12px;color:#767676}.discussion-sidebar-item .btn .octicon{margin-right:0}.discussion-sidebar-item+.discussion-sidebar-item{margin-top:15px;border-top:1px solid #eee}.discussion-sidebar-item .select-menu{position:relative}.discussion-sidebar-item .select-menu-modal-holder{top:25px;right:-1px;left:auto}.discussion-sidebar-heading{margin-bottom:10px;font-size:12px;line-height:16px;color:#767676}.discussion-sidebar-toggle{padding:5px 0;margin:-5px 0 5px}.discussion-sidebar-toggle .octicon{float:right;color:#ccc}.discussion-sidebar-toggle:hover{color:#4078c0;text-decoration:none;cursor:pointer}.discussion-sidebar-toggle:hover .octicon{color:inherit}button.discussion-sidebar-toggle{display:block;width:100%;font-weight:bold;text-align:left;background:none;border:0}.sidebar-labels .labels .label{display:block;max-width:100%;padding:6px 10px;font-size:12px;box-shadow:none}.sidebar-labels .labels .label+.label{margin-top:3px}.sidebar-milestone .progress-bar{height:8px;margin-bottom:2px;border-radius:2px}.milestone-name{display:block;margin-top:5px;font-weight:bold;color:#555}.milestone-name .css-truncate-target{max-width:100%}.milestone-name:hover{color:#4078c0;text-decoration:none}.sidebar-assignee .css-truncate-target{max-width:110px}.sidebar-assignee .assignee{font-weight:600;color:#555;vertical-align:middle}.sidebar-assignee .assignee:hover{color:#4078c0;text-decoration:none}.sidebar-notifications{position:relative}.sidebar-notifications .thread-subscription-status{padding:0;margin:0;border:0}.sidebar-notifications .thread-subscription-status .thread-subscribe-form{display:block}.sidebar-notifications .thread-subscription-status .octicon-radio-tower{display:none}.sidebar-notifications .thread-subscription-status .reason{padding:0;margin:5px 0 0}.sidebar-notifications .thread-subscription-status .btn-sm{display:block;width:100%}.participation .participant-avatar{float:left;margin:3px 0 0 3px}.participation a{color:#767676}.participation a:hover{color:#4078c0;text-decoration:none}.participation-avatars{margin-left:-3px}.participation-avatars::before{display:table;content:""}.participation-avatars::after{display:table;clear:both;content:""}.participation-more{float:left;margin:6px 0 0;line-height:14px}.lock-toggle-link{font-weight:bold;color:#767676}.lock-toggle-link:hover{color:#4078c0;text-decoration:none}.issue-privacy-container.confidential label{color:#c9510c}.unrestricted-reason{display:block}.confidential .unrestricted-reason{display:none}.confidential-reason{display:none}.confidential .confidential-reason{display:block}.inline-comment-form .form-actions,.timeline-new-comment .form-actions{padding:0 10px 10px}.inline-comment-form::before{display:table;content:""}.inline-comment-form::after{display:table;clear:both;content:""}.inline-comment-form .tabnav-tabs{display:inline-block}.inline-comment-form .form-actions{float:right}.gh-header-actions{float:right;margin-top:3px}.gh-header-actions .btn-sm{float:left;margin-left:5px}.gh-header-actions .btn-sm .octicon{margin-right:0}.gh-header .gh-header-edit{display:none}.gh-header .gh-header-meta .base-ref{display:inline-block}.gh-header .gh-header-meta .commit-ref-dropdown{display:none}.gh-header.open .gh-header-show{display:none}.gh-header.open .gh-header-edit{display:block}.gh-header.open .gh-header-meta .base-ref{display:none}.gh-header.open .gh-header-meta .commit-ref-dropdown{display:inline-block;margin-top:-3px;margin-bottom:-1px;vertical-align:top}.gh-header-title{margin-right:150px;margin-bottom:0;font-weight:normal;line-height:1.125;word-wrap:break-word}.gh-header-no-access .gh-header-title{margin-right:0}.gh-header-number{font-weight:300;color:#aaa;letter-spacing:-1px}.gh-header-edit::before{display:table;content:""}.gh-header-edit::after{display:table;clear:both;content:""}.gh-header-edit .edit-issue-title{float:left;width:760px;padding:7px 10px;margin-right:10px;font-size:16px;background-color:#fafafa}.gh-header-edit .edit-issue-title:focus{background-color:#fff}.gh-header-edit .btn{float:left;padding:7px 15px}.gh-header-edit .btn-link{float:left;margin:7px 10px}.gh-header-meta{padding-bottom:20px;margin-top:9px;font-size:14px;line-height:20px;color:#767676;border-bottom:1px solid #eee}.gh-header.issue .gh-header-meta{margin-bottom:15px}.gh-header.pull .gh-header-meta{padding-bottom:0;border-bottom:0}.gh-header-meta .flex-table-item{vertical-align:top}.gh-header-meta .flex-table-item-primary{padding-top:4px;word-wrap:break-word;white-space:normal}.gh-header-meta .flex-table-item-primary .commit-ref .css-truncate-target,.gh-header-meta .flex-table-item-primary .commit-ref:hover .css-truncate-target{max-width:780px !important}.gh-header-meta .state{margin-right:8px}.gh-header-meta .avatar{float:left;margin-top:-3px;margin-right:5px}.gh-header-meta .author{font-weight:bold;color:#555}.gh-header-meta .noun{text-transform:lowercase}.tabnav-pr{margin:15px 0 20px;border-color:#e5e5e5}.tabnav-pr .tabnav-tab{position:relative;padding:9px 14px;font-size:13px;color:#767676}.tabnav-pr .tabnav-tab.selected{color:#333;border-color:#e5e5e5}.timeline-comment-wrapper>.timeline-comment::after,.timeline-comment-wrapper>.timeline-comment::before,.timeline-new-comment .timeline-comment::after,.timeline-new-comment .timeline-comment::before{position:absolute;top:11px;right:100%;left:-16px;display:block;width:0;height:0;pointer-events:none;content:" ";border-color:transparent;border-style:solid solid outset}.timeline-comment-wrapper>.timeline-comment::after,.timeline-new-comment .timeline-comment::after{margin-top:1px;margin-left:2px;border-width:7px;border-right-color:#f7f7f7}.timeline-comment-wrapper>.timeline-comment::before,.timeline-new-comment .timeline-comment::before{border-width:8px;border-right-color:#ddd}.timeline-comment-wrapper{position:relative;padding-left:60px;margin-top:15px;margin-bottom:15px;border-top:2px solid #fff;border-bottom:2px solid #fff}.timeline-comment-wrapper:first-child{margin-top:0}.discussion-timeline-actions .timeline-comment-wrapper:first-child{margin-top:15px}.timeline-comment-wrapper .timeline-comment.current-user::after,.timeline-comment-wrapper .timeline-comment.current-user::before{position:absolute;top:11px;right:100%;left:-16px;display:block;width:0;height:0;pointer-events:none;content:" ";border-color:transparent;border-style:solid solid outset}.timeline-comment-wrapper .timeline-comment.current-user::after{margin-top:1px;margin-left:2px;border-width:7px;border-right-color:#f2f8fa}.timeline-comment-wrapper .timeline-comment.current-user::before{border-width:8px;border-right-color:#bfccd1}.timeline-comment-wrapper .timeline-comment.unread-item::after,.timeline-comment-wrapper .timeline-comment.unread-item::before{position:absolute;top:11px;right:100%;left:-16px;display:block;width:0;height:0;pointer-events:none;content:" ";border-color:transparent;border-style:solid solid outset}.timeline-comment-wrapper .timeline-comment.unread-item::after{margin-top:1px;margin-left:2px;border-width:7px;border-right-color:#fff9ea}.timeline-comment-wrapper .timeline-comment.unread-item::before{border-width:8px;border-right-color:#dfd8c2}.timeline-comment-avatar{float:left;margin-left:-60px;border-radius:3px}.timeline-comment{position:relative;background-color:#fff;border:1px solid #ddd;border-radius:3px}.timeline-comment.will-transition-once{-webkit-transition:border-color 0.65s ease-in-out;transition:border-color 0.65s ease-in-out}.timeline-comment.will-transition-once .timeline-comment-header{-webkit-transition:background-color 0.65s ease, border-bottom-color 0.65s ease-in-out;transition:background-color 0.65s ease, border-bottom-color 0.65s ease-in-out}.timeline-comment.will-transition-once .timeline-comment-label{-webkit-transition:border-color 0.65s ease-in-out;transition:border-color 0.65s ease-in-out}.timeline-comment.will-transition-once::before,.timeline-comment.will-transition-once::after{-webkit-transition:border-right-color 0.65s ease-in-out;transition:border-right-color 0.65s ease-in-out}.timeline-comment.current-user{border-color:#bfccd1}.timeline-comment.current-user .timeline-comment-header{background-color:#f2f8fa;border-bottom-color:#bfccd1}.timeline-comment.current-user .timeline-comment-label{border-color:#bfccd1}.timeline-comment.current-user .previewable-comment-form .comment-form-head.tabnav{color:#bfccd1;background-color:#f2f8fa;border-bottom-color:#bfccd1}.timeline-comment.unread-item{border-color:#dfd8c2}.timeline-comment.unread-item .timeline-comment-header{background-color:#fff9ea;border-bottom-color:#dfd8c2}.timeline-comment.unread-item .timeline-comment-label{border-color:#dfd8c2}.timeline-comment.unread-item .previewable-comment-form .comment-form-head.tabnav{color:#dfd8c2;background-color:#fff9ea;border-bottom-color:#dfd8c2}.timeline-comment:empty{display:none}.timeline-comment .comment+.comment{border-top:1px solid #e5e5e5}.timeline-comment .comment+.comment::before,.timeline-comment .comment+.comment::after{display:none}.timeline-comment .comment+.comment .timeline-comment-header{border-top-left-radius:0;border-top-right-radius:0}.timeline-comment-header{padding-right:15px;padding-left:15px;color:#767676;background-color:#f7f7f7;border-bottom:1px solid #ddd;border-top-left-radius:3px;border-top-right-radius:3px}.timeline-comment-header:only-child{border-bottom:0;border-radius:3px}.timeline-comment-header .author{color:#555}.timeline-comment-header .timestamp{color:inherit;white-space:nowrap}.timeline-comment-header .timestamp.timestamp-edited{cursor:default}.timeline-comment-header code{word-break:break-all}.comment-type-icon{color:inherit}.timeline-comment-label{float:right;padding:2px 5px;margin:8px 0 0 10px;font-size:12px;cursor:default;border:1px solid rgba(0,0,0,0.1);border-radius:3px}.timeline-comment-label-spammy{color:#bd2c00;border-color:#bd2c00}.timeline-comment-header-text{max-width:78%;padding-top:10px;padding-bottom:10px}.timeline-comment-header-text code a{color:#555}.timeline-comment-header-avatar{float:left;margin-top:10px;margin-right:5px}.timeline-comment-actions{float:right;margin-right:-5px;margin-left:10px}.timeline-comment-action{display:inline-block;padding:10px 5px;color:inherit;opacity:0.5}.timeline-comment-action:hover,.timeline-comment-action:focus{color:#4078c0;text-decoration:none;opacity:1}.timeline-comment-action .octicon-check{height:16px;font-size:18px}.timeline-comment-action.disabled{color:#bbb;cursor:default}.timeline-comment-action.disabled:hover{color:#bbb}.compare-tab-comments .timeline-comment-actions{display:none}.discussion-item-ref .commit-gravatar{padding-right:5px;padding-left:2px}.discussion-item-ref .task-progress{display:block;margin-bottom:-2px}.discussion-item-ref .task-progress .progress-bar{margin-bottom:0}.discussion-item-ref .task-progress .octicon{font-size:16px}.discussion-item-ref .discussion-item-body .title{margin-top:10px}.discussion-item-ref .state{padding:1px 5px;margin-left:8px;font-size:12px}.discussion-item-ref .state .octicon{width:1em;font-size:14px}.timeline-new-comment{max-width:780px;margin-bottom:0}.timeline-new-comment .comment-form-head{margin-bottom:10px}.timeline-new-comment .previewable-comment-form .comment-body{padding:5px 5px 15px;border-bottom:1px solid #eee}.discussion-item+.discussion-item,.discussion-item-review+.discussion-item{padding-top:15px;border-top:1px solid #f5f5f5}.discussion-item+.discussion-item-review{padding-top:6px;border-top:1px solid #f5f5f5}.discussion-item{position:relative;padding-left:25px;margin:15px 0 15px 79px}.discussion-item .author{font-weight:600;color:#555}.discussion-item .timestamp{color:inherit;white-space:nowrap}.discussion-item .label-color{padding:2px 4px;font-size:12px;font-weight:600;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.12)}.discussion-item .label-color a:hover{text-decoration:none}.discussion-item.open .discussion-item-details{display:block}.discussion-item.open .discussion-item-toggler-opened{display:inline}.discussion-item.open .discussion-item-toggler-closed{display:none}.discussion-item-details{display:none}.discussion-item-deployed{padding-top:15px;border-top:1px solid #f5f5f5}.discussion-item-toggler-opened{display:none}.discussion-item-icon{float:left;width:32px;height:32px;margin-top:-7px;margin-left:-40px;line-height:28px;color:#767676;text-align:center;background-color:#f3f3f3;border:2px solid #fff;border-radius:50%}.discussion-item-icon .octicon-pencil{font-size:14px}.discussion-item-header{min-height:30px;padding-top:5px;padding-bottom:5px;line-height:20px;color:#767676;word-wrap:break-word}.discussion-item-header .avatar{width:16px;height:16px}.discussion-item-header .discussion-item-private{vertical-align:-1px}.discussion-item-header:last-child{padding-bottom:0}.discussion-item-header .commit-ref{font-size:85%;vertical-align:baseline}.discussion-item-header .btn-outline{float:right;padding:4px 8px;margin-top:-5px;margin-left:10px}.discussion-item-body{margin-top:5px}.discussion-item-footer{padding-left:21px;font-size:12px}.discussion-item-link{color:#767676}.discussion-item-link:hover{color:#4078c0}.discussion-item-entity{font-weight:600;color:#333}.discussion-item-entity:hover{color:#4078c0;text-decoration:none}.discussion-item-ref-title .issue-num{font-weight:normal;color:#767676}.discussion-item-ref-title .title-link{color:#333}.discussion-item-ref-title .title-link:hover{color:#4078c0;text-decoration:none}.discussion-item-ref-title .title-link:hover .issue-num{color:inherit}.discussion-item-context-icon{display:inline-block;margin-left:10px;line-height:22px}.discussion-item-help{color:#767676}.discussion-item-help:hover{color:#4078c0}.discussion-item-private{color:#4c4a42}.discussion-item-rollup-ref .state{margin-top:2px}.discussion-item-rollup-ref .discussion-item-context-icon{margin-top:2px}.discussion-item-reopened .discussion-item-icon,.discussion-item-review.is-approved.is-writer .discussion-item-icon{color:#fff;background-color:#6cc644}.discussion-item-closed .discussion-item-icon,.discussion-item-review.is-rejected.is-writer .discussion-item-icon{color:#fff;background-color:#bd2c00}.discussion-item-head_ref_deleted .discussion-item-icon{padding-left:1px;color:#fff;background-color:#767676}.discussion-item-locked .discussion-item-icon,.discussion-item-unlocked .discussion-item-icon{color:#fff;background-color:#333}.discussion-item-integrations-callout .discussion-item-icon{color:#fff;background-color:#4095c6}.discussion-item-integrations-callout .pull-request-integrations-dismiss{padding:4px 8px;margin:-3px 0 0 10px;color:#767676}.pull-request-integrations-title{margin:0;font-size:15px;color:#333}.pull-request-integrations-body{margin-top:5px;color:#666}.discussion-item .renamed-was,.discussion-item .renamed-is{font-weight:bold;color:#333}.discussion-commits .discussion-item-icon{padding-top:1px}.discussion-commits .discussion-item-body{margin-top:0;margin-left:-31px}.discussion-item-changes-marker{margin-bottom:0}.discussion-item-changes-marker.is-unread .discussion-item-icon{color:#fff;background-color:#4078c0}.discussion-item-changes-marker+.discussion-commits{padding-top:0;margin-top:0;border-top:0}.discussion-item-changes-marker+.discussion-commits .discussion-item-icon{display:none}.discussion-item-toggle-open{display:none}.discussion-item-toggle{float:right;color:#767676}.discussion-item-toggle:hover{color:#4078c0;text-decoration:none}.outdated-diff-comment-container .discussion-item-body{display:none}.outdated-diff-comment-container.open .discussion-item-body,.outdated-diff-comment-container.open .discussion-item-toggle-open{display:block}.outdated-diff-comment-container.open .discussion-item-toggle-closed{display:none}.new-discussion-timeline .previewable-comment-form .comment-form-head.tabnav{padding:6px 10px 0;background:#f7f7f7;border-radius:3px 3px 0 0}.new-discussion-timeline .previewable-comment-form .draft-indicator{position:relative;top:-1px}.new-discussion-timeline .previewable-comment-form .comment{border:0}.new-discussion-timeline .previewable-comment-form .comment-body{padding:5px 5px 15px;background-color:transparent;border-bottom:1px solid #eee}.new-discussion-timeline .previewable-comment-form .timeline-comment .timeline-comment-actions{display:none}.new-discussion-timeline .closed-banner{position:relative;height:19px;margin:15px 0 -15px;overflow:visible;background:#f3f3f3;border-bottom:15px solid #fff;border-radius:0}.new-discussion-timeline .composer .timeline-comment{margin-bottom:10px}.new-discussion-timeline .composer .timeline-comment::after{border-right-color:#fff}.new-discussion-timeline .composer .comment-form-head.tabnav{padding-top:0;background-color:#fff}.discussion-timeline-actions{background-color:#fff;border-top:2px solid #f3f3f3}.discussion-timeline-actions .merge-pr{padding-top:0;border-top:0}.discussion-timeline-actions .thread-subscription-status{margin-top:20px}.discussion-timeline-actions .thread-subscription-status .octicon-radio-tower{display:none}.discussion-item-merged .discussion-item-icon{padding-left:1px;color:#fff;background-color:#6e5494}.discussion-item-merged.open .discussion-item-footer{display:none}.discussion-item-merged.open .discussion-item-details{margin-top:5px;margin-bottom:10px;border:1px solid #ddd;border-radius:3px}.discussion-item-merged.open .discussion-item-details-header{padding:12px 15px;margin-top:0;margin-bottom:0;font-size:inherit;border-top:1px solid #ddd}.discussion-item-merged.open .discussion-item-details-header:first-child{border-top:0}.discussion-item-merged.open .merge-status-list{max-height:370px;margin:0;border-top-color:#ddd}.discussion-item-merged.open .merge-status-item{padding-left:15px}.timeline-progressive-disclosure-button{display:inline-block;padding:5px 25px;text-align:center;background-color:#fff;border:solid 2px #e8e8e8;border-radius:3px}.timeline-progressive-disclosure-button:hover,.timeline-progressive-disclosure-button:focus{text-decoration:none;border-color:#4078c0}.timeline-progressive-disclosure-loader{display:none}.discussion-item+.timeline-progressive-disclosure-container,.timeline-progressive-disclosure-container+.discussion-item{padding-top:0;border-top:0}.timeline-progressive-disclosure-container{padding-left:64px;margin-bottom:15px;margin-left:0;text-align:center;background:#fff url("/images/modules/pulls/[email protected]") repeat-x left center/44px 17px}.timeline-progressive-disclosure-container .discussion-item-header{padding-top:0}.timeline-progressive-disclosure-container.is-loading .timeline-progressive-disclosure-loader{display:inline-block;vertical-align:bottom}.timeline-progressive-disclosure-container.is-loading .timeline-progressive-disclosure-link{display:none}.deployment-icon .octicon-rocket{position:relative;bottom:-1px;left:-1px}.environment-name{color:#767676}.deployment-meta{font-size:12px;color:#767676}.deployment-meta .octicon{color:#ccc}.deployment-status-label{display:inline-block;padding:1px 4px;margin-top:-2px;margin-right:3px;font-size:10px;line-height:16px;color:#767676;vertical-align:middle;background:none;border:solid 1px #e5e5e5;border-radius:2px}.deployment-status-label.is-error,.deployment-status-label.is-failure{color:#bd2c00;text-align:center}.deployment-status-label.is-active{color:#55a532}.deployment-status-label.is-pending{color:#cea61b}.discussion-item-review{padding-left:0;margin:20px 0 20px 80px;border:0}.discussion-item-review .discussion-item{margin-left:-30px}.discussion-item-review .discussion-item-body{margin-left:25px}.discussion-item-review .file-header{padding:2px 12px;background-color:#fafafa;border-bottom:1px solid #ddd;border-top-left-radius:3px;border-top-right-radius:3px}.discussion-item-review .blob-wrapper{border-bottom:1px solid #ddd;border-bottom-right-radius:0;border-bottom-left-radius:0}.discussion-item-review .timeline-comment{background-color:transparent;border:0}.discussion-item-review .timeline-comment::before,.discussion-item-review .timeline-comment::after{display:none}.discussion-item-review .timeline-comment .timeline-comment-header{padding-right:5px;background-color:inherit;border:0}.discussion-item-review .timeline-comment .discussion-item-icon{margin-right:8px;margin-left:-11px}.discussion-item-review .timeline-comment-avatar{margin-top:-7px;margin-left:-80px}.discussion-item-review.is-pending .form-actions{margin-right:10px;margin-bottom:5px}.discussion-item-review.is-pending .file,.discussion-item-review.is-pending .file-header,.discussion-item-review.is-pending .tabnav-tab.selected,.discussion-item-review.is-pending .comment-form-head.tabnav{border-color:#dfd8c2}.discussion-item-review.is-pending .file-header,.discussion-item-review.is-pending .comment-form-head.tabnav{background-color:#fff9ea}.discussion-item-review-comment{border-bottom:1px solid #e5e5e5}.discussion-item-review-comment:last-child{border-bottom:0}.review-summary{position:relative;margin-left:-20px}.review-summary::after,.review-summary::before{position:absolute;left:11px;content:" ";border-color:transparent transparent #fff;border-style:solid;border-width:8px}.review-summary::after{top:-15px;border-bottom-color:#fff}.review-summary::before{top:-16px;border-bottom-color:#ddd}.donut-chart>.error,.donut-chart>.failure{fill:#bd2c00}.donut-chart>.expected,.donut-chart>.pending{fill:#cea61b}.donut-chart>.success{fill:#6cc644}.survey-question-form .other-text-form,.survey-question-form .other-text-form-block{display:none;margin-top:0}.survey-question-form.is-other-selected .other-text-form{display:inline-block}.survey-question-form.is-other-selected .other-text-form-block{display:block}.setup-header .large-file-storage-header{font-size:44px}.early-acccess-setup-form .form-group{margin-top:0;margin-bottom:30px}.early-acccess-setup-form select{display:block;width:200px}.early-access-setup-list{padding:0 15px 15px;margin:0;font-size:14px}.early-access-setup-list .early-access-setup-list-item{margin-top:10px;margin-left:20px}.early-access-setup-list .early-access-setup-list-item:first-child{margin-top:0}.early-access-thanks-wrapper{position:relative;z-index:1;height:80vh;margin-bottom:-41px;background-color:#fcfcfc;border-bottom:1px solid #ddd}.early-access-thanks-content{position:relative;top:50%;width:500px;margin:0 auto;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.early-access-thanks-content .simple-box{padding:30px;font-size:16px}.early-access-thanks-title{margin-top:0;font-weight:normal}.early-access-thanks-lead{margin-top:0;margin-bottom:0}.eap-error-state-title{margin-top:0}.ghe-license-status{padding:40px 0;font-size:16px;text-align:center}.ghe-license-status .octocat{width:225px;margin-bottom:20px}.ghe-license-status h1{margin-bottom:10px}.ghe-license-status p{margin-bottom:5px;color:#767676}.ghe-license-expiry-icon{margin:5px 10px 0 0;color:#ddb38a}.enterprise .flash-warn{max-height:105px;overflow-y:scroll}.pagehead.explore-head{background-clip:padding-box;border-bottom-color:rgba(0,0,0,0.1)}.pagehead.explore-head .container{position:relative}.explore-content{margin-top:-15px}.explore-content .blankslate{margin-top:15px}.repo-collection>ul{list-style-type:none;background:#f7f7f7;border:1px solid #ddd;border-radius:3px}.repo-collection .author-gravatar{float:left;margin-right:10px;background:#fff;border-radius:3px}.collection-stat{float:right;margin-left:10px;font-size:12px;color:#444}.collection-stat .octicon{margin-right:5px;color:#a7a7a7}.collection-item{position:relative;float:left;width:50%;height:70px;padding:15px}.collection-item .octicon-x{position:absolute;top:10px;right:10px;color:#ccc;text-decoration:none}.collection-item .repo-name{display:block;font-size:16px;font-weight:bold}.collection-item .css-truncate-target{max-width:380px}.collection-item .repo-description{margin:0}.explore-collection h2{margin:0 0 10px;font-size:18px;font-weight:normal;color:#2a2a2a}.explore-collection h2 .select-menu{position:relative;display:inline-block}.explore-collection h2 .select-menu-button{font-weight:bold;cursor:pointer}.explore-collection h2 .octicon{vertical-align:middle}.explore-page.marketing-section{border-bottom:0}.explore-page.marketing-section .thread-subscription-status{border:0}.explore-page.marketing-section .signed-out-comment{margin-left:0}.explore-page .language-filter-list{margin-bottom:10px}.explore-section{position:relative;padding:40px 0;border-bottom:1px solid #eee}.explore-section:nth-child(even){background:#f9f9f9}.explore-section:nth-child(even) .repo-collection>ul{background:#fff}.explore-section:first-child{padding-top:0}.explore-section:nth-child(odd):last-child{padding-bottom:0;border-bottom:0}.explore-pjax-container{position:relative}.user-leaderboard-list .follow-list-info{margin-top:12px;margin-bottom:0;font-size:12px;color:#666}.user-leaderboard-list .follow-list-info .css-truncate.css-truncate-target{max-width:none}.user-leaderboard-list .repo-list-item{padding-top:10px;padding-bottom:0;padding-left:21px;border-top:0}.user-leaderboard-list .repo-list-item .repo-description,.user-leaderboard-list .repo-list-item .repo-and-owner{max-width:530px}.user-leaderboard-list .repo-list-item .repo{color:#5c5c5c}.leaderboard-list{margin:0;list-style-type:none}.user-leaderboard-list-name{margin:0;font-size:18px;font-weight:normal}.user-leaderboard-list-name .full-name{margin-left:5px;font-weight:bold;color:#5c5c5c}.repo-snipit{display:inline-block;margin-top:7px}.repo-snipit:hover{text-decoration:none}.repo-snipit .octicon{font-size:14px;color:#767676}.repo-snipit-name{max-width:200px;color:#666}.repo-snipit-description{max-width:300px;color:#767676}.repo-snipit:hover .repo-snipit-name,.repo-snipit:hover .repo-snipit-description{color:#4078c0}.leaderboard-action{float:right;margin-top:-3px;margin-left:10px}.leaderboard-list-rank{position:absolute;top:25px;left:0;width:20px;font-weight:300;text-align:right;text-transform:uppercase}.leaderboard-list-item{position:relative;padding-top:20px;padding-bottom:20px;padding-left:35px;border-bottom:1px solid #eee}.leaderboard-list-item:last-child{border-bottom:0}.leaderboard-gravatar{float:left;width:48px;height:48px;border-radius:3px}.leaderboard-list-content{min-height:48px;margin-left:58px}.collection-page .signed-out-comment{margin-left:0}.explore-mail-tease{padding-top:20px;overflow:hidden;background:#202021 url("/images/modules/home/octicons-bg.png") center repeat;border-bottom:1px solid #ddd}.explore-mail-tease h3{color:#fff;text-align:center}.explore-mail-tease-img{display:block;max-width:980px;margin:40px auto -5px;border:1px solid rgba(0,0,0,0.25);border-radius:5px;box-shadow:0 5px 15px rgba(0,0,0,0.15)}.newsletter-frequency{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:stretch;-webkit-align-items:stretch;align-items:stretch}.newsletter-frequency-choice{position:relative;-webkit-box-flex:1;-webkit-flex:1 0 0;flex:1 0 0;margin-right:10px;margin-left:10px;font-weight:normal;cursor:pointer;border:1px solid #eee;border-radius:4px}.newsletter-frequency-choice .notice{position:absolute;right:0;bottom:1em;left:0;z-index:-1;font-weight:bold;color:#6cc644;text-align:center;opacity:0}.newsletter-frequency-choice .notice.visible{bottom:-2em;opacity:1;-webkit-transition:opacity 0.15s ease-in-out;transition:opacity 0.15s ease-in-out}.newsletter-frequency-choice h3{padding:10px;margin:0;font-weight:normal;text-align:center;background-color:#fafafa;border-bottom:1px solid #eee}.newsletter-frequency-choice h3 input{position:relative;top:-2px;margin:0 3px 0 -19px}.newsletter-frequency-choice p{margin:15px}.newsletter-frequency-choice:hover{border-color:#4078c0}.newsletter-frequency-choice:hover h3{color:#fff;background-color:#4078c0;border-color:#4078c0}.newsletter-frequency-choice.selected{border-color:#6cc644;box-shadow:0 0 5px rgba(0,0,0,0.2)}.newsletter-frequency-choice.selected h3{color:#fff;background-color:#6cc644;border-color:#6cc644}.explore-signup-entice{position:relative;padding:15px;font-size:14px;background:#f7f7f7;border:1px solid #ddd;border-radius:3px}.explore-signup-entice h3{margin-bottom:10px;font-size:18px}.explore-signup-entice-inner{position:absolute;top:3px;right:3px;bottom:3px;left:3px;padding-top:30px;text-align:center;background:rgba(247,247,247,0.9)}.explore-signup-entice-wrapper{max-width:500px;padding:5px;margin:0 auto;background:rgba(247,247,247,0.6)}.explore-signup-cta{margin-right:-10px;font-size:13px;vertical-align:middle}.explore-signup-cta a{font-weight:bold}.explore-signup-cta .btn{position:relative;top:-1px}.explore-marketing-header{margin:10px auto 30px;text-align:center}.explore-marketing-header h2{margin:0 0 5px;font-size:32px;font-weight:normal}.explore-marketing-header .lead{margin:5px 0 0}.fakelogin{position:fixed;top:0;z-index:1000;width:100%;font-size:14px;line-height:34px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(153,0,0,0.25);background-image:-webkit-linear-gradient(#dc5f59, #b33630);background-image:linear-gradient(#dc5f59, #b33630);border-bottom:1px solid #900}.fakelogin+.header{margin-top:35px}.fakelogin+.server-stats{margin-top:35px}.fakelogin .cancel-impersonation{color:#fff;text-decoration:underline}.file{position:relative;margin-top:20px;margin-bottom:15px;border:1px solid #ddd;border-radius:3px}.file .data.empty{padding:5px 10px;color:#767676}.file .data.suppressed,.file.open .image{display:none}.file.open .data.suppressed{display:block}.file .image{position:relative;padding:30px;text-align:center;background-color:#ddd}.file .image table{margin:0 auto}.file .image td{padding:0 5px;color:#888;text-align:center;vertical-align:top}.file .image td img{max-width:100%}.file .image .border-wrap{position:relative;display:inline-block;line-height:0;background-color:#fff;border:1px solid #767676}.file .image a{display:inline-block;line-height:0}.file .image img,.file .image canvas{max-width:600px;background:url("/images/modules/commit/trans_bg.gif") right bottom #eee;border:1px solid #fff}.file .image .view img,.file .image .view canvas{position:relative;top:0;right:0;max-width:inherit;background:url("/images/modules/commit/trans_bg.gif") right bottom #eee}.file .image .view>span{vertical-align:middle}.file .empty{background:none}.file-header{padding:5px 10px;background-color:#f7f7f7;border-bottom:1px solid #d8d8d8;border-top-left-radius:2px;border-top-right-radius:2px}.file-header::before{display:table;content:""}.file-header::after{display:table;clear:both;content:""}.file-actions{float:right;padding-top:2px;font-size:13px}.file-actions select{margin-left:5px}.file-action{display:inline-block;padding-top:4px}.file-info{font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:12px;line-height:32px}.file-info .octicon{vertical-align:text-bottom}.file-info-divider{display:inline-block;width:1px;height:18px;margin-right:3px;margin-left:3px;vertical-align:middle;background-color:#ddd}.file-mode{text-transform:capitalize}.show-file-notes{display:none}.has-inline-notes .show-file-notes{display:inline-block;margin-right:10px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.file-blankslate{border:0;border-radius:0 0 2px 2px}.axis{font-size:10px;fill:#aaa}.axis line{stroke:#eee;shape-rendering:crispedges}.axis path{display:none}.axis .zero line{stroke:#4078c0;stroke-dasharray:3 3;stroke-width:1.5}.graphs .is-graph-loading{min-height:500px}.graphs.wheader h2{padding:1px}.graphs .area{fill:#1db34f;fill-opacity:0.5}.graphs .path{fill:none;stroke:#1db34f;stroke-opacity:1;stroke-width:2px}.graphs .dot{fill:#1db34f;stroke:#16873c;stroke-width:2px}.graphs .dot.padded{stroke:#fff;stroke-width:1px}.graphs .dot.padded circle:hover{fill:#4078c0}.graphs .d3-tip{fill:#333}.graphs .d3-tip text{font-size:11px;fill:#fff}.graphs .dir{float:right;padding-top:5px;font-size:12px;font-weight:normal;line-height:100%;color:#555}.graphs .selection rect{fill:#333;fill-opacity:0.1;stroke:#333;stroke-dasharray:3 3;stroke-opacity:0.4;stroke-width:1px;shape-rendering:crispedges}.graph-filter h3{display:inline-block;font-size:24px;font-weight:300}.graph-filter .info{margin-bottom:20px;color:#767676}h2.ghead::after{display:block;height:0;clear:both;visibility:hidden;content:"."}.graph-canvas .activity{width:400px;padding:10px;margin:100px auto 0;color:#444;text-align:center;border-radius:3px}.graph-canvas .error{padding:10px;color:#900;background:#feeaea;border-radius:3px}.graph-canvas .dots{margin:0 auto}.graph-canvas>.activity{display:none}.graph-loading,.graph-error,.graph-no-usable-data,.graph-empty{display:none}.graph-canvas.is-graph-loading>.activity,.graph-canvas.is-graph-without-usable-data>.activity,.graph-canvas.is-graph-empty>.activity{display:block}.is-graph-loading .graph-loading,.is-graph-empty .graph-empty,.is-graph-without-usable-data .graph-no-usable-data,.is-graph-load-error .graph-error{display:block}.svg-tip{position:absolute;z-index:99999;padding:10px;font-size:12px;color:#bbb;text-align:center;background:rgba(0,0,0,0.8);border-radius:3px}.svg-tip strong{color:#ddd}.svg-tip.is-visible{display:block}.svg-tip::after{position:absolute;bottom:-10px;left:50%;width:5px;height:5px;box-sizing:border-box;margin:0 0 0 -5px;content:" ";border:5px solid transparent;border-top-color:rgba(0,0,0,0.8)}.svg-tip.comparison{padding:0;text-align:left;pointer-events:none}.svg-tip.comparison .title{display:block;padding:10px;margin:0;font-weight:bold;line-height:1;pointer-events:none}.svg-tip.comparison ul{margin:0;white-space:nowrap;list-style:none}.svg-tip.comparison li{display:inline-block;padding:10px}.svg-tip.comparison li:first-child{border-top:3px solid #1db34f;border-right:1px solid #333}.svg-tip.comparison li:last-child{border-top:3px solid #1d7fb3}.svg-tip-one-line{white-space:nowrap}.getting-started .main-content .container{width:420px}.getting-started .list-group-item{background:#fff}.getting-started .list-group-item .octicon{color:#bbb}.getting-started .list-group-item .octicon-lead{width:30px}.getting-started .list-group-item:hover,.getting-started .list-group-item:focus{background:#fafafa}.getting-started .link-text{color:#333}.getting-started .link-text strong{color:#4078c0}.header{padding-top:10px;padding-bottom:10px;background-color:#f5f5f5;border-bottom:1px solid #e5e5e5}.header-logged-out{padding-top:15px;padding-bottom:15px}.read-only-mode-banner{text-align:center;background-color:#f8e45f;border-bottom-color:#f6dc2e}.header-logo-invertocat{float:left;margin-right:10px;margin-left:-2px;color:#333;white-space:nowrap}.header-logo-invertocat .octicon-mark-github{float:left;font-size:28px}.header-logo-invertocat:hover{color:#4078c0;text-decoration:none}.logo-subbrand{float:left;margin-left:6px;font-size:16px;font-weight:600;line-height:28px}.header-logo-wordmark{position:relative;float:left;height:26px;margin-right:15px;color:#333}.header-logo-wordmark:hover{color:#4078c0}.notification-indicator .mail-status{position:absolute;top:-2px;right:3px;z-index:2;display:none;width:14px;height:14px;color:#fff;text-align:center;background-image:-webkit-linear-gradient(#7aa1d3, #4078c0);background-image:linear-gradient(#7aa1d3, #4078c0);background-clip:padding-box;border:2px solid #f3f3f3;border-radius:50%}.notification-indicator .mail-status.unread{display:inline-block}.notification-indicator:hover .mail-status{background-color:#4078c0}.header-search{float:left;width:360px;margin-right:10px}.header-search-wrapper{display:table;width:100%;max-width:100%;min-height:0;padding:0;font-weight:normal;vertical-align:middle}.header-search-input{display:table-cell;width:99%;min-height:26px;padding-top:0;padding-bottom:0;font-size:13px;background:none;border:0;box-shadow:none}.header-search-input:focus{border:0;box-shadow:none}.header-search-input::-ms-clear{display:none}.header-search-scope{display:none;width:1%;padding-right:8px;padding-left:8px;font-size:12px;color:#767676;white-space:nowrap;vertical-align:middle;border-right:1px solid #eee;border-top-left-radius:2px;border-bottom-left-radius:2px}.scoped-search .header-search-scope{display:table-cell}.scoped-search .form-control.focus .header-search-scope{color:#4078c0;background-color:#edf2f9;border-color:#c6d7ec}.header-nav{list-style:none}.header-nav-item{float:left}.header-nav-item.active .dropdown-menu-content{display:block}.header-nav-item.active .tooltipped::before,.header-nav-item.active .tooltipped::after{display:none}.header-nav-item .dropdown-menu{width:180px;margin-top:13px}.header-nav-link{display:block;padding:4px 8px;font-size:13px;font-weight:600;line-height:20px;color:#333}.header-nav-link:hover,.header-nav-link:focus{color:#4078c0;text-decoration:none}.header-nav-link:hover .dropdown-caret,.header-nav-link:focus .dropdown-caret{border-top-color:#4078c0}.user-nav{margin-right:-8px}.user-nav .header-nav-link{height:28px}.user-nav .octicon{width:16px;text-align:center}.user-nav .octicon-plus{margin-top:1px;margin-right:1px}.user-nav .octicon-bell{vertical-align:text-bottom}.user-nav .avatar{float:left;margin-right:5px}.header-nav-current-user{padding-bottom:0;font-size:inherit}.header-nav-current-user .css-truncate-target{max-width:100%}.header-actions{float:right;margin-top:-3px;margin-bottom:-3px}.header-actions .btn{margin-left:5px}.enterprise .header{background-color:#2a2c2e;border-bottom-color:#121313}.is-stats .enterprise .header{box-shadow:inset 0 1px 0 rgba(255,255,255,0.05)}.enterprise .header-logo-wordmark,.enterprise .header-logo-invertocat,.enterprise .header-nav-link{color:#c8c8ca}.enterprise .header-logo-wordmark:hover,.enterprise .header-logo-wordmark:focus,.enterprise .header-logo-invertocat:hover,.enterprise .header-logo-invertocat:focus,.enterprise .header-nav-link:hover,.enterprise .header-nav-link:focus{color:#fafafa}.enterprise .header-nav-link:hover .dropdown-caret,.enterprise .header-nav-link:focus .dropdown-caret{border-top-color:#fafafa}.enterprise .notification-indicator .mail-status{border-color:#2a2c2e}.enterprise .notification-indicator:hover .mail-status{background-color:#d26911}.enterprise .header-actions .btn{border:0;box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 1px rgba(0,0,0,0.5)}.enterprise .header-search-scope{color:#c8c8ca;background-color:#5b5f63;border-color:#424649}.enterprise .header-search-wrapper{color:#fafafa;background-color:#4f5256;border-color:#121313}.enterprise .header-search-wrapper.focus{background-color:#55595d;border-color:#000;box-shadow:inset 0 1px 0 rgba(0,0,0,0.075)}.enterprise .header-search-wrapper.focus .header-search-scope{color:#fff;background-color:#676c71;border-color:#4f5256}.enterprise .header-search-input{color:#fff}.hosted.logged-in .header-search{width:280px}.hosted.logged-in .header-search-input{width:180px}.unsupported-browser{padding:15px 0;color:#211e14;background-image:-webkit-linear-gradient(#feefae, #fae692);background-image:linear-gradient(#feefae, #fae692);border-bottom:1px solid #b3a569}.unsupported-browser .container{background:url("/images/icons/ie-notice.png") no-repeat 0 5px}.unsupported-browser h5{padding-left:48px;margin:5px 0 2px;font-size:13px}.unsupported-browser p{padding-left:48px;margin:0}.unsupported-browser .btn{float:right;margin-top:5px;margin-left:8px}.mobile-banner button.switch-to-mobile{display:block;width:100%;padding:30px 0 45px;font-size:60px;font-weight:bold;color:#eaeaea;text-align:center;background-color:#444;border:0}.accessibility-aid{position:absolute;width:1px;height:1px;margin:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}.accessibility-aid:focus{top:0;z-index:1;width:auto;height:auto;padding:0 10px;clip:auto;font-weight:bold;line-height:49px;color:#333;text-decoration:none;background:#f5f5f5}.is-stats .accessibility-aid:focus{top:34px}.job-postings-subnav-search{width:320px;margin-left:-1px}.job-posting-list{position:relative}.job-posting-expiration-warning,.job-posting-payment-warning{margin-bottom:20px}.job-posting-list-item{position:relative;display:table;width:100%;padding:20px 10px;list-style:none;border-top:1px solid #eee}.job-posting-list-item.unpublished{font-style:italic}.job-posting-list-item .job-posting-unpublished{font-size:13px;font-weight:normal;color:#999;text-transform:uppercase}.job-posting-list-item .job-posting-unpublished::before{content:"\b7\a0"}.job-posting-list-item.expired{background-color:#f1f1f1}.job-posting-list-item.expired+.expired{border-top:1px solid #fff}.job-posting-list-meta,.job-posting-main-content,.job-posting-logo{display:table-cell;vertical-align:top}.job-posting-list-name{margin:0;font-size:18px;line-height:1.2}.job-posting-list-kind{max-width:550px;margin-top:4px;margin-bottom:0;font-size:14px;color:#666}.job-posting-list-meta{width:20%;padding-left:20px;font-size:13px;color:#888}.job-posting-list-info-location,.job-posting-list-info-remote{margin-top:0;margin-bottom:4px;color:#888;text-align:right}.job-posting-list-info-location{display:block;max-width:18em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.job-posting-list-info-stats{float:right;padding-left:20px;margin-top:0;margin-bottom:4px;color:#888;text-align:right}.job-posting-description{margin-top:30px;font-size:14px}.visitors-graph+.columns .job-posting-description{margin-top:0}.job-posting-sidebar-title{padding:15px 15px 0;margin:-15px -15px 0;font-size:20px}.job-posting-details-list .job-posting-detail{display:inline;list-style:none}.job-posting-details-list .job-posting-detail+.job-posting-detail::before{content:"\a0\b7\a0"}.job-posting-apply-instructions .user-markdown{margin-top:8px;font-size:14px;color:#767676}.job-posting-apply-instructions .md-list-item{margin-left:20px}.job-posting-apply-instructions .md-list-item+.md-list-item{margin-top:5px}.job-posting-apply-instructions .md-list{margin-bottom:10px}.job-posting{margin-bottom:30px}.job-posting .job-posting-publish-form{display:inline-block;margin-left:8px}.job-posting .flash{margin-bottom:20px}.job-posting .gh-header-meta{padding-bottom:0;margin-top:5px;border-bottom:0}.job-posting .visitors-graph{margin-top:20px}.job-posting-form-edit-section{width:700px}.new-job-posting-form,.new-job-posting-credit-form{color:#4a4a4a}.new-job-posting-form .form-section,.new-job-posting-credit-form .form-section{padding-bottom:20px}.new-job-posting-form label,.new-job-posting-credit-form label{display:block;padding-bottom:5px}.job-credit-description{margin-bottom:20px;font-size:14px}.new-job-posting-form{width:700px;margin:0 auto}.new-job-posting-form .subhead-description+.subhead-description{margin-top:5px}.new-job-posting-form .suggester-container{left:21px}.new-job-posting-form .job-posting-location{width:20em;margin-left:1px}.new-job-posting-form .job-posting-title,.new-job-posting-form .job-posting-apply-link,.new-job-posting-form select,.new-job-posting-form textarea,.new-job-posting-form .job-posting-renew-count,.new-job-posting-form .job-posting-identifier,.new-job-posting-form .job-posting-company-url,.new-job-posting-form .job-posting-company-logo-field,.new-job-posting-form .job-posting-company,.new-job-posting-form .job-posting-organization{width:100%}.new-job-posting-form .write-content{margin:0}.new-job-posting-form label{font-size:16px}.new-job-posting-form label.job-posting-billing-target-label{display:inline;padding-bottom:0;font-size:13px}.new-job-posting-form .small{font-size:12px}.new-job-posting-form .toolbar-help{margin-bottom:0}.new-job-posting-form .toolbar-help .tabnav-extra{padding-top:0;margin-left:0}.new-job-posting-credit-form{font-size:14px}.new-job-posting-credit-form .job-posting-credit-price{font-size:21px;font-weight:700}.new-job-posting-credit-form .job-posting-credit-total-label{padding-right:3em}.new-job-posting-credit-form .job-posting-credit-credits-purchased{width:5em;font-size:14px;text-align:right}.new-job-posting-credit-form .job-posting-credit-card{text-align:left}.purchase-job-credits{width:700px}.purchase-job-credits .gh-header-meta{margin-bottom:20px}.job-posting-summary .job-posting-price{font-size:33px;font-weight:lighter}.job-posting-summary .job-posting-price .amount{font-weight:normal;color:#6cc644}.job-posting-credit-card{margin-top:16px;text-align:right;vertical-align:middle}.search-job-postings-header{width:940px;margin:40px auto 0;color:#4a4a4a}.search-job-postings-header h1{margin-top:50px;font-size:32px;font-weight:normal;text-align:center}.search-job-postings-header h3{font-size:20px;font-weight:lighter;text-align:center}.job-posting-remote-label{margin-bottom:10px}.applied-suggestions{margin:0 0 10px;font-size:14px;list-style:none}.applied-suggestions .applied-suggestion+.applied-suggestion{margin-top:10px}.applied-suggestions .remove-suggestion{font-weight:700;color:#4078c0;background-color:transparent;border:0}.job-search-suggester-container{position:relative}.job-search-suggester-container .job-search-location-suggestions{display:inline-block}.job-search-suggester-container .octospinner{position:absolute;top:9px;right:9px}.job-search-suggester-container .suggester-container{top:100%;width:100%}.job-search-suggester-container .suggester-container .suggester{margin-top:-1px}.job-search-suggester-container .suggestion{cursor:pointer}.search-job-postings{margin-top:20px;margin-bottom:40px}.search-job-postings.results{margin-top:0;margin-bottom:0}.search-job-postings .column.two-thirds{padding:0}.search-job-postings .column.two-sevenths{width:28.5%}.search-job-postings .column.one-seventh{width:14.2%}.search-job-postings label{display:block;padding-bottom:5px;font-size:18px;color:#4a4a4a}.search-job-postings input,.search-job-postings select{width:100%;color:#767676}.search-job-postings [type="submit"]{width:100%;margin-top:30px;color:#4a4a4a}.search-job-postings .form-checkbox{margin-top:5px}.search-job-postings .form-checkbox input{width:20px}.search-job-postings .form-checkbox label{display:inline;font-size:13px;font-weight:normal;color:#767676}.search-job-postings-sidebar{float:left;width:230px}.search-job-postings-sidebar .post-job-link{margin-bottom:20px;text-align:center}.search-job-postings-sidebar .featured{width:100%;margin-bottom:20px;font-size:15px;font-weight:normal}.search-job-postings-sidebar .featured.btn{color:#fff;background:#4078c0;border:1px solid #4078c0}.search-job-postings-sidebar .job-search-watch-form{margin-bottom:20px}.search-job-postings-sidebar .job-search-watch-form .watch{width:100%}.job-search-watch-form .job-search-title{width:100%;margin-top:5px}.job-search-watch-fields{padding:16px}.search-job-postings-watched{color:#4a4a4a}.search-job-postings-watched .menu-item{padding:8px 10px 3px}.search-job-postings-watched .menu-item .octicon{margin-right:0}.search-job-postings-watched .more-mega{font-size:50px;opacity:0.4}.search-job-postings-watched .saved-job-posting-search-link{display:inline-block;max-width:88%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-job-postings-watched h3{margin:0 0 5px;font-size:15px;font-weight:normal;color:#4a4a4a}.search-job-postings-watched .job-search-unwatch-form{float:right}.search-job-postings-watched .job-search-unwatch-form .job-search-unwatch{padding:0;background-color:transparent;border:0}.job-posting-list .results-heading,.search-job-postings-main .results-heading{padding-top:0;margin:0 0 10px;font-size:24px;font-weight:300}.search-job-postings-main{float:right;width:730px}.search-job-postings-main .sort-bar{padding-bottom:0;margin-bottom:0;border-bottom:0}.job-posting-logo{display:table-cell;width:55px;vertical-align:middle}.job-posting-logo .job-posting-org-link{display:inline-block}.job-posting-logo .avatar{width:40px}.org-job-postings-results .pagehead{padding-bottom:0}.job-search-reset-query-wrapper{margin-bottom:10px}.job-search-reset-query{font-weight:bold;color:#767676}.job-search-reset-query .job-search-reset-query-block{display:inline-block;width:20px;height:20px;margin-right:3px;line-height:20px;color:#fff;text-align:center;background-color:#767676;border-radius:3px}.job-search-reset-query .job-search-reset-query-block .octicon-x{line-height:20px}.job-search-reset-query:hover{color:#4078c0;text-decoration:none}.job-search-reset-query:hover .job-search-reset-query-block{background-color:#4078c0}.blankslate+.job-posting-credit-header{margin-top:30px}.job-posting-credit-header{margin-bottom:10px;font-size:16px}.job-posting-org-payment{margin-bottom:10px}.job-posting-billing-target-choice{margin-right:5px}.job-postings-return-footer p{margin-bottom:10px}.job-postings-return-link{display:block;margin-top:45px}.job-posting-company-info .job-posting-company-logo{max-width:100%}.job-posting-company-info .job-posting-company-logo-link{display:block;margin-top:8px}.job-posting-company-info .job-posting-company-link{display:block;margin-top:8px}.pagehead .job-posting-company-link{color:#333}.job-posting-error-explanation{margin-bottom:20px}.job-posting-error-explanation .job-posting-error-list-item{list-style:none}.job-saved-search-info{display:inline-block;color:#797979}.job-saved-search-info .octicon{vertical-align:middle}.job-posting-credits-list .job-posting-credit-list-item{list-style:none}.job-posting-credits-list .job-posting-credit-list-item+.job-posting-credit-list-item{padding-top:10px;margin-top:10px;border-top:1px solid #eee}.job-posting-credits-list .job-posting-credit-metadata{margin-top:5px;font-size:12px;color:#797979}.job-posting-credits-list .job-posting-credit-user+.job-posting-credit-date::before{padding-right:0.3em;padding-left:0.3em;content:"\b7"}.hiring-managers-list>li:last-child{padding-bottom:0}.hooks-listing .boxed-group-action.select-menu{z-index:auto}.hooks-listing .boxed-group-inner{padding:0 10px;margin-bottom:10px}.hook-item a:hover{text-decoration:none}.hook-item .item-status{float:left;width:16px;margin-right:8px;text-align:center}.hook-item .description{color:#999}.hook-item .description .css-truncate-target{max-width:160px}.hook-item .icon-for-success,.hook-item .icon-for-failure,.hook-item .icon-for-pending,.hook-item .icon-for-inactive{display:none}.hook-item.success .icon-for-success{display:inline-block;color:#6cc644}.hook-item.failure .icon-for-failure{display:inline-block;color:#bd2c00}.hook-item.pending .icon-for-pending{display:inline-block;color:#999}.hook-item.inactive .icon-for-inactive{display:inline-block;color:#999}.hook-item .icon-for-enabled,.hook-item .icon-for-disabled{display:none}.hook-item.enabled .icon-for-enabled{display:inline-block;color:#6cc644}.hook-item.disabled .icon-for-disabled{display:inline-block;color:#ccc}.hook-item .hook-error-message{margin-left:24px;color:#bd2c00}.hook-url.css-truncate-target{max-width:360px}.hook-events-field .hook-event-selector{display:none}.hook-events-field.is-custom .hook-event-selector{display:block}.hook-event-selector{margin-left:10px}.hook-event{display:inline-block;width:310px;padding:5px 0 5px 30px;margin:0}.hook-event p{font-weight:normal}.hook-event .event-installed-identifier{margin:10px 4px 0 -20px}.hook-event.hook-event-condensed{width:240px;padding-right:20px;padding-bottom:10px;padding-left:20px}.hook-event-choice{font-weight:normal}.hook-form.is-ssl .ssl-hook-fields{display:block}.hook-form .ssl-hook-fields{display:none}.hook-form .ssl-hook-fields .disable-ssl-verification-modal,.hook-form .ssl-hook-fields .enable-ssl-verification{display:none}.hook-form .ssl-hook-fields.is-not-verifying-ssl .enable-ssl-verification{display:block}.hook-form .ssl-hook-fields.is-not-verifying-ssl .disable-ssl-verification{display:none}.hook-form .disable-ssl-verification .actions{margin-top:-4px}.hook-form .invalid-url-notice{display:none;padding:7px 4px}.hook-form .invalid-url-notice .octicon-alert{position:relative;top:1px}.hook-form.is-invalid-url .invalid-url-notice{display:block}.hooks-oap-warning{margin-top:0}.hooks-oap-warning ul{margin:10px 0}.hooks-oap-warning ul li{margin-left:16px}.hook-secret .hook-secret-standin{display:block}.hook-secret .hook-secret-field{display:none}.hook-secret.open .hook-secret-standin{display:none}.hook-secret.open .hook-secret-field{display:block}.hook-deliveries-list .loading-message{display:block}.hook-deliveries-list .error-message{display:none}.hook-deliveries-list.is-error .loading-message{display:none}.hook-deliveries-list.is-error .error-message{display:block}.hook-deliveries-list .spinner{display:inline-block;margin:0;vertical-align:top}.hook-deliveries-list .hook-delivery-item:hover{background-color:transparent}.hook-deliveries-list .item-status{display:inline-block;width:16px;margin-right:5px;text-align:center}.hook-deliveries-list .item-status .icon-for-success,.hook-deliveries-list .item-status .icon-for-failure,.hook-deliveries-list .item-status .icon-for-pending{display:none}.hook-deliveries-list .item-status.success{color:#6cc644;visibility:visible}.hook-deliveries-list .item-status.success .icon-for-success{display:inline-block}.hook-deliveries-list .item-status.failure{color:#bd2c00}.hook-deliveries-list .item-status.failure .icon-for-failure{display:inline-block}.hook-deliveries-list .item-status.pending{color:#999}.hook-deliveries-list .item-status.pending .icon-for-pending{display:inline-block}.hook-deliveries-pagination-loading-message{display:none}.hook-deliveries-pagination-loading-message .animated-ellipsis-container{text-align:left}.hook-deliveries-pagination.loading .hook-deliveries-pagination-button{display:none}.hook-deliveries-pagination.loading .hook-deliveries-pagination-loading-message{display:block}.boxed-group-list li.hook-delivery-item{padding:10px}.hook-delivery-item .hook-delivery-details{display:none}.hook-delivery-item .hook-delivery-details .loading-message,.hook-delivery-item .hook-delivery-details .error-message{display:none}.hook-delivery-item .hook-delivery-details.is-loading .loading-message{display:block}.hook-delivery-item .hook-delivery-details.has-error .error-message{display:block}.hook-delivery-item.open .hook-delivery-details{display:block}.hook-delivery-item .loading-message{text-align:center}.hook-delivery-time{float:right;margin-right:10px;font-size:10px;color:#999}.hook-delivery-guid{display:inline-block;padding:2px 6px;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:12px;color:rgba(0,0,0,0.5);background-color:rgba(209,227,237,0.5);border-radius:3px}.hook-delivery-guid .octicon{margin:1px -2px 0 0;color:#b0c4ce}.hook-delivery-actions{padding-top:1px}.boxed-group-list>li.hook-delivery-item .btn-sm{margin:0}.boxed-group-list>li.hook-delivery-item .hook-delivery-details .btn-sm{margin:5px 0 0}.hook-deliveries-list .error-message,.hook-delivery-details .error-message{padding:7px 4px;margin:10px 0}.hook-deliveries-list .error-message .octicon,.hook-delivery-details .error-message .octicon{position:relative;top:1px}.boxed-group span.animated-ellipsis-container,.boxed-group span.animated-ellipsis{padding:0}.boxed-group .animated-ellipsis-container{line-height:1.3}.hook-delivery-details{clear:right}.hook-delivery-details .error-message{margin-bottom:0}.hook-delivery-details .tabnav-tabcontent{display:none}.hook-delivery-details .tabnav-tabcontent.selected{display:block}.hook-delivery-details hr{margin:10px 0}.hook-delivery-details pre{padding:7px 12px;margin:10px 0;overflow:auto;font-size:13px;line-height:1.5;background-color:#f8f8f8;border:1px solid #ddd;border-radius:3px}.hook-delivery-details .tabnav{margin:10px 0}.hook-delivery-details h4.remote-call-header{margin:20px 0 10px;border-bottom:1px solid #999}.hook-delivery-response-status{display:inline-block;padding:4px 6px 3px;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:10px;line-height:1.1;color:#fff;background-color:#bd2c00;border-radius:3px}.hook-delivery-response-status[data-response-status^="2"]{background-color:#6cc644}.redelivery-dialog .pending-message{display:block}.redelivery-dialog .failure-message{display:none}.redelivery-dialog.failed{color:#9c2400;background-image:-webkit-linear-gradient(#f8d8d8, #efd0d0);background-image:linear-gradient(#f8d8d8, #efd0d0);border-color:#da9797}.redelivery-dialog.failed .pending-message{display:none}.redelivery-dialog.failed .failure-message{display:block}.redelivering-hook-delivery .error-message{display:none}.redelivering-hook-delivery.is-error .loading-message{display:none}.redelivering-hook-delivery.is-error .error-message{display:block}.test-hook-message .success-message,.test-hook-message .error-message{display:none;margin-top:10px}.test-hook-message.success .success-message{display:block}.test-hook-message.error .error-message{display:block}.item-name{float:left;font-weight:bold}.installation-permissions .octicon-check{color:#6cc644}.installation-permissions li:hover{background:none}.integration-meta-head{font-size:16px;color:#767676}.integration-info-section{margin-bottom:40px}.integration-info-section h3{margin:0 0 10px;color:#767676}.integration-info-section ul{list-style:none}.integration-info-section span{margin-right:10px}.confirm-integration-name.css-truncate-target{max-width:300px}.integrations-select-repos{max-height:138px;overflow-y:scroll;border-radius:3px}.integrations-select-repos .mini-repo-list-item{padding:8px 64px 8px 30px}.integrations-select-repos .mini-repo-list-item:hover .repo,.integrations-select-repos .mini-repo-list-item:hover .owner{text-decoration:none}.integrations-select-repos .mini-repo-list-item .css-truncate-target{max-width:345px}.integrations-select-repos::-webkit-scrollbar{width:10px}.integrations-select-repos::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,0.5);border:solid #fff 2px;border-radius:6px;box-shadow:0 0 1px rgba(255,255,255,0.5)}.integrations-select-repos::-webkit-scrollbar-track-piece{background:transparent}.integrations-repository-picker{position:relative;top:-5px;width:440px}.integrations-repository-picker .autocomplete-results{border:0}.integrations-repository-picker .subnav-search{margin-bottom:5px;margin-left:0}.integrations-repository-picker .flash{padding:10px;margin-bottom:10px}dl.form-group>dd .integrations-repository-picker .form-control{margin-right:0}.integrations-repository-picker .octicon-x{position:absolute;top:8px;right:10px;cursor:pointer}.list-group-label{display:inline-block;float:left;max-width:70%;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.target-avatar{position:relative;top:-2px}.issues-reset-query-wrapper{margin-bottom:20px}.issues-reset-query{font-weight:600;color:#767676}.issues-reset-query:hover{color:#4078c0;text-decoration:none}.issues-reset-query:hover .issues-reset-query-icon{background-color:#4078c0}.issues-reset-query-icon{width:18px;height:18px;padding:1px;margin-right:3px;color:#fff;text-align:center;background-color:#767676;border-radius:3px}.table-list-milestones .table-list-cell{padding:15px 20px}.table-list-milestones .stat{display:inline-block;font-size:14px;font-weight:bold;line-height:1.2;color:#555;white-space:nowrap}.table-list-milestones .stat a{color:inherit}.table-list-milestones .stat+.stat{margin-left:15px}.table-list-milestones .stat-label{font-weight:normal;color:#767676}.milestone-title{width:500px}.milestone-title-link{margin-top:0;margin-bottom:5px;font-size:24px;font-weight:normal;line-height:1.2}.milestone-title-link a{color:#333}.milestone-title-link a:hover{color:#4078c0}.milestone-progress{width:420px}.milestone-progress .progress-bar{margin-top:7px;margin-bottom:12px}.milestone-meta{font-size:14px}.milestone-meta-item{display:inline-block;margin-right:10px}.milestone-meta-item .octicon{width:16px;text-align:center}.milestone-description-html{display:none}.milestone-description{margin-top:5px}.milestone-description .expand-more{color:#4078c0;cursor:pointer}.milestone-description .expand-more:hover{text-decoration:underline}.milestone-description.open .milestone-description-plaintext{display:none}.milestone-description.open .milestone-description-html{display:block}.milestone-actions{margin-top:8px;font-size:13px}.milestone-action{display:inline-block;margin-right:10px}.milestone-calendar-container{margin-left:30px}.issue-reorder-warning{z-index:110}.task-progress{color:#767676;text-decoration:none}.task-progress .octicon{margin-right:5px;color:#999;vertical-align:bottom}.task-progress .progress-bar{display:inline-block;width:120px;height:5px;vertical-align:2px;background-color:#eee}.task-progress .progress-bar .progress{background-color:#ccc}.task-progress-counts{display:inline-block;margin-right:6px;margin-left:-2px;font-size:12px}a.task-progress:hover{color:#4078c0}a.task-progress:hover .octicon{color:inherit}a.task-progress:hover .progress-bar .progress{background-color:#4078c0}.issues-listing{position:relative}.issues-listing .octocat-search{position:absolute;right:0;height:250px;margin:-132px -4px;-webkit-transform:scaleX(-1);transform:scaleX(-1)}.issues-listing .table-list-issues .issue-title{width:740px;padding-top:12px}.issues-listing .table-list-issues .labels{display:inline-block;margin-bottom:2px;vertical-align:1px}.issues-listing .table-list-issues .navigation-focus{background-color:#f5f5f5}.issue-title-link{padding-right:3px;margin-bottom:2px;font-size:15px;font-weight:600;line-height:1.2;color:#333}.issue-title-link:hover{color:#4078c0;text-decoration:none}.issue-title-link:hover .num{color:inherit}.issue-pr-status{display:inline-block;margin-right:3px}.issue-meta{margin-top:1px;margin-bottom:2px;font-weight:normal;color:#767676}.issue-meta-section{margin-right:10px}.issue-meta-section .octicon{color:#ccc;vertical-align:bottom}.issue-milestone{max-width:240px}.milestone-link .octicon{font-size:14px}.milestone-link:hover .octicon{color:inherit}.new-issue-form{padding-top:20px;margin-top:15px;border-top:1px solid #ddd}.new-issue-form::before{display:table;content:""}.new-issue-form::after{display:table;clear:both;content:""}.new-issue-form .discussion-timeline::before{display:none}.new-pr-form{margin-top:15px;margin-bottom:20px}.new-pr-form::before{display:table;content:""}.new-pr-form::after{display:table;clear:both;content:""}.new-pr-form .discussion-timeline::before{display:none}.new-pr-form .discussion-sidebar{position:static}.label-select-menu .color{display:inline-block;width:14px;height:14px;margin-right:2px;margin-bottom:2px;vertical-align:middle;border-radius:3px}.label-select-menu .selected .select-menu-item-icon{color:inherit !important}.label-select-menu .selected:active{background-color:transparent !important}.label-select-menu .select-menu-item{position:relative}.label-select-menu .select-menu-item.navigation-focus{color:inherit;background-color:#f4f4f4}.label-select-menu .select-menu-item.navigation-focus .select-menu-item-icon{color:transparent}.label-select-menu>form{position:relative}.closed-banner{height:7px;margin:15px 0 15px 60px;overflow:hidden;background:url("/images/modules/comments/closed_pattern.gif");border-radius:3px}.subnav .btn+.issues-search{padding-right:10px;border-right:1px solid #eee}.reaction-sort-item{float:left;width:39px;padding:5px;margin-top:5px;text-align:center;pointer-events:all;border:solid 1px transparent;border-radius:3px;opacity:0.7}.reaction-sort-item:hover,.reaction-sort-item.selected:hover,.reaction-sort-item.navigation-focus{text-decoration:none;background-color:#4078c0;opacity:1}.reaction-sort-item.selected{background-color:#f2f8fa;border-color:#4078c0;opacity:1}html.emoji-size-boost .reaction-sort-item g-emoji{margin-left:-3px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){html.emoji-size-boost .reaction-sort-item g-emoji{margin-left:0}}.merge-branch-heading{margin:0;line-height:1;color:#333}.merge-branch-description{margin-right:160px;margin-bottom:-5px;line-height:1.6em;color:#767676}.merge-branch-description .zeroclipboard-link .octicon{top:2px}.alt-merge-options{display:inline-block;margin-bottom:0;margin-left:4px;vertical-align:middle}.merged .merge-branch-description .commit-ref .css-truncate-target{max-width:180px}.merge-branch-prh-output{margin-top:10px}.merge-branch-form{display:none;padding-left:64px}.merge-branch.open .merge-branch-form{display:block}.merge-branch.open .merge-message{display:none}.merge-branch-manually{display:none;padding-top:15px;margin-top:14px;background-color:transparent;border-top:1px solid #ddd}.merge-branch-manually p{margin-bottom:0}.merge-branch-manually h3{margin-bottom:10px}.merge-branch-manually .intro{padding-bottom:10px;margin-top:0}.merge-branch-manually .step{margin:15px 0 5px}.merge-branch-manually .url-box{padding:0;margin-left:0;border:0}.merge-branch-manually .clone-urls{width:100%}.merge-branch-manually .copyable-terminal{background-color:#f2f2f2}.open .merge-branch-manually{display:block}.merge-pr.is-rebasing .commit-form-fields{margin-top:-110px;opacity:0;-webkit-transition:opacity 0.15s linear 0s, margin-top 0.25s ease 0.1s;transition:opacity 0.15s linear 0s, margin-top 0.25s ease 0.1s}.merge-pr .btn-group-merge,.merge-pr.is-squashing .btn-group-squash,.merge-pr.is-rebasing .btn-group-rebase{display:inline-block}.merge-pr .merging-body,.merge-pr .rebasing-body,.merge-pr .squashing-body{display:none}.merge-pr.is-merging .merging-body,.merge-pr.is-rebasing .rebasing-body,.merge-pr.is-squashing .squashing-body{display:block}.merge-pr .btn-group-squash,.merge-pr .btn-group-rebase,.merge-pr.is-squashing .btn-group-merge,.merge-pr.is-rebasing .btn-group-merge{display:none;margin-left:0}.commit-form-fields{-webkit-transition:opacity 0.15s linear 0.1s, margin-top 0.25s ease 0s;transition:opacity 0.15s linear 0.1s, margin-top 0.25s ease 0s}.unavailable-merge-method{display:block;margin-top:6px;color:#c9510c}.navigation-focus.disabled .unavailable-merge-method{color:#fff}.network .network-tree{vertical-align:middle}.network .gravatar{margin-right:4px;vertical-align:middle;border-radius:3px}.network .octicon{display:inline-block;width:16px;margin-left:2px;text-align:center;vertical-align:middle}.network .current-repository{background-color:#fff6a9}.network .network-graph-container{position:relative;margin-bottom:20px;overflow:hidden;line-height:0;border:1px solid #ddd;border-radius:3px}.network .network-graph-container .large-loading-area{position:absolute;top:0;right:0;left:0}.page-new-repo .octicon-repo{color:#bbb}.page-new-repo .octicon-lock{color:#e9dba5}.page-new-repo ul.repo-templates{margin:10px 0}.page-new-repo ul.repo-templates>li{display:inline-block;margin:0 10px 0 0;list-style-type:none}.page-new-repo ul.repo-templates .select-menu{float:left}.page-new-repo .form-checkbox .octicon{float:left;margin-right:5px}.page-new-repo .license-info{float:left;margin-top:5px;margin-left:10px;color:#ccc}.new-repo-container{width:700px;margin:40px auto 0}.new-repo-container .subhead{margin-bottom:30px}.owner-reponame dl.form-group{margin-top:5px;margin-bottom:0}.owner-reponame .slash{float:left;padding-top:32px;margin:0 8px;font-size:21px;color:#666}.owner-reponame .icon-preview{position:absolute;top:23px;left:-115px;display:none;width:100px;font-size:32px;text-align:right}.owner-reponame .icon-preview.icon-preview-public{top:25px}.reponame-suggestion{color:#34631a;cursor:pointer}.upgrade-upsell{padding-left:33px}.cc-upgrade{padding-left:20px}.featured-license{font-weight:bold}.license-container{padding-left:15px;border-left:1px solid #ccc}.notification-routing .notification-email .edit-link{margin-right:10px;font-weight:bold}.notification-routing .notification-email .btn-sm{float:none;margin:-2px 0 0}.notification-routing .notification-email .edit-form{display:none}.notification-routing .notification-email.open .edit-form{display:block}.notification-routing .notification-email.open .email-display{display:none}.notifications .list-group-item{padding-top:8px;padding-bottom:8px;padding-left:35px;border-width:1px 0 0}.notifications .list-group-item:first-child{border:0}.notifications .list-group-item-name{display:block;max-width:400px;font-size:14px;line-height:1.5em}.notifications .list-group-item-name a{display:block;max-width:460px}.notifications .notifications-more{padding:0}.notifications .notifications-more>a{display:block;padding:10px 15px;font-weight:bold;color:#4078c0;text-align:center}.notifications .notifications-more>a:hover{text-decoration:underline}.notifications .read .type-icon{color:#767676}.notifications .read .list-group-item-name>a{color:#767676}.notifications .read .notification-actions{color:#767676}.notifications .read .avatar-stack{opacity:0.5}.notifications .read .undo{display:block}.notifications .read .delete{visibility:hidden}.notifications .read.navigation-focus{background-color:#f5f9fc}.notifications .muted .unmute{display:block}.notifications .muted .mute{display:none}.notifications .unmute{display:none}.type-icon-state-none{color:#767676}.type-icon-state-open{color:#6cc644}.type-icon-state-closed{color:#bd2c00}.type-icon-state-merged{color:#6e5494}.notifications-list{float:left;width:100%}.notifications-list .notifications-repo-link{max-width:500px}.notifications-list .boxed-group .text-green{position:absolute;right:3px;width:220px;margin-top:4px;font-size:13px;color:#6cc644;text-align:right;visibility:hidden;opacity:0;-webkit-transition:opacity 0.35s ease-in-out, -webkit-transform 0.35s ease-in-out;transition:opacity 0.35s ease-in-out, transform 0.35s ease-in-out;-webkit-transform:translateX(10px);transform:translateX(10px)}.notifications-list .mark-all-as-read{padding:2px 6px 5px 10px;margin-top:0;margin-right:0;line-height:20px;color:#767676;background-color:transparent;border:0}.notifications-list .mark-all-as-read-confirmed .text-green{visibility:visible;opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}.notifications-list .mark-all-as-read-confirmed .mark-all-as-read{visibility:hidden}.notifications-list .confirmation{max-height:0;padding:0;overflow:hidden;color:#666;text-align:center;opacity:0;-webkit-transition:opacity 0.4s ease-in-out, max-height 0.4s ease-in-out, padding 0.4s ease-in-out;transition:opacity 0.4s ease-in-out, max-height 0.4s ease-in-out, padding 0.4s ease-in-out}.notifications-list .confirmation+.list-group-item{margin-top:-1px;border-top-color:#d5d5d5}.notifications-list .confirmation.mark-all-as-read-confirmed{max-height:300px;padding:10px 0;opacity:1}.notification-actions{position:absolute;top:8px;right:10px;list-style:none}.notification-actions li{float:right;margin-left:10px;font-size:16px;line-height:20px}.notification-actions .age{width:120px;font-size:12px;color:#767676}.notification-actions .undo{position:absolute;top:0;display:none}.notification-actions .btn-link{padding-right:5px;padding-left:5px;line-height:inherit;color:#767676}.notification-actions .btn-link:hover{color:#4078c0;text-decoration:none}.repo-subscription-container{width:600px;margin-right:auto;margin-left:auto}.repo-subscription-container .spinner{float:right}.repo-subscription-container h2{margin-top:24px;margin-bottom:12px;font-size:22px;font-weight:normal}.repo-subscription-container .intro{font-size:14px;color:#666}.repo-subscription-label{display:inline-block}.subscriptions-content .sorted-by{float:right;margin:10px;font-size:12px;color:#999}.subscriptions-content .repo-icon{margin-right:5px;color:#666;vertical-align:middle}.subscriptions-content .repo-list form{display:inline}.subscriptions-content .repo-list .only-loading{display:none}.subscriptions-content .repo-list .loading .only-loading{display:inline-block}.subscriptions-content .repo-list .only-unsubed{display:none}.subscriptions-content .repo-list .unsubscribed .only-unsubed{display:inline}.subscriptions-content .repo-list .unsubscribed .only-subed{display:none}.subscriptions-content .repo-list .only-unignored{display:none}.subscriptions-content .repo-list .unsubscribed .only-unignored{display:inline}.subscriptions-content .repo-list .unsubscribed .only-ignored{display:none}.thread-subscription-status{padding:10px;margin:40px 0 20px;color:#767676;background-color:#fff;border:1px solid #eee;border-radius:3px}.thread-subscription-status .octicon-radio-tower{margin-right:10px;margin-left:4px;color:#ccc;vertical-align:middle}.thread-subscription-status .btn-sm>.octicon{margin-right:1px}.thread-subscription-status .reason{display:inline-block;margin:0 10px;vertical-align:middle}.thread-subscription-status .thread-subscribe-form{display:inline-block;vertical-align:middle}.subscription .loading{opacity:0.5}.oauth-wrapper .setup-wrapper{width:100%;max-width:750px}.oauth-wrapper .setup-wrapper .oauth-heading{max-width:60%}.oauth-wrapper .setup-wrapper .oauth-permissions-details{background-color:#fff}.oauth-wrapper .setup-wrapper.oauth-restriction-wrapper{padding-top:0}.oauth-connection-illustration{float:right;max-width:170px;margin:0 auto}.oauth-connection-illustration .oauth-image{float:left;padding:5px;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.1);border-radius:6px}.oauth-connection-illustration .oauth-image img{display:block;width:75px;height:75px;border-radius:3px}.oauth-connection-illustration .oauth-image.oauth-image-user{margin-top:20px;margin-left:-20px}.oauth-review-wrapper .oauth-review-permissions{max-width:426px}.oauth-review-wrapper .setup-info-module{width:300px;border-color:#e2e2e2;box-shadow:none}.oauth-review-wrapper .no-description{color:#767676}.oauth-review-wrapper .features-list{padding-bottom:0}.oauth-split{float:none}@media (max-width: 768px){.oauth-split h1{font-size:24px}}@media (max-width: 768px){.oauth-split h3{font-size:16px}}@media (max-width: 768px){.oauth-split .column{display:block;float:none;margin:0 auto}}@media (max-width: 768px){.oauth-split .oauth-heading{min-width:80%;text-align:center}}@media (max-width: 768px){.oauth-split .oauth-review-wrapper .oauth-review-permissions{max-width:none}}@media (max-width: 768px){.oauth-split .oauth-review-wrapper .setup-info-module{float:none;width:100%;margin:0 auto}}@media (max-width: 768px){.oauth-split .oauth-review-wrapper .btn-primary{width:100%}}.ellipsis-button{display:inline-block;height:12px;padding:0 5px;margin-left:2px;font-size:12px;font-weight:bold;line-height:6px;color:#555;text-decoration:none;vertical-align:middle;background-color:#ddd;border-radius:1px}.ellipsis-button:hover{text-decoration:none;background-color:#ccc}.ellipsis-button::before{content:"\2026"}.oauth-permissions-details{position:relative;padding:15px;margin:0;list-style:none;border-bottom:1px solid #f2f2f2}.oauth-permissions-details:first-child{border-radius:3px 3px 0 0}.oauth-permissions-details:last-child{border:0;border-radius:0 0 3px 3px}.oauth-permissions-details.oauth-public-data-only{border-radius:3px}.oauth-permissions-details .markdown-body{font-size:13px}.oauth-permissions-details .content{display:none;margin-left:45px}.oauth-permissions-details .content .form-checkbox{margin-left:0}.oauth-permissions-details .content .form-checkbox:last-child{margin-bottom:0}.oauth-permissions-details .octicon{float:left;color:#767676;text-align:center}.oauth-permissions-details .permission-help{font-size:13px}.oauth-permissions-details .permission-help ul{padding-left:20px;margin:1em 0}.oauth-permissions-details .permission-summary{margin-left:45px}.oauth-permissions-details .permission-summary .access-details{position:relative;color:#767676}.oauth-permissions-details .permission-summary em.highlight{position:relative;padding:2px 3px;margin-right:-2px;margin-left:-3px;font-style:normal;color:#4c4a42;background:#fff9ea;border-radius:3px}.oauth-permissions-details .permission-title{display:block;color:#000}.oauth-permissions-details a.btn-sm{float:right;margin-top:4px}.oauth-permissions-details.open a.btn-sm{background-color:#dcdcdc;background-image:none;border-color:#b5b5b5;box-shadow:inset 0 2px 4px rgba(0,0,0,0.15)}.oauth-permissions-details.open .content{display:block}.oauth-permissions-details.default:not(.delete) .no-access,.oauth-permissions-details.default:not(.delete) .default-access,.oauth-permissions-details.none .no-access,.oauth-permissions-details.none .default-access{display:inline}.oauth-permissions-details.default:not(.delete) .access-details,.oauth-permissions-details.default:not(.delete) .permission-title,.oauth-permissions-details.none .access-details,.oauth-permissions-details.none .permission-title{color:#999}.oauth-permissions-details.default:not(.delete) .octicon,.oauth-permissions-details.none .octicon{color:#ccc}.oauth-permissions-details.default .default-access{display:inline}.oauth-permissions-details.full .full-access{display:inline}.oauth-details-toggle{position:absolute;top:0;right:0;padding:20px 15px}.oauth-details-toggle .octicon-chevron-up{display:none}.open .oauth-details-toggle .octicon-chevron-down{display:none}.open .oauth-details-toggle .octicon-chevron-up{display:block}.oauth-user-permissions .full-access,.oauth-user-permissions .limited-access,.oauth-user-permissions .limited-access-none,.oauth-user-permissions .limited-access-followers,.oauth-user-permissions .limited-access-emails,.oauth-user-permissions .no-access{display:none}.oauth-user-permissions.limited .limited-access-none{display:inline}.oauth-user-permissions.limited.limited-email .limited-access,.oauth-user-permissions.limited.limited-email .limited-access-none{display:none}.oauth-user-permissions.limited.limited-email .limited-access-emails{display:inline}.oauth-user-permissions.limited.limited-email.limited-follow .limited-access{display:inline}.oauth-user-permissions.limited.limited-email.limited-follow .limited-access-none,.oauth-user-permissions.limited.limited-email.limited-follow .limited-access-emails,.oauth-user-permissions.limited.limited-email.limited-follow .limited-access-followers{display:none}.oauth-user-permissions.limited.limited-follow .limited-access,.oauth-user-permissions.limited.limited-follow .limited-access-none{display:none}.oauth-user-permissions.limited.limited-follow .limited-access-followers{display:inline}.oauth-repo-permissions .default-access,.oauth-repo-permissions .public-access,.oauth-repo-permissions .full-access{display:none}.oauth-repo-permissions.public .public-access{display:inline}.oauth-delete-repo-permissions .octicon-alert{color:#bd2c00}.oauth-repo-status-permissions .no-access,.oauth-repo-status-permissions .full-access,.oauth-repo-deployment-permissions .no-access,.oauth-repo-deployment-permissions .full-access{display:none}.oauth-notifications-permissions .no-access,.oauth-notifications-permissions .read-access,.oauth-notifications-permissions .via-public-access,.oauth-notifications-permissions .via-full-access{display:none}.oauth-notifications-permissions.read .read-access{display:inline}.oauth-notifications-permissions.via-public .via-public-access{display:inline}.oauth-notifications-permissions.via-public .octicon{display:none}.oauth-notifications-permissions.via-full .via-full-access{display:inline}.oauth-gist-permissions .no-access,.oauth-gist-permissions .full-access{display:none}.oauth-granular-permissions .no-access,.oauth-granular-permissions .read-access,.oauth-granular-permissions .write-access,.oauth-granular-permissions .full-access{display:none}.oauth-granular-permissions.none .no-access{display:inline}.oauth-granular-permissions.read .read-access{display:inline}.oauth-granular-permissions.write .write-access{display:inline}.oauth-granular-permissions.full .full-access{display:inline}.oauth-no-description{color:#767676}.oauth-org-access-details a:hover{text-decoration:none}.oauth-org-access-details .boxed-group-inner{border:0;border-radius:3px}.oauth-org-access-details .boxed-group-list>li{line-height:24px}.oauth-org-access-details .boxed-group-list>li:first-child{border-radius:3px 3px 0 0}.oauth-org-access-details .boxed-group-list>li .loading-indicator{display:none;margin:4px}.oauth-org-access-details .boxed-group-list>li.on{background:#fff}.oauth-org-access-details .boxed-group-list>li.on:hover{background:#ffe}.oauth-org-access-details .boxed-group-list>li.on .authorized-tools{display:block}.oauth-org-access-details .boxed-group-list>li.on .unauthorized-tools{display:none}.oauth-org-access-details .boxed-group-list>li.on strong{color:#333}.oauth-org-access-details .boxed-group-list>li.on .octicon-check{display:inline}.oauth-org-access-details .boxed-group-list>li.on .octicon-x{display:none}.oauth-org-access-details .boxed-group-list>li.revoked{background:#fff}.oauth-org-access-details .boxed-group-list>li.revoked .unauthorized-tools,.oauth-org-access-details .boxed-group-list>li.revoked .authorized-tools{display:none}.oauth-org-access-details .boxed-group-list>li.revoked .octicon-x{color:#bd2c00}.oauth-org-access-details .boxed-group-list>li.loading .unauthorized-tools,.oauth-org-access-details .boxed-group-list>li.loading .authorized-tools{display:none}.oauth-org-access-details .boxed-group-list>li.loading .loading-indicator{display:block}.oauth-org-access-details .boxed-group-list>li .authorized-tools{display:none}.oauth-org-access-details .boxed-group-list>li .unauthorized-tools{display:block}.oauth-org-access-details .btn{line-height:1.5em}.oauth-org-access-details .octicon{color:#979797}.oauth-org-access-details .octicon-check{display:none;color:#6cc644}.oauth-org-access-details .octicon-x{display:inline}.oauth-org-access-details .octicon-x.org-access-denied{color:#bd2c00}.added-permission{color:#6cc644}.permission-title{margin-top:0}.oauth-application-whitelist h2{display:inline-block}.oauth-application-whitelist .subhead.subhead-nude{margin-bottom:4px;border-bottom-width:0 !important}.oauth-application-whitelist .request-info{display:block}.oauth-application-whitelist .request-info strong{display:inline-block;color:#333}.oauth-application-whitelist .request-info .application-description{display:none}.oauth-application-whitelist .request-info.open .application-description{display:block}.oauth-application-whitelist .avatar{margin-top:0}.oauth-application-whitelist .requestor{font-weight:bold}.oauth-application-whitelist .octicon-alert{color:#c9510c}.oauth-application-whitelist .octicon-check,.oauth-application-whitelist .approved-request{color:#6cc644}.oauth-application-whitelist .denied-request{color:#bd2c00}.oauth-application-whitelist .request-indicator{margin-left:10px}.oauth-application-whitelist .edit-link{color:#999}.oauth-application-whitelist .edit-link:hover{color:#4078c0}.oauth-application-whitelist .boxed-group-list{margin-top:1em}.oauth-application-whitelist .boxed-group-list li{padding:10px}.boxed-group-inner .oauth-application-info{margin-bottom:10px}.oauth-application-info .application-title{font-size:30px;color:#333}.oauth-application-info .application-description{margin-top:3px;margin-bottom:0}.oauth-application-info .app-info{display:inline-block;margin-right:10px;color:#999}.oauth-application-info .app-info .octicon{margin-right:5px}.oauth-application-info .listgroup.listgroup-padded .listgroup-item{min-height:40px;padding:15px}.oauth-application-info .listgroup-item{line-height:inherit}.oauth-application-info .subhead.subhead-nude{margin-bottom:4px;border-bottom-width:0 !important}.oauth-application-info .meta-link{color:#999}.oauth-application-info .meta-link:hover{color:#4078c0}.oauth-application-info .app-denied,.oauth-application-info .app-approved{margin-left:10px;font-size:13px;font-weight:normal;white-space:nowrap}.oauth-application-info .app-approved,.oauth-application-info .octicon-check{color:#6cc644}.oauth-application-info .app-denied,.oauth-application-info .octicon-x{color:#c9510c}.restrict-oauth-access-button{margin-right:20px}.restrict-oauth-access-info{margin-bottom:40px;font-size:15px}.restrict-oauth-access-list{padding-left:25px}.restrict-oauth-access-list li{margin-bottom:10px}.restrict-oauth-access-list li:last-child{margin-bottom:0}.app-transfer-actions form{display:inline}.oauth-border{border-bottom:1px solid #e5e5e5}.oauth-border:last-child{border:0}.developer-app-item .developer-app-avatar-cell{width:60px}.developer-app-item .developer-app-name{font-size:15px;font-weight:bold;line-height:1.2;color:#333}.developer-app-item .developer-app-name:hover{color:#4078c0;text-decoration:none}.developer-app-item .developer-app-info-cell{padding-left:0}.developer-app-item .developer-app-list-meta{margin-top:3px;margin-bottom:2px;font-weight:normal;color:#999}.org-transfer-requests{margin:10px 0 20px}.invitation-container{width:600px;margin:40px auto;border:1px solid #ddd;border-radius:3px}.invitation-container h3{font-size:16px;font-weight:normal}.invitation-container .banner-warn{padding:20px;margin:0;border:1px solid #dfd8c2;border-right:0;border-left:0}.invitation-container .invitation-footer form{display:inline-block;margin-right:10px}.invitation-disclosure{position:relative;width:28%;padding:10px 0 10px 24px;color:#767676;text-align:center;list-style:none}.invitation-disclosure .octicon{display:inline-block;margin-right:5px;color:#767676;text-align:center}.invitation-header .invitation-title{font-size:18px;line-height:1.2}.sign-up-via-invitation .bleed-flush{width:100%;padding:0 20px;margin-left:-20px;border-color:#d8dee2}.sign-up-via-invitation label{font-size:13px}.orghead{padding-top:20px;padding-bottom:0;margin-bottom:20px;color:#666;background-color:#fafafa;border-bottom:1px solid #eee}.orghead .edit-org{position:relative;top:-6px;display:inline-block;padding:3px 5px;font-size:14px;color:#aaa;border:1px solid #e5e5e5;border-radius:3px}.orghead .edit-org:hover{color:#4078c0;background-color:#fff}.orghead .edit-org .octicon{font-size:14px}.orghead .orgnav{position:relative;top:1px;margin-top:10px}.orghead-next{margin-bottom:0;border-bottom:0}.org-header-wrapper .avatar{display:block;width:100px}.org-header-wrapper .flex-table-item-primary{padding-left:20px;white-space:normal}.org-name{font-weight:normal;color:#333}.org-description{margin-top:0;margin-bottom:8px;font-size:16px;line-height:1.25}.org-header-meta{font-size:12px;line-height:1.5;list-style:none}.org-header-meta .meta-item{display:inline-block;max-width:100%;padding-right:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.org-header-meta .meta-item .meta-link{color:#666}.org-header-meta .octicon{position:relative;top:1px;margin-right:2px;color:#ccc;vertical-align:text-bottom}.org-header-meta.has-email.has-blog .meta-item,.org-header-meta.has-email.has-location .meta-item,.org-header-meta.has-blog.has-location .meta-item{max-width:278px}.org-header-meta.has-email.has-blog.has-location .meta-item{max-width:186px}.org-link{color:#333}.org-link:hover{color:#4078c0;text-decoration:none}.org-main{float:left;width:640px}.org-sidebar{float:right;width:280px}.org-sidebar .member-badge{display:block;padding-top:0;padding-bottom:0;border-top:0}.audit-log-map-container{position:relative;margin-bottom:20px}.audit-log-map-container .activity{position:absolute;top:120px;left:340px;z-index:99999;display:none;text-align:center}.audit-log-map-container .is-graph-loading .activity{display:block}.audit-search-form{position:relative;margin-bottom:20px}.audit-search-form::before{display:table;content:""}.audit-search-form::after{display:table;clear:both;content:""}.audit-search-form .subnav-search-input{width:250px}.audit-log-map{height:277px;overflow:hidden;background-color:#4078c0;border-radius:3px;box-shadow:inset 1px 1px 0 rgba(0,0,0,0.2)}.map-background{pointer-events:all;fill:#4078c0;cursor:-webkit-grab;cursor:grab}.land{fill:none;stroke:#256aae;stroke-width:2;shape-rendering:crispedges}.country{fill:#d7c7ad;shape-rendering:crispedges;cursor:pointer}.country.hk{stroke:#a5967e}.country:hover{fill:#c8b28e}.country.active{fill:#f6e5ca}.borders{fill:none;stroke:#a5967e;shape-rendering:crispedges}.graticule{pointer-events:none;fill:none;stroke:#fff;stroke-opacity:0.2;shape-rendering:crispedges}.graticule :nth-child(2n){stroke-dasharray:2, 2}.security-map-legend circle{fill-opacity:0;stroke:#fff;stroke-width:1.5}.security-map-legend text{font-size:10px;fill:#fff;text-anchor:end}.security-map-legend .link{stroke:#fff;stroke-width:1.5}.audit-point{pointer-events:none;fill:#bd2c00;fill-opacity:0.8;stroke:#bd2c00}.country-info{position:absolute;top:10px;right:10px;padding:10px;pointer-events:none;background:rgba(255,255,255,0.9);border-radius:2px;opacity:0}.audit-log-search .member-info{width:300px}.audit-log-search .member-info .member-avatar{float:left;margin-right:15px}.audit-log-search .member-info .member-link{display:block}.audit-log-search .member-info .member-list-avatar{margin-right:0}.audit-log-search .member-info .ghost{display:inline-block;color:#767676}.audit-log-search .blankslate{border-top-left-radius:0;border-top-right-radius:0}.audit-log-search .export-phrase{margin:5px 0}.audit-results-header{padding:10px;background-color:#f7f7f7;border:1px solid #dcdcdc;border-bottom:0;border-top-left-radius:3px;border-top-right-radius:3px}.audit-results-header::before{display:table;content:""}.audit-results-header::after{display:table;clear:both;content:""}.audit-results-header-title{float:left;margin:3px 0;font-size:14px;font-weight:normal;color:#333}.audit-results-actions{overflow:auto}.audit-search-clear{float:left;margin-bottom:20px;border:0}.audit-search-clear .issues-reset-query{margin-bottom:0}.audit-type{width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audit-type .octicon{margin-right:3px;font-weight:normal;vertical-align:bottom}.audit-type .repo{color:#c9510c}.audit-type .team{color:#6cc644}.audit-type .user{color:#6e5494}.audit-type .oauth_access{color:#bd2c00}.audit-type .hook{color:#e1bf4e}.export-actions{display:inline-block;margin-left:10px}.export-actions a{margin-top:-3px;color:#999}.export-actions a:hover{color:#4078c0;text-decoration:none}.export-actions .select-menu-button::after{position:absolute;top:50%;right:15px;margin-top:-2px}.export-actions .select-menu-modal{width:111px}.export-actions .select-menu-item-text{text-align:center}.export-phrase{margin-top:5px}.export-phrase pre{padding-left:10px;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;white-space:pre-wrap;border-left:1px solid #eee}.audit-log-export-button{width:110px;height:30px;-webkit-transition:0.25s width ease-in-out;transition:0.25s width ease-in-out}.audit-log-export-button .loader{position:absolute;top:50%;left:11px;display:none;margin-top:-9px}.audit-log-export-button .octicon{position:absolute;top:50%;left:11px;margin-top:-9px}.audit-log-export-button .audit-log-export-status{position:absolute;top:4px;left:35px}.audit-log-export-button.disabled{width:125px}.audit-log-export-button.disabled::after{display:none}.audit-log-export-button.disabled .octicon{display:none}.audit-log-export-button.disabled .loader{display:block}.two-factor-enforcement-form .loading-spinner{float:left;margin:0 0 0 -20px;vertical-align:middle}.org-nav{margin-bottom:24px;border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}.org-module-title{margin:-15px -15px 0;font-size:18px;border-bottom:1px solid #eee}.org-module-link{display:block;padding:15px;color:#333}.org-module-link:hover,.org-module-link:hover .org-stats{color:#4078c0;text-decoration:none}.org-stats{float:right;margin-top:3px;font-size:14px;color:#767676}.org-members-title{margin-bottom:0;border-bottom:0}.member-avatar-group{margin:-1px}.member-avatar-group::before{display:table;content:""}.member-avatar-group::after{display:table;clear:both;content:""}.member-avatar{float:left;margin:1px}.member-row{display:block;min-height:40px;padding-bottom:15px;margin-top:15px;margin-bottom:15px;font-size:14px;color:#333;border-bottom:1px solid #eee}.member-row::before{display:table;content:""}.member-row::after{display:table;clear:both;content:""}.member-row:hover{color:#4078c0;text-decoration:none}.member-row:last-child{padding-bottom:0;margin-bottom:0;border-bottom:0}.member-row .avatar{float:left}.member-row .member-name{display:block;padding-left:50px}.member-row .member-fullname{display:block;padding-left:50px;word-wrap:break-word}.member-fullname{color:#767676}.org-no-members{margin-top:20px;margin-bottom:10px;color:#767676;text-align:center}.org .no-results{padding:10px;color:#767676}.org-toolbar.disabled{pointer-events:none}.org-toolbar .subnav-search{width:320px;margin-right:20px;margin-left:0}.org-toolbar .subnav-search-context+.subnav-search{margin-left:-1px}.org-toolbar .subnav-search-input{width:100%}.org-toolbar-next{margin-bottom:24px}.org-toolbar-next .subnav-search{width:240px}.pending-invitations-link,.buy-more-seats-link{padding-right:15px;padding-left:15px}.auto-search-group{position:relative}.auto-search-group .auto-search-input{padding-left:30px}.auto-search-group .spinner,.auto-search-group>.octicon{position:absolute;left:10px;z-index:5;width:16px;height:16px}.auto-search-group .spinner{top:9px;background-color:#fff}.auto-search-group>.octicon{top:10px;font-size:14px;color:#bbb;text-align:center}.org-list .list-item{position:relative;padding-top:15px;padding-bottom:15px;border-bottom:1px solid #eee}.org-list .list-item::before{display:table;content:""}.org-list .list-item::after{display:table;clear:both;content:""}.org-list .cancel-link{color:#767676}.org-repos .blankslate,.org-team-main .blankslate{margin-top:15px}.org-repos-mini{padding:0;margin:0}.org-repos-mini .org-repo-mini-item:first-child .org-repo-mini-cell{border-top:0}.org-repos-mini .org-repo-icon{vertical-align:middle}.org-repos-mini .org-repo-name{margin-top:0;margin-bottom:0;font-size:14px;word-wrap:break-word}.org-repos-mini .org-repo-name .octicon-repo{color:#767676}.org-repos-mini .org-repo-name .octicon-lock{color:#e9dba5}.org-repos-mini .org-repo-name .repo-prefix{font-weight:normal}.org-repos-mini .org-repo-name .repo-slash{display:inline-block;margin-right:-4px;margin-left:-4px}.org-repos-mini .org-repo-forked{display:inline-block;max-width:270px;margin-top:0;margin-bottom:0;font-size:12px;font-weight:normal}.org-repo-mini-cell{padding-top:15px;padding-bottom:15px;vertical-align:middle}.org-repo-meta{width:165px}.org-repo-meta .access-level{cursor:default}.org-repo-access-level{text-align:center}.org-repo-manage{width:270px}.org-repo-higher-access{display:none;margin-top:2px;margin-left:16px;font-size:11px}.org-higher-access-member .manage-access{position:relative;top:2px;font-size:12px}.with-higher-access .org-repo-higher-access{display:block}.with-higher-access .table-list-cell-checkbox{vertical-align:top}.permission-level-cell .select-menu-button{width:78px;text-align:left}.permission-level-cell .select-menu-button::after{position:absolute;top:10px;right:10px}.permission-level-cell .spinner,.permission-level-cell .permission-success-icon{position:absolute;display:inline-block;margin-left:15px;opacity:0;-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.permission-level-cell .permission-success-icon{margin-top:4px;color:#6cc644}.permission-level-cell .is-loading .spinner,.permission-level-cell .was-successful .permission-success-icon{opacity:1}.org-repo-permission-select .select-menu-modal .description{padding-right:20px}.org-repo-permission-select .select-menu-option-title{margin-top:0;margin-bottom:0}.org-repo-permission-select .navigation-focus .select-menu-option-title{color:#fff}.reinstate-org-member{position:relative;width:500px;margin:40px auto}.reinstate-org-member .reinstate-lead{margin-bottom:30px;font-size:16px}.reinstate-org-member label{cursor:pointer}.reinstate-org-member .reinstate-detail-container{margin:15px 0}.reinstate-org-member .reinstate-title{color:#333}.reinstate-org-member .reinstate-title .octicon{width:16px;margin-right:10px;color:#999}.facebox .reinstate-data-list{max-height:168px;padding-left:0;margin-bottom:0;margin-left:0;overflow:auto}.add-member-wrapper{position:relative;width:500px;margin:40px auto}.add-member-wrapper .available-seats{color:#767676}.add-member-wrapper .buy-more-link{margin-right:5px}.cancel-invitation-form{margin-top:-34px}.add-member-lead{font-size:16px}.add-member-roles{margin:30px 0}.add-member-roles .role-make-member{display:block;margin-bottom:10px}.add-member-team-list{display:block;margin-bottom:30px;list-style:none}.add-member-team-list .team-row-header{padding:10px 20px 10px 0;font-size:12px;text-align:right;background:#fafafa;border-top-left-radius:3px;border-top-right-radius:3px}.add-member-team-list .team-row-header .team-row-teams{margin-right:245px}.add-member-team-list .team-row-header .team-row-members{margin-right:35px}.add-member-team-list .team{display:block;font-weight:normal;cursor:pointer}.add-member-team-list .team:first-child{border-top:1px solid #f2f2f2}.add-member-team-list .team .btn-sm{float:right}.add-member-team-list .team-info{max-width:80%;color:#000;text-decoration:none}.add-member-team-list .team-meta{margin-top:2px;margin-bottom:2px;color:#767676}.add-member-team-list .team-description{width:260px;margin-top:2px;margin-bottom:2px}.add-member-team-list .team-toggler .turn-on{display:inline-block}.add-member-team-list .team-toggler.on .turn-off{display:inline-block}.add-member-team-list .team-toggler .turn-off{display:none}.add-member-team-list .team-toggler.on .turn-on{display:none}.team-list-footer{padding:10px 0;text-align:center;border-top:1px solid #e5e5e5}.team-list-footer .show-all-link .octicon{margin-left:5px;color:#767676}.invite-team-member-list .team{cursor:default}.invite-team-member-list .team:first-child .table-list-cell{border-top:0}.invite-team-member-list .table-list-cell-checkbox{width:42px}.invite-team-member-list .team-toggler{padding-top:12px}.invite-team-member-list .team-info{width:260px;padding:10px 15px 10px 0}.invite-team-member-list .team-description{display:block;padding-top:0;padding-bottom:0;font-weight:normal}.invite-team-member-list .team-meta{width:100px;text-align:left;vertical-align:middle}.invite-team-member-list .team-link{color:#4078c0;text-align:right}.org-people-blankslate{margin-top:-20px;border-top-width:0;border-top-left-radius:0;border-top-right-radius:0}.migration-jumbotron{height:70vh;min-height:450px;max-height:650px}.migration-jumbotron,.migration-sub-header{position:relative;margin-top:-1px;background-color:#3f4851;background-image:-webkit-linear-gradient(#3f4851 0, #282d33 100%);background-image:linear-gradient(#3f4851 0, #282d33 100%)}.migration-jumbotron::after,.migration-sub-header::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:" ";background-image:url("/images/modules/orgs/dots-bg.png");background-repeat:repeat;background-size:80%;opacity:0.75}.migration-jumbotron-content{position:relative;top:50%;z-index:2;width:980px;padding:100px 60px;margin:0 auto;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.migration-jumbotron-octicons{height:60px;margin-bottom:20px;text-align:center}.migration-jumbotron-octicon-item{position:relative;display:inline-block;width:60px;height:60px;margin-right:10px;margin-left:10px;background-image:-webkit-linear-gradient(135deg, #6e5494 30%, #c9510c 100%);background-image:linear-gradient(-45deg, #6e5494 30%, #c9510c 100%);border-radius:50px}.migration-jumbotron-octicon-item::after{position:absolute;top:1px;right:1px;bottom:1px;left:1px;content:"";background-color:#383f47;border-radius:50px}.migration-jumbotron-octicon-item .octicon{position:relative;z-index:2;margin-top:16px;color:rgba(255,255,255,0.9)}.migration-jumbotron-title,.migration-jumbotron-lead,.migration-sub-title,.migration-sub-lead{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,0.05)}.migration-jumbotron-title,.migration-section-title{margin-bottom:10px;font-weight:300}.migration-jumbotron-title{font-size:40px}.migration-section-title{margin-top:0;font-size:30px}.migration-jumbotron-lead{margin-top:0;font-size:24px;opacity:0.85}.migration-section-lead{margin-top:20px;margin-bottom:20px}.migration-jumbotron-btn{padding:12px 18px;font-size:16px;color:#6e5494;background-color:#fff;border-width:0;box-shadow:0 3px 3px rgba(0,0,0,0.05)}.migration-jumbotron-btn:hover{color:#6e5494;background-color:#eee}.migration-section{padding-top:100px;padding-bottom:100px;overflow:hidden;border-bottom:1px solid #ddd}.migration-feature-list{margin-top:30px;margin-bottom:20px;overflow:hidden;font-size:14px;color:#767676;list-style:none}.migration-feature-list::before{display:block;width:100px;margin-bottom:30px;content:"";border-top:1px solid #ddd}.migration-feature-list .octicon{width:22px;margin-left:-3px;color:#767676;text-align:center}.migration-feature-list-item{float:left;width:50%;margin-bottom:15px}.migration-section-grey{background-color:#fcfcfc}.migration-illustration-wrapper::before{display:table;content:""}.migration-illustration-wrapper::after{display:table;clear:both;content:""}.migration-illustration{width:700px;margin-top:-30px;margin-bottom:-50px;border:1px solid #ddd;border-radius:3px;box-shadow:0 0 15px rgba(0,0,0,0.05)}.migration-illustration-left{float:right;margin-right:50px}.migration-illustration-right{float:left;margin-left:50px}.migration-section-privileges{padding-top:80px;padding-bottom:80px}.migration-footer{position:relative;z-index:1;padding-top:60px;padding-bottom:60px;margin-bottom:-41px;border-bottom:1px solid #ddd}.migration-footer-content{width:800px;margin:0 auto;text-align:center}.migration-footer-title,.migration-footer-lead{margin-bottom:0}.migration-footer-lead{margin-top:10px}.migration-footer-btn{margin-top:20px}.migration-sub-header{padding-top:40px;padding-bottom:40px;margin-bottom:40px}.org-settings-updating{padding:15px;margin-top:0;margin-bottom:30px;background-color:#fff;border:1px solid #ddd;border-radius:3px}.org-settings-updating .spinner{display:inline-block;margin-top:-2px;vertical-align:middle}.org-disabled-settings{pointer-events:none;opacity:0.5}.migration-sub-header-content{width:68%}.migration-sub-title{margin-bottom:0}.migration-sub-lead{margin-top:10px;margin-bottom:0}.migration-org-avatar{margin-top:6px;margin-right:72px;border:3px solid #fff;border-radius:3px}.org-migration-settings-sidebar .migrate-org-roles{margin-top:0;margin-bottom:10px}.org-migration-settings-sidebar .preserve-member-privileges-btn{display:none}.org-migration-settings-sidebar .member-privilege-radios-preserved .preserve-member-privileges-btn{display:block}.org-migration-settings-sidebar .member-privilege-radios-preserved .save-member-privileges-btn{display:none}.org-migration-settings-section{position:relative;padding-bottom:50px;margin-right:60px;margin-bottom:50px;border-bottom:1px solid #ddd}.org-migration-settings-section:last-child{padding-bottom:0;margin-bottom:0;border-bottom:0}.org-migration-settings-section .disabled{pointer-events:none;opacity:0.5}.org-migration-settings-section .spinner{display:inline-block;margin-bottom:-3px}.org-migration-settings-icon{position:absolute;left:-45px;color:#ccc}.org-migration-settings-title{margin-bottom:0;font-size:22px;font-weight:normal}.org-migration-settings-info{margin-top:5px;margin-bottom:30px;font-size:16px;color:#767676}.migrate-owners-wrapper{position:relative;min-height:550px}.migrate-owners-content-about,.migrate-owners-content-rename{position:absolute;top:0;left:50%;margin:30px auto 0;-webkit-transition:opacity 0.2s ease-in-out, -webkit-transform 0.3s ease-in-out;transition:opacity 0.2s ease-in-out, transform 0.3s ease-in-out;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0)}.migrate-owners-content-hidden{z-index:20;pointer-events:none;opacity:0;-webkit-transform:translate(-50%, 150px);transform:translate(-50%, 150px)}.migrate-owners-content-about{width:700px;text-align:center}.migrate-owners-title{font-size:35px;font-weight:normal}.migrate-owners-lead{margin-top:0;margin-bottom:20px}.migrate-owners-content-rename{width:520px}.rename-owners-error span{display:inline-block;padding:5px;margin-bottom:10px;font-size:11px;font-weight:bold;color:#494620;background:#f7ea57;border:1px solid #c0b536;border-top-color:#fff;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.rename-owners-spinner{position:absolute;top:30px;right:30px}.delete-owners-button{color:#767676}.delete-owners-button:hover{color:#bd2c00}.rename-owners-team-form .rename-owners-team-input{font-size:22px;font-weight:bold}.rename-owners-team-form .note{margin-top:5px;margin-bottom:15px;color:#767676}.migrate-org-roles{display:table;width:100%;margin-top:-20px;border:1px solid #ddd;border-radius:3px}.migrate-org-roles .tooltipped::after{width:150px;white-space:normal}.no-avatars-roles-matrix .migrate-org-roles{margin-top:5px}.migrate-org-roles-item{display:table-cell;width:33.33%;border-right:1px solid #ddd}.migrate-org-roles-item:last-child{border-right:0}.migrate-ability-list{margin:15px 0;list-style:none}.migrate-ability-list-item{padding-top:5px;padding-bottom:5px;margin:0 20px;font-size:14px}.migrate-ability-list-item:first-child{border-top:0}.migrate-ability-list-item .octicon-check,.migrate-ability-list-item .octicon-x{width:15px}.migrate-ability-list-item .octicon-check{color:#6cc644}.migrate-ability-list-item .octicon-x{color:#aaa}.migrate-ability-list-item .octicon-question{font-size:12px;color:#555}.migrate-ability-not-possible{color:#767676}.default-repository-permission .octicon-x,.members-can-create-repositories .octicon-x,.team-privacy .octicon-x{display:none}.default-repository-permission.migrate-ability-not-possible .octicon-x,.members-can-create-repositories.migrate-ability-not-possible .octicon-x,.team-privacy.migrate-ability-not-possible .octicon-x{display:inline-block}.default-repository-permission.migrate-ability-not-possible .octicon-check,.members-can-create-repositories.migrate-ability-not-possible .octicon-check,.team-privacy.migrate-ability-not-possible .octicon-check{display:none}.migrate-org-roles-header{padding:15px 20px;border-bottom:1px solid #ddd}.migrate-org-roles-title{margin-top:0;margin-bottom:0;font-size:18px;font-weight:normal}.migrate-org-roles-lead{margin-top:4px;margin-bottom:0;font-size:14px;color:#767676}.migrate-org-roles-count{padding:10px 20px;color:#767676;border-top:1px solid #ddd}.migrate-org-avatar-list{margin-top:5px;margin-bottom:10px}.migrate-org-avatar-list::before{display:table;content:""}.migrate-org-avatar-list::after{display:table;clear:both;content:""}.migrate-org-avatar-list .migrate-org-avatar,.migrate-org-avatar-list .migrate-org-avatar-empty{float:left;margin-left:2px}.migrate-org-avatar-list .migrate-org-avatar:first-child,.migrate-org-avatar-list .migrate-org-avatar-empty:first-child{margin-left:0}.migrate-org-avatar-list .migrate-org-avatar-empty{width:30px;height:30px;border-radius:3px}.migrate-org-avatar-list .migrate-org-more-ellipsis,.migrate-org-avatar-list .migrate-org-zero{font-size:18px;line-height:30px;color:#767676;text-align:center}.migrate-org-avatar-list .migrate-org-more-ellipsis{font-weight:bold;line-height:20px;background-color:#f5f5f5}.migrate-org-avatar-list .migrate-org-zero{color:#767676;border:1px dashed #ddd}.migrate-org-avatar-list .migrate-org-more-ellipsis:hover{text-decoration:none}.migrate-org-avatar-list .tooltipped::after{width:auto;white-space:nowrap}.default-permission-update-in-progress .form-group{pointer-events:none;opacity:0.5}.default-permission-update-in-progress .spinner{display:inline-block;margin-top:-3px;margin-left:5px;vertical-align:middle}.default-permission-updating{float:right;margin-top:10px;margin-right:10px}.default-permission-update-text{color:#767676}.org-settings-teams::before{display:table;content:""}.org-settings-teams::after{display:table;clear:both;content:""}.org-settings-team-item{float:left;width:50%;padding:20px 40px 25px;text-align:center}.org-settings-team-item:first-child{border-right:1px solid #ddd}.org-settings-team-count{font-size:30px;color:#000}.org-settings-team-type{margin-top:0;margin-bottom:10px;font-size:14px;font-weight:normal;color:#000}.org-settings-team-description{margin-top:0}.menu-item .org-avatar,.menu-item .org-octicon-credit-card{position:absolute}.menu-item .org-octicon-credit-card{right:0}.org-settings-link{display:block;padding:0 30px;word-wrap:break-word}.team-info-card{position:relative;margin-bottom:20px}.team-info-card .team-label-ldap{font-size:13px;line-height:32px}.team-info-card .team-description{margin-top:10px;font-size:14px;line-height:20px;color:#666;word-break:break-word}.team-info-card .team-description .link{color:#767676;cursor:pointer}.team-info-card .team-description .link:hover{text-decoration:underline}.team-info-card .description-toggler .turn-on{display:inline-block}.team-info-card .description-toggler.on .turn-off{display:inline-block}.team-info-card .description-toggler .turn-off{display:none}.team-info-card .description-toggler.on .turn-on{display:none}.team-title{margin-top:0;margin-bottom:0;font-size:22px;line-height:26px}.team-stats{padding-right:15px;padding-left:15px;margin-right:-15px;margin-bottom:-15px;margin-left:-15px;border-top:1px solid #eee}.stats-group{display:table;width:100%;table-layout:fixed}.stats-group-stat{display:table-cell;padding-top:10px;padding-bottom:10px;padding-left:15px;font-size:12px;color:#767676;text-transform:uppercase}.stats-group-stat:first-child{padding-left:0;border-right:1px solid #eee}.stats-group-stat:hover,.stats-group-stat:hover .stat-number{color:#4078c0;text-decoration:none}.stats-group-stat.no-link:hover{color:#767676;text-decoration:none}.stats-group-stat.no-link:hover .stat-number{color:#333}.stat-number{display:block;font-size:16px;color:#333}.team-description-form{width:100%;margin-top:10px;margin-bottom:20px}.team-description-field{width:100%;height:100px;margin-bottom:10px;font-size:14px}.team-actions .octicon{margin-right:0}.team-actions-form{display:inline-block}.org-team-sidebar{float:left;width:280px}.org-team-sidebar .team-note{font-size:13px;color:#767676;text-align:center}.org-team-sidebar .team-note .note-emphasis{color:#333}.legacy-admin-actions{margin-top:10px}.legacy-admin-migrate-btn{margin-right:5px}.org-team-main{float:right;width:660px}.permission-title{margin-top:0}.add-to-org-wrapper{width:500px}.invite-member-results ul{margin:0}.invite-member-header{text-align:center}.add-to-org-title{font-size:21px;font-weight:normal;line-height:normal}.owners-team-repo-note{margin-top:12px;margin-bottom:0}.owners-team-repo-note .octicon{font-size:14px}.team-member-list{list-style:none}.team-member-list .table-list-cell{padding-top:15px;padding-bottom:15px}.team-member-list .team-member-content{margin-left:50px}.team-member-list .team-member-username{margin:0;font-size:14px;font-weight:bold;line-height:20px}.team-member-list .label-admin,.team-member-list .label-generic{cursor:default}.team-member-list .manage-team-member{float:right}.team-member-list .manage-team-member .select-menu-modal{left:-176px;width:225px}.team-member-list .manage-team-member .select-menu-item.disabled{color:#bbb;cursor:not-allowed}.team-member-list .manage-team-member .select-menu-item.btn-link,.team-member-list .manage-team-member .select-menu-item .btn-link{width:100%;margin-left:0;color:#767676}.team-member-list .manage-team-member .select-menu-item.btn-danger,.team-member-list .manage-team-member .select-menu-item .btn-danger{color:#bd2c00}.team-member-list .manage-team-member .navigation-focus.disabled{color:#bbb;background-color:#fff}.team-member-list .manage-team-member .navigation-focus.btn-link,.team-member-list .manage-team-member .navigation-focus .btn-link{color:#fff;text-decoration:none}.team-member-list .manage-team-member .navigation-focus.btn-danger,.team-member-list .manage-team-member .navigation-focus .btn-danger{background:#bd2c00}.facebox-content .team-member-username{max-width:230px}.team-member-list-avatar{float:left;margin-right:10px}.team-member-list-avatar .octicon{width:40px;color:#999}.org-team-form{width:440px;margin:0 auto}.org-team-form .disabled{opacity:0.5}.org-team-form .name-check-success,.org-team-form .name-check-fail{display:none}.org-team-form.is-name-check-success .name-check-success{display:inline}.org-team-form.is-name-check-fail .name-check-fail{display:inline}.org-validate-group{position:relative}.org-validate-group .octicon,.org-validate-group .spinner{position:absolute;top:9px;right:10px}.org-validate-group .octicon-check{color:#6cc644}.org-validate-group .octicon-alert{color:#bd2c00}.org-validate-group input::-ms-clear{display:none}.team-members{margin-bottom:20px}.confirm-removal-container .private-fork-count{margin-top:0;font-size:12px;font-weight:normal;color:#767676}.confirm-removal-container .deleting-private-forks-warning{position:relative;padding-left:26px}.confirm-removal-container .deleting-private-forks-warning .octicon{position:absolute;top:2px;left:0;color:#bd2c00}.confirm-removal-list-container{margin-bottom:15px;border:1px solid #eaeaea;border-radius:3px}.facebox .confirm-removal-list{max-height:182px;padding-left:0;margin-bottom:0;margin-left:0;overflow:auto}.confirm-removal-list-item{padding:10px;margin:0;font-size:14px;font-weight:bold;border-top:1px solid #eaeaea}.confirm-removal-list-item:first-child{border-top:0}.confirm-removal-list-item.cutoff-member-summary{font-weight:normal}.confirm-removal-team .octicon,.confirm-removal-repo .octicon{margin-right:3px;color:#767676}.convert-to-outside-collaborator-facebox,.change-role-facebox{display:none}.org-blankslate{display:none}.org-section.is-empty .org-blankslate{display:block}.manage-user-info{padding-right:15px;padding-bottom:10px;padding-left:15px;margin-right:-15px;margin-left:-15px;border-bottom:1px solid #eee}.manage-user-info::before{display:table;content:""}.manage-user-info::after{display:table;clear:both;content:""}.manage-user-info .member-username{margin-top:0}.manage-user-info .member-username,.manage-user-info .member-fullname{display:block;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.manage-user-info .avatar{margin-top:2px;margin-right:10px}.manage-user-role{position:relative;padding-top:15px;padding-bottom:5px}.manage-user-role .select-menu-item-text .description{font-size:12px;line-height:16px}.manage-user-role .role-info{color:#767676}.manage-member-meta{list-style:none}.manage-member-meta-item{margin-top:12px;color:#767676}.manage-member-meta-item:first-child{margin-top:0}.manage-member-meta-item .btn-link{color:#767676}.manage-member-meta-item>.octicon{width:14px;margin-right:5px;color:#767676;text-align:center}.manage-member-meta-item>.octicon-alert{color:#c9510c}.member-two-factor-disabled{color:#bd2c00}.manage-member-button{margin-bottom:10px}.org-person-repo-header{margin-top:0}.org-person-repo-search{margin-top:5px;margin-right:5px}.org-user-notice-title{margin-top:0;margin-bottom:0}.org-user-notice-content{margin-top:10px;margin-bottom:10px;font-size:14px}.org-user-notice-content strong{color:#333}.org-user-notice-content:last-child{margin-bottom:0}.org-user-notice-content .octicon{color:#767676}.org-user-notice-icon{float:right;margin:10px 10px 20px;font-size:45px;color:#ccc}.org-migration-list{margin-bottom:20px;margin-left:20px;font-size:14px}.org-migration-list-item{margin-bottom:5px}.manage-repo-access-header{margin-top:30px;margin-bottom:30px}.manage-repo-access-header::before{display:table;content:""}.manage-repo-access-header::after{display:table;clear:both;content:""}.manage-repo-access-header .btn{margin-top:8px}.manage-repo-access-header .tooltipped::after{width:250px;white-space:normal}.manage-repo-access-heading{margin-top:-2px;margin-bottom:0;font-size:24px;font-weight:normal}.manage-repo-access-lead{margin-top:3px;margin-bottom:0;font-size:16px;color:#767676}.manage-repo-access-group{background-color:#fff;border:1px solid #ddd;border-radius:3px}.manage-repo-access-title{padding:12px 15px;margin-top:0;margin-bottom:0;font-size:14px;background-color:#f8f8f8;border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.manage-repo-access-wrapper{position:relative;padding-left:25px}.manage-repo-access-wrapper::before{position:absolute;top:15px;bottom:15px;left:20px;z-index:1;display:block;width:2px;content:"";background-color:#eee}.manage-repo-access-icon{position:relative;z-index:2;float:left;padding-top:2px;padding-bottom:2px;margin-top:-3px;margin-left:-25px;background:#fff}.manage-repo-access-icon .octicon{font-size:14px;color:#ccc}.manage-repo-access-list{list-style:none}.manage-repo-access-list-item{padding:15px}.manage-repo-access-list-item:last-child{border-bottom:0;border-radius:0 0 3px 3px}.manage-repo-access-teams-group{margin-top:-20px;list-style:none;border:1px solid #ddd;border-radius:3px}.manage-repo-access-team-item{border-top:1px solid #eee}.manage-repo-access-team-item:first-child{border-top:0}.manage-repo-access-description{margin-top:3px;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;white-space:nowrap}.manage-repo-access-not-active{color:#333;background-color:#fafafa}.manage-repo-access-not-active .manage-repo-access-icon{background:#f9f9f9}.manage-access-remove-footer{padding:15px;border-top:1px solid #ddd}.manage-access-remove-footer .tooltipped::after{width:250px;white-space:normal}.manage-access-none{margin:20px 50px;text-align:center}.ldap-group-dn{display:block;font-weight:normal;color:#aaa}.ldap-import-groups-container .blankslate{display:none}.ldap-import-groups-container.is-empty .blankslate{display:block}.ldap-import-groups-container.is-empty .ldap-memberships-list{display:none}.ldap-import-groups-container .team-name-exists{position:absolute;z-index:1;display:none;padding:5px;font-size:11px;color:#494620;background:#f7ea57;border:1px solid #c0b536;border-top-color:#fff;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.ldap-import-groups-container .is-exists .ldap-mention-as{color:#bd2c00}.ldap-import-groups-container .is-exists .team-name-exists{display:inline-block}.ldap-memberships-list{margin-bottom:30px}.ldap-memberships-list .table-list-cell{padding-top:10px;padding-bottom:10px;font-size:13px;vertical-align:middle}.ldap-memberships-list .table-list-cell:last-child{width:92px}.ldap-memberships-list .team-name-exists{bottom:-19px;left:10px}.ldap-memberships-list .ldap-list-team-name{width:380px}.ldap-memberships-list .ldap-group-dn{font-size:11px}.ldap-memberships-list .ldap-mention-as{width:260px}.ldap-memberships-list .edit{position:absolute;padding:10px;margin-left:-33px;color:#4078c0;cursor:pointer}.ldap-memberships-list .edit-fields{display:none}.ldap-memberships-list .is-editing .edit-hide{display:none}.ldap-memberships-list .is-editing .edit-fields{display:block}.ldap-memberships-list .is-editing .spinner{margin-left:15px;vertical-align:middle}.ldap-memberships-list .is-removing{opacity:0.25}.ldap-memberships-list .is-removing .edit{opacity:0.5}.team-name-field{height:33px}.ldap-import-form-actions{margin-top:30px}.is-importing .team-ldap-group-adder-button .spinner{float:left}.team-ldap-group-adder{position:relative;float:left}.team-ldap-group-adder .team-name-exists{bottom:-27px;left:0}.team-ldap-group-adder .subnav-search-input{border-radius:4px 0 0 4px}.team-ldap-group-adder-button{width:90px;margin-left:-1px;border-radius:0 4px 4px 0}.team-ldap-group-adder-button .loading-indicator{display:none}.pending-invitations-facebox{display:none}.pending-team-invitations-link{display:block;padding-top:15px;padding-bottom:15px;margin-top:20px;border-top:1px solid #eee}.invited .team-member-list{margin:-10px 0 0}.invited .team-member-list .list-item{padding:10px 0;border-bottom:1px solid #eee}.invited .team-member-list .list-item::before{display:table;content:""}.invited .team-member-list .list-item::after{display:table;clear:both;content:""}.invited .team-member-list .list-item:last-of-type{border:0}.invited .team-member-list .list-item .edit-invitation{float:right;margin-top:6px}.invited-banner{margin-bottom:20px}.invited-banner::before{display:table;content:""}.invited-banner::after{display:table;clear:both;content:""}.invited-banner .btn-sm{float:right;margin-left:5px}.invited-banner p{font-size:15px;line-height:1.6}.invited-banner .inviter-link{font-weight:bold}.editor-body-buffer{display:none}.pages-composer{padding-bottom:5px;margin-bottom:20px;border-bottom:1px solid #eee}.pages-composer label{display:inline-block;margin-bottom:10px;font-size:16px}.pages-composer input{margin-bottom:15px}.pages-composer p{margin-top:-10px;margin-bottom:10px;color:#767676}.pages-composer .gollum-editor-function-bar{margin-top:0}.pages-composer .gollum-editor{padding:0;margin:0;border:0}.pages-composer .gollum-editor-body{margin-top:10px}.gollum-readme{display:inline-block;margin-left:10px}.gollum-editor-function-bar .undo-load-readme{display:none}.theme-picker{margin-bottom:-1px;background-color:#fff;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,0.1);box-shadow:0 5px 10px rgba(0,0,0,0.1)}.theme-picker>.container{position:relative;overflow:hidden;text-align:center}.theme-picker-thumbs{border-bottom:1px solid #eee}.theme-picker-footer{position:relative;padding-bottom:15px}.theme-toggle{width:32px;height:32px;padding:0;color:#ccc;background:none;border:0}.theme-toggle:hover{color:#0084c8;text-decoration:none}.theme-toggle.disabled,.theme-toggle.disabled:hover{color:#ccc;cursor:not-allowed;opacity:0.3}.theme-toggle-full-left,.theme-toggle-full-right{position:absolute;top:50px;width:32px;height:32px;overflow:hidden}.theme-toggle-full-left{left:0}.theme-toggle-full-right{right:0}.theme-selector{height:102px;margin:15px 46px;overflow:hidden;white-space:nowrap}.theme-selector-thumbnail{display:inline-block;padding:2px;border:1px solid #ddd;border-radius:3px}.theme-selector-thumbnail+.theme-selector-thumbnail{margin-left:15px}.theme-selector-thumbnail:hover{text-decoration:none;background-color:#f5f5f5}.theme-selector-thumbnail.selected{padding:3px;background-color:#4078c0;border:0}.theme-selector-thumbnail.selected .theme-selector-img{border:1px solid #fff}.theme-selector-img{display:block;width:126px;height:96px;border-radius:1px}.theme-selector-name{display:none}.theme-picker-spinner{position:absolute;top:16px;left:50%;margin-left:-16px;background-color:#fff;opacity:0;-webkit-transition:0.2s, opacity ease-in-out;transition:0.2s, opacity ease-in-out}.theme-picker-spinner.visible{opacity:1}.theme-picker-spinner.visible ~ .theme-picker-controls .theme-name{opacity:0}.theme-selector-actions{padding-top:15px;text-align:right}.theme-selector-actions::before{display:table;content:""}.theme-selector-actions::after{display:table;clear:both;content:""}.theme-selector-actions .page-edit,.theme-selector-actions .page-publish{display:inline-block;margin-left:5px}.theme-picker-view-toggle{float:left}.theme-picker-view-toggle .for-hiding{display:none}.theme-picker-view-toggle.open .for-hiding{display:inline}.theme-picker-view-toggle.open .for-showing{display:none}.theme-picker-controls{position:absolute;top:15px;left:50%;display:none;width:220px;margin-left:-110px;line-height:34px;text-align:center}.theme-picker-controls .theme-toggle{vertical-align:middle}.theme-name{display:inline-block;margin-right:10px;margin-left:10px;font-size:20px;line-height:1;vertical-align:middle}.page-preview{position:relative;z-index:-100;display:block;width:100%;height:100%;padding:0;background-color:#fff;border:0}.pjax-loader-bar{position:fixed;top:0;left:0;z-index:40;opacity:0;-webkit-transition:opacity 0.4s linear 0.4s;transition:opacity 0.4s linear 0.4s}.pjax-loader-bar .progress{position:fixed;top:0;left:0;height:2px;background:#77b6ff;box-shadow:0 0 10px rgba(119,182,255,0.7);-webkit-transition:width 0.4s ease;transition:width 0.4s ease}.pjax-loader-bar.is-loading{opacity:1;-webkit-transition:none;transition:none}.project-full-screen .pagehead,.project-full-screen .header{display:none}.project-header{margin:-15px -30px 0;background-color:#fff}.project-header .select-menu-modal-holder{z-index:500}.project-header .header-logo-invertocat{display:none}.project-header .project-breadcrumb{display:none}.project-full-screen .project-header{padding:10px 0;margin-top:0;background-color:#f5f5f5}.project-full-screen .project-header .header-logo-invertocat{display:block}.project-full-screen .project-header .project-breadcrumb{display:inline-block}.project-updated-message{position:absolute;top:6px;left:50%;z-index:50;color:#246;background-color:#e2eef9;border:1px solid #bac6d3;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0)}.project-columns{z-index:30;margin-right:-30px;margin-left:-30px;overflow-x:auto;white-space:nowrap;background-color:#fff}.project-columns-container{position:relative;overflow-y:hidden}.project-columns-container.offset-for-organization{height:calc(100vh - 230px)}.project-columns-container.offset-for-repository{height:calc(100vh - 230px)}.project-full-screen .project-columns-container{height:calc(100vh - 75px)}.project-column{width:315px;height:100%;margin-right:12px;overflow:hidden;letter-spacing:normal;white-space:normal;-webkit-transition:-webkit-transform 500ms;transition:transform 500ms}.project-column-inner{height:100%;min-height:20px;overflow-y:auto}.new-project-column{margin-right:0;text-decoration:none;border:1px dashed #e5e5e5}.project-search-form .loading-indicator{top:8px;right:8px;display:none}.project-search-form.loading .loading-indicator{display:inline-block}.sortable-ghost{background-color:#eee;opacity:0.4}@-webkit-keyframes highlight-card{0%{border-color:#51a7e8;box-shadow:0 0 5px rgba(81,167,232,0.7)}100%{border-color:#e5e5e5;box-shadow:0 0 5px rgba(81,167,232,0)}}@keyframes highlight-card{0%{border-color:#51a7e8;box-shadow:0 0 5px rgba(81,167,232,0.7)}100%{border-color:#e5e5e5;box-shadow:0 0 5px rgba(81,167,232,0)}}.project-card.highlighted{-webkit-animation-name:highlight-card;animation-name:highlight-card;-webkit-animation-duration:5s;animation-duration:5s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.issue-card{position:relative;-webkit-transition:-webkit-transform 500ms;transition:transform 500ms}.issue-card.draggable{cursor:move}.issue-card .issue-card-label{max-width:50%}.issue-card+.issue-card{margin-top:6px}.issue-card .avatar-stack:hover .from-avatar{margin-right:-4px}.issue-card pre{word-wrap:break-word;white-space:pre-wrap}.project-triage-pane{top:-15px;right:-30px;z-index:40;width:334px;overflow:auto;letter-spacing:normal;white-space:normal;background-color:#fafafa;background-clip:padding-box;box-shadow:-3px 0 5px rgba(0,0,0,0.05)}.project-triage-pane .issue-card{padding-right:6px}.project-note-form{display:none}.open .project-note-form{display:block}.card-menu-container .dropdown-menu-content{display:none}.card-menu-container.active .dropdown-menu-content{z-index:1000;display:block}.card-menu-container .dropdown-menu{min-width:180px}.card-octicon{top:10px;left:12px}.card-note-octicon{top:12px}.card-link-fallback{display:none}.project-menu-target{top:12px;right:12px}.project-menu-container .dropdown-menu-content{display:none}.project-menu-container.active .dropdown-menu-content{display:block}.no-project-results{display:none}.filterable-empty+.no-project-results{display:block}.project-preview-img{height:130px}.page-profile .feed-icon{z-index:2}.vcard-names{line-height:1}.vcard-fullname{font-size:26px;line-height:30px}.vcard-username{font-size:20px;font-style:normal;font-weight:300;line-height:24px;color:#666}.vcard-details{list-style:none}.vcard-details .css-truncate.css-truncate-target{width:100%;max-width:100%}.vcard-details .css-truncate.css-truncate-target>div{overflow:hidden;text-overflow:ellipsis}.vcard-detail{padding-left:24px;font-size:14px}.vcard-detail .octicon{float:left;width:16px;margin-top:3px;margin-left:-24px;color:#999;text-align:center}.member-badge{padding-left:24px;font-size:14px;color:#4078c0}.member-badge .octicon{float:left;width:16px;margin-left:-24px;color:#999;text-align:center}.member-badge+.member-badge{padding-top:0;margin-top:-3px;border-top:0}.vcard-stats{text-align:center}.vcard-stats::before{display:table;content:""}.vcard-stats::after{display:table;clear:both;content:""}.vcard-stat{float:left;width:33.333%;font-size:11px;text-transform:capitalize}.vcard-stat-count{font-size:28px;font-weight:600;line-height:1}.vcard-stat:hover{text-decoration:none}.new-user-avatar-cta{font-size:14px;color:#244f79;background-color:#f1f6fb;border:solid 1px #d0e5f8;border-radius:3px}.user-profile-bio{margin-bottom:12px;overflow:hidden;font-size:14px;color:#767676}.form-group .form-control.user-profile-bio-field{width:440px;height:5.35em;min-height:0}.user-profile-bio-field-container,.user-profile-company-field-container{position:relative}.user-profile-bio-message{margin:5px 0 0;font-size:12px;color:#911}.user-profile-help-text{margin:5px 0 0;font-size:12px}.vcard-detail{padding-left:22px}.vcard-detail .octicon{margin-left:-22px}.member-badge{font-size:13px}.user-profile-sticky-bar{position:fixed;top:0;z-index:90;width:233px;word-break:break-all;pointer-events:none;opacity:0;-webkit-transition:0.2s;transition:0.2s}.user-profile-sticky-bar::after{position:fixed;top:0;right:0;left:0;z-index:100;display:none;height:62px;content:"";background-color:#fff;border-bottom:solid 1px #ddd;box-shadow:0 1px 2px rgba(0,0,0,0.075);opacity:0;-webkit-transition:0.2s;transition:0.2s}.user-profile-sticky-bar.is-stuck{pointer-events:auto;opacity:1}.user-profile-sticky-bar.is-stuck::after{display:block;opacity:1}.user-profile-mini-vcard{position:relative;top:1px;z-index:110;height:62px}.user-profile-mini-avatar{width:32px}.mini-follow-button{padding:0 6px;line-height:1.5;opacity:0;-webkit-transition:0.2s;transition:0.2s}.is-follow-stuck .mini-follow-button{opacity:1}.user-profile-following-container .user-following-container.on .follow,.user-profile-following-container .user-following-container .unfollow{display:none}.user-profile-following-container .user-following-container .follow,.user-profile-following-container .user-following-container.on .unfollow{display:block}.vcard-names-container{top:0}.vcard-names-container.is-stuck .vcard-names{opacity:0}.vcard-names-container.is-stuck::after{opacity:1}.blocked-user-notice{width:100%;padding:6px 12px;color:#bd2c00;text-align:center;border:solid 1px #bd2c00;border-radius:3px}.user-profile-nav{background-color:#fff;border-bottom:solid 1px #ddd}.user-profile-nav .underline-nav{height:62px}.user-profile-nav.is-stuck{z-index:90}.pinned-repos-list{display:-webkit-box;display:-webkit-flex;display:flex;list-style:none;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between}.pinned-repo-item{display:-webkit-box;display:-webkit-flex;display:flex;width:356px}.pinned-repo-item .pinned-repository-handle{padding-top:1px;color:#767676}.pinned-repo-item .pinned-repository-handle:hover{cursor:-webkit-grab;cursor:grab}.pinned-repo-item.is-dragging,.pinned-repo-item.is-dragging .pinned-repository-handle{cursor:-webkit-grabbing;cursor:grabbing}.pinned-repo-item.is-dragging{background-color:#f2f8fa}.pinned-repo-item.sortable-ghost{background-color:#f2f8fa;opacity:0}.pinned-repo-item.empty{border-style:dashed;border-width:1px;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.pinned-repo-item-content{display:-webkit-box;display:-webkit-flex;display:flex;width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}.pinned-repo-desc{-webkit-box-flex:1;-webkit-flex:1 0 auto;flex:1 0 auto}.pinned-repo-language-color{position:relative;top:1px;display:inline-block;width:12px;height:12px;margin-left:12px;border-radius:50%}.user-profile-repo-filter .filter-selected{color:#333}.profile-timeline.discussion-timeline{float:none}.profile-timeline.discussion-timeline .profile-timeline-month-heading::after{position:absolute;top:12px;z-index:-1;width:100%;height:1px;content:"";background-color:#f5f5f5}.profile-timeline.discussion-timeline::before{left:11px;background-color:#f5f5f5}.profile-timeline.discussion-timeline .event-joined-github,.profile-timeline.discussion-timeline .event-first-pull-request,.profile-timeline.discussion-timeline .event-first-repository,.profile-timeline.discussion-timeline .event-first-issue{margin-top:-16px}.profile-timeline-year-list{top:74px}.profile-timeline-card-wrapper{border-top:solid 2px #fff;border-bottom:solid 2px #fff}.profile-timeline-card .issue-meta-section{margin-right:0}.profile-rollup-wrapper .css-truncate-target{max-width:85%}.profile-rollup-wrapper+.profile-rollup-wrapper{border-top:1px solid #f5f5f5}.profile-timeline-card-wrapper+.profile-timeline-card-wrapper{margin-top:24px}.profile-rollup-wrapper+.profile-timeline-card-wrapper{margin-top:0}.profile-timeline-month-heading+.profile-timeline-card-wrapper{margin-top:24px}.profile-rollup-icon{display:inline-block;width:16px;text-align:center}.profile-rollup-content{display:none}.profile-rollup-content .content-title:hover .link-gray-dark-underline{text-decoration:underline}.profile-rollup-content .progress-bar{height:10px;border-radius:2px}.profile-rollup-content .state{width:64px;font-size:11px}.open .profile-rollup-content,.open .profile-rollup-toggle-closed{display:block}.open .profile-rollup-toggle-open{display:none}.profile-rollup-toggle-closed{display:none}.profile-rollup-toggle{color:#999;cursor:pointer}.profile-rollup-toggle:hover{color:#4078c0}.pull-request-tab-content{display:none}.pull-request-tab-content.is-visible{display:block}.discussion-timeline p.explain{margin:0;font-size:12px}.pull-request-ref-restore{display:none}.pull-request-ref-restore .animated-ellipsis-container{line-height:16px}.pull-request-ref-restore-text{display:block}.pull-discussion-timeline.is-pull-restorable .pull-request-ref-restore.last{display:block}.signed-out-comment{padding:15px;margin-top:15px;margin-left:64px;background-color:#fff9ea;border:solid 1px #dfd8c2;border-radius:3px}.signed-out-comment .btn{margin-right:3px;vertical-align:baseline}.inline-comment-form .signed-out-comment{padding:0;margin:5px;background-color:transparent;border:0}.stale-files-tab{margin-bottom:10px}.files-bucket{margin-bottom:15px}.pull-request-link{float:left;padding:2px 8px;margin-right:5px;font-size:13px;font-weight:bold;line-height:20px;border:1px solid rgba(65,131,196,0.5);border-radius:3px}.pull-request-link:hover{color:#fff;text-decoration:none;background:#4078c0;border-color:#4078c0}.full-width .diffbar .container,.split-diff .diffbar .container{padding-right:0;padding-left:0}.select-menu-divider{padding:8px 10px;margin-top:-1px;font-weight:bold;color:#333;background:#f4f4f4;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.pr-toolbar{position:-webkit-sticky;position:sticky;top:0;z-index:30;height:60px;margin-top:-20px;background-color:#fff}.pr-toolbar::before{display:table;content:""}.pr-toolbar::after{display:table;clear:both;content:""}.pr-toolbar .stale-files-tab{float:left;padding:5px 10px;margin-top:-5px;margin-bottom:-5px;color:#c9510c;background-color:#fef2eb;border-radius:3px}.pr-toolbar .subset-files-tab{float:left;padding:5px 10px;margin-top:-5px;margin-bottom:-5px;font-size:13px;color:#4078c0;background-color:#e6f1f6;border-radius:3px}.pr-toolbar .stale-files-tab-link{font-weight:bold;color:inherit}.pr-toolbar.is-stuck::after{position:fixed;top:0;right:0;left:0;z-index:-1;display:block;height:60px;content:"";border-bottom:1px solid rgba(0,0,0,0.1);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.pr-toolbar .float-right .diffbar-item{margin-right:0}.pr-toolbar .float-right .diffbar-item+.diffbar-item{margin-left:20px}.files-next-bucket .file,.files-next-bucket .full-commit{margin-top:0;margin-bottom:20px}.toc-select .diffstat{margin-left:8px}.toc-select .filename{display:block;max-width:none}.toc-select .description{max-width:100%}.diffbar{height:20px;padding-top:20px;padding-bottom:20px;background-color:#fff}.diffbar::before{display:table;content:""}.diffbar::after{display:table;clear:both;content:""}.diffbar .container{width:auto}.diffbar .table-of-contents{margin-bottom:0}.diffbar .table-of-contents ol{margin-bottom:-15px}.diffbar .table-of-contents li{border-top:1px solid #eee}.diffbar .table-of-contents li:first-child{border-top:0}.diffbar .navigation-focus .text-emphasized{color:#fff}.diffbar-range-menu .select-menu-modal{width:380px}.diffbar-range-menu .css-truncate-target{max-width:280px}.diffbar-range-menu .select-menu-item:not(.select-menu-action){padding:8px 10px}.diffbar-range-menu .emoji{vertical-align:bottom}.diffbar-item{float:left;margin-right:20px;font-size:13px;line-height:18px;vertical-align:middle}.fork-collab-tip{width:270px;margin-top:-30px}.fork-collab-tip.dropdown-menu-s{margin-top:10px}.fork-collab-link{margin-left:15px}.conflict-resolver .conflict-resolved{display:none}.conflict-resolver .conflict-unresolved{display:inline}.conflict-resolver .resolved .conflict-resolved{display:inline}.conflict-resolver .resolved .conflict-unresolved{display:none}.finish-review-label,.add-comment-label,.review-cancel-button,.is-review-pending .start-review-label{display:none}.start-review-label,.is-review-pending .finish-review-label,.is-review-pending .add-comment-label{display:inline-block}.is-review-pending .review-simple-reply-button{display:none}.is-review-pending .review-cancel-button{display:block}.is-review-pending .review-title-default{display:none}.is-review-pending .review-title-with-count{display:block}.review-title-default{display:block}.review-title-with-count{display:none}.tutorial{position:absolute;bottom:42px;left:50%;z-index:20;width:235px;padding:12px;margin-left:-118px;text-align:center;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:4px;box-shadow:0 3px 12px rgba(0,0,0,0.15)}.tutorial::before,.tutorial::after{position:absolute;display:inline-block;content:""}.tutorial::before{border:8px solid transparent}.tutorial::after{border:7px solid transparent}.tutorial-e::before{top:50px;left:-17px;border-right-color:rgba(0,0,0,0.15)}.tutorial-e::after{top:51px;left:-14px;border-right-color:#fff}.tutorial-nw{right:5%;left:auto;margin-left:0}.tutorial-nw::before{right:39px;bottom:-16px;left:auto;border-top-color:rgba(0,0,0,0.15)}.tutorial-nw::after{right:40px;bottom:-14px;left:auto;border-top-color:#fff}.tutorial+.btn{margin-right:6px}.timeline-comment-label .tutorial{bottom:-54px;left:185px}.timeline-comment-label.is-pending{float:none;margin-left:3px}.feature-callout{border-bottom:1px solid #e5e5e5}.feature-callout .columns{max-width:640px}.feature-callout .btn-link{color:#333;background:none}.feature-callout-octicon{width:76px;height:76px;padding-top:17px;color:#4078c0;border:solid 1px #e5e5e5;border-radius:50%}.btn-lg{padding:10px 30px;font-size:15px}.pr-review-tools{margin-top:-4px}.pr-review-tools .counter{display:none}.is-review-pending .pr-review-tools .counter{display:inline-block}.pull-request-review-menu{top:30px;width:400px}.pull-request-review-menu::after,.pull-request-review-menu::before{display:none}.pull-request-review-menu .select-menu-header{border-radius:3px 3px 0 0}.pull-request-review-menu .form-actions{border-radius:0 0 3px 3px}.pull-request-review-menu .comment-form-head{display:none}.review-thread{border:1px #e5e5e5 solid;border-radius:3px}.review-thread:not(:last-child){margin-bottom:12px}.last-review-thread{padding:10px 10px 0;margin:10px -10px 0;border-top:1px solid #eee}.review-comment-contents::after,.review-comment.is-comment-editing::after{position:absolute;top:31px;left:24px;z-index:-1;width:3px;height:100%;content:"";background-color:#f5f5f5}.review-comment{position:relative;padding:6px 12px}.review-comment::before{display:table;content:""}.review-comment::after{display:table;clear:both;content:""}.review-comment:first-child{padding-top:12px}.review-comment:last-child{padding-bottom:12px}.review-comment .avatar{float:left;margin-top:3px;margin-right:12px}.review-comment .comment-body,.review-comment .comment-reactions{padding:0 0 0 40px}.review-comment .comment-body{padding-top:3px}.review-comment .comment-reactions{margin-top:5px;border-top:0}.review-comment .comment-reactions .add-reaction-btn{padding:4px 10px}.review-comment .comment-reactions.has-reactions{margin-top:12px}.review-comment .add-reaction-popover.dropdown-menu-sw{top:5px;right:-5px}.review-comment .add-reaction-popover.dropdown-menu-ne{left:9px}.review-comment .reaction-summary-item:not(.add-reaction-btn){padding:3px 8px 0;border:1px solid #d2dff0;border-radius:3px}.review-comment .reaction-summary-item:not(.add-reaction-btn),.review-comment .reaction-summary-item:not(.add-reaction-btn) .emoji{font-size:12px}.review-comment .reaction-summary-item:not(.add-reaction-btn) .emoji{margin-right:0;font-size:16px;vertical-align:sub}.review-comment .reaction-summary-item:not(.add-reaction-btn)+.reaction-summary-item{margin-left:6px}.review-comment:last-child::after,.review-comment:last-child .review-comment-contents::after{display:none}.review-comment .timeline-comment-actions{opacity:0;-webkit-transition:opacity 0.15s ease 0s;transition:opacity 0.15s ease 0s}.review-comment:hover .timeline-comment-actions,.review-comment.is-reacting .timeline-comment-actions{opacity:1}.review-comment .timeline-comment-action{padding:0 5px}.review-comment.is-comment-editing{position:relative;padding:0;margin:6px;border:1px #e5e5e5 solid;border-radius:3px}.review-comment.is-comment-editing::after{top:100%;bottom:-16px;left:11px;height:16px}.review-thread-reply{padding:6px 12px;background-color:#fafafa;border-top:1px #e5e5e5 solid;border-radius:0 0 3px 3px}.discussion-item-review .review-thread-reply{margin-bottom:0;border-width:1px 0 0}.review-thread-reply .inline-comment-form{margin:-6px -12px;background-color:#fff;border:0}.review-thread-reply-button{display:inline-block;min-height:28px;padding:3px 8px;margin-left:6px;cursor:text}.review-summary-form-wrapper{margin-bottom:24px;margin-left:-20px;background-color:#fff;border:1px #e5e5e5 solid;border-color:#dfd8c2;border-radius:3px}.tooltipped-left::after{right:auto;left:0}.tooltipped-left::before{right:auto;left:0}.pulse-blankslate{margin-top:20px}.diffstat-summary{padding:0 20px 0 0;font-size:16px;line-height:1.8;color:#767676;text-align:left;vertical-align:middle;border-radius:3px}.diffstat-summary a{color:#555}.diffstat-summary strong{color:#333}.pulse-graph{float:left;width:50%;padding:15px 15px 0;border-bottom:1px solid #eee}.pulse-graph:first-child{border-right:1px solid #eee}.authors-and-code .insertions{color:#6cc644}.authors-and-code .deletions{color:#bd2c00}.authors-and-code .section{display:table-cell;width:459px;height:150px}.pulse-authors-graph{position:relative;height:150px}.pulse-authors-graph>svg{width:100%}.pulse-authors-graph .dots{position:absolute;top:40px;right:0;left:0;width:64px;height:64px;margin:0 auto}.pulse-authors-graph .bar rect{fill:#c9510c;fill-opacity:0.7}.pulse-authors-graph .bar rect:hover{fill-opacity:1}.summary-stats{display:table;width:100%;table-layout:fixed}.summary-stats li{display:table-cell;color:#767676;text-align:center;border-left:1px solid #eee}.summary-stats li a{display:block;padding-bottom:10px;color:#767676;text-decoration:none}.summary-stats li a:hover{background:#fafafa}.summary-stats li .octicon-git-pull-request{color:#6e5494}.summary-stats li .octicon-git-branch{color:#6cc644}.summary-stats li .octicon-issue-closed{color:#bd2c00}.summary-stats li .octicon-issue-opened{color:#6cc644}.summary-stats li:first-child{border-left:0;border-bottom-left-radius:3px}.summary-stats li .num{display:block;padding-top:10px;font-size:16px;font-weight:bold;color:#000}.pulse-sections{margin-top:20px;clear:both}.pulse-section{padding:0;clear:both;font-size:14px;color:#666}.pulse-section p{margin-top:20px}.day-name{fill:#555}circle.day{fill:#444;stroke-width:0}circle.day:hover{fill:#4078c0}line.axis{stroke:#eee;stroke-width:1;shape-rendering:crispedges}line.axis.even{stroke:#e0e0e0}.quick-issue-modal{display:none}.quick-issue-modal-footer{margin-bottom:0}.quick-issue-thanks{display:none;font-size:18px}.quick-issue-link{margin-left:30px}.quick-issue-body{display:block;width:100%}.quick-issue-form{position:relative}.quick-issue-form .suggestions{margin-bottom:0;margin-left:0}.quick-issue-form .drag-and-drop{font-size:10px}.readme.contributing>div{max-height:250px;overflow:auto}.readme .markdown-body,.readme .plain{padding:45px;word-wrap:break-word;background-color:#fff;border:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.readme .plain pre{font-size:15px;white-space:pre-wrap}.file .readme .markdown-body{padding:45px;border:0;border-radius:0}.file .readme table[data-table-type="yaml-metadata"]{font-size:12px;line-height:1}.file .readme table[data-table-type="yaml-metadata"] table{margin:0}.releases-tag-list{width:100%;margin-bottom:20px;border-top:1px solid #eee}.releases-tag-list tr{border-bottom:1px solid #eee}.releases-tag-list td{padding:12px 0;vertical-align:top}.releases-tag-list td.date{padding-right:10px;white-space:nowrap}.releases-tag-list td.date a{color:#767676}.releases-tag-list td.main{padding-right:10px}.releases-tag-list td.ancillary{text-align:right;white-space:nowrap}.releases-tag-list h4{margin:0;font-size:14px}.releases-tag-list p{margin:0;font-size:13px;color:#767676}.releases-tag-list p a{font-weight:bold;color:#666}.tag-info h3{margin-top:0;margin-bottom:0;font-size:14px;line-height:20px}.tag-info h3 a{color:#666}.tag-info h3 a .tag-name{color:#000}.tag-references{margin:0;font-size:13px;list-style-type:none}.tag-references>li{display:inline-block;margin-right:10px}.tag-references>li.commit{font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:12px;line-height:20px}.tag-references>li a{color:#767676;text-decoration:none}.tag-references>li a:hover{color:#4078c0}.release-downloads-header{margin-top:30px}.release-downloads{margin-top:10px;font-size:14px;border-top:1px solid #eee}.release-downloads li{display:block;padding-top:8px;padding-bottom:8px;border-bottom:1px solid #eee}.release-downloads strong{padding-left:5px}.release-downloads .octicon{float:left}.release-downloads .octicon-package{margin-left:-3px}.release-timeline{position:relative;border-top:1px solid #eee}.release-timeline-tags{list-style-type:none}.release-timeline-tags>li{display:block}.release-timeline-tags>li::before{display:table;content:""}.release-timeline-tags>li::after{display:table;clear:both;content:""}.release-timeline-tags .date,.release-timeline-tags .main{position:relative;float:left;padding:20px}.release-timeline-tags .main{width:80%;border-left:2px solid #eee}.release-timeline-tags .date{width:20%;padding-left:0;line-height:40px;color:#767676;text-align:right}.release-timeline-tags .date::after{position:absolute;top:50%;right:-7px;z-index:10;display:block;width:12px;height:12px;box-sizing:border-box;margin-top:-6px;content:" ";background-color:#eee;border:2px solid #fff;border-radius:6px}.release-timeline-tags .octicon-tag{padding-left:5px;color:#ccc}.release-timeline-tags .expander{position:relative;display:none}.release-timeline-tags .expander .date{padding-right:35px;line-height:20px}.release-timeline-tags .expander .date::after{display:none}.release-timeline-tags .expander .main{padding-left:35px;line-height:20px}.release-timeline-tags.is-collapsed .expander{display:block}.release-timeline-tags.is-collapsed>.collapsable{display:none}.release-timeline-tags .expander-dots{position:absolute;top:18px;left:-22px;z-index:10;width:44px;text-align:center;cursor:pointer;background-color:#eee;border:2px solid #fff;border-radius:4px}.release-timeline-tags .expander-dots .expander-dot{display:inline-block;width:4px;height:4px;margin-top:-2px;vertical-align:middle;background-color:#767676;border-radius:2px}.release-timeline-tags .expander-text{font-weight:bold;color:#666;cursor:pointer}.release-timeline-tags .expander-text:hover{color:#4078c0}.release-timeline-tags .expander-text:hover .expander-dots{background-color:#4078c0}.release-timeline-tags .expander-text:hover .expander-dots .expander-dot{background-color:#fff}.release::before{display:table;content:""}.release::after{display:table;clear:both;content:""}.release .tag-references{margin-top:8px}.release .tag-references>li{display:block;margin:0 0 5px}.release-meta{float:left;width:20%;padding:40px 20px;text-align:right;vertical-align:top}.release-body{float:left;width:80%;padding:40px 20px;border-left:2px solid #eee}.release-title{margin:0 60px 0 0}.release-edit{float:right}.release-authorship{margin-top:5px;margin-bottom:20px;font-size:14px;color:#767676}.release-authorship a{font-weight:bold;color:#666}.release-label{display:inline-block;padding:5px 10px;margin-top:1px;margin-bottom:10px;font-size:14px;font-weight:bold;color:#fff;background-color:#000;border-radius:3px}.release-label.latest{background-color:#6cc644}.release-label.draft{background-color:#bd2c00}.release-label.prerelease{background-color:#c9510c}.release-label a{color:#fff}.new-release .sidebar h3{margin:40px 0 -10px;font-size:14px}.new-release .sidebar h3:first-child{margin-top:15px}.new-release .default,.new-release .saved,.new-release .saving,.new-release .error{display:none}.new-release .error{color:#bd2c00}.new-release .is-default .default,.new-release .is-saving .saving,.new-release .is-saved .saved{display:inline-block}.new-release .saving img{vertical-align:top}.drop-target .octicon{color:#e5e5e5;vertical-align:middle}.drop-target p{height:65px;padding:16px 0;font-size:14px;text-align:center;border-color:#ddd;border-style:dashed}.drop-target .octospinner{vertical-align:middle}.uploaded-files{background:#fff;border-top-left-radius:3px;border-top-right-radius:3px}.uploaded-files.not-populated+.drop-target p{border-top:dashed 1px #ccc;border-top-left-radius:3px;border-top-right-radius:3px}.uploaded-files.is-populated{border:1px solid #ddd;border-bottom-color:#e5e5e5}.uploaded-files.is-populated+.drop-target p{border-top:0;border-top-left-radius:0;border-top-right-radius:0}.uploaded-files>li{padding:8px 10px;margin:0;line-height:22px;list-style-type:none;border-top:1px solid #eee}.uploaded-files>li.template{display:none}.uploaded-files>li .delete-pending{display:none}.uploaded-files>li.delete{color:#767676;background:#f9f9f9}.uploaded-files>li.delete:nth-child(2){border-top-left-radius:3px;border-top-right-radius:3px}.uploaded-files>li.delete .delete-pending{display:block}.uploaded-files>li.delete .live{display:none}.uploaded-files>li.delete .filename{color:#bd2c00}.uploaded-files>li:nth-child(2){border-top:0}.uploaded-files .filename{font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:11px}.uploaded-files .filesize{font-size:12px;color:#767676}.uploaded-files .form-control{width:490px;padding:2px 4px;margin-right:6px;border-radius:2px}.uploaded-files .remove{float:right;margin-top:2px;color:#767676}.uploaded-files .remove:hover{color:#bd2c00}.uploaded-files .undo{float:right}.upload-progress{position:relative;height:3px;margin-top:3px;background:#fff;border:0;border-radius:30px;box-shadow:0 1px 1px #fff,inset 0 1px 1px rgba(255,255,255,0.5)}.upload-progress .upload-meter{position:absolute;top:0;height:100%;background-image:-webkit-linear-gradient(#8dd2f7, #58b8f4);background-image:linear-gradient(#8dd2f7, #58b8f4);border-radius:30px}.release-body-form .previewable-comment-form .comment-form-head.tabnav{padding:0;background-color:transparent}.release-body-form .previewable-comment-form .write-content,.release-body-form .previewable-comment-form .preview-content{padding:0 0 10px;margin:0}.release-tag-form .for-loading,.release-tag-form .for-empty,.release-tag-form .for-valid,.release-tag-form .for-invalid,.release-tag-form .for-duplicate,.release-tag-form .for-pending{display:none}.release-tag-form.is-loading .for-loading{display:block}.release-tag-form.is-empty .for-empty{display:block}.release-tag-form.is-valid .for-valid{display:block}.release-tag-form.is-invalid .for-invalid{display:block}.release-tag-form.is-duplicate .for-duplicate{display:block}.release-tag-form.is-pending .for-pending{display:block}.release-target-wrapper{display:inline-block}.releases-target-menu{display:inline-block;margin-left:5px}.releases-target-menu .btn-sm{line-height:32px}.releases-target-menu .select-menu-button::before{top:14px}.release-show{border-top:1px solid #eee}.release-show .release-edit{display:none}.repo-file-upload-progress{position:relative;height:0;overflow:hidden;color:#246;background:#f7fbfe;border-bottom-right-radius:3px;border-bottom-left-radius:3px;box-shadow:0 0 0 1px #d0dbe7 inset;-webkit-transition:height 0.2s ease-out;transition:height 0.2s ease-out}.repo-file-upload-progress.active{height:50px}.repo-file-upload-progress.is-file-list{border-bottom-right-radius:0;border-bottom-left-radius:0}.repo-file-upload-progress .repo-file-upload-meter{position:absolute;top:1px;left:1px;width:0;height:48px;background:#d8e8f7}.repo-file-upload-progress .repo-file-upload-meter-text{position:absolute;top:7px;left:10px}.repo-file-upload-progress .repo-file-upload-meter-text .repo-file-upload-info{display:block;font-weight:bold}.repo-file-upload-progress .repo-file-upload-meter-text .repo-file-upload-meter-filename{display:block;margin:0}.manifest-commit-form{margin-top:20px}.repo-file-upload-outline{width:100%;height:100%}.repo-file-upload-target{position:relative;padding-top:100px;padding-bottom:80px;color:#666}.repo-file-upload-target.is-progress-bar,.repo-file-upload-target.is-uploading{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.repo-file-upload-target.is-file-list{border-bottom-right-radius:0;border-bottom-left-radius:0}.repo-file-upload-target.is-uploading .repo-file-upload-text.initial-text,.repo-file-upload-target.is-failed .repo-file-upload-text.initial-text,.repo-file-upload-target.is-default .repo-file-upload-text.initial-text{display:none}.repo-file-upload-target.is-uploading .repo-file-upload-text.alternate-text,.repo-file-upload-target.is-failed .repo-file-upload-text.alternate-text,.repo-file-upload-target.is-default .repo-file-upload-text.alternate-text{display:block}.repo-file-upload-target.is-uploading.dragover .repo-file-upload-text,.repo-file-upload-target.is-failed.dragover .repo-file-upload-text,.repo-file-upload-target.is-default.dragover .repo-file-upload-text{display:none}.repo-file-upload-target .repo-file-upload-text.initial-text{display:block}.repo-file-upload-target .repo-file-upload-text.alternate-text{display:none}.repo-file-upload-target .repo-file-upload-text,.repo-file-upload-target .repo-file-upload-drop-text{margin-bottom:5px}.repo-file-upload-target .repo-file-upload-choose{display:inline-block;margin-top:0;font-size:18px}.repo-file-upload-target .manual-file-chooser{margin-left:0}.repo-file-upload-target .repo-file-upload-outline{position:absolute;top:3%;left:1%;width:98%;height:94%}.repo-file-upload-target.is-failed .repo-file-upload-outline,.repo-file-upload-target.is-bad-file .repo-file-upload-outline,.repo-file-upload-target.is-too-big .repo-file-upload-outline,.repo-file-upload-target.is-too-many .repo-file-upload-outline,.repo-file-upload-target.is-empty .repo-file-upload-outline{height:85%}.repo-file-upload-target.dragover .repo-file-upload-text{display:none}.repo-file-upload-target.dragover .repo-file-upload-choose{visibility:hidden}.repo-file-upload-target.dragover .repo-file-upload-drop-text{display:block}.repo-file-upload-target.dragover .repo-file-upload-outline{border:6px #ddd dashed;border-radius:5px}.repo-file-upload-target .repo-file-upload-drop-text{display:none}.repo-file-upload-errors{display:none}.repo-file-upload-errors .error{display:none}.is-failed .repo-file-upload-errors,.is-bad-file .repo-file-upload-errors,.is-too-big .repo-file-upload-errors,.is-too-many .repo-file-upload-errors,.is-hidden-file .repo-file-upload-errors,.is-empty .repo-file-upload-errors{position:absolute;right:0;bottom:0;left:0;display:block;padding:5px 8px;line-height:1.5;text-align:left;background-color:#fff;border-top:1px solid #e5e5e5;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.is-file-list .repo-file-upload-errors{border-bottom-right-radius:0;border-bottom-left-radius:0}.is-failed .repo-file-upload-errors .failed-request,.is-bad-file .repo-file-upload-errors .failed-request{display:inline-block}.is-too-big .repo-file-upload-errors .too-big{display:inline-block}.is-hidden-file .repo-file-upload-errors .hidden-file{display:inline-block}.is-too-many .repo-file-upload-errors .too-many{display:inline-block}.is-empty .repo-file-upload-errors .empty{display:inline-block}.repo-file-upload-tree-target{position:fixed;top:0;left:0;z-index:1000;width:100%;height:100%;padding:12px;color:#666;visibility:hidden;background:-webkit-radial-gradient(center, ellipse, #fff 0%, rgba(255,255,255,0.85) 65%, rgba(255,255,255,0.85) 100%);background:radial-gradient(ellipse at center, #fff 0%, rgba(255,255,255,0.85) 65%, rgba(255,255,255,0.85) 100%);opacity:0;-webkit-transition:visibility 0.2s, opacity 0.2s;transition:visibility 0.2s, opacity 0.2s}.repo-file-upload-tree-target .repo-file-upload-outline{border:6px #ddd dashed;border-radius:5px}.dragover .repo-file-upload-tree-target{visibility:visible;opacity:1}.dragover .repo-file-upload-tree-target .repo-file-upload-slate{top:50%;opacity:1}.dragover .repo-file-upload-tree-target .files-lg>.file-graph{opacity:1;-webkit-transform:translateX(4px);transform:translateX(4px)}.dragover .repo-file-upload-tree-target .files-lg>.file-zip{opacity:1;-webkit-transform:translateX(9px);transform:translateX(9px)}.dragover .repo-file-upload-tree-target .files-lg>.file-generic{opacity:1;-webkit-transform:translateX(-4px);transform:translateX(-4px)}.dragover .repo-file-upload-tree-target .files-lg>.file-acrobat{opacity:1;-webkit-transform:translateX(-9px);transform:translateX(-9px)}.repo-file-upload-slate{position:absolute;top:50%;width:100%;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.repo-file-upload-slate h2{margin-top:5px}.repo-file-upload-slate .file-graph{opacity:0;-webkit-transition:opacity 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275),-webkit-transform 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275);transition:opacity 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275),transform 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275);-webkit-transform:translateX(50px);transform:translateX(50px)}.repo-file-upload-slate .file-zip{opacity:0;-webkit-transition:opacity 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275),-webkit-transform 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275);transition:opacity 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275),transform 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275);-webkit-transform:translateX(90px);transform:translateX(90px)}.repo-file-upload-slate .file-generic{opacity:0;-webkit-transition:opacity 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275),-webkit-transform 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275);transition:opacity 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275),transform 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275);-webkit-transform:translateX(-50px);transform:translateX(-50px)}.repo-file-upload-slate .file-acrobat{opacity:0;-webkit-transition:opacity 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275),-webkit-transform 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275);transition:opacity 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275),transform 0.2s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275);-webkit-transform:translateX(-90px);transform:translateX(-90px)}.repo-file-upload-file-wrap .name{color:#888}.repo-file-upload-file-wrap .actions{width:50px;padding-right:10px;text-align:right}.repo-file-upload-file-wrap .remove-file{color:#888}.repo-file-upload-file-wrap .remove-file:hover{color:#666}.repo-upload-breadcrumb{margin-bottom:18px}.mini-repo-list{list-style:none}.mini-repo-list>:first-child .mini-repo-list-item{border-top:0}.mini-repo-list>:last-child .mini-repo-list-item{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.mini-repo-list .no-repo{padding:15px;color:#767676;text-align:center}.mini-repo-list .repo-name{font-weight:bold}.mini-repo-list-item{position:relative;display:block;padding:6px 64px 6px 30px;font-size:14px;border-top:1px solid #e5e5e5}.mini-repo-list-item:hover{text-decoration:none}.mini-repo-list-item:hover .repo,.mini-repo-list-item:hover .owner{text-decoration:underline}.mini-repo-list-item .repo-icon{float:left;margin-top:2px;margin-left:-20px;color:#666}.mini-repo-list-item .repo-and-owner{max-width:220px}.mini-repo-list-item .owner{max-width:110px}.mini-repo-list-item .repo{font-weight:600}.mini-repo-list-item .stars{position:absolute;top:0;right:10px;margin-top:6px;font-size:12px;color:#888}.mini-repo-list-item .repo-description{display:block;max-width:100%;font-size:12px;line-height:21px;color:#767676}.private .mini-repo-list-item{background-color:#fff9ea}.private .mini-repo-list-item .repo-icon{color:#4c4a42}.filter-bar{padding:10px;background-color:#fafafa;border-bottom:1px solid #e5e5e5}.filter-bar::before{display:table;content:""}.filter-bar::after{display:table;clear:both;content:""}.user-repos .filter-bar{text-align:center}.filter-repos{padding-bottom:0}.repo-filterer{display:inline-block;margin-top:6px;list-style:none}.repo-filterer li{display:inline-block}.repo-filterer .repo-filter{display:inline-block;padding:5px 5px 6px;margin-right:5px;border-bottom:2px solid transparent}.repo-filterer .repo-filter:hover{text-decoration:none;border-bottom-color:#e5e5e5}.repo-filterer .repo-filter.filter-selected{color:#333;text-decoration:none;border-bottom-color:#d26911;outline:none}.more-repos{text-align:center;background-color:#fafafa;box-shadow:inset 0 1px 0 #e5e5e5}.more-repos img{margin:11px auto}.more-repos-link{display:block;padding:10px}.more-repos-link.is-loading{text-indent:-9999px;cursor:default;background-image:url("/images/spinners/octocat-spinner-16px.gif");background-repeat:no-repeat;background-position:center center}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.more-repos-link.is-loading{background-image:url("/images/spinners/octocat-spinner-32.gif");background-size:16px 16px}}.empty-repo{font-size:14px}.empty-repo .url-box{display:block;width:100%;height:auto;padding:0;margin:0;border:0}.empty-repo .clone-urls{width:100%}.empty-repo .or-text{margin-right:5px;margin-left:5px}.empty-repo-setup-option .copyable-terminal-content{font-size:14px}.empty-repo-setup-option h3{margin-top:0}.empty-repo-setup-option p:last-child{margin-bottom:0}.give-access-setup-option{margin-bottom:20px}.fork-missing-targets-header{padding-top:15px;margin-bottom:15px;font-size:20px;font-weight:normal;border-top:1px solid #eee}.facebox .fork-existing-targets-list,.facebox .fork-disallowed-list{margin-left:0;list-style:none}.facebox .fork-existing-targets-list .user-mention,.facebox .fork-disallowed-list .user-mention{display:block}.fork-disallowed-list li+li{margin-top:5px}.url-box{width:100%;height:26px;padding:10px 10px 0;margin-top:10px;margin-left:-10px;border-top:1px solid #ddd}.url-box p{float:left;height:26px;margin:0 0 0 5px;line-height:26px}.url-box p strong{color:#000}.clone-urls{display:table;float:left;width:585px}.clone-url-button{display:table-cell;width:1%;vertical-align:top}.clone-url-button:first-child .clone-url-link{border-top-left-radius:3px;border-bottom-left-radius:3px}.clone-url-button>.clone-url-link{position:relative;display:block;padding:0 9px;margin-right:-1px;font-size:11px;font-weight:bold;line-height:26px;color:#333;text-decoration:none;text-shadow:0 1px 0 #fff;white-space:nowrap;cursor:pointer;background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);border:1px solid #ccc}.clone-url-button>.clone-url-link:hover,.clone-url-button>.clone-url-link:active{z-index:3;color:#fff;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-image:-webkit-linear-gradient(#599bcd, #3072b3);background-image:linear-gradient(#599bcd, #3072b3);border-color:#2a65a0}.clone-url-button>.clone-url-link:active{background-color:#3072b3;background-image:none;border-color:#25588c;box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.clone-url-button>.clone-url-link:focus{outline:0}.clone-url-button+.clone-url-button>.clone-url-link{box-shadow:inset 1px 0 0 #fff}.clone-url-button+.clone-url-button>.clone-url-link:hover{box-shadow:none}.clone-url-button+.clone-url-button>.clone-url-link:active{box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.clone-url-button.selected>.clone-url-link,.clone-url-button.selected>.clone-url-link:hover{z-index:2;color:#333;text-shadow:0 1px 0 rgba(255,255,255,0.6);background-color:#ccc;background-image:-webkit-linear-gradient(#ccc, #d5d5d5);background-image:linear-gradient(#ccc, #d5d5d5);border-color:#bbb;box-shadow:inset 0 2px 3px rgba(0,0,0,0.075)}.url-box-clippy .zeroclipboard-button{margin-left:0 !important;border-left:0;border-radius:0 3px 3px 0}.pagehead.repohead .select-menu .select-menu-modal-holder{z-index:25}.repository-import .repository-import-label{display:block;margin-bottom:12px;font-size:18px;font-weight:normal}.repository-import .state-header{font-size:16px}.text-yellow{color:#e9dba5}.timeout{width:auto;height:300px;padding:0;margin:20px 0;background-color:transparent;border:0}.timeout h3{padding-top:100px;color:#767676}.overall-summary{position:relative;margin-bottom:10px;border:1px solid #ddd;border-radius:3px}.overall-summary-bottomless{margin-bottom:0;border-bottom:0;border-radius:3px 3px 0 0}.numbers-summary{display:table;width:100%;table-layout:fixed}.numbers-summary li{display:table-cell;padding:0;text-align:center;white-space:nowrap}.numbers-summary a,.numbers-summary .nolink{display:block;padding:10px 0;color:#767676;text-decoration:none}.numbers-summary .octicon{color:#999}.numbers-summary a:hover{color:#4078c0}.numbers-summary a:hover .num{color:inherit}.repository-meta{margin:0 0 20px;clear:both;font-size:16px;color:#666}.repository-meta::before{display:table;content:""}.repository-meta::after{display:table;clear:both;content:""}.repository-meta .repo-description-field{width:540px}.repository-meta .repo-website-field{width:300px}.repository-meta .edit-repository-meta{display:none;margin-bottom:5px;font-size:13px}.repository-meta .edit-repository-meta .field{display:inline-block;margin-right:5px}.repository-meta .edit-repository-meta label{display:block;margin-bottom:6px;font-weight:bold;color:#333}.repository-meta.open .repository-meta-content,.repository-meta.open .edit-link{display:none}.repository-meta.open .edit-repository-meta{display:block}.experiment-repo-nav .capped-cards .capped-card{width:480px}.experiment-repo-nav .new-issue-form{padding-top:0;border-top:0}.experiment-repo-nav.repohead .repo-mirror{padding-left:20px}.iconbutton .octicon{margin-right:0}.file-navigation::before{display:table;content:""}.file-navigation::after{display:table;clear:both;content:""}.file-navigation.in-mid-page{margin-top:15px}.file-navigation .select-menu-button .css-truncate-target{max-width:200px}.file-navigation .branch-select-menu{margin-right:6px;margin-bottom:10px}.file-navigation .new-pull-request-btn{float:left}.file-navigation .breadcrumb{float:left;margin-top:0;margin-left:5px;font-size:16px;line-height:26px}.file-navigation+.breadcrumb{margin-bottom:10px}.file-navigation .BtnGroup{margin-bottom:10px;margin-left:10px}.file-navigation .get-repo-select-menu{margin-left:6px}.file-navigation .get-repo-modal{top:6px;width:352px}.file-navigation .get-repo-modal .https-clone-options{display:block}.file-navigation .get-repo-modal .ssh-clone-options{display:none}.file-navigation .get-repo-modal.on .https-clone-options{display:none}.file-navigation .get-repo-modal.on .ssh-clone-options{display:block}.file-navigation .btn-change-protocol{font-size:12px}.file-navigation .get-repo-decription-text{font-size:13px}.file-navigation .get-repo-btn{float:left;width:50%;padding:10px 0;text-align:center;border:0;border-top:1px solid #e9e9e9;border-radius:0}.file-navigation .get-repo-btn:first-child{border-right:1px solid #e9e9e9;border-bottom-left-radius:3px}.file-navigation .get-repo-btn:nth-child(1):nth-last-child(3){border-radius:0}.file-navigation .get-repo-btn:last-child{border-bottom-right-radius:3px}.file-navigation .get-repo-btn.btn-block,.file-navigation .get-repo-btn:only-child{width:100%;border-right:0;border-radius:0 0 3px 3px}.file-navigation .clone-options{padding:6px 10px 10px}.file-wrap{margin-bottom:10px;border:1px solid #ddd;border-top:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.file-wrap .include-fragment-error{display:none}.file-wrap.is-error .include-fragment-error{display:table-row}table.files{width:100%;background:#fff;border-radius:2px}table.files tr.navigation-focus td{background:#f5f5f5}table.files td{padding:6px 3px;line-height:20px;border-top:1px solid #eee}table.files td.icon{width:17px;padding-right:2px;padding-left:10px;color:#767676}table.files td.icon .octicon-file-directory{color:#80a6cd}table.files td.icon .spinner{position:relative;top:3px;display:none;margin-top:-3px;margin-left:-2px}table.files td .simplified-path{color:#888}table.files td .css-truncate{max-width:100%}table.files td.content{max-width:180px}table.files td.message{max-width:442px;padding-left:10px;overflow:hidden;color:#888}table.files td.message .emoji{vertical-align:top}table.files td.message a{color:#888}table.files td.message a:hover{color:#4078c0}table.files td.age{width:125px;padding-right:10px;color:#888;text-align:right;white-space:nowrap}table.files .message .tooltipped::before,table.files .message .tooltipped::after{display:none}table.files tr.is-loading td.icon .octicon{display:none}table.files tr.is-loading td.icon .spinner{display:inline-block}table.files tr.up-tree{border-top:1px solid #eee;border-bottom:1px solid #eee}table.files tr.up-tree a{padding:3px 6px;margin-left:-3px;font-weight:bold;border-radius:2px}table.files tr.up-tree a:hover{background-color:#ddd}table.files tbody tr:first-child td{border-top:0}.branch-infobar{padding:8px;color:#767676;background-color:#fafafa;border:solid #ddd;border-width:1px 1px 0;border-top-left-radius:3px;border-top-right-radius:3px}.branch-infobar::before{display:table;content:""}.branch-infobar::after{display:table;clear:both;content:""}.branch-infobar .muted-link{display:inline-block;margin-left:10px}.branch-infobar .muted-link .octicon{color:#bbb}.branch-infobar .muted-link:hover .octicon{color:inherit}.fork-select-fragment{text-align:center}.spinner-forking{display:block;margin:20px auto 40px}.prereceive-feedback{padding:15px;margin-bottom:15px;border:1px solid #ddd;border-left:3px solid #cea61b;border-radius:3px}.prereceive-feedback-heading{margin-top:0;margin-bottom:10px;color:#cea61b}.file-navigation-options{float:right;margin-left:3px}.file-navigation-options.active .dropdown-menu-content{display:block}.file-navigation-options .dropdown-menu{width:360px;padding:15px}.file-navigation-options .dropdown-divider{margin:15px -15px}.file-navigation-options .clone-url{display:none}.file-navigation-options .clone-url.open{display:block}.file-navigation-options .clone-url h3{margin-bottom:5px;font-size:14px}.file-navigation-option{position:relative;display:inline-block;margin-left:3px}.file-navigation-option .select-menu{display:inline-block;margin-right:0;margin-bottom:0;vertical-align:middle}.file-navigation-option .select-menu-button .octicon:only-child{margin-left:2px}.file-navigation-option .zeroclipboard-button{padding-right:8px}.file-navigation-option .input-group{width:290px}.file-navigation-option .input-group .form-control{width:calc(100% + 2px);height:28px;min-height:0;margin-right:-1px;margin-left:-1px;border-radius:0}.file-navigation-option .input-group .select-menu-button{position:relative;z-index:2}.profile-picture{margin:10px 0 0}.profile-picture p{float:left;margin:0;line-height:30px}.profile-picture img{float:left;margin:0 10px 0 0;border-radius:3px}.app-owner{margin:15px 0 0}.edit-profile-avatar .drag-and-drop{padding:0;color:#666;border-width:0}.edit-profile-avatar input{cursor:pointer}.edit-profile-avatar.is-bad-file{border:0}.edit-profile-avatar .manual-file-chooser{position:absolute;top:0;left:0;width:120px;height:34px;padding:0;margin-left:-44px;cursor:pointer}.button-change-avatar{overflow:hidden}.croppable-avatar{display:none}.profile-picture-cropper{max-width:400px;margin:0 auto 15px;text-align:center}.profile-picture-cropper>img{max-width:100%}.profile-picture-cropper .jcrop-holder{display:inline-block}.profile-picture-spinner{display:inline-block;background-image:url("/images/spinners/octocat-spinner-128.gif");background-repeat:no-repeat;background-position:center;background-size:64px 64px}.avatar-upload{float:left;width:340px;margin-left:20px}.avatar-upload .flash{width:100%;padding:30px 15px;border:dashed 1px #bd2c00;box-shadow:none}.avatar-upload .upload-state{display:none;padding:10px 0}.avatar-upload .upload-state p{margin:0;font-size:12px;color:#767676}.avatar-upload .avatar-upload .octicon{display:inline-block}.is-default .avatar-upload .default{display:block}.is-uploading .avatar-upload .loading{display:block;padding:0}.is-uploading .avatar-upload .loading img{vertical-align:top}.is-uploading .avatar-upload .button-change-avatar{display:none}.is-bad-file .avatar-upload .bad-file{display:block;margin:0}.is-too-big .avatar-upload .too-big{display:block;margin:0}.is-bad-dimensions .avatar-upload .bad-dimensions{display:block;margin:0}.is-bad-format .avatar-upload .bad-format{display:block;margin:0}.is-failed .avatar-upload .failed-request{display:block;margin:0}.is-empty .avatar-upload .file-empty{display:block;margin:0}dl.new-email-form{padding:10px 10px 0;margin:0 -10px 10px;border-top:1px solid #e5e5e5}span.label.default{padding:4px 6px;margin-left:4px;color:#fff;background-color:#6cc644;border-radius:3px}span.label.visibility{padding:4px 6px;margin-left:4px;color:#fff;background-color:#999;border-radius:3px}span.label.bouncing{padding:4px 6px;margin-left:4px;color:#fff;background-color:#daa520;border-radius:3px}.email-actions{float:right}.email-actions>span{float:left}.email-actions form{display:inline}.email-actions span.label{padding:0 10px;font-size:13px;color:#767676}.email-actions .octicon-alert{color:#ca5633}.boxed-group .fork-flag{margin-left:16px;font-size:12px;color:#767676}.user-keys-container .user-keys-message{display:none}.user-keys-container.has-keys .user-keys-message{display:block}.user-keys-container.has-keys .no-user-keys-message{display:none}.selected-user-key{background-color:#fff9ea}.user-key-type{padding-right:20px;padding-left:10px;text-align:center}.user-key-badge{display:block;padding-right:5px;padding-left:5px;margin-top:3px;font-size:12px;line-height:1.4;border:solid 1px #ddd;border-radius:3px}.user-key-email-badge{display:inline-table;margin-right:4px}.user-key-email{display:table-cell;padding:1px 5px;font-size:12px;line-height:1.4;border:solid 1px #ddd;border-radius:3px}.user-key-email.unverified{border-top-right-radius:0;border-bottom-right-radius:0}.user-key-email-unverified{display:table-cell;padding-right:5px;padding-left:5px;font-size:11px;color:#666;background-color:#ecebec;border:solid 1px #ddd;border-left:0;border-top-right-radius:3px;border-bottom-right-radius:3px}.user-key-details{width:400px;line-height:1.6;white-space:normal}.user-key-details code{font-size:13px}.user-key-actions{width:150px}.recent-user-key{color:#6cc644}.recent-user-key-access{color:#55a532}.unverified-user-key,.unverified-user-key-notice{color:#bd2c00}.notification-center .overview{padding:0 10px 10px;border-bottom:1px solid #ddd}.oauth-app-info-container .float-left-container{float:left;text-align:left}.oauth-app-info-container .float-right-container{float:right;text-align:right}.oauth-app-info-container dl.keys{margin:10px 0}.oauth-app-info-container dl.keys dt{margin-top:10px;font-weight:bold;color:#767676}.oauth-app-info-container dl.keys dd{font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;color:#333}.oauth-app-info-container .user-count{font-size:30px;font-weight:300;color:#767676}.logo-uploader-container{display:block}.logo-upload{position:relative;display:inline-block}.logo-upload a.delete,.logo-upload span.delete{position:absolute;left:88px;display:none;padding:8px 10px}.logo-upload a.delete:hover,.logo-upload span.delete:hover{color:#bd2c00}.logo-upload-container{display:inline-block}.logo-upload-container .logo-upload-label .manual-file-chooser{top:0;left:0;width:130px;height:34px;padding:0;margin-left:0;cursor:pointer}.logo-upload-container .upload-state{padding:10px 0}.logo-upload-container .upload-state p{margin:0;font-size:12px;color:#767676}.logo-box{display:inline-block;float:left;width:120px;height:120px;background-color:#eee;border:1px solid #ccc;border-radius:3px}.logo-box img{display:none;width:118px;height:118px;border-radius:3px}.logo-placeholder{color:#767676;text-align:center;text-shadow:0 1px 0 #fff}.logo-placeholder p{margin:0;font-size:14px}.has-uploaded-logo .logo-placeholder,.has-uploaded-logo .or{display:none}.has-uploaded-logo:hover a.delete,.has-uploaded-logo:hover span.delete{display:block}.has-uploaded-logo .logo-box img{display:block}.saved-reply-form{border:1px solid #ddd;border-radius:3px}.saved-reply-form .tabnav-tab.selected{border-radius:3px 3px 0 0}.saved-reply-form .form-actions{margin-right:10px;margin-bottom:8px}.saved-reply-form .comment{border:0}.saved-reply-form .comment-body{padding:5px 5px 15px;background-color:transparent;border-bottom:1px solid #eee}.saved-reply-settings-container.has-replies .listgroup{display:block}.saved-reply-settings-container.has-replies .blankslate{display:none}.saved-reply-settings-container .listgroup{display:none}.access-token{border-bottom:1px solid #e5e5e5}.access-token:last-child{border:0}.access-token .last-used{margin-right:10px}.access-token .zeroclipboard-link{display:inline-block;vertical-align:text-bottom}.access-token.new-token{background-color:rgba(108,198,68,0.1)}.access-token.new-token .octicon-check{color:#6cc644}.access-token .token-description{max-width:450px;color:#333}.access-token .token{font-size:14px}.regenerate-token-cta .btn-danger{margin-left:30px}.personal-access-tokens-group{padding:0 10px}.personal-access-tokens label{display:inline}.personal-access-tokens label p{display:inline-block;margin:0;font-size:13px;font-weight:normal}.personal-access-tokens .child-scopes{margin-left:20px;list-style:none}.personal-access-tokens .child-scopes .token-scope{width:180px;font-weight:normal}.personal-access-tokens .child-scopes .child-scopes{margin-left:0}.token-scope{display:inline-block;width:200px;padding:2px 0;margin:0;font-size:13px;color:#333}.token-scope input{margin-right:5px}.callback-urls dl dd .form-control{width:100%}.callback-urls.has-many .callback-url-action-cell{display:table-cell}.callback-description{margin-top:20px}.callback-description .octicon{padding-left:0}.callback-url .label{display:none;width:64px;text-align:center}.callback-url.is-default-callback .label{display:inline-block}.callback-url.is-default-callback .btn{display:none}.callback-url-wrap{display:table;width:100%}.callback-url-field-cell{display:table-cell}.callback-url-action-cell{display:none;width:70px;text-align:right}.boxed-group.application-show-group dl.form-group>dd .form-control.wide{width:460px}.boxed-group.application-show-group dl.form-group>dd .form-control.short{height:50px;min-height:50px}.application-show-group .errored .note{display:none}.application-show-group .drag-and-drop{padding:0;text-align:left;background-color:transparent;border:0}.application-show-group .drag-and-drop img{margin-bottom:1px;vertical-align:bottom}.application-show-group .drag-and-drop span{padding:0}.application-show-group .dragover .logo-box{box-shadow:#c9ff00 0 0 3px}.application-show-group .is-uploading .loading{display:inline-block}.application-show-group .is-uploading .default{display:none}.application-show-group .is-failed .failed-request{display:inline-block}.application-show-group .is-failed .default{display:none}.application-show-group .is-bad-file .bad-file{display:inline-block}.application-show-group .is-bad-file .default{display:none}.application-show-group .is-too-big .file-too-big{display:inline-block}.application-show-group .is-too-big .default{display:none}.application-show-group .is-bad-format .bad-format{display:inline-block}.application-show-group .is-bad-format .default{display:none}.application-show-group .is-default .default{display:block}.security-history .security-history-timestamp{float:right;color:#767676}table.security-history-detail{width:100%;font-size:12px}table.security-history-detail td{max-width:200px;word-wrap:break-word}.settings-email .email-actions .settings-remove-email{float:right;padding-right:7px;padding-left:7px;margin-left:5px;line-height:24px;color:#bd2c00;cursor:pointer}.settings-email .email-actions .settings-remove-email.settings-disabled-remove-email{display:block;color:#999}.settings-email .octicon-info{margin-left:5px}.settings-email .css-truncate-target{max-width:300px}.email-preference-exceptions{font-size:12px}.email-preference-exceptions h5{margin:15px 0 5px;color:#666}.email-preference-exceptions .exception-list{list-style:none}.email-preference-exceptions .exception{max-width:400px;padding:5px;padding-left:0;border-top:1px solid #eee}.email-preference-exceptions .exception:last-child{border-bottom:1px solid #eee}.email-preference-exceptions .exception-action{float:right}.email-preference-exceptions.opt-in-list{display:none}.transactional-only .email-preference-exceptions.opt-in-list{display:block}.transactional-only .email-preference-exceptions.opt-out-list{display:none}.two-factor-intro{width:675px;margin:40px auto 0}.two-factor-intro .two-factor-graphic{margin:20px 0}.two-factor-intro .two-factor-explain{padding:0;margin:0 0 40px;font-size:13px;list-style:none}.two-factor-intro .two-factor-explain li{float:left;padding:0;margin:0}.two-factor-intro .two-factor-explain .step-one{width:185px;margin-right:36px}.two-factor-intro .two-factor-explain .step-two{width:230px;margin-right:42px}.two-factor-intro .two-factor-explain .step-three{width:180px}.two-factor-graphic{width:675px;height:135px;background-image:url("/images/modules/settings/2fa_guide.png");background-repeat:no-repeat}.two-factor-recovery-codes{height:240px;padding-left:60px;margin-top:15px}.two-factor-recovery-code-mark{width:24px;height:24px;font-size:24px;line-height:16px;color:#bbb}.two-factor-recovery-code{display:inline-block;width:49%;line-height:1.1}.two-factor-recovery-code::before{position:relative;top:1px;margin-right:10px;font-size:26px;color:#eaeaea;content:"\25a1"}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-moz-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.two-factor-graphic{background-image:url("/images/modules/settings/[email protected]");background-size:675px 135px}}.sms-or-app{width:100%;padding:40px 0 0;margin:0;border-top:1px solid #ddd}.sms-or-app::before{display:table;content:""}.sms-or-app::after{display:table;clear:both;content:""}.sms-or-app li{float:left;width:325px;padding:0;list-style:none}.sms-or-app li:first-child{margin-right:25px}.sms-or-app li .btn{display:block;width:100%;height:100%;padding-top:12px;padding-bottom:12px;margin:10px 0;font-size:15px;text-align:center}.sms-or-app small{font-size:80%}.app-only{padding:20px 0 0}.app-only li{float:none;width:auto}.app-only li .btn{display:inline-block;width:auto;padding-right:20px;padding-left:20px}.two-factor-sms-main .octicon-alert{color:#bd2c00}.two-factor-sms-main .error-icon{position:relative;top:2px;left:5px;color:#bd2c00}.two-factor-sms-main .sent-message{position:relative;top:2px;left:5px;color:#6cc644}.container.two-factor-toggle{width:700px}.sms-country-code-field{padding-right:10px}.two-factor-toggle{margin-top:40px}.two-factor-toggle .two-factor-status{padding:20px 0;margin:0 0 20px;color:#767676;border-bottom:1px solid #eaeaea}.two-factor-toggle .two-factor-status p{margin:0}.two-factor-toggle .two-factor-status .btn{position:relative;top:-3px;float:right}.two-factor-toggle .two-factor-on{padding:3px 5px;margin-right:5px;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,0.1);background-color:#6cc644;border-radius:2px}.two-factor-settings-group{position:relative;padding:0 0 20px 220px;margin:0 0 20px;border-bottom:1px solid #ddd}.two-factor-settings-group>h3{position:absolute;left:0;width:200px;font-size:14px}.two-factor-settings-group>h3 .octicon{position:absolute;left:-24px;color:#bd2c00}.two-factor-settings-group li{line-height:1.5;list-style:none}.u2f-registrations{padding-left:24px}.u2f-registration{position:relative;padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid #f8f8f8}.u2f-registration.is-sending .u2f-registration-delete{display:none}.u2f-registration.is-sending .spinner{position:relative;top:3px}.u2f-registration-nickname{font-weight:bold}.u2f-registration-icon{position:absolute;left:-24px;color:#dac268}.new-u2f-registration{position:relative}.new-u2f-registration .add-u2f-registration-form{display:none;margin-bottom:10px}.new-u2f-registration.is-active .add-u2f-registration-link{display:none}.new-u2f-registration.is-active .add-u2f-registration-form{display:block}.new-u2f-registration .u2f-request-interaction,.new-u2f-registration .u2f-request-error{display:none}.new-u2f-registration.is-sending .u2f-request-interaction{display:block}.new-u2f-registration.is-showing-error .u2f-request-error{display:block}.new-u2f-registration .u2f-error-icon{font-size:64px}.u2f-box .u2f-sorry{display:block}.u2f-box .new-u2f-registration{display:none}.u2f-box.available .u2f-sorry{display:none}.u2f-box.available .new-u2f-registration{display:block}.github-access-banner{position:relative;padding:10px 20px 10px 70px;margin:0 0 20px;font-size:14px;border:1px solid #ddd;border-radius:3px}.github-access-banner .octicon{position:absolute;top:20px;left:20px;color:#bd2c00}.error-icon,.spinner,.sent-message,.sms-error-message,.text-code{display:none}.is-sending .spinner{display:inline-block}.is-sent .sent-message{display:inline-block}.is-not-sent .sms-error-message{display:block}.is-not-sent .error-icon{display:inline-block}.two-factor-secret{font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:13px}.two-factor-app-main{float:none !important;margin:0 auto}.qr-code-table{margin:40px auto}.qr-code-table tr{background:transparent;border:0}.qr-code-table th,.qr-code-table td{padding:0;border:0}.qr-code-table td{width:3px;height:3px}.qr-code-table .black{background:#000}.qr-code-table .white{background:#fff}.two-factor-actions{padding-top:25px;margin-top:25px;clear:both;border-top:1px solid #eaeaea}.two-factor-banner{position:relative;width:700px;padding-left:60px;margin:40px auto;color:#444;background:#fff;border:1px solid #ddd}.two-factor-banner:hover{border-color:#ddd}.two-factor-banner .octicon{position:absolute;top:15px;left:15px;color:#bd2c00}.two-factor-banner h2{line-height:32px}.two-factor-mini-banner{display:block;width:100%;padding:15px 15px 15px 42px;margin:0 0 20px;background:#fff}.two-factor-mini-banner .btn-sm{position:relative;top:-4px;float:right}.two-factor-mini-banner p{margin-bottom:0;line-height:1.5}.two-factor-mini-banner .octicon{position:absolute;top:15px;left:15px;color:#bd2c00}.orgs-settings{margin-bottom:15px}.confirmation-phrase{font-style:italic;font-weight:normal}.do-not-copy-me{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}li.session-device{position:relative;padding:15px;line-height:18px;color:#767676;background-color:#fafafa}li.session-device .btn{float:right;margin-top:4px}li.session-device .session-state-indicator{float:left;width:8px;height:8px;margin-top:10px;border-radius:5px}li.session-device .session-state-indicator.recent{background-color:#6cc644;box-shadow:0 0 10px rgba(108,198,68,0.5)}li.session-device .session-state-indicator.not-recent{background-image:-webkit-linear-gradient(#aaa, #ccc);background-image:linear-gradient(#aaa, #ccc);box-shadow:0 1px 0 #fff}li.session-device .session-icon{float:left;width:32px;margin-top:1px;margin-left:15px;color:#bbb;text-align:center}li.session-device .sessions-more-info{position:relative;display:none;margin-top:10px}li.session-device.session-current{background-color:#fff}li.session-device.session-current .session-last-accessed{color:#767676}li.session-device.session-current .sessions-more-info{color:#767676}li.session-device.session-current .sessions-more-info::after{border-top-color:#fff}li.session-device.session-current .octicon{color:#767676}.session-details{position:relative;width:350px;margin-left:70px}.session-details:hover .octicon{color:#4078c0;cursor:pointer}.session-details.open .sessions-more-info{display:block}.session-title{display:block}.collaborators .collab-list{border-bottom-width:0}.collaborators .collab-list-item:first-child .collab-list-cell{border-top-width:0}.collaborators .collab-list-cell{padding-top:15px;padding-bottom:15px;vertical-align:middle}.collaborators .collab-meta{width:140px}.collaborators .collab-remove{padding-right:20px;text-align:right}.collaborators .collab-remove .remove-link{color:#767676}.collaborators .collab-remove .remove-link:hover{color:#bd2c00}.collaborators .collab-team-link{width:300px}.collaborators .collab-team-link:hover{text-decoration:none}.collaborators .collab-team-link .avatar{float:left;margin-top:1px;margin-right:10px}.collaborators .collab-team-link.disabled{pointer-events:none}.collaborators .collab-info{height:100%;color:#666}.collaborators .collab-info .description{padding-right:50px;margin-top:3px;margin-bottom:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collaborators .collab-info .collab-name{display:block;font-size:14px}.collaborators .collab-info .collab-message{position:relative;top:25%;display:block}.collaborators .copy-invite-modal{top:6px;width:352px}.collaborators .cancel-invite-cell{width:113px;padding-left:0}.access-sub-heading{float:right;font-weight:normal;line-height:1.4;color:#767676}.access-form-wrapper{padding:10px;background-color:#fcfcfc;border-top:1px solid #ddd;border-radius:0 0 3px 3px}.access-flash{padding:8px;margin-right:10px;margin-bottom:10px;margin-left:10px}.repo-access-group .blankslate{display:none}.repo-access-group.is-empty .blankslate{display:block}.repo-access-group.no-form .add-team-form{display:none}.repo-access-group .select-menu-item.has-access{display:none}.oauth-app-meta-container{display:inline-block;width:80%}.oauth-pending-deletion-list-item{background-color:#fafafa;box-shadow:inset 0 0 8px #eee}.oauth-pending-deletion-list-item:hover{background-color:#fafafa}.oauth-pending-deletion-list-item .oauth-pending-deletion{display:inline-block;width:19%;line-height:30px}.oauth-pending-deletion-list-item .active{display:none}.oauth-pending-deletion{display:none;width:100%}.boxed-group-list .access-level{color:#767676}.boxed-group-list .access-level.css-truncate-target{max-width:500px}.settings-next{font-size:14px;line-height:1.5}.settings-next label{font-size:14px}.settings-next .note{font-size:13px}.settings-next .form-checkbox input[type="radio"],.settings-next .form-checkbox input[type="checkbox"]{margin-top:4px}dl.form-group>dd textarea.compact{height:100px;min-height:0}.form-hr{margin-top:15px;margin-bottom:15px;border-bottom-color:#e5e5e5}.listgroup{list-style:none;border:1px solid #e5e5e5;border-radius:3px}.listgroup-item{min-height:inherit;padding:10px;font-size:13px;line-height:26px;color:#767676}.listgroup-item::before{display:table;content:""}.listgroup-item::after{display:table;clear:both;content:""}.listgroup-item+.listgroup-item{border-top:1px solid #e5e5e5}.listgroup-item.listgroup-item-preview{line-height:inherit}.listgroup-item.listgroup-item-preview .BtnGroup{margin-top:5px}.listgroup-item .css-truncate-target{max-width:615px}.listgroup-item-title{display:block;font-weight:bold}.listgroup-item-body{display:block}.listgroup-header{border-top:0;border-bottom:1px solid #e5e5e5}.listgroup-overflow{max-height:240px;overflow-y:auto;background-color:#f5f5f5}.listgroup-sm .listgroup-item{padding-top:5px;padding-bottom:5px}.protected-branches{margin-top:15px;margin-bottom:15px}.protected-branch-options{margin-left:20px;opacity:0.5}.protected-branch-options.active{opacity:1}.protected-branch-reviews.on .reviews-include-admin{display:block}.protected-branch-reviews .reviews-include-admin{display:none}.protected-branch-orgs-and-repo-admins{padding:10px;background-color:#fafafa}.authorized-pushers{width:440px}.authorized-pushers .add-protected-branch-user-or-team{display:block}.authorized-pushers .user-or-team-limit-reached{display:none;padding:10px;font-size:13px}.authorized-pushers.at-limit .add-protected-branch-user-or-team{display:none}.authorized-pushers.at-limit .user-or-team-limit-reached{display:block;width:440px}.protected-branch-authorized-pushers-table{margin-top:10px}.protected-branch-authorized-pushers-table .boxed-group-inner{max-height:350px;overflow-y:auto}.protected-branch-authorized-pushers-table .table-list{border-bottom:0}.protected-branch-authorized-pushers-table .table-list-cell{vertical-align:middle}.protected-branch-authorized-pushers-table .table-list-cell:first-child{width:100%}.protected-branch-authorized-pushers-table .avatar,.protected-branch-authorized-pushers-table .octicon-jersey,.protected-branch-authorized-pushers-table .octicon-organization{width:36px;margin-right:10px;text-align:center}.protected-branch-pusher{color:#333}.user-already-added::after{display:inline-block;padding:1px 5px;margin-left:6px;font-size:11px;line-height:1.4;color:#fff;content:"Already added";background-color:#c9510c;border-radius:3px}.protected-branch-admin-permission.active{float:left;padding:1px 3px;margin:-2px 0 -2px -4px;border:1px solid transparent;border-radius:3px;-webkit-animation:toggle-color 1s ease-in-out 0s;animation:toggle-color 1s ease-in-out 0s}@-webkit-keyframes toggle-color{0%{background-color:transparent}50%{color:#4c4a42;background-color:#fff9ea;border-color:#dfd8c2}100%{background-color:transparent}}@keyframes toggle-color{0%{background-color:transparent}50%{color:#4c4a42;background-color:#fff9ea;border-color:#dfd8c2}100%{background-color:transparent}}.automated-check-options{margin-top:10px}.automated-check-options .listgroup-item label{font-size:inherit}.automated-check-options .listgroup-item input[type="checkbox"]{float:none;margin-top:-2px;margin-right:5px;margin-left:0}.automated-check-options .label{margin-top:4px}.list-group-text-block{position:relative;padding-left:50px;line-height:20px}.list-group-text-block .meta-title{display:block;font-weight:bold;color:#000}.list-group-text-block .meta-description{display:inline-block;width:560px}.list-group-text-block img{position:absolute;top:0;left:0}.nudge-down.BtnGroup{position:relative;top:6px}.repository-merge-features .form-group.errored label{color:inherit}.repository-merge-features .form-group.errored .error{position:inherit;padding:0;margin-top:0;margin-left:6px;font-size:11px;color:#bd2c00;background:transparent;border:0}.repository-merge-features .form-group.errored .error::before,.repository-merge-features .form-group.errored .error::after{display:none}.pages-settings code{padding:0.2em;font-size:85%;background-color:rgba(0,0,0,0.04);border-radius:3px}.logged-out.signup .header-logged-out .container,.logged-out.signup .site-footer{width:750px}.logged-out.signup .site-footer{margin-right:auto;margin-left:auto}.logged-out.signup .site-footer .octicon-mark-github{top:30px}.logged-out.signup .header-actions .primary,.logged-out.signup .site-footer-links,.logged-out.signup .site-search{display:none}.setup-wrapper{width:750px;padding-top:30px;margin:0 auto}.setup-wrapper::before{display:table;content:""}.setup-wrapper::after{display:table;clear:both;content:""}.setup-header{padding-bottom:20px;margin:0 auto 30px;overflow:hidden;text-align:left;text-shadow:0 1px 0 white;border-bottom:1px solid #ddd}.setup-header h1{margin-top:0;margin-bottom:0;font-size:45px;font-weight:normal;line-height:1.1;letter-spacing:-1px}.setup-header h1 .octicon{color:#bbb}.setup-header .lead{margin-top:2px;margin-bottom:0;font-size:21px}.setup-header .lead a{color:#767676}.setup-header .lead a:hover{color:#4078c0;text-decoration:none}.setup-org{padding-bottom:0;border-bottom:0}.setup-main{float:left;width:450px}.setup-main.without-secondary{margin-left:150px}.setup-secondary{float:right;width:250px}.setup-secondary .info{padding-top:0;padding-bottom:0;margin-top:-10px;font-size:12px;line-height:18px;color:#767676;text-align:center}.setup-info-module{margin-bottom:30px;background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.075)}.setup-info-module h2{padding:15px;margin-bottom:15px;overflow:hidden;font-size:16px;border-bottom:1px solid #ddd}.setup-info-module h2 .price{float:right;font-weight:bold;color:#767676}.setup-info-module h3{padding:0 15px;margin:0 0 -7px;font-size:14px}.setup-info-module p{padding:0 15px;margin:15px 0}.setup-info-module .setup-section-title{margin-bottom:10px}.setup-info-module .setup-info-note{padding:1px 0;margin:0;background:#f9f9f9;border-top:1px solid #e0e0e0}.features-list{padding:0 15px 15px;margin:0;font-size:14px;list-style:none}.features-list li{margin-top:10px}.features-list li:first-child{margin-top:0}.features-list .list-divider{margin:15px -15px;border-top:1px solid #eee}.features-list .octicon-check{margin-right:5px;color:#60b044}.features-list .octicon-question{font-size:12px;color:#555}.features-list .tooltipped::after{width:250px;white-space:normal}.features-list.features-list-org{padding-bottom:0}.seat-breakdown-list{padding:0 15px 0 25px;margin:0;list-style:none}.seat-breakdown-list .subtle-link{color:#767676}.setup-form-container .setup-form-title{font-size:16px}.setup-form-container .secure{float:right;margin-top:2px;font-size:11px;color:#60b044;text-transform:uppercase}.setup-form-container hr{margin-top:25px;margin-bottom:25px}.setup-form-container .form-actions{padding-top:0;padding-bottom:0;text-align:left}.team-member-container{margin-bottom:20px}.team-member-container .team-member-username{line-height:1.2}.setup-form{padding-bottom:15px}.setup-form .form-group dd .form-control{width:100%}.setup-form .form-group dd .form-control.short{width:250px}.setup-form dd{position:relative}.setup-form dd .octicon{position:absolute;top:8px;right:25px}.setup-form .octicon-alert{color:#bd2c00}.setup-form .octicon-check{color:#6cc644}.setup-form .tos-info,.setup-form .setup-organization-next{margin:15px 0;border-top:1px solid #eee;border-bottom:1px solid #eee}.setup-form .tos-info{padding:15px 0}.setup-form .setup-organization-next{padding-top:15px;padding-bottom:15px}.setup-form .setup-plans{margin-bottom:25px;overflow:hidden;border-collapse:separate;border:solid 1px #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.075)}.setup-form .setup-plans tr.selected{background-color:#f0f7fd}.setup-form .setup-plans th,.setup-form .setup-plans td{vertical-align:middle;border-bottom:1px solid #ccc}.setup-form .setup-plans .name{font-weight:bold}.setup-form .setup-plans .choose-plan input[type="radio"]{display:none}.setup-creditcard-form .cc-extras{margin-bottom:15px}.setup-creditcard-form .expiration-form{width:120px}.setup-creditcard-form .expiration-form,.setup-creditcard-form .cvv-form,.setup-creditcard-form .country-form,.setup-creditcard-form .state-form{float:left;margin:0;word-wrap:normal}.setup-creditcard-form .country-form,.setup-creditcard-form .postal-code-form{margin-top:0;margin-bottom:15px}.setup-creditcard-form .form-group dd .input-cvv{width:168px}.setup-creditcard-form .form-group select.select-country{width:182px;margin-right:5px}.setup-creditcard-form .form-group select.select-state{width:101px}.setup-creditcard-form .form-group .card-select-number-field,.setup-creditcard-form .form-group .input-postal-code,.setup-creditcard-form .form-group .input-vat{width:288px}.setup-creditcard-form.is-vat-country .vat-field{display:block}.setup-creditcard-form.is-international .form-group select.select-country{width:288px}.setup-creditcard-form.is-international .state-form{display:none}.setup-creditcard-form.no-postcodes .postal-code-form{display:none}.setup-creditcard-form dd .octicon-credit-card{position:inherit}.setup-creditcard-form .enter-new-card{display:none}.setup-creditcard-form.has-credit-card .enter-new-card{display:inline-block}.setup-creditcard-form.has-credit-card .card-select-number-field,.setup-creditcard-form.has-credit-card .cancel-enter-new-card,.setup-creditcard-form.has-credit-card .cards-select{display:none}.setup-creditcard-form .vat-field{display:none}.setup-creditcard-form .vat-field.prefilled{display:block}.setup-creditcard-form .help-text{font-size:80%;font-weight:normal;color:#767676}.org-creation-questions,.user-identification-questions{float:none;width:auto}.org-creation-questions .question,.user-identification-questions .question{margin-bottom:30px}.org-creation-questions .question-title,.user-identification-questions .question-title{padding-right:40px;margin-bottom:10px;font-size:14px;line-height:1.5}.org-creation-questions .question-title i,.user-identification-questions .question-title i{font-size:13px;font-style:normal;font-weight:normal;color:#767676}.org-creation-questions .response-group label,.user-identification-questions .response-group label{font-weight:normal}.org-creation-questions .form-checkbox,.user-identification-questions .form-checkbox{margin:8px 0}.org-creation-questions .other-field .form-control,.user-identification-questions .other-field .form-control{margin-top:10px}.org-creation-questions .other-field input+.form-control,.user-identification-questions .other-field input+.form-control{display:none}.org-creation-questions .other-field input:checked+.form-control,.user-identification-questions .other-field input:checked+.form-control{display:block}.org-creation-questions .alternate-action,.user-identification-questions .alternate-action{margin-left:10px;line-height:34px}.org-creation-questions .disclaimer,.user-identification-questions .disclaimer{margin:40px 0 0;text-align:center}.user-identification-questions{margin-top:40px}.user-identification-questions .form-checkbox{float:left;width:250px}.showcase-page-pattern{position:relative;z-index:-1;height:100px;margin-top:-21px;margin-bottom:-70px}.showcase-page-pattern::after{position:absolute;top:0;right:0;bottom:0;left:0;display:block;content:"";background-image:-webkit-linear-gradient(270deg, rgba(255,255,255,0.85), #fff);background-image:linear-gradient(180deg, rgba(255,255,255,0.85), #fff)}.showcase-page-header{padding-bottom:50px;margin-bottom:20px;border-bottom:1px solid #e5e5e5}.showcase-page-header .container{position:relative}.showcase-page-header .draft-tag{position:absolute;top:-40px;left:0;background-color:rgba(0,0,0,0.65);border-bottom-right-radius:4px;border-bottom-left-radius:4px}.showcase-page-header .draft-tag:hover{text-decoration:none;background-color:rgba(0,0,0,0.85)}.showcase-page-title{margin-bottom:5px;font-size:40px;font-weight:300}.showcase-page-description{max-width:75%;margin-bottom:15px}.showcase-page-meta .meta-info{margin-right:20px}.showcase-page-repo-list{border-top:1px solid #eee}.showcase-page-sidebar{padding-left:40px}.showcase-page-sidebar .subnav-search{margin-left:0}.showcase-page-sidebar .subnav-search-input{width:100%}.showcase-page-sidebar .other-content-title{margin-bottom:10px;font-weight:normal}.collection-page .column.main{margin-right:260px !important}.collection-page .column.sidebar{width:240px}.collection-page .other-content-title{margin-top:40px}.collection-page .other-content-title:first-child{margin-top:0}.collection-search-results em{padding:0.1em;background-color:#faffa6}.collection-search-result{margin-bottom:40px;list-style-type:none}.collection-search-result-title{margin-top:0}.collection-search-page .search-results-info{float:right;margin-left:10px;font-size:15px;line-height:33px}.draft-tag{padding:5px 10px;font-weight:bold;color:#eee;background-color:#404040}.collection-listing-search{margin-bottom:20px}.collection-listing-search .subnav-search{margin-right:25%;margin-left:0}.org-sso{width:340px;margin:0 auto}.org-sso .sso-title{font-size:24px;font-weight:300;letter-spacing:-0.5px}.org-sso .org-sso-panel{padding:20px;background-color:#fff;border:1px #e5e5e5 solid;border-radius:5px}.org-sso .create-account-callout{padding:15px 20px;border:1px solid #ddd;border-radius:5px}.pinned-repos-spinner{position:relative;top:2px;left:6px}.pinned-repos-reorder-error{padding-left:6px;font-size:12px;font-weight:normal;color:#911}.pinned-repos-setting-link{font-size:13px;font-weight:normal}.facebox .pinned-repos-selection-list{max-height:250px;margin-left:0;overflow:auto;list-style:none}.pinned-repos-selection-list-item{display:table;width:100%;color:#767676;table-layout:fixed}.pinned-repos-selection-list-item .pinned-repo-name,.pinned-repos-selection-list-item .stars{display:table-cell;vertical-align:middle}.pinned-repos-selection-list-item .pinned-repo-name{width:76%;padding:5px;font-weight:bold}.pinned-repos-selection-list-item .pinned-repo-name .css-truncate-target{max-width:90%}.pinned-repos-selection-list-item .stars{width:24%;padding:5px 5px 5px 0;font-size:13px;color:#999;text-align:right;white-space:nowrap}.pinned-repos-selection-list-item.selected{color:#333;background-color:#f2f8fa}.pinned-repo-filters{padding:15px;margin:0 -15px 15px -15px;border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}.traffic-graph{min-height:150px}.traffic-graph .activity{margin-top:0}.traffic-graph .activity .dots{margin-top:40px}.traffic-graph .path{fill:none;stroke-width:2}.traffic-graph path.total{stroke:#1db34f}.traffic-graph path.unique{stroke:#1d7fb3}.traffic-graph .axis .tick:first-child line{stroke:#1db34f;stroke-width:2px}.traffic-graph .y line{stroke:#1db34f}.traffic-graph .y.unique line{stroke:#1d7fb3}.traffic-graph .overlay{fill-opacity:0}.uniques-graph .axis .tick:nth-child(14) line{stroke:#1d7fb3;stroke-width:2px}.svg-tip .date{color:#fff}.top-domains .dots{display:block;margin:167px auto 0}.top-domains-icon{display:inline-block;margin-right:5px;vertical-align:middle}table.capped-list{width:100%;line-height:100%}table.capped-list th{padding:8px;text-align:left;background:#f4f4f4;border-bottom:1px solid #ddd}table.capped-list td{padding:8px;font-size:12px;border-bottom:1px solid #eee}table.capped-list th.middle,table.capped-list td.middle{text-align:center}table.capped-list .favicon{width:16px;height:16px;margin:0 5px;vertical-align:middle}table.capped-list .octicon{margin-right:10px;color:#555;vertical-align:-1px}table.capped-list tr:nth-child(even){background-color:#fcfcfc}table.capped-list.mini-icons .mini-icon{margin-right:5px;color:#555}.capped-list-label{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.traffic-graph-stats{border-top:1px solid #ddd}.traffic-graph-stats .summary-stats{width:100%}.traffic-graph-stats .summary-stats::before{display:table;content:""}.traffic-graph-stats .summary-stats::after{display:table;clear:both;content:""}.traffic-graph-stats .summary-stats li{display:block;float:left;width:50%;padding-bottom:10px}.totals circle{fill:#1db34f;stroke:#fff;stroke-width:2}.uniques circle{fill:#1d7fb3;stroke:#fff;stroke-width:2}.top-lists .is-loading{margin:40px;text-align:center}ul.web-views li{width:140px}ul.clones li{width:170px}.tree-browser{width:100%;margin:0;border-right:0;border-bottom:1px solid #cacaca;border-left:0}.tree-browser td{padding:7px 3px;color:#484848;white-space:nowrap;vertical-align:middle;background:#f8f8f8;border-bottom:1px solid #eee}.tree-browser td.icon{width:17px;padding-right:2px;padding-left:10px}.tree-browser td:first-child{border-left:1px solid #cacaca}.tree-browser td:last-child{border-right:1px solid #cacaca}.tree-browser td a.message{color:#484848}.tree-browser td span.ref{color:#aaa}.tree-browser img{vertical-align:text-bottom}.tree-browser tbody tr:last-child td{border-bottom:0}.tree-browser .history{float:right;padding-right:5px}.tree-browser .octicon-chevron-right{color:transparent}.tree-browser tr.navigation-focus td{background-color:#fff}.tree-browser tr.navigation-focus td .octicon-chevron-right{color:#4078c0}.tree-browser .octicon-file-directory{color:#80a6cd}.tree-browser .octicon-file-submodule{color:#3cbf5e}.tree-browser .octicon-file-text{color:#767676}.tree-browser .content{max-width:220px}.tree-browser .message{max-width:420px}.tree-browser .css-truncate-target{max-width:100%}.tree-browser-result-template{display:none}.tree-browser-result .css-truncate-target{max-width:870px}.tree-browser-result mark{font-weight:bold;color:#4078c0;background-color:transparent}.tree-finder-input,.tree-finder-input:focus{padding-left:0;margin-left:5px;font-size:inherit;line-height:inherit;border:0;outline:none;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.tree-finder .no-results{display:none}.tree-finder .no-results th{text-align:center}.tree-finder tr td.icon{cursor:pointer}.tree-finder .tree-browser{border-top:1px solid #cacaca}.filterable-empty+.no-results{display:block}.wiki-wrapper.history .gollum-footer ul.actions li{margin:0 0.6em 0 0}.wiki-actions{display:block;padding:0;overflow:hidden;list-style-type:none}.results .wiki-actions li{margin:0 1em 0 0}.compare .wiki-actions{margin-bottom:1.4em}.compare .wiki-actions li{margin-right:0.6em;margin-left:0}.wiki-body{margin-top:20px}.wiki-body .markdown-body{padding:0 30px;margin:0 -30px}.wiki-rightbar{float:right;width:230px}.wiki-rightbar .markdown-body{font-size:13px}.wiki-rightbar .markdown-body .anchor{display:none}.wiki-rightbar .markdown-body h1{padding-bottom:5px;font-size:1.6em;line-height:1.2;border-color:#eee}.wiki-rightbar .markdown-body h2{padding-bottom:5px;font-size:1.4em;line-height:1.2;border-color:#eee}.wiki-rightbar .markdown-body h3,.wiki-rightbar .markdown-body h4,.wiki-rightbar .markdown-body h5,.wiki-rightbar .markdown-body h6{font-size:1.2em;line-height:1.2;border-color:#eee}.wiki-rightbar .boxed-group>h3{cursor:pointer}.wiki-rightbar .boxed-group .caret-collapsed{display:none}.wiki-rightbar .boxed-group.collapsed .caret-expanded{display:none}.wiki-rightbar .boxed-group.collapsed .caret-collapsed{display:inline}.wiki-rightbar .boxed-group.collapsed>h3{border-bottom:1px solid #d8d8d8;border-radius:3px}.wiki-rightbar .boxed-group.collapsed .boxed-group-inner{display:none}.wiki-rightbar p:last-child,.wiki-rightbar ul:last-child,.wiki-rightbar ol:last-child{margin-bottom:0}.wiki-pages{padding:0;margin:0;list-style-type:none}.wiki-page-link{display:block;padding:6px 10px}.has-rightbar .wiki-body,.has-rightbar .wiki-footer{margin-right:280px}.wiki-footer{margin:20px 0 50px;clear:both}.wiki-footer .markdown-body{font-size:13px}.wiki-wrapper .blankslate.wiki{padding:115px 0}.wiki-wrapper .blankslate.wiki p.has-fixed-width{text-align:center}.wiki-wrapper .gh-header .divider{padding:0 3px 0 2px}.wiki-wrapper .gh-header-meta{padding-bottom:15px;margin-top:6px}.wiki-wrapper a.history{color:inherit}.wiki-wrapper a.history:hover{color:#555}.wiki-wrapper.edit h1{font-weight:normal;color:inherit}.wiki-wrapper.edit h1 strong{color:#000}.wiki-wrapper .wiki-empty-box{display:block;padding:10px 0;margin:20px 0;color:#767676;text-align:center;border:1px dashed #ddd;border-radius:3px;-webkit-transition:color 0.1s ease-in-out, border-color 0.1s ease-in-out;transition:color 0.1s ease-in-out, border-color 0.1s ease-in-out}.wiki-wrapper .wiki-empty-box .octicon-plus{margin-right:4px;opacity:0.4}.wiki-wrapper .wiki-empty-box:hover{color:#767676;text-decoration:none;border-color:#ccc}.wiki-wrapper .wiki-auxiliary-content{background:#f6f6f6;box-shadow:0 1px 2px rgba(0,0,0,0.06)}.wiki-wrapper .wiki-auxiliary-content.markdown-body.wiki-writable>*:nth-child(2){margin-top:0 !important}.wiki-wrapper .wiki-auxiliary-content.markdown-body img{background:none}.wiki-wrapper .wiki-auxiliary-content .wiki-edit-link{position:relative;z-index:2;float:right;color:#767676;opacity:0.2;-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.wiki-wrapper .wiki-auxiliary-content .wiki-edit-link:hover{text-decoration:none;opacity:1}.wiki-wrapper .wiki-auxiliary-content-no-bg{background:#fff}.wiki-wrapper .wiki-custom-sidebar{padding:10px;margin-bottom:20px;border:solid 1px #e2e2e2;border-radius:3px}.wiki-wrapper .wiki-custom-sidebar>:nth-child(2){margin-top:0}.wiki-wrapper .wiki-custom-sidebar .octicon-pencil{position:relative;z-index:10;float:right;margin-left:15px;color:#767676}.wiki-wrapper .wiki-custom-sidebar .octicon-pencil:hover{color:#333;text-decoration:none}.wiki-wrapper .wiki-footer{margin:30px 30px 0;clear:none}.wiki-wrapper .wiki-footer .markdown-body{padding:10px 15px}.wiki-wrapper .wiki-footer .wiki-empty-box{margin:0 -30px}.wiki-wrapper .wiki-footer .wiki-edit-link{right:-5px}.wiki-wrapper .wiki-footer .wiki-auxiliary-content{border-top-left-radius:3px;border-top-right-radius:3px}.wiki-wrapper.compare .gh-header{margin-bottom:20px}.wiki-wrapper .wiki-history{margin-top:20px}.wiki-wrapper .wiki-history .checkbox{width:30px;text-align:center}.wiki-wrapper .wiki-history .author{width:200px}.wiki-wrapper .wiki-history .author img{display:block;float:left;margin-right:6px}.wiki-wrapper .wiki-history .date{color:#bbb;white-space:nowrap}.wiki-wrapper .wiki-history .commit{max-width:450px;overflow:hidden;text-overflow:ellipsis}.wiki-wrapper .wiki-history .commit-meta{width:160px;padding-right:10px;text-align:right;white-space:nowrap}.wiki-wrapper .wiki-history .commit-meta code{display:inline-block;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;line-height:16px;vertical-align:top}.wiki-wrapper .wiki-history .commit-id{color:#bbb}.wiki-wrapper .wiki-history .commit-id:hover{color:#4078c0}.wiki-wrapper .wiki-rightbar .sidebar-button{margin-top:10px}.wiki-wrapper .wiki-content{clear:both}.wiki-wrapper .wiki-content .gollum-editor-title-field{margin:0 0 14px}.wiki-wrapper .wiki-content .file-wrap{margin-top:20px;border-top:1px solid #ddd;border-radius:3px}.wiki-wrapper .wiki-content .file-wrap .files{border-radius:3px}.wiki-pages-box .wiki-more-pages{display:none}.wiki-pages-box.wiki-show-more .wiki-more-pages,.wiki-pages-box .filterable-active .wiki-more-pages{display:block}.wiki-pages-box.wiki-show-more .wiki-more-pages-link,.wiki-pages-box .filterable-active .wiki-more-pages-link{display:none}.wiki-pages-box .wiki-more-pages-link{box-shadow:inset 0 1px 0 #e5e5e5}.wiki-pages-box .wiki-more-pages-link a{display:block;padding:3px;color:#7aa1d3;text-align:center}.wiki-pages-box .wiki-more-pages-link a:hover{color:#4078c0;text-decoration:none}
+
+
+ hr{border-bottom-color:#eee}.img-responsive{display:block;width:100%;max-width:100%;height:auto}.video-responsive{position:relative;max-width:100%;height:0;padding-bottom:56.25%;overflow:hidden}.video-responsive iframe,.video-responsive object,.video-responsive embed{position:absolute;top:0;left:0;width:100%;height:100%}.sn-grid .column{padding-right:20px;padding-left:20px}.sn-grid .columns{margin-right:-20px;margin-left:-20px}.container-responsive{max-width:980px;margin-right:auto;margin-left:auto}.page-responsive .container-responsive{max-width:1020px;padding-right:20px;padding-left:20px;margin-right:auto;margin-left:auto}@media (min-width: 544px){.page-responsive .container-responsive{padding-right:40px;padding-left:40px}}@media (min-width: 1004px){.page-responsive .container-responsive{padding-right:20px;padding-left:20px}}@media (max-width: 768px){.container-responsive .column{display:block;float:none;width:100%}}@media (min-width: 768px){.columns-reverse .column{float:right}}@media (min-width: 1004px){.column-spacious-left{padding-left:80px !important}}@media (min-width: 1004px){.column-spacious-right{padding-right:80px !important}}.columns-vertically-centered .column{margin-top:20px;text-align:center}@media (min-width: 768px){.columns-vertically-centered{display:table;table-layout:fixed}.columns-vertically-centered .column{display:table-cell;float:none;text-align:left;vertical-align:middle}.columns-vertically-centered.columns-reverse{direction:rtl}.columns-vertically-centered.columns-reverse .column{direction:ltr}}.homepage-hero-intro{width:60%}@media (min-width: 768px){.homepage-hero-intro{padding-right:60px}}@media (min-width: 1004px){.homepage-hero-intro{width:65%}}.homepage-hero-signup{width:40%}@media (min-width: 1004px){.homepage-hero-signup{width:35%}}.homepage-hero-signup .form .form-control{width:100%}.off-screen-col{position:relative}@media (min-width: 768px){.off-screen-col{left:-100px}}.off-screen-img{width:100%}@media (min-width: 768px){.off-screen-img{position:absolute;width:800px}}@font-face{font-family:Roboto;font-style:normal;font-weight:300;src:local("Roboto Light"),local("Roboto-Light"),url(data:font/woff;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:local("Roboto"),local("Roboto-Regular"),url(data:font/woff;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-weight:500;src:local("Roboto Medium"),local("Roboto-Medium"),url(data:font/woff;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-weight:400;src:local("Roboto Italic"),local("Roboto-Italic"),url(data:font/woff;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("woff")}.home-hero,.jumbotron,.jumbotron-followup-container,.featurette,.site-header,.site-subheader,.tile{font-family:Roboto, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Segoe UI", Oxygen, Ubuntu, Cantarell, "Open Sans", sans-serif;font-size:16px;line-height:1.4;color:#767676}.display-heading-1{font-size:54px;font-weight:300;line-height:1.15}.page-responsive .display-heading-1{font-size:36px}@media (min-width: 768px){.page-responsive .display-heading-1{font-size:48px}}@media (min-width: 1004px){.page-responsive .display-heading-1{font-size:54px}}.display-heading-2{font-size:38px;font-weight:300;line-height:1.15}.page-responsive .display-heading-2{font-size:28px}@media (min-width: 768px){.page-responsive .display-heading-2{font-size:34px}}@media (min-width: 1004px){.page-responsive .display-heading-2{font-size:38px}}.display-heading-3{font-size:22px;font-weight:400;line-height:1.4}.page-responsive .display-heading-3{font-size:18px}@media (min-width: 768px){.page-responsive .display-heading-3{font-size:20px}}@media (min-width: 1004px){.page-responsive .display-heading-3{font-size:22px}}.display-heading-4{font-size:16px;font-weight:500;line-height:1.4}.display-intro{margin-bottom:40px;font-size:26px;font-weight:300;line-height:1.4}.page-responsive .display-intro{font-size:20px}@media (min-width: 768px){.page-responsive .display-intro{font-size:24px}}@media (min-width: 1004px){.page-responsive .display-intro{font-size:26px}}.display-lead{margin-bottom:30px;font-size:16px;font-weight:normal;line-height:1.5}@media (min-width: 768px){.page-responsive .display-lead{font-size:18px;font-weight:300}}@media (min-width: 1004px){.page-responsive .display-lead{font-size:21px}}.display-body-sm{font-size:14px}.display-intro,.display-heading-1,.display-heading-2,.display-heading-3,.display-heading-4{margin-top:0;-webkit-font-smoothing:antialiased}.display-heading-1,.display-heading-2,.display-heading-3,.display-heading-4{margin-bottom:0.25em;color:#3c4146}.pullquote{margin-bottom:24px;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:16px;line-height:1.4;color:#767676}@media (min-width: 768px){.pullquote{margin-bottom:36px;font-size:18px;line-height:1.5}}.casestudy-head h1{font-size:54px;font-weight:300;line-height:1.15}.page-responsive .casestudy-head h1{font-size:36px}@media (min-width: 768px){.page-responsive .casestudy-head h1{font-size:48px}}@media (min-width: 1004px){.page-responsive .casestudy-head h1{font-size:54px}}.casestudy-head p{margin-bottom:40px;font-size:26px;font-weight:300;line-height:1.4}.page-responsive .casestudy-head p{font-size:20px}@media (min-width: 768px){.page-responsive .casestudy-head p{font-size:24px}}@media (min-width: 1004px){.page-responsive .casestudy-head p{font-size:26px}}.casestudy-facts ul{padding:0;margin:0;list-style:none}.casestudy-facts li{font-size:14px;padding-top:12px;padding-bottom:12px;border-top:1px solid #eee}.casestudy-facts li:last-child{margin-bottom:0;border-bottom:1px solid #eee}.casestudy-body>p{margin-bottom:24px;line-height:1.6}.casestudy-body>p:first-child{margin-bottom:40px;font-size:26px;font-weight:300;line-height:1.4;margin-bottom:24px;color:#3c4146}.page-responsive .casestudy-body>p:first-child{font-size:20px}@media (min-width: 768px){.page-responsive .casestudy-body>p:first-child{font-size:24px}}@media (min-width: 1004px){.page-responsive .casestudy-body>p:first-child{font-size:26px}}.casestudy-body h2{font-size:22px;font-weight:400;line-height:1.4;margin-bottom:0.25em;line-height:1.4;color:#3c4146}.page-responsive .casestudy-body h2{font-size:18px}@media (min-width: 768px){.page-responsive .casestudy-body h2{font-size:20px}}@media (min-width: 1004px){.page-responsive .casestudy-body h2{font-size:22px}}.casestudy-body blockquote{padding-top:0;padding-bottom:0;padding-left:12px;margin-bottom:24px;font-family:Consolas, "Liberation Mono", Menlo, Courier, monospace;font-size:16px;line-height:1.4;color:#767676;border-left:3px solid #e5e5e5}@media (min-width: 768px){.casestudy-body blockquote{padding-left:18px;margin-bottom:36px;margin-left:-21px;font-size:18px;line-height:1.5}}.casestudy-body strong,.casestudy-facts strong{font-weight:500}.casestudy-body em,.casestudy-facts em{font-style:normal;color:#3c4146}.btn-transparent{padding:0.55em 1em;font-size:inherit;font-weight:500;line-height:1.5;color:#fff;background-color:transparent;background-image:none;border:1px solid rgba(255,255,255,0.5);border-radius:0.25em}.btn-transparent:hover,.btn-transparent:active{color:#333;background-color:#fff;background-image:none;border-color:#fff}.btn-theme-blue{padding:0.55em 1em;font-family:Roboto, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Segoe UI", Oxygen, Ubuntu, Cantarell, "Open Sans", sans-serif;font-size:inherit;font-weight:500;line-height:1.5;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.15);background-color:#0079d1;background-image:-webkit-linear-gradient(#0088eb, #006ab8);background-image:linear-gradient(#0088eb, #006ab8);border-color:#005b9e}.btn-theme-blue:hover{color:#fff;background-color:#006ab8;background-image:-webkit-linear-gradient(#0079d1, #005b9e);background-image:linear-gradient(#0079d1, #005b9e);border-color:#004d85}.btn-theme-blue:active{text-shadow:0 1px 0 rgba(0,0,0,0.15);background-color:#005b9e;background-image:none;border-color:#005b9e}.btn-theme-blue.disabled{text-shadow:none}.btn-theme-orange{padding:0.55em 1em;font-family:Roboto, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Segoe UI", Oxygen, Ubuntu, Cantarell, "Open Sans", sans-serif;font-size:inherit;font-weight:500;line-height:1.5;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.15);background-color:#e8400d;background-image:-webkit-linear-gradient(#f24e1c, #d0390c);background-image:linear-gradient(#f24e1c, #d0390c);border-color:#b8330a}.btn-theme-orange:hover{color:#fff;background-color:#d0390c;background-image:-webkit-linear-gradient(#e8400d, #b8330a);background-image:linear-gradient(#e8400d, #b8330a);border-color:#a02c09}.btn-theme-orange:active{text-shadow:0 1px 0 rgba(0,0,0,0.15);background-color:#b8330a;background-image:none;border-color:#b8330a}.btn-theme-orange.disabled{text-shadow:none}.btn-theme-purple{padding:0.55em 1em;font-family:Roboto, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Segoe UI", Oxygen, Ubuntu, Cantarell, "Open Sans", sans-serif;font-size:inherit;font-weight:500;line-height:1.5;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.15);background-color:#7a3497;background-image:-webkit-linear-gradient(#893baa, #6b2d84);background-image:linear-gradient(#893baa, #6b2d84);border-color:#5b2771}.btn-theme-purple:hover{color:#fff;background-color:#6b2d84;background-image:-webkit-linear-gradient(#7a3497, #5b2771);background-image:linear-gradient(#7a3497, #5b2771);border-color:#4c205e}.btn-theme-purple:active{text-shadow:0 1px 0 rgba(0,0,0,0.15);background-color:#5b2771;background-image:none;border-color:#5b2771}.btn-theme-purple.disabled{text-shadow:none}.btn-theme-blue-purple{padding:0.55em 1em;font-family:Roboto, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Segoe UI", Oxygen, Ubuntu, Cantarell, "Open Sans", sans-serif;font-size:inherit;font-weight:500;line-height:1.5;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.15);background-color:#4950ae;background-image:-webkit-linear-gradient(#585eb9, #41489c);background-image:linear-gradient(#585eb9, #41489c);border-color:#3a3f8a}.btn-theme-blue-purple:hover{color:#fff;background-color:#41489c;background-image:-webkit-linear-gradient(#4950ae, #3a3f8a);background-image:linear-gradient(#4950ae, #3a3f8a);border-color:#323778}.btn-theme-blue-purple:active{text-shadow:0 1px 0 rgba(0,0,0,0.15);background-color:#3a3f8a;background-image:none;border-color:#3a3f8a}.btn-theme-blue-purple.disabled{text-shadow:none}.btn-theme-green{padding:0.55em 1em;font-family:Roboto, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Segoe UI", Oxygen, Ubuntu, Cantarell, "Open Sans", sans-serif;font-size:inherit;font-weight:500;line-height:1.5;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.15);background-color:#6cc644;background-image:-webkit-linear-gradient(#7bcc58, #60b838);background-image:linear-gradient(#7bcc58, #60b838);border-color:#55a532}.btn-theme-green:hover{color:#fff;background-color:#60b838;background-image:-webkit-linear-gradient(#6cc644, #55a532);background-image:linear-gradient(#6cc644, #55a532);border-color:#4b912c}.btn-theme-green:active{text-shadow:0 1px 0 rgba(0,0,0,0.15);background-color:#55a532;background-image:none;border-color:#55a532}.btn-theme-green.disabled{text-shadow:none}.btn-outline-purple{padding:0.55em 1em;font-size:inherit;font-weight:500;line-height:1.5;color:#7a3497;background-color:transparent;border-radius:0.25em}.btn-outline-purple:hover,.btn-outline-purple:active{color:#fff;background-color:#7a3497;border-color:#7a3497}.btn-outline-orange{padding:0.55em 1em;font-size:inherit;font-weight:500;line-height:1.5;color:#e8400d;background-color:transparent;border-radius:0.25em}.btn-outline-orange:hover,.btn-outline-orange:active{color:#fff;background-color:#e8400d;border-color:#e8400d}.btn-outline-blue{padding:0.55em 1em;font-size:inherit;font-weight:500;line-height:1.5;color:#0079d1;background-color:transparent;border-radius:0.25em}.btn-outline-blue:hover,.btn-outline-blue:active{color:#fff;background-color:#0079d1;border-color:#0079d1}.btn-outline-green{padding:0.55em 1em;font-size:inherit;font-weight:500;line-height:1.5;color:#6ab395;background-color:transparent;border-radius:0.25em}.btn-outline-green:hover,.btn-outline-green:active{color:#fff;background-color:#6ab395;border-color:#6ab395}.btn-jumbotron{padding:0.75em 1.5em;font-size:16px;border-radius:6px}@media (min-width: 768px){.btn-jumbotron{font-size:18px}}.btn-link{font-family:inherit}.site-header{position:relative;z-index:3;padding-top:20px;padding-bottom:20px;margin-bottom:-1px;background-color:#fff;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,0.075);box-shadow:0 0 5px rgba(0,0,0,0.1)}.site-header::before{display:table;content:""}.site-header::after{display:table;clear:both;content:""}.site-header .header-logo-invertocat{margin-right:0;margin-left:0}@media (max-width: 960px){.page-responsive .site-header{padding-top:10px;padding-bottom:10px}}.site-header .header-search-link{display:none !important}@media (max-width: 960px){.page-responsive .site-header .header-search-link{display:inline-block !important}}.site-header .header-search{width:160px;margin-right:-4px;margin-left:10px}.site-header .header-search.site-scoped-search{width:230px}@media (max-width: 960px){.page-responsive .site-header .header-search{display:none}}.site-header .header-search-input{min-height:32px;font-size:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"}.site-header.open .site-header-menu{display:block}.site-header-toggle{display:none}@media (max-width: 960px){.page-responsive .site-header-toggle{display:block;margin-top:4px;color:#767676}.page-responsive .site-header-toggle:hover{color:#333}}.site-header-menu{display:block;padding-top:0}@media (max-width: 960px){.page-responsive .site-header-menu{display:none;padding-top:15px;clear:left}}.site-header-nav .nav-item{display:block;float:left;padding-top:8px;padding-bottom:8px;line-height:20px;color:#3c4146}.site-header-nav .nav-item:hover{color:#000;text-decoration:none}@media (max-width: 960px){.page-responsive .site-header-nav .nav-item{float:none}}.site-header-nav-main{float:left;margin-bottom:0;margin-left:5px}.site-header-nav-main .nav-item{position:relative;float:left;padding-right:10px;padding-left:10px;font-size:16px;border-top:0}.site-header-nav-main .nav-item::after{position:absolute;bottom:-20px;left:0;width:100%;height:4px;content:""}.site-header-nav-main .selected.nav-item-personal{color:#0079d1}.site-header-nav-main .selected.nav-item-personal::after{background-color:#0079d1}.site-header-nav-main .selected.nav-item-opensource{color:#e8400d}.site-header-nav-main .selected.nav-item-opensource::after{background-color:#e8400d}.site-header-nav-main .selected.nav-item-business{color:#7a3497}.site-header-nav-main .selected.nav-item-business::after{background-color:#7a3497}.site-header-nav-main .selected.nav-item-explore{color:#55a532}.site-header-nav-main .selected.nav-item-explore::after{background-color:#55a532}@media (max-width: 960px){.page-responsive .site-header-nav-main{float:none;margin-bottom:24px;margin-left:0}.page-responsive .site-header-nav-main .nav-item{float:none;padding:16px 0;margin-bottom:0;line-height:1;border-top:1px solid #e5e5e5;border-bottom:1px solid transparent}.page-responsive .site-header-nav-main .nav-item:last-child{border-bottom:1px solid #e5e5e5}.page-responsive .site-header-nav-main .nav-item::after{display:none}.page-responsive .site-header-nav-main .selected{font-weight:500;border-bottom:0}}.site-header-nav-secondary{float:right;margin-top:0;margin-right:10px}.site-header-nav-secondary .nav-item{display:inline-block;padding:8px;font-size:13px}@media (max-width: 960px){.page-responsive .site-header-nav-secondary{float:none;margin-top:15px;margin-right:0;text-align:center}}.site-header-actions{position:relative;z-index:3;text-align:left}@media (max-width: 960px){.page-responsive .site-header-actions{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;margin-top:24px}}.site-header-actions-btn{float:right;font-weight:500}@media (max-width: 960px){.page-responsive .site-header-actions-btn{-webkit-box-flex:1;-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:0;flex-basis:0;float:none;max-width:340px;margin:0;text-align:center}.page-responsive .site-header-actions-btn+.site-header-actions-btn{margin-left:6px}}.site-subheader{position:relative;z-index:2;padding-top:24px;padding-bottom:24px;background-color:#fff;border-bottom:1px solid rgba(0,0,0,0.075)}.site-subheader::before{display:table;content:""}.site-subheader::after{display:table;clear:both;content:""}.page-responsive .site-subheader{padding-top:18px;padding-bottom:18px}@media (min-width: 1004px){.page-responsive .site-subheader{padding-top:24px;padding-bottom:24px}}.site-subpage .site-subheader{margin-bottom:-48px;background-color:transparent;border-bottom:0}.page-responsive .site-subpage .site-subheader{margin-bottom:-12px}@media (min-width: 768px){.page-responsive .site-subpage .site-subheader{margin-bottom:-48px}}.site-subheader-business{position:-webkit-sticky;position:sticky;top:0;z-index:21}.site-subheader-business.is-stuck{background-color:#fff;border-bottom:1px solid rgba(0,0,0,0.075);box-shadow:0 3px 6px rgba(0,0,0,0.075)}.subheader-title{display:block;margin-bottom:10px;font-weight:400;text-align:center}@media (min-width: 1004px){.subheader-title{float:left;text-align:left}}.subheader-nav{text-align:center}@media (min-width: 1004px){.subheader-nav{float:right;text-align:left}}.subheader-nav .nav-item{display:inline-block;padding-top:5px;padding-bottom:1px;font-size:14px;text-decoration:none}@media (min-width: 768px){.subheader-nav .nav-item{font-size:16px}}@media (min-width: 1004px){.subheader-nav .nav-item{padding-top:0}}.subheader-nav .nav-item.selected{color:#3c4146;border-bottom:1px solid rgba(60,65,70,0.15)}.subheader-nav .nav-item+.nav-item{margin-left:15px}@media (min-width: 544px){.subheader-nav .nav-item+.nav-item{margin-left:20px}}.subheader-nav-business .nav-item{color:#7a3497;border-bottom-color:#7a3497}.pricing-card{margin-bottom:20px;background-color:#fff;border:1px solid #e5e5e5;border-radius:6px;box-shadow:0 1px 1px rgba(0,0,0,0.1)}.pricing-card-text{padding:24px;margin-bottom:0}@media (min-width: 544px){.pricing-card-horizontal{display:table;width:100%}}.pricing-card-horizontal .pricing-card-cta{padding:24px;border-bottom:1px solid #e5e5e5}@media (min-width: 544px){.pricing-card-horizontal .pricing-card-cta{display:table-cell;white-space:nowrap;vertical-align:middle;border-right:1px solid #e5e5e5;border-bottom:0}}@media (min-width: 544px){.pricing-card-horizontal .pricing-card-text{display:table-cell;vertical-align:middle}}@media (min-width: 768px){.pricing-card-vertical{width:300px}}.pricing-card-vertical .pricing-card-cta{padding:24px;border-top:1px solid #e5e5e5}.pricing-card-vertical .pricing-card-name{padding:16px 24px;margin-bottom:0;border-bottom:1px solid #e5e5e5}.pricing-card-vertical .pricing-card-text{padding:24px}.pricing-cards-eq{margin:0 auto 12px}@media (min-width: 1004px){.pricing-cards-eq{display:table;margin:0 -40px 36px;border-spacing:40px 0;border-collapse:separate}}.pricing-card-eq{position:relative}@media (min-width: 768px){.pricing-card-eq{width:65%;min-width:320px;min-height:300px;padding-bottom:90px;margin:24px auto}.pricing-card-eq .pricing-card-cta{position:absolute;bottom:0;left:0;width:100%}}@media (min-width: 1004px){.pricing-card-eq{display:table-cell;width:300px;min-width:0}}.default-currency,.local-currency{display:inline-block}.pricing-table{width:100%;border-collapse:separate}.pricing-table td,.pricing-table th{padding:12px 24px;font-size:14px;background-color:#fff;border-right:1px solid #e5e5e5;border-bottom:1px solid #f5f5f5}.pricing-table td{text-align:center}.pricing-table td:first-child{border-left:1px solid #e5e5e5}.pricing-table thead th{width:35%;padding-top:24px;padding-bottom:24px;font-weight:500;color:#3c4146;border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}.pricing-table thead th:first-child{width:30%;text-align:left;border-left:1px solid #e5e5e5;border-top-left-radius:6px}.pricing-table thead th:last-child{border-right:1px solid #e5e5e5;border-top-right-radius:6px}.pricing-table tbody td:first-child{color:#3c4146;text-align:left}.pricing-table tbody th{font-weight:400;text-align:left;background-color:#f5f5f5;border-left:1px solid #e5e5e5}.pricing-table tfoot td{padding-top:24px;padding-bottom:24px;border-bottom:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,0.1)}.pricing-table tfoot td:first-child{border-bottom-left-radius:6px}.pricing-table tfoot td:last-child{border-bottom-right-radius:6px}.pricing-table-no-foot tr:last-child td{box-shadow:0 1px 1px rgba(0,0,0,0.1)}.pricing-table-no-foot tr:last-child td:first-child{border-bottom-left-radius:6px}.pricing-table-no-foot tr:last-child td:last-child{border-bottom-right-radius:6px}.pricing-table-responsive{display:block;width:100%;min-height:0.01%;overflow-x:auto}@media (min-width: 768px){.pricing-table-responsive{display:table}}.card{background-color:#fff;border:1px solid #e5e5e5;border-radius:6px;box-shadow:0 1px 1px rgba(0,0,0,0.1)}.jumbotron{position:relative;padding-top:50px;padding-bottom:50px;text-align:center;background-color:#fafafa;background-position:70% top;background-size:cover}@media (min-width: 544px){.jumbotron{padding-top:60px;padding-bottom:60px}}@media (min-width: 768px){.jumbotron{min-height:400px;text-align:left;background-position:center}}@media (min-width: 1004px){.jumbotron{padding-top:90px;padding-bottom:90px}}@media (min-width: 1280px){.jumbotron{padding-top:120px;padding-bottom:120px}}@media (min-width: 1600px){.jumbotron{padding-top:180px;padding-bottom:180px}}.jumbotron .container-responsive{position:relative}.jumbotron::before{position:absolute;top:0;right:0;bottom:0;left:0;display:block;content:"";background-color:rgba(0,0,0,0.3);-webkit-transition:background-color 0.2s ease-out;transition:background-color 0.2s ease-out}.jumbotron.is-expanded::before{background-color:rgba(0,0,0,0.55)}.jumbotron-inverse{color:#fff;background-color:#333}.jumbotron-inverse .jumbotron-title,.jumbotron-inverse .jumbotron-lead,.jumbotron-inverse .jumbotron-followup{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,0.25),0 1px 30px rgba(0,0,0,0.75)}.jumbotron-home{background-image:url("/images/modules/site/home-hero-sm.jpg?sn");background-position:left bottom}@media (min-width: 768px){.jumbotron-home{background-image:url("/images/modules/site/home-hero.jpg?sn");background-position:bottom left}}@media (min-width: 1004px){.jumbotron-home{background-position:bottom left}.jumbotron-home .jumbotron-title{font-size:64px}}@media (min-width: 1600px){.jumbotron-home .jumbotron-title{font-size:72px}}.jumbotron-home::after{background-color:rgba(0,0,0,0.25)}.jumbotron-personal{background-image:url("/images/modules/site/personal-hero-sm.jpg?sn");background-position:right center}@media (min-width: 768px){.jumbotron-personal{background-image:url("/images/modules/site/personal-hero.jpg?sn");background-position:center 30%}}.jumbotron-opensource{background-image:url("/images/modules/site/open-source-hero-sm.jpg?sn")}@media (min-width: 768px){.jumbotron-opensource{background-image:url("/images/modules/site/open-source-hero.jpg?sn");background-position:center 10%}}.jumbotron-business{background-image:url("/images/modules/site/business-hero-sm.jpg?sn")}@media (min-width: 768px){.jumbotron-business{background-image:url("/images/modules/site/business-hero.jpg?sn");background-position:center center}}.jumbotron-split{min-height:470px;padding-bottom:45%;background-repeat:no-repeat;background-position:center 175px;background-size:100% auto}.jumbotron-split::before{background-color:transparent;background-image:-webkit-linear-gradient(#f5f5f5, #f5f5f5 100px, transparent 100px);background-image:linear-gradient(#f5f5f5, #f5f5f5 100px, transparent 100px)}@media (min-width: 768px){.jumbotron-split{min-height:360px;padding-bottom:60px;background-position:125% center;background-size:60% auto}.jumbotron-split::before{display:none}}@media (min-width: 1004px){.jumbotron-split{padding-top:100px;padding-bottom:100px;background-position:right center;background-size:50% auto}}@media (min-width: 1600px){.jumbotron-split{padding-top:120px;padding-bottom:120px}}.jumbotron-split .jumbotron-content{background-color:#f5f5f5}@media (min-width: 768px){.jumbotron-split .jumbotron-content{background-color:transparent}}.jumbotron-title{margin-bottom:10px}.jumbotron-lead,.jumbotron-title,.jumbotron-sublead{margin-top:0}@media (min-width: 768px){.jumbotron-lead,.jumbotron-title,.jumbotron-sublead{max-width:530px}}@media (min-width: 1004px){.jumbotron-lead,.jumbotron-title,.jumbotron-sublead{max-width:700px}}.jumbotron-sublead{font-weight:300;color:rgba(255,255,255,0.65)}.jumbotron-has-followup{padding-bottom:90px}@media (min-width: 768px){.jumbotron-has-followup{padding-bottom:120px}}@media (min-width: 1004px){.jumbotron-has-followup{padding-bottom:160px}}@media (min-width: 1280px){.jumbotron-has-followup{padding-bottom:180px}}@media (min-width: 1600px){.jumbotron-has-followup{padding-bottom:230px}}.jumbotron-followup-container{position:relative;top:-216px;margin-bottom:-37px;background-color:transparent;background-image:none}@media (min-width: 768px){.jumbotron-followup-container{top:-226px}}@media (min-width: 1004px){.jumbotron-followup-container{top:-236px}}@media (min-width: 1004px){.jumbotron-followup-container{top:-246px}}.jumbotron-followup-container .container-responsive{position:relative}.jumbotron-followup-container .jumbotron-video,.jumbotron-followup-container .jumbotron-video-close{display:none}.jumbotron-followup-container.is-expanded{padding-top:144px;padding-right:40px;padding-bottom:36px;padding-left:40px;margin-bottom:-216px;background-image:-webkit-linear-gradient(rgba(6,6,6,0), #060606 170px);background-image:linear-gradient(rgba(6,6,6,0), #060606 170px)}@media (min-width: 768px){.jumbotron-followup-container.is-expanded{margin-bottom:-236px}}@media (min-width: 1004px){.jumbotron-followup-container.is-expanded{padding-right:0;padding-left:0;margin-bottom:-246px}}.jumbotron-followup-container.is-expanded .jumbotron-followup{display:none}.jumbotron-followup-container.is-expanded .jumbotron-video-close{position:absolute;top:0;right:-20px}@media (min-width: 1004px){.jumbotron-followup-container.is-expanded .jumbotron-video-close{right:0}}.jumbotron-followup-container.is-expanded .jumbotron-video,.jumbotron-followup-container.is-expanded .jumbotron-video-close{display:block}.jumbotron-followup-link{position:relative;top:150px;z-index:1;display:block;padding-left:34px;margin:0 auto;line-height:1;color:#fff;text-align:left;white-space:normal}.jumbotron-followup-link:hover{text-decoration:none;background-color:transparent}@media (min-width: 768px){.jumbotron-followup-link:hover::after{display:block;background-color:rgba(0,0,0,0.3)}}.jumbotron-followup-link::after{position:absolute;top:-6px;left:-8px;z-index:-1;display:none;width:100%;height:100%;padding:6px 8px;content:"";background-color:transparent;border-radius:4px}@media (min-width: 768px){.jumbotron-followup-link{top:160px;display:block;padding-left:40px;margin:0}}@media (min-width: 1004px){.jumbotron-followup-link{top:150px}}.jumbotron-followup-link .jumbotron-followup-icon{position:relative;left:-4px;width:25px;height:25px;margin-left:-30px;vertical-align:middle}@media (min-width: 768px){.jumbotron-followup-link .jumbotron-followup-icon{width:30px;height:30px;margin-top:-2px;margin-left:-40px}}.jumbotron-split-ctas .column{max-width:380px}@media (min-width: 768px){.jumbotron-split-ctas .column{min-width:300px;max-width:none}}.featurette{padding-top:80px;padding-bottom:80px}.page-responsive .featurette{padding-top:50px;padding-bottom:50px}@media (min-width: 768px){.page-responsive .featurette{padding-top:60px;padding-bottom:60px}}@media (min-width: 1004px){.page-responsive .featurette{padding-top:80px;padding-bottom:80px}}.featurette-inverse{color:rgba(255,255,255,0.8);background-color:#0d1623;background-size:cover}.featurette-inverse .featurette-heading{color:#fff}.featurette-inverse .featurette-lead{color:inherit}.featurette-single{padding-top:30px}@media (min-width: 768px){.featurette-single{padding-top:40px}}@media (min-width: 1004px){.featurette-single{padding-top:60px}}.featurette-lead{margin-top:0;margin-bottom:30px}.featurette-lead strong{font-weight:500}.featurette-lead code{font-size:90%}@media (min-width: 768px){.featurette-lead{max-width:760px;margin-bottom:60px}}.featurette-jumplink:target{padding-top:120px}@media (min-width: 768px){.featurette-jumplink:target{padding-top:96px}}@media (min-width: 768px){.featurette-heading-centered{max-width:760px}}.featurette-heading,.featurette-lead{text-align:center}@media (min-width: 768px){.featurette-heading,.featurette-lead{text-align:inherit}}.featurette-lead-center{max-width:600px;margin-right:auto;margin-left:auto;text-align:center}@media (min-width: 1004px){.featurette-lead-center{max-width:800px}}.featurette-hr{margin-top:60px;margin-bottom:60px;clear:both}.page-responsive .featurette-hr{margin-top:36px;margin-bottom:36px}@media (min-width: 768px){.page-responsive .featurette-hr{margin-top:60px;margin-bottom:60px}}.triband-hr{height:1px;margin:40px 0;clear:both;background-image:-webkit-linear-gradient(left, #b8e1ff 33.3333%, #fcd2c5 33.3333%, #fcd2c5 66.6666%, #e0c5eb 66.6666%);background-image:linear-gradient(to right, #b8e1ff 33.3333%, #fcd2c5 33.3333%, #fcd2c5 66.6666%, #e0c5eb 66.6666%);border:0}.featurette-benefit{display:table-row}.featurette-benefit-content{display:table-cell;padding-bottom:24px;padding-left:24px;vertical-align:middle}@media (min-width: 768px){.featurette-benefit-content{padding-bottom:36px}}.featurette-benefit-img{display:table-cell;width:50px;padding-top:4px;vertical-align:top}@media (min-width: 768px){.featurette-benefit-img{width:60px}}@media (min-width: 768px){.featurette-benefit-sm{display:block;text-align:center}.featurette-benefit-sm .featurette-benefit-img{display:block;margin:0 auto 6px}.featurette-benefit-sm .featurette-benefit-content{display:block;padding:0}}.featurette-icon{width:100%;height:auto}.featurette-illo{padding:0 5%}@media (min-width: 768px){.featurette-illo{padding:0}}.featurette-illo-sm{padding:0 30%}@media (min-width: 1004px){.featurette-illo-sm{padding:0 48px}}.org-example-drop-shadow{position:relative;z-index:-1;border-top-left-radius:4px;border-top-right-radius:4px;box-shadow:0 0 20px rgba(0,0,0,0.15)}.tile-block{border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}@media (min-width: 768px){.tile-row{display:table;max-width:1330px;margin:0 auto;overflow:hidden}}.tile{padding:6px 24px}@media (min-width: 768px){.tile{display:table-cell;vertical-align:top}}@media (min-width: 1004px){.tile{padding:24px 36px}}@media (max-width: 768px){.tile{display:block;float:none;width:100%}}@media (min-width: 768px){.tile.one-fourth{float:left;width:50%}}@media (min-width: 1004px){.tile.one-fourth{float:none;width:25%;border-left:0}}.tile-bordered{padding-top:24px;padding-bottom:24px}.tile-bordered:not(:last-child){border-bottom:1px solid #e5e5e5}@media (min-width: 768px){.tile-bordered{border-right:1px solid transparent}.tile-bordered:not(:last-child){border-right:1px solid #e5e5e5;border-bottom:0}}.callout-box{position:relative;padding:30px 0 24px;border-top:1px solid #eee;border-bottom:1px solid #eee}.callout-box .iconlist-item+.iconlist-item{margin-top:20px}.callout-box .display-heading-4{margin-bottom:5px}.callout-box-icon{position:absolute;top:-18px;left:50%;margin-left:-9px;background-color:#fff;outline:10px solid #fff}@media (min-width: 768px){.callout-box-icon{left:36px;margin-left:0}}.callout-box-business{border-color:#e7dff4}.callout-box-business .callout-box-icon{color:#a793b2}.callout-box-business .iconlist-item{padding-left:72px;text-align:left}@media (min-width: 768px){.callout-box-business .iconlist-item{padding-left:36px}}.callout-box-business .iconlist-item-icon{float:left;margin-left:-30px;color:#6cc644}@media (min-width: 768px){.callout-box-business .iconlist-item-icon{float:left;margin-top:-4px;margin-left:-30px}}@media (min-width: 768px){.illflow{height:600px;background-image:url("/images/modules/site/illflow_window_ui.png");background-repeat:no-repeat;background-position:top center;background-size:795px auto}}@media (min-width: 768px){.illflow-purple .selected{background-color:#f7f1f9}.illflow-purple .selected::after{border-color:transparent transparent #f7f1f9}.illflow-purple .illflow-item .illflow-item-heading{color:#7a3497}}@media (min-width: 768px){.illflow-blue .selected{background-color:#eef4fc}.illflow-blue .selected::after{border-color:transparent transparent #eef4fc}.illflow-blue .illflow-item .illflow-item-heading{color:#0079d1}}@media (min-width: 768px){.illflow-steps{margin-top:24px;margin-right:-20px;margin-left:-20px}.illflow-steps::before{display:table;content:""}.illflow-steps::after{display:table;clear:both;content:""}}.illflow-step{display:none}@media (min-width: 768px){.illflow-step.active{display:block}}.illflow-item{position:relative;padding:0 10%;margin-bottom:48px;text-align:center}.illflow-item::before{position:absolute;top:10%;left:-6%;z-index:-1;display:block;padding-top:200%;padding-left:140%;content:"";background-image:url("/images/modules/site/illflow_window_ui.png");background-repeat:no-repeat;background-size:100% auto}@media (min-width: 768px){.illflow-item::before{display:none}}.illflow-item .illflow-item-heading{position:relative;color:#3c4146}@media (min-width: 768px){.illflow-item{float:left;width:33.333333%;padding:20px;margin-bottom:0;cursor:pointer;border-radius:6px}.illflow-item:not(.selected):hover{background-color:#fafafa}.illflow-item.selected .illflow-item-heading{color:#333}.illflow-item.selected::after{position:absolute;top:-30px;left:50%;display:block;width:0;height:0;margin-left:-15px;pointer-events:none;content:" ";border-style:outset solid solid;border-width:15px}.illflow-item.selected:first-child::after{left:75%}.illflow-item.selected:last-child::after{left:25%}}.illflow-item-description{margin-top:0}.illflow-img{display:block;width:400px;height:auto;margin:0 auto}.iconlist-item{padding-left:30px}.iconlist-item-icon{float:left;margin-left:-30px}@media (min-width: 544px){.home-hero-signup{max-width:340px;margin:0 auto}}@media (min-width: 768px){.home-hero-signup{float:right}}.home-hero-signup .form-label{display:block;margin-bottom:5px;font-size:16px;font-weight:inherit;text-align:left;text-shadow:0 1px 2px rgba(0,0,0,0.25)}.home-hero-signup .form-control-lg{min-height:40px;padding:10px;font-size:16px;background-clip:padding-box;border-color:rgba(0,0,0,0.25);border-radius:5px}.home-hero-signup .btn-block{font-family:Roboto, "Helvetica Neue", "Segoe UI", Oxygen, Ubuntu, Cantarell, "Open Sans", sans-serif;background-clip:padding-box;border-color:rgba(0,0,0,0.25)}.home-hero-signup .text-white{color:#fff}.form-control-note{margin-top:5px;margin-bottom:0;font-size:12px;color:rgba(255,255,255,0.6)}.form-control-note .notice-highlight{color:#fff}.sn-grid label{font-weight:500;color:#3c4146}.sn-grid .partner-form-extras{display:none}.casestudy-sm-img{position:relative;width:100%;height:168px;margin-bottom:12px;background-position:center center;background-size:cover;border-radius:4px}.casestudy-link:hover{text-decoration:none}.casestudy-teaser{position:relative;height:280px;padding:24px 20px;margin-right:-20px;margin-bottom:24px;margin-left:-20px;overflow:hidden}.casestudy-teaser>:not(.casestudy-bg){position:relative;z-index:2}.casestudy-teaser::after{position:absolute;top:0;left:0;z-index:1;width:100%;height:70%;content:"";background-image:-webkit-linear-gradient(rgba(0,0,0,0.65), transparent);background-image:linear-gradient(rgba(0,0,0,0.65), transparent)}@media (min-width: 544px){.casestudy-teaser{padding-right:40px;padding-left:40px;margin-right:-40px;margin-left:-40px}}@media (min-width: 768px){.casestudy-teaser{height:450px;padding-top:36px;margin-right:-20px;margin-bottom:36px;margin-left:-20px;border-radius:4px}.casestudy-teaser:hover .casestudy-bg{opacity:0.7;-webkit-transform:scale(1.01, 1.01);transform:scale(1.01, 1.01)}.casestudy-teaser:hover .btn-transparent{color:#333;background-color:#fff;background-image:none;border-color:#fff}}@media (min-width: 1004px){.casestudy-teaser{margin-right:-40px;margin-left:-40px}}.casestudy-teaser-lead{margin-bottom:24px}.casestudy-teaser-title,.casestudy-teaser-lead{color:#fff;text-shadow:0 1px 30px rgba(0,0,0,0.6)}@media (min-width: 768px){.casestudy-teaser-title,.casestudy-teaser-lead{max-width:50%}}.casestudy-bg{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;background-position:center center;background-size:cover;opacity:0.9;-webkit-transition:-webkit-transform 0.25s ease-in-out, opacity 0.15s ease-in-out;transition:transform 0.25s ease-in-out, opacity 0.15s ease-in-out}.site-breadcrumbs{list-style:none}.breadcrumb-item{display:inline-block}.breadcrumb-item:not(:last-child)::after{margin:0 6px;color:#ccc;content:"/"}.logo-img{position:relative;display:inline-block;width:auto;height:25px;margin:10px;vertical-align:middle}@media (min-width: 768px){.logo-img{width:auto;height:30px;margin:10px}}@media (min-width: 1004px){.logo-img{height:35px;margin:10px 20px}}.logo-img-greyscale{-webkit-filter:grayscale(100%);filter:grayscale(100%);opacity:0.75;-webkit-transition:-webkit-filter 0.2s ease, opacity 0.2s ease, filter 0.2s ease, opacity 0.2s ease;transition:filter 0.2s ease, opacity 0.2s ease;-webkit-transform:translateZ(0) scale(1, 1);transform:translateZ(0) scale(1, 1);-webkit-backface-visibility:hidden;backface-visibility:hidden}.logo-img-greyscale:hover{-webkit-filter:grayscale(0%);filter:grayscale(0%);opacity:1}.logo-img-sm{width:auto;height:40px;margin:0}.logo-img-lg{width:auto;height:35px;margin:5px 15px}@media (min-width: 768px){.logo-img-lg{width:auto;height:40px;margin:10px 15px}}@media (min-width: 1004px){.logo-img-lg{height:50px;margin:10px 25px}}.logo-wrap{display:inline-block}.tooltipped-logo{display:inline-block}.tooltipped-logo.tooltipped-s::after,.tooltipped-logo.tooltipped-se::after,.tooltipped-logo.tooltipped-sw::after{font-size:14px}.tooltipped-purple.tooltipped-s::before,.tooltipped-purple.tooltipped-se::before,.tooltipped-purple.tooltipped-sw::before{color:#f7f1f9;border-bottom-color:#f7f1f9}.tooltipped-purple.tooltipped-s::after,.tooltipped-purple.tooltipped-se::after,.tooltipped-purple.tooltipped-sw::after{color:#3c4146;background:#f7f1f9}@-webkit-keyframes universe-pulse-one{0%{-webkit-filter:blur(20px);filter:blur(20px);opacity:0;-webkit-transform:scale(0.5) translateY(30px);transform:scale(0.5) translateY(30px)}70%{-webkit-filter:blur(0);filter:blur(0);opacity:1;-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes universe-pulse-one{0%{-webkit-filter:blur(20px);filter:blur(20px);opacity:0;-webkit-transform:scale(0.5) translateY(30px);transform:scale(0.5) translateY(30px)}70%{-webkit-filter:blur(0);filter:blur(0);opacity:1;-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes universe-pulse-two{0%,15%{-webkit-filter:blur(20px);filter:blur(20px);opacity:0;-webkit-transform:scale(0.5) translateY(30px);transform:scale(0.5) translateY(30px)}85%{-webkit-filter:blur(0);filter:blur(0);opacity:1;-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes universe-pulse-two{0%,15%{-webkit-filter:blur(20px);filter:blur(20px);opacity:0;-webkit-transform:scale(0.5) translateY(30px);transform:scale(0.5) translateY(30px)}85%{-webkit-filter:blur(0);filter:blur(0);opacity:1;-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes universe-pulse-three{0%,30%{-webkit-filter:blur(20px);filter:blur(20px);opacity:0;-webkit-transform:scale(0.5) translateY(30px);transform:scale(0.5) translateY(30px)}100%{-webkit-filter:blur(0);filter:blur(0);opacity:1;-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes universe-pulse-three{0%,30%{-webkit-filter:blur(20px);filter:blur(20px);opacity:0;-webkit-transform:scale(0.5) translateY(30px);transform:scale(0.5) translateY(30px)}100%{-webkit-filter:blur(0);filter:blur(0);opacity:1;-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes starfield1{0%{opacity:0.01}50%{opacity:0.125}100%{opacity:0.01}}@keyframes starfield1{0%{opacity:0.01}50%{opacity:0.125}100%{opacity:0.01}}@-webkit-keyframes starfield2{0%{opacity:0.05}50%{opacity:0.15}100%{opacity:0.05}}@keyframes starfield2{0%{opacity:0.05}50%{opacity:0.15}100%{opacity:0.05}}.text-universe-purple{color:#5f5e98}.text-universe-blue{color:#3693ac}.text-universe-green{color:#6ab395}.text-universe-red{color:#c3626f}.text-universe-orange{color:#e7ac69}.text-universe-yellow{color:#e5ce6a}.universe-landing-nav{position:relative;z-index:10;width:100%;letter-spacing:-0.25em}.universe-landing-nav-item{display:inline-block;width:30%;max-width:90px;padding-right:10px;padding-left:10px;font-size:14px;letter-spacing:normal;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transition-duration:0.2s;transition-duration:0.2s;-webkit-transition-property:opacity, -webkit-filter, -webkit-transform, opacity, filter, -webkit-transform;transition-property:opacity, filter, transform;-webkit-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-timing-function:cubic-bezier(0.1, 0, 0.13, 1.5);animation-timing-function:cubic-bezier(0.1, 0, 0.13, 1.5);-webkit-animation-iteration-count:1;animation-iteration-count:1}.universe-landing-nav-item .universe-landing-nav-img{-webkit-transition:0.2s -webkit-transform ease-in-out;transition:0.2s transform ease-in-out}@media (min-width: 544px){.universe-landing-nav-item{max-width:140px;padding-right:20px;padding-left:20px}.universe-landing-nav-item .universe-landing-nav-item-label{display:block}}@media (min-width: 768px){.universe-landing-nav-item{width:16%;max-width:130px;padding-right:15px;padding-left:15px;font-size:inherit}.universe-landing-nav-item .universe-landing-nav-img{margin-bottom:10px}}@media (min-width: 1004px){.universe-landing-nav-item{max-width:170px}}a.universe-landing-nav-item:hover{text-decoration:none}@media (min-width: 768px){a.universe-landing-nav-item:hover .universe-landing-nav-img{-webkit-transform:translateY(-10px);transform:translateY(-10px)}}a.universe-landing-nav-item:hover .universe-landing-nav-item-label{color:#fff;text-shadow:0 0 3px rgba(255,255,255,0.5)}@media (min-width: 768px){.universe-pulse-one{-webkit-animation-name:universe-pulse-one;animation-name:universe-pulse-one}.universe-pulse-two{-webkit-animation-name:universe-pulse-two;animation-name:universe-pulse-two}.universe-pulse-three{-webkit-animation-name:universe-pulse-three;animation-name:universe-pulse-three}}.universe-landing-nav-item-label{display:none;color:rgba(255,255,255,0.65);-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transition-duration:0.2s;transition-duration:0.2s;-webkit-transition-property:color, text-shadow;transition-property:color, text-shadow}.btn-universe2016{padding:0.55em 1em;font-size:inherit;font-weight:500;line-height:1.5;color:#fff;background-color:transparent;border-radius:0.25em;background-color:rgba(255,255,255,0.125);border:0;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transition-duration:0.1s;transition-duration:0.1s;-webkit-transition-property:color, background-color, box-shadow;transition-property:color, background-color, box-shadow}.btn-universe2016:hover,.btn-universe2016:active{color:#fff;background-color:#fff;border-color:#fff}.btn-universe2016:hover,.btn-universe2016:active{color:#333;box-shadow:0 0.25em 0.25em rgba(0,0,0,0.05),0 0.5em 1em rgba(0,0,0,0.075)}.jumbotron-universe2016{background:#3c8fa9 -webkit-linear-gradient(45deg, #3c90a9 0%, #375076 10%, #301650 45%, #301650 55%, #345367 90%, #41917e 100%);background:#3c8fa9 linear-gradient(45deg, #3c90a9 0%, #375076 10%, #301650 45%, #301650 55%, #345367 90%, #41917e 100%)}.jumbotron-universe2016 .container-responsive{position:relative;z-index:3}.jumbotron-universe2016 .starfield{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background-size:519px 348px;opacity:0.1;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.jumbotron-universe2016 .starfield-1{background-image:url("/images/modules/universe-2016/starfield-1.png");-webkit-animation-name:starfield1;animation-name:starfield1;-webkit-animation-duration:5s;animation-duration:5s}.jumbotron-universe2016 .starfield-2{background-image:url("/images/modules/universe-2016/starfield-2.png");-webkit-animation-name:starfield2;animation-name:starfield2;-webkit-animation-duration:7s;animation-duration:7s}.jumbotron-universe2016::after{position:absolute;right:0;bottom:0;left:0;z-index:5;display:block;height:100px;content:"";background:transparent -webkit-linear-gradient(rgba(0,0,0,0.01), rgba(0,0,0,0.25));background:transparent linear-gradient(rgba(0,0,0,0.01), rgba(0,0,0,0.25))}.jumbotron-universe2016 .jumbotron-title,.jumbotron-universe2016 .jumbotron-lead{text-shadow:0 0 45px rgba(255,255,255,0.3)}@media (min-width: 768px){.jumbotron-universe2016 .jumbotron-lead{max-width:none}}.jumbotron-universe2016-icon{margin-bottom:20px}@media (min-width: 1600px){.jumbotron-universe2016-icon{margin-top:-40px;margin-bottom:40px}}.universe-launch-content-fluid{padding:30px}@media (min-width: 768px){.universe-launch-content-fluid{width:60%;padding:200px 0}}.universe-launch-feature-example{padding-right:30px;padding-left:30px;background-color:#f8f8f8}.universe-coming-soon{border:1px solid #ddd}.featurette-inverse .universe-coming-soon{border-color:rgba(255,255,255,0.1)}.universe-feature-section{padding-top:30px;padding-bottom:30px}@media (min-width: 768px){.universe-feature-section{padding-top:100px;padding-bottom:100px}}.universe2016-browser{padding-right:30px;padding-left:30px}@media (max-width: 1199px){.universe2016-browser-scroll-img{border:1px solid rgba(0,0,0,0.15);border-radius:4px;box-shadow:0 0 25px rgba(0,0,0,0.075)}}@media (min-width: 1200px){.universe2016-browser{width:1136px;height:727px;padding:70px 56px 80px;background:transparent url("/images/modules/universe-2016/safari-background.png") no-repeat top center;background-size:1136px 727px}.universe2016-browser:hover .universe2016-browser-scroll-img{-webkit-transform:translateY(-800px);transform:translateY(-800px)}.universe2016-browser-scroll{width:100%;max-height:100%;overflow:hidden}.universe2016-browser-scroll-img{-webkit-transition:4s -webkit-transform ease-in-out;transition:4s transform ease-in-out}}.featurette-screenshot-profile{position:relative;max-height:190px;margin-bottom:60px;overflow:hidden}.featurette-screenshot-profile::after{position:absolute;right:0;bottom:0;left:0;z-index:5;display:block;height:40px;content:"";background:transparent -webkit-linear-gradient(rgba(0,0,0,0.01), rgba(0,0,0,0.1));background:transparent linear-gradient(rgba(0,0,0,0.01), rgba(0,0,0,0.1));border-bottom:1px solid rgba(0,0,0,0.15)}@media (min-width: 768px){.featurette-screenshot-profile{max-height:400px}}@media (min-width: 1004px){.featurette-screenshot-profile{max-height:550px}}.featurette-screenshot-profile .universe2016-browser{position:relative;z-index:5}.featurette-screenshot-profile-bg{position:absolute;right:0;bottom:0;left:0;opacity:0.75}.featurette-projects{color:rgba(255,255,255,0.65);background-color:#192023;background-image:-webkit-linear-gradient(315deg, #2e2d45, #1c2127);background-image:linear-gradient(135deg, #2e2d45, #1c2127)}.featurette-thanks{position:relative;overflow:hidden;color:rgba(255,255,255,0.65);background-color:#192023;background-image:-webkit-linear-gradient(315deg, #251c39, #1a2226);background-image:linear-gradient(135deg, #251c39, #1a2226)}.featurette-octoverse{position:relative;padding-top:150px !important;padding-bottom:150px !important;overflow:hidden;background-color:#fff;background-image:-webkit-linear-gradient(45deg, #691657 0%, #e87330 55%, #fdc45c 100%);background-image:linear-gradient(45deg, #691657 0%, #e87330 55%, #fdc45c 100%);box-shadow:inset 0 -1px 0 rgba(255,255,255,0.1)}.featurette-octoverse .container-responsive{position:relative;z-index:5}.octoverse-map,.octoverse-map::after,.octoverse-map::before{position:absolute;top:0;right:0;bottom:0;left:0;display:block}.octoverse-map::before{z-index:2;content:"";background-image:url("/images/modules/universe-2016/octoverse-black.svg");background-repeat:no-repeat;background-position:center center;background-size:3060px 3960px;opacity:0.05}.octoverse-map::after{content:"";background-color:rgba(0,0,0,0.2)}@media (min-width: 768px){.universe2016-browser-img{margin-left:-46px}}.border-currentColor{border-color:currentColor !important}.universe2016-infotip{padding-left:24px}.universe2016-infotip>.octicon{float:left;margin-top:2px;margin-left:-24px;color:#999}.universe2016-form{max-width:360px;padding:24px;font-size:16px;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:6px;box-shadow:0 2px 4px rgba(0,0,0,0.015),0 0 25px rgba(0,0,0,0.075)}.universe2016-form .form-control{min-height:42px;padding:10px 15px}.page-universe-2016 .featurette .btn-outline{font-size:90%;font-weight:normal}.list-style-none{list-style:none}.icon-cta{padding-left:24px}.icon-cta>.octicon{float:left;width:16px;margin-top:0.1em;margin-left:-24px;color:#999;text-align:center}.universe2016-video{background-color:rgba(0,0,0,0.2)}.universe2016-subtext{color:rgba(255,255,255,0.5)}@media (max-width: 544px){.d-none-sm-dn{display:none !important}}@media (max-width: 544px){.text-center-sm-dn{text-align:center !important}}@media (min-width: 768px){.d-none-md-up{display:none !important}}@media (max-width: 1004px){.d-none-md-dn{display:none !important}}@media (min-width: 1004px){.d-none-hc-up{display:none !important}}.columns-center{text-align:center;vertical-align:bottom}.columns-center .column{display:inline-block;float:none}@media (min-width: 768px){.columns-center .column{padding-right:10px;padding-left:10px;margin-right:10px;margin-left:10px}}.shade-purple{background-color:#f7f1f9 !important}.shade-gradient{background-image:-webkit-linear-gradient(270deg, #f5f5f5, #fff);background-image:linear-gradient(180deg, #f5f5f5, #fff);background-repeat:no-repeat;background-size:100% 200px}.shade-gray{background-color:#f5f5f5 !important}.shade-white{background-color:#fff !important}@media (min-width: 768px){.bg-bubble{background-image:url("/images/modules/site/pricing-bg.png");background-repeat:no-repeat;background-position:center 5%;background-size:100% auto}}@media (min-width: 1004px){.bg-bubble{background-position:center 20px;background-size:auto auto}}.text-purple{color:#7a3497 !important}.text-blue-purple{color:#4950ae !important}.text-blue{color:#0079d1 !important}.text-orange{color:#e8400d !important}.text-black{color:#3c4146 !important}.text-bold{font-weight:500 !important}.text-thin{font-weight:300 !important}.v-align-top{vertical-align:top !important}.octicon-middle .octicon{vertical-align:middle}.border-behind{position:relative}.border-behind::before{position:absolute;top:50%;left:50%;z-index:-1;width:100%;height:1px;margin-top:-1px;margin-left:-50%;content:"";background-color:#e5e5e5}@media (min-width: 768px){.border-behind::before{width:500px;margin-left:-250px}}.jumplink-stickynav::before{display:block;height:100px;margin-top:-100px;content:""}.list-unstyled{padding-left:0 !important}.list-unstyled li{list-style:none !important}@media (min-width: 544px){.list-twocol{-webkit-column-count:2;-moz-column-count:2;column-count:2}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.page-responsive .site-footer-container{width:auto;max-width:1020px;padding-right:20px;padding-left:20px;margin-right:auto;margin-left:auto}@media (max-width: 900px){.page-responsive .site-footer-mark{display:none}.page-responsive .site-footer-links{float:none !important;margin-bottom:10px;text-align:center}}.server-stats .container{width:auto;max-width:1020px;padding-right:20px;padding-left:20px;margin-right:auto;margin-left:auto}
+
+
+ </style>
+ <style>
+ /* Page tweaks */
+ .preview-page {
+ margin-top: 64px;
+ }
+ /* User-content tweaks */
+ .timeline-comment-wrapper > .timeline-comment:after,
+ .timeline-comment-wrapper > .timeline-comment:before {
+ content: none;
+ }
+ /* User-content overrides */
+ .discussion-timeline.wide {
+ width: 920px;
+ }
+ </style>
+</head>
+<body>
+ <div class="page">
+ <div id="preview-page" class="preview-page" data-autorefresh-url="">
+
+
+
+ <div role="main" class="main-content">
+ <div class="container new-discussion-timeline experiment-repo-nav">
+ <div class="repository-content">
+ <div id="readme" class="readme boxed-group clearfix announce instapaper_body md">
+
+ <h3>
+ <span class="octicon octicon-book"></span>
+ Ansel_integration_guide.md
+ </h3>
+
+ <article class="markdown-body entry-content" itemprop="text" id="grip-content">
+ <h1>
+<a id="user-content-ansel-integration-guide" class="anchor" href="#ansel-integration-guide" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>ANSEL INTEGRATION GUIDE</h1>
+
+<h2>
+<a id="user-content-1-setting-up" class="anchor" href="#1-setting-up" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>1. SETTING UP</h2>
+
+<h3>
+<a id="user-content-11-code-compiler-and-linker-configuration" class="anchor" href="#11-code-compiler-and-linker-configuration" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>1.1 CODE, COMPILER, AND LINKER CONFIGURATION</h3>
+
+<p>The include folder in the Ansel SDK contains all the public header files you will need. A top-level include file,
+AnselSDK.h, is provided for convenience so that you only need to include that one file in your project's code. If you
+add the path to the Ansel SDK include folder to your project settings this is all you need to gain access to the
+functionality of the SDK: </p>
+
+<div class="highlight highlight-source-c++"><pre>#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">&lt;</span>AnselSDK.h<span class="pl-pds">&gt;</span></span></pre></div>
+
+<p>Note that we do not offer Ansel SDK for static linking: this is intentional. The lib folder in the Ansel SDK contains
+the import libraries for 32-bit and 64-bit architecture DLLs. Based on the targeted platform architecture you must link
+in the corresponding import library. </p>
+
+<p>If you wish to delay load the Ansel SDK, a sample project and source files are provided in the
+samples folder. You can either link in the resulting static lib that this sample produces or simply include the source
+files directly in your game. Regardless of which route you choose for delay loading you need to define
+<code>ANSEL_SDK_DELAYLOAD</code> for the game and call the <code>loadAnselSDKLibrary</code> function that is implemented by the sample.
+The Ansel SDK needs to be loaded via this function before any call is made to Ansel SDK functions (except the
+<code>ansel::isAnselAvailable</code> function which can always be called - this function is covered in detail later in this
+document). All other aspects of the Ansel SDK integration should remain the same and no special workflow is required
+once the Ansel SDK has been loaded.</p>
+
+<p>The redist folder in the Ansel SDK contains the DLLs for 32-bit and 64-bit architecture. These DLLs must be
+redistributed with the game - if the game is only offered for 64-bit architecture then only 64-bit DLLs should be
+redistributed (and similarly for 32-bit).</p>
+
+<h3>
+<a id="user-content-12-machine-configuration" class="anchor" href="#12-machine-configuration" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>1.2 MACHINE CONFIGURATION</h3>
+
+<p>In order to use Ansel you need </p>
+
+<ul>
+<li>Windows PC with Windows 7 (32-bit or 64-bit) or newer</li>
+<li>GeForce GTX 600 series or newer</li>
+<li>Ansel-ready display driver. In order to take advantage of all features of the SDK a driver of version 378.49 or higher
+is required.</li>
+<li>A game using Dx11 that has integrated the Ansel SDK</li>
+</ul>
+
+<blockquote>
+<p><strong>NOTE:</strong></p>
+
+<ul>
+<li>Support for Dx12 is coming soon and options for OpenGL are being investigated.</li>
+<li>We currently do not support Ansel for the following NVIDIA GPU / Display configurations
+
+<ul>
+<li>Surround</li>
+</ul>
+</li>
+</ul>
+</blockquote>
+
+<p><g-emoji alias="warning" fallback-src="https://assets-cdn.github.com/images/icons/emoji/unicode/26a0.png" ios-version="6.0">⚠️</g-emoji> Your game executable needs to be whitelisted by the driver for Ansel activation to succeed. If you do not
+have a driver with the proper whitelisting you can force whitelisting to succeed for all executables with this command:</p>
+
+<pre lang="ms-dos"><code>NvCameraEnable.exe whitelisting-everything
+</code></pre>
+
+<p>This utility is provided with the installation of an Ansel-ready display driver. You will find it at
+NVIDIA Corporation/Ansel/Tools under Program Files.
+The whitelisting setting will be persisted - until you perform a clean driver install or call
+the command again with <code>whitelisting-default</code> option.</p>
+
+<h3>
+<a id="user-content-13-game-engine-configuration" class="anchor" href="#13-game-engine-configuration" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>1.3 GAME ENGINE CONFIGURATION</h3>
+
+<p>Ansel currently supports the following backbuffer formats:</p>
+
+<table>
+<thead>
+<tr>
+<th>Supported formats</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>DXGI_FORMAT_R8G8B8A8_UNORM</td>
+</tr>
+<tr>
+<td>DXGI_FORMAT_R8G8B8A8_UNORM_SRGB</td>
+</tr>
+<tr>
+<td>DXGI_FORMAT_B8G8R8A8_UNORM</td>
+</tr>
+<tr>
+<td>DXGI_FORMAT_B8G8R8A8_UNORM_SRGB</td>
+</tr>
+<tr>
+<td>DXGI_FORMAT_R10G10B10A2_UNORM</td>
+</tr>
+</tbody>
+</table>
+
+<p>Additionally, multisampling is supported for all the above formats. If your game is using a format that is not on the list
+Ansel will produce images with zero for every pixel - i.e. black.</p>
+
+<h2>
+<a id="user-content-2-integrating-sdk-with-your-game" class="anchor" href="#2-integrating-sdk-with-your-game" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>2. INTEGRATING SDK WITH YOUR GAME</h2>
+
+<p>This Ansel SDK uses four major concepts: Configuration, Session, Camera, and optionally Hints. We will go through each of
+them in turn and build up an example of game integration in the process.</p>
+
+<blockquote>
+<p><strong>NOTE:</strong> Please consult the header files in the Ansel SDK for reference style documentation.</p>
+</blockquote>
+
+<h3>
+<a id="user-content-21-configuration" class="anchor" href="#21-configuration" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>2.1 CONFIGURATION</h3>
+
+<p>As the first step in detecting whether a host computer can support Ansel (correct driver, Ansel enabled,
+title whitelisted, etc) the following function should be called:</p>
+
+<div class="highlight highlight-source-c++"><pre>ANSEL_SDK_API <span class="pl-k">bool</span> <span class="pl-en">isAnselAvailable</span>();</pre></div>
+
+<p>This function can be called at any time (prior to calling any other function of Ansel) but it
+should be called after the game has created its graphics device. If called prior to device creation it will always
+return false. The function above is useful as the first step in determining if Ansel should be initialized for
+this game session. If delay loading of the Ansel SDK is being used then a game could for instance choose to only load
+the Ansel SDK library if the above function returned true. Please note that initialization of Ansel for this particular
+game can still fail during the <code>ansel::setConfiguration</code> call (see below). This means that a game should only advertise
+ Ansel functionality if both <code>ansel::isAnselAvailable</code> returns true and <code>ansel::setConfiguration</code> succeeds.</p>
+
+<p>During the initialization phase of the game the Ansel configuration should be specified. This is done via the
+<code>ansel::Configuration</code> object. Please consult the header file, ansel/Configuration.h, for detailed documentation on
+each field and default values for each. This is how configuration is typically performed:</p>
+
+<div class="highlight highlight-source-c++"><pre>#<span class="pl-k">include</span> <span class="pl-s"><span class="pl-pds">&lt;</span>AnselSDK.h<span class="pl-pds">&gt;</span></span>
+...
+<span class="pl-c"><span class="pl-c">//</span> during initialization phase of game:</span>
+ansel::Configuration config;
+<span class="pl-c"><span class="pl-c">//</span> Configure values that we want different from defaults:</span>
+config.translationalSpeedInWorldUnitsPerSecond = <span class="pl-c1">5</span>.<span class="pl-c1">0f</span>;
+config.right = { -axis_left.<span class="pl-smi">x</span>, -axis_left.<span class="pl-smi">y</span>, -axis_left.<span class="pl-smi">z</span> };
+config.up = { axis_up.<span class="pl-smi">x</span>, axis_up.<span class="pl-smi">y</span>, axis_up.<span class="pl-smi">z</span> };
+config.forward = { axis_forward.<span class="pl-smi">x</span>, axis_forward.<span class="pl-smi">y</span>, axis_forward.<span class="pl-smi">z</span> };
+
+config.fovType = ansel::<span class="pl-c1">kVerticalFov</span>;
+config.isCameraOffcenteredProjectionSupported = <span class="pl-c1">true</span>;
+config.isCameraRotationSupported = <span class="pl-c1">true</span>;
+config.isCameraTranslationSupported = <span class="pl-c1">true</span>;
+config.isCameraFovSupported = <span class="pl-c1">true</span>;
+config.isFilterOutsideSessionAllowed = <span class="pl-c1">false</span>;
+
+config.gameWindowHandle = hWnd;
+config.titleNameUtf8 = <span class="pl-s"><span class="pl-pds">u8"</span>Best Game Ever<span class="pl-pds">"</span></span>;
+
+config.startSessionCallback = startAnselSessionCallback;
+config.stopSessionCallback = stopAnselSessionCallback;
+config.startCaptureCallback = startAnselCaptureCallback;
+config.stopCaptureCallback = stopAnselCaptureCallback;
+
+<span class="pl-k">auto</span> status = ansel::setConfiguration(config);
+<span class="pl-k">if</span> (status != ansel::<span class="pl-c1">kSetConfigurationSuccess</span>)
+ <span class="pl-c"><span class="pl-c">//</span> Report error, keep calm, and carry on</span></pre></div>
+
+<blockquote>
+<p><strong>NOTE:</strong> Ansel cannot be activated by the player until the configuration has been successfully set. It is therefore advisable to perform the configuration soon after the AnselSDK DLL has been loaded. Also note that a failed <code>setConfiguration</code> call is not
+catastrophic. It means that Ansel cannot by activated by the player so none of the callbacks or any other parts of the SDK will
+come into use. The programmer is therefore not burdened with having to wrap Ansel SDK calls for the failure case. It is enough
+to report it for debugging purposes. The <code>setConfiguration</code> call will never fail if the integeration has been performed correctly.</p>
+</blockquote>
+
+<p>Let's go through this particular configuration in order. </p>
+
+<p>Games used different units to represent size - it is therefore not possible in Ansel to have a uniform translational
+speed that works for all games. This is why you will have to set the translationalSpeedInWorldUnitsPerSecond to a value
+that feels right for your game. Move the camera around once Ansel mode has been activated to test your settings; test it
+also with the accelerator key pressed (see Chapter 3 for Ansel controls)</p>
+
+<p>Note that even though a game must specify how many meters (or fraction of a meter) are in a world unit
+(see Configuration::metersInWorldUnit) this by itself is not enough to derive a default speed that works well for all
+games. Some games have large worlds where travel is often performed in vehicles (or on mounts) while other games use
+much smaller worlds and thus much lower travel speeds. </p>
+
+<p>Games use different orientations and chirality (handed-ness) for their coordinate system and camera. The conversion between game
+and Ansel's internal coordinate system and camera is handled by Ansel. This greatly simplifies
+integration for game developers. You must specify the unit vectors for right, up, and forward directions that your default
+oriented game camera uses as part of the configuration step. Once that is done all orientations exchanged between Ansel SDK and
+the game will be in the game's coordinate system (see section 2.3 for more details). The right, up, and forward directions that
+you provide must coincide with the default orientation of the game's camera. That is, if no rotation was applied to the
+camera these are the values of its right, up, and forward axes.</p>
+
+<p>Games will either use vertical or horizontal angle to specify the field of view. The default value in the Ansel
+configuration is horizontal angle but if your game uses vertical angle you must specify ansel::kVerticalFov as the
+fovType. This will free you from having to convert between the game's field of view and Ansel's internal field of view
+(see section 2.3 for details).</p>
+
+<p>Not all features of Ansel will necessarily be supported by a game integration. There are also cases where some features
+of Ansel will be disabled under a particular game scenario. Here we will only discuss the general settings that reflect
+the Ansel integration with the particular game engine; we will cover specific game scenarios in section 2.2.</p>
+
+<p>In order to support high resolution capture, where screenshots are taken at resolutions higher than display resolution,
+the game engine needs to support off center projection. In the Configuration object you specify if this feature is
+supported by this particular game integration via the isCameraOffcenteredProjectionSupported field. Similarly,
+support for allowing players to move, orient and zoom the camera is specified via the other Supported fields. We will
+discuss in detail how support for these features is implemented in section 2.3.</p>
+
+<p>The game must provide the window handle to its main window (the window that receives focus when the game is active -
+this is the same window that receives mouse events). Ansel will automatically hide the Windows mouse cursor when
+Ansel UI is enabled. Restoring the visbility of the Windows cursor cannot be done reliably by Ansel for all games. It is
+therefore necessary to call Windows API <code>ShowCursor</code> if the game wants the mouse cursor to be visible after the Ansel UI is closed.
+For completeness a game can call <code>ShowCursor(false)</code> to hide the mouse cursor in the start session callback (this is not
+necessary) and <code>ShowCursor(true)</code> to restore it in the stop session callback (this may be necessary for your game - of
+course depending on whether the cursor should be visible for the current game state).</p>
+
+<p>Finally we have the session and capture callbacks. The capture callbacks are optional. Those should only be configured
+if the game uses non-uniform screen based effects that cause issues in multipart shots. An example of an effect that
+causes issues is vignette. Applying this effect to all the individual tiles of a highres capture or 360 capture will
+produce poor results. The startCaptureCallback will be called when the multipart capture sequence starts and can
+therefore be used to disable vignette. The startCaptureCallback passes a const reference to a CaptureConfiguration
+object containing information about the capture about to be taken. The vignette can then be restored when stopCaptureCallback
+is called. A game integration could of course chose to disable vignette when Ansel session is started but we recommend
+against this since it would remove the vignette from regular screen shots (non-multipart shot). Note that all these
+callbacks receive the value of the userPointer that is specified in the Configuration object.</p>
+
+<p>Usually the version field in the <code>ansel::Configuration</code> structure is default initialized (if an object was created
+using the default constructor and not aggregate initialization or copy from other object for instance) and doesn't need
+to be set explicitly. In case an object is not created using the default constructor, the version field needs to be set to
+<code>ANSEL_SDK_VERSION</code> defined in <code>ansel/Version.h</code>.</p>
+
+<p>The session callbacks are mandatory, they are called when a player wants to begin an Ansel session or end a session.
+Without these callbacks Ansel cannot be activated. We will discuss them in detail in the next section.</p>
+
+<blockquote>
+<p><strong>NOTE:</strong> All callbacks in Ansel will be triggered from calling D3D Present. They will therefore also happen on the same
+thread that calls D3D Present.</p>
+</blockquote>
+
+<p>The <code>ansel::setConfiguration</code> function returns its status. The possible return values are:</p>
+
+<div class="highlight highlight-source-c++"><pre> <span class="pl-k">enum</span> SetConfigurationStatus
+ {
+ <span class="pl-c1">kSetConfigurationSuccess</span>, <span class="pl-c"><span class="pl-c">//</span> successfully initialized the Ansel SDK.</span>
+ <span class="pl-c1">kSetConfigurationIncompatibleVersion</span>, <span class="pl-c"><span class="pl-c">//</span> the version provided in the Configuration structure is</span>
+ <span class="pl-c"><span class="pl-c">//</span> not the same as the one stored inside the SDK binary (header/binary mismatch).</span>
+ <span class="pl-c1">kSetConfigurationIncorrectConfiguration</span>, <span class="pl-c"><span class="pl-c">//</span> the Configuration structure supplied for the setConfiguration call is </span>
+ <span class="pl-c"><span class="pl-c">//</span> not consistent</span>
+ <span class="pl-c1">kSetConfigurationSdkNotLoaded</span> <span class="pl-c"><span class="pl-c">//</span> the Ansel SDK is delay loaded and setConfiguration is called before </span>
+ <span class="pl-c"><span class="pl-c">//</span> the SDK is actually loaded</span>
+ };</pre></div>
+
+<p>The integration should only continue as normal (with regard to the Ansel functionality at least) when
+<code>kSetConfigurationSuccess</code> is returned.
+In case <code>kSetConfigurationIncompatibleVersion</code> is returned, most likely the Ansel SDK binary was obtained
+without updating the headers, which also contain a version. Every update of the Ansel SDK requires a new build of a game.
+In case <code>kSetConfigurationIncorrectConfiguration</code> is returned, on of the following fields could be set incorrectly:</p>
+
+<ul>
+<li>right, up, forward vectors do not form an orthogonal basis</li>
+<li>startSessionCallback or stopSessionCallback is nullptr</li>
+<li>rotational or translational speed multipliers are zero</li>
+<li>fovType is neither horizontal, nor vertical</li>
+<li>gameWindowHandle field is not set
+In case <code>kSetConfigurationSdkNotLoaded</code> is returned, the reason is that the Ansel SDK is delay loaded and
+setConfiguration is called before loading the library via <code>loadAnselSDKLibrary</code> (see code under samples folder).</li>
+</ul>
+
+<h3>
+<a id="user-content-22-session" class="anchor" href="#22-session" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>2.2 SESSION</h3>
+
+<p>The time period from when a player successfully starts Ansel and until Ansel is stopped is called a session. A session
+is collaboratively started and operated between the game and Ansel. When a player requests a session start (for example
+by pressing ALT+F2) Ansel will call the registered session start callback. It is however expected that Ansel cannot
+always be activated. The game may for instance be on a loading screen or playing a movie sequence. The callback should
+then immediately return with Ansel::kDisallowed return value. </p>
+
+<p>During an Ansel session the game:</p>
+
+<ul>
+<li>Must stop drawing UI and HUD elements on the screen, including mouse cursor</li>
+<li>Must call ansel::updateCamera on every frame (see section 2.3 for details)</li>
+<li>Should pause rendering time (i.e. no movement should be visible in the world)</li>
+<li>Should not act on any input from mouse and keyboard and must not act on any input from gamepads</li>
+</ul>
+
+<p>The function signatures of the session related callbacks are listed below.</p>
+
+<div class="highlight highlight-source-c++"><pre><span class="pl-k">enum</span> StartSessionStatus
+{
+ <span class="pl-c1">kDisallowed</span> = <span class="pl-c1">0</span>,
+ <span class="pl-c1">kAllowed</span>
+};
+
+<span class="pl-k">typedef</span> <span class="pl-en">StartSessionStatus</span>(*StartSessionCallback)(SessionConfiguration&amp; settings, <span class="pl-k">void</span>* userPointer);
+
+<span class="pl-k">typedef</span> <span class="pl-en">void</span>(*StopSessionCallback)(<span class="pl-k">void</span>* userPointer);</pre></div>
+
+<p>As you will notice the start callback receives an additional SessionConfiguration object. This object must reflect the configuration of the currently activated session if Ansel::kAllowed is returned from the callback. Let's take a look at this configuration object:</p>
+
+<div class="highlight highlight-source-c++"><pre><span class="pl-k">struct</span> <span class="pl-en">SessionConfiguration</span>
+{
+ <span class="pl-c"><span class="pl-c">//</span> User can move the camera during session</span>
+ <span class="pl-k">bool</span> isTranslationAllowed;
+ <span class="pl-c"><span class="pl-c">//</span> Camera can be rotated during session</span>
+ <span class="pl-k">bool</span> isRotationAllowed;
+ <span class="pl-c"><span class="pl-c">//</span> FoV can be modified during session</span>
+ <span class="pl-k">bool</span> isFovChangeAllowed;
+ <span class="pl-c"><span class="pl-c">//</span> Game is paused during session</span>
+ <span class="pl-k">bool</span> isPauseAllowed;
+ <span class="pl-c"><span class="pl-c">//</span> Game allows highres capture during session</span>
+ <span class="pl-k">bool</span> isHighresAllowed;
+ <span class="pl-c"><span class="pl-c">//</span> Game allows 360 capture during session</span>
+ <span class="pl-k">bool</span> is360MonoAllowed;
+ <span class="pl-c"><span class="pl-c">//</span> Game allows 360 stereo capture during session</span>
+ <span class="pl-k">bool</span> is360StereoAllowed;
+ <span class="pl-c"><span class="pl-c">//</span> Default constructor not included here</span>
+};</pre></div>
+
+<p>As you can see each session has fine grained control over what features of Ansel are offered to the player. This is to
+support different contexts that the game may be in - where some features of Ansel may not be desired. For instance,
+let's say that a game uses in-engine movie sequences. Ansel could certainly be used to take regular and highres
+screenshots during those sequences. However, the game developers may wish to prohibit any player controlled camera
+movement or 360 captures during those sequences since they could expose geometry that was never built because the
+sequences have been carefully orchestrated. This is what such a callback could look like:</p>
+
+<div class="highlight highlight-source-c++"><pre>ansel::StartSessionStatus <span class="pl-en">startAnselSessionCallback</span>(ansel::SessionConfiguration&amp; conf,
+ <span class="pl-k">void</span>* userPointer)
+{
+ <span class="pl-k">if</span> (isGameLoading || isGameInMenuScreens)
+ <span class="pl-k">return</span> ansel::<span class="pl-c1">kDisallowed</span>;
+
+ <span class="pl-k">if</span> (isGameCutScenePlaying)
+ {
+ conf.<span class="pl-smi">isTranslationAllowed</span> = <span class="pl-c1">false</span>;
+ conf.<span class="pl-smi">isRotationAllowed</span> = <span class="pl-c1">false</span>;
+ conf.<span class="pl-smi">isFovChangeAllowed</span> = <span class="pl-c1">false</span>;
+ conf.<span class="pl-smi">is360MonoAllowed</span> = <span class="pl-c1">false</span>;
+ conf.<span class="pl-smi">is360StereoAllowed</span> = <span class="pl-c1">false</span>;
+ }
+
+ g_isAnselSessionActive = <span class="pl-c1">true</span>;
+
+ <span class="pl-k">return</span> ansel::<span class="pl-c1">kAllowed</span>;
+}</pre></div>
+
+<blockquote>
+<p><strong>NOTE:</strong> The final feature set presented in the Ansel UI is always a combination of the global configuration
+specified via the <code>ansel::Configuration</code> object and the particular session configuration specified via the
+<code>ansel::SessionConfiguration</code> object. For instance, if off-center projection is not supported by the
+integration and this is marked as such in the global configuration then the <code>isHighresAllowed</code> setting will
+have no effect for an Ansel session because the feature is simply not supported by the integration. </p>
+
+<p>Similarly, if <code>isRotationAllowed</code> is set to false for the session then no form of 360 capture will be
+possible and hence the <code>is360MonoAllowed</code> and <code>is360StereoAllowed</code> will have no effect. In the sample code above we
+still set them but this is done for clarity and completeness.</p>
+</blockquote>
+
+<p>In a session where rendering time cannot be paused this can be communicated with the isPauseAllowed setting. This could
+for instance be the case in a game that offers multiplayer game modes. That being said, some multiplayer game engines
+still allow rendering time to be frozen - this just means that the state of the world will have advanced when the Ansel
+session ends. The stitcher developed for Ansel does not currently support feature detection or other methods used to
+handle temporal inconsistencies. This means that multipart shots (highres and 360) are not supported during sessions
+when pause is disallowed.</p>
+
+<p>The stop session callback is called when the player requests to end the session (for instance by pressing ALT+F2). This
+function is only called if the previous call to start session returned <code>ansel::kAllowed</code>. The matching function to what
+we implemented above would look like this:</p>
+
+<div class="highlight highlight-source-c++"><pre><span class="pl-k">void</span> <span class="pl-en">stopAnselSessionCallback</span>(<span class="pl-k">void</span>* userPointer)
+{
+ g_isAnselSessionActive = <span class="pl-c1">false</span>;
+}</pre></div>
+
+<p>A game can trigger a session start or stop (which leads to the above mentioned callbacks being eventually called).
+This is done using the following interface from Session.h:</p>
+
+<div class="highlight highlight-source-c++"><pre>ANSEL_SDK_API <span class="pl-k">void</span> <span class="pl-en">startSession</span>();
+ANSEL_SDK_API <span class="pl-k">void</span> <span class="pl-en">stopSession</span>();</pre></div>
+
+<p>This can be used to enable activation of Ansel UI via gamepad for instance. A game can use its existing gamepad handling
+to call <code>ansel::startSession()</code> if for instance left-stick is pressed (and a session is not already active). Similarly,
+<code>ansel::stopSession()</code> should be called when the same action is performed and session is active. The game is expected
+to track whether a session is active via the start/stop session callbacks that were outlined earlier in this section.
+Other means of Ansel activation could of course be employed (different keyboard shortcut, etc) and the game could call
+start/stopSession accordingly.</p>
+
+<h3>
+<a id="user-content-23-camera" class="anchor" href="#23-camera" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>2.3 CAMERA</h3>
+
+<p>The camera object acts as the communication channel between Ansel and the game. The concepts described earlier are
+either used for one-off configuration or rare events. Once an Ansel session has been started the game needs to call
+Ansel on every frame to update the camera. It's helpful to first look at the Camera interface:</p>
+
+<div class="highlight highlight-source-c++"><pre><span class="pl-k">struct</span> <span class="pl-en">Camera</span>
+{
+ nv::Vec3 position;
+ nv::Quat rotation;
+ <span class="pl-k">float</span> fov;
+ <span class="pl-k">float</span> projectionOffsetX, projectionOffsetY;
+};
+
+ANSEL_SDK_API <span class="pl-k">void</span> <span class="pl-en">updateCamera</span>(Camera&amp; camera);</pre></div>
+
+<p>As noted before the header file contains documentation for each field. Here it suffices to say that the values are all
+in the game's coordinate system, since this has been established via the <code>ansel::setConfiguration</code> call
+(see section 2.1). The field of view, fov, is in degrees and in the format specified during the previously mentioned
+call. The final two values are used to specify the off-center projection amount. Let's illustrate how this all works
+with sample code following the earlier session callbacks we had created:</p>
+
+<div class="highlight highlight-source-c++"><pre><span class="pl-k">if</span> (g_isAnselSessionActive)
+{
+ <span class="pl-k">if</span> (!was_ansel_in_control)
+ {
+ <span class="pl-c1">store_original_camera_settings</span>();
+ was_ansel_in_control = <span class="pl-c1">true</span>;
+ }
+ ansel::Camera cam;
+ cam.<span class="pl-smi">fov</span> = <span class="pl-c1">get_game_fov_vertical_degrees</span>();
+ cam.<span class="pl-smi">position</span> = { game_cam_position.<span class="pl-smi">x</span>, game_cam_position.<span class="pl-smi">y</span>,
+ game_cam_position.<span class="pl-smi">z</span> };
+ cam.<span class="pl-smi">rotation</span> = { game_cam_orientation.<span class="pl-smi">x</span>,
+ game_cam_orientation.<span class="pl-smi">y</span>,
+ game_cam_orientation.<span class="pl-smi">z</span>,
+ game_cam_orientation.<span class="pl-smi">w</span> };
+
+ <span class="pl-c1">ansel::updateCamera</span>(cam);
+ <span class="pl-c"><span class="pl-c">//</span> This is where a game would typically perform collision detection</span>
+ <span class="pl-c"><span class="pl-c">//</span> and adjust the values requested by player in cam.position </span>
+
+ game_cam_position.<span class="pl-smi">x</span> = cam.<span class="pl-smi">position</span>.<span class="pl-smi">x</span>;
+ game_cam_position.<span class="pl-smi">y</span> = cam.<span class="pl-smi">position</span>.<span class="pl-smi">y</span>;
+ game_cam_position.<span class="pl-smi">z</span> = cam.<span class="pl-smi">position</span>.<span class="pl-smi">z</span>;
+
+ game_cam_orientation.<span class="pl-smi">x</span> = cam.<span class="pl-smi">rotation</span>.<span class="pl-smi">x</span>;
+ game_cam_orientation.<span class="pl-smi">y</span> = cam.<span class="pl-smi">rotation</span>.<span class="pl-smi">y</span>;
+ game_cam_orientation.<span class="pl-smi">z</span> = cam.<span class="pl-smi">rotation</span>.<span class="pl-smi">z</span>;
+ game_cam_orientation.<span class="pl-smi">w</span> = cam.<span class="pl-smi">rotation</span>.<span class="pl-smi">w</span>;
+
+ <span class="pl-c1">set_game_fov_vertical_degrees</span>(cam.<span class="pl-smi">fov</span>);
+
+ <span class="pl-c"><span class="pl-c">//</span> modify projection matrices by the offset amounts -</span>
+ <span class="pl-c"><span class="pl-c">//</span> we will explore this in detail separately </span>
+ <span class="pl-c1">offset_game_projection_matrices</span>(cam.<span class="pl-smi">projectionOffsetX</span>, cam.<span class="pl-smi">projectionOffsetY</span>);
+
+ <span class="pl-k">return</span>;
+}
+<span class="pl-k">else</span>
+{
+ <span class="pl-k">if</span> (was_ansel_in_control)
+ {
+ <span class="pl-c1">restore_original_camera_settings</span>();
+ was_ansel_in_control = <span class="pl-c1">false</span>;
+ }
+}</pre></div>
+
+<p>The sample above is a full implementation of Ansel support, in the sense that it supports camera translation, camera
+rotation, changing of field of view, and offset projection. Most rendering engines employ a view matrix; the camera
+is most often just a game side concept. Fortunately the view matrix is just the inverse of the camera matrix so it's easy
+to obtain. Remember that the camera matrix is established by transforming the default camera by the camera rotation.
+Since some code bases use matrices rather than quaternions for rotations we provide a couple of utility
+functions in the Camera interface:</p>
+
+<div class="highlight highlight-source-c++"><pre>ANSEL_SDK_API <span class="pl-k">void</span> <span class="pl-en">quaternionToRotationMatrixVectors</span>(<span class="pl-k">const</span> nv::Quat&amp; q,
+ nv::Vec3&amp; right, nv::Vec3&amp; up, nv::Vec3&amp; forward);
+
+ANSEL_SDK_API <span class="pl-k">void</span> <span class="pl-en">rotationMatrixVectorsToQuaternion</span>(<span class="pl-k">const</span> nv::Vec3&amp; right, <span class="pl-k">const</span> nv::Vec3&amp; up, <span class="pl-k">const</span> nv::Vec3&amp; forward,
+ nv::Quat&amp; q);</pre></div>
+
+<p>The former one can be used to convert the <code>ansel::Camera::rotation</code> to a matrix that can then be used to transform
+the basis vectors of the game's default oriented camera to establish the camera matrix. The latter can be used to
+convert the game's camera rotation matrix to a quaternion that can be passed into <code>ansel::Camera::rotation</code> prior to
+calling <code>ansel::updateCamera</code>.</p>
+
+<p>Even though the sample above is a full implementation of Ansel support it does however not employ any collision detection
+or other constraints on the camera movement. This is unrealistic since most games will at least want to limit the range the
+camera can travel. These limitations will always be specific to the game in question and collision is best
+handled by the game using the systems that are already in place. We do therefore not elaborate on this piece here. It
+should still be noted that Ansel is stateless when it comes to position so the game can adjust the position (based on
+collision response or constraints) any way it sees fit. The new position will always be communicated to Ansel on the
+next frame, via <code>ansel::updateCamera</code>.</p>
+
+<p>Another aspect that is not covered in the sample code above is the handling of projection offset. We will explore that
+aspect in more detail here.</p>
+
+<p>The <code>projectionOffsetX</code> and <code>projectionOffsetY</code> members of the <code>ansel::Camera</code> specify the amount that the projection
+matrix needs to be offset by. These values are normalized coordinates applied directly to the projection matrix, they
+should not need any scaling. These values are only used by Super Resolution captures - for all other capture types
+they will be zero. Expanding on the sample code above:</p>
+
+<div class="highlight highlight-source-c++"><pre><span class="pl-k">void</span> <span class="pl-en">offset_game_projection_matrices</span>(<span class="pl-k">float</span> offsetX, <span class="pl-k">float</span> offsetY)
+{
+ <span class="pl-c"><span class="pl-c">//</span> In this simple example we only need to modify the projection matrix associated with the game camera. </span>
+ <span class="pl-c"><span class="pl-c">//</span> If the game is doing clever things like optimizing reflections or shadows based on projection matrix</span>
+ <span class="pl-c"><span class="pl-c">//</span> then those code paths need to take a non-zero projection offset into account.</span>
+
+ <span class="pl-c"><span class="pl-c">//</span> For nostalgia effect this game is using an old classic:</span>
+ D3DXMATRIX projection;
+ <span class="pl-c1">D3DXMatrixPerspectiveFovRH</span>(&amp;projection, g_fov_radians, g_aspect, g_z_near, g_z_far)
+
+ <span class="pl-c"><span class="pl-c">//</span> Apply the offsets directly to the finished product (values are already normalized):</span>
+ projection.<span class="pl-smi">_31</span> += offsetX;
+ projection.<span class="pl-smi">_32</span> += offsetY;
+
+ <span class="pl-c"><span class="pl-c">//</span> Update the games projection matrix:</span>
+ g_projection_matrix = projection;
+}</pre></div>
+
+<h3>
+<a id="user-content-24-hints" class="anchor" href="#24-hints" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>2.4 HINTS</h3>
+
+<p>To perform Raw capture (to EXR format) Ansel tries to use certain heuristics to detect which of the game buffers
+contains HDR pixel data. These heuristics won't work for all games. For instance, they won't work for games that use
+deferred contexts with multithreaded rendering. For those scenarios the hinting API can be used (see ansel/Hints.h).</p>
+
+<p>Below we will outline how the hinting API is used to make capture work under these circumstances.
+If game developers do not want to use the hinting API to make raw capture work the <code>isRawAllowed</code> setting in the
+<code>ansel::SessionConfiguration</code> should be set to false during the startSession callback. This will disable the 'Raw'
+ option in the Ansel UI.</p>
+
+<pre><code>namespace ansel
+{
+ // Call this right before setting HDR render target active
+ ANSEL_SDK_API void markHdrBufferBind(uint64_t threadId = 0xFFFFFFFFFFFFFFFFull);
+ // Call this right after the last draw call into the HDR render target
+ ANSEL_SDK_API void markHdrBufferFinished(uint64_t threadId = 0xFFFFFFFFFFFFFFFFull, AnselHintsCopyMode copyMode = kAnselHintsCopyOnPresent);
+}
+</code></pre>
+
+<p>To identify the HDR buffer for Ansel call <code>markHdrBufferBind</code> before binding the buffer to the graphics pipeline. In case the buffer contents is not overwritten before calling <code>Present</code>
+(or <code>glSwapBuffers()</code>) it is fine to not call <code>markHdrBufferFinished</code>. In case the same buffer is reused for other
+purposes and at the time the <code>Present</code> (or <code>glSwapBuffers</code>) gets called its content does not represent the framebuffer
+calling <code>markHdrBufferFinished</code> at the moment where the buffer is not used anymore but before it is unbound from the graphics
+pipeline is neccessary. Both functions have threadId argument, which is an optional argument allowing Ansel to match the thread calling
+a hint and a particular graphics API call that some other game thread might perform. The default value of 0xFFFFFFFFFFFFFFFFull means that
+no such matching should happen. The special value of 0 means that Ansel SDK is going to match thread ids automatically. Any other
+value means a specific thread id known at integration side. markHdrBufferFinished also allows setting the copyMode, which is an optional
+argument specifying if HDR buffer is going to be reused or used in a fashion that is not compatible with capturing it at Present
+(or analogous function, since this is graphics API dependent) call. The default value is kAnselHintsCopyOnPresent, which means the buffer
+contents will remain in tact until Present call. In case copyMode is set to kAnselHintsCopyImmediately, HDR buffer will be copied upon
+the next call to the graphics API that Ansel hooks.</p>
+
+<h2>
+<a id="user-content-3-taking-pictures-with-ansel" class="anchor" href="#3-taking-pictures-with-ansel" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>3. TAKING PICTURES WITH ANSEL</h2>
+
+<h3>
+<a id="user-content-31-activating-and-deactivating-ansel" class="anchor" href="#31-activating-and-deactivating-ansel" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>3.1 ACTIVATING AND DEACTIVATING ANSEL</h3>
+
+<p>Players can start/stop Ansel session by pressing ALT+F2. Other ways of activation are possible if the game has used
+the <code>ansel::startSession</code> and <code>ansel::stopSession</code> functions in the Ansel SDK to implement other triggers
+(see section 2.2)</p>
+
+<h3>
+<a id="user-content-32-moving-the-camera" class="anchor" href="#32-moving-the-camera" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>3.2 MOVING THE CAMERA</h3>
+
+<p>The camera can be moved via keys WASD and XZ for up/down. The camera can also be moved with the left stick on a gamepad
+and trigger buttons for up/down. Movement can be accelerated by holding SHIFT on keyboard or depressing right stick on
+gamepad.</p>
+
+<h3>
+<a id="user-content-33-rotating-the-camera" class="anchor" href="#33-rotating-the-camera" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>3.3 ROTATING THE CAMERA</h3>
+
+<p>The yaw and pitch of the camera is directly controlled by mouse or right stick on gamepad. The roll of the camera is
+adjusted via the user interface Roll slider but can also be controlled directly via shoulder buttons on gamepad.</p>
+
+<h3>
+<a id="user-content-34-applying-a-filter" class="anchor" href="#34-applying-a-filter" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>3.4 APPLYING A FILTER</h3>
+
+<p>A number of filters can be selected via the Filter slider. Some filters, like 'Custom' have additional settings that
+can be used to adjust the filter even further.</p>
+
+<h3>
+<a id="user-content-35-taking-a-picture" class="anchor" href="#35-taking-a-picture" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>3.5 TAKING A PICTURE</h3>
+
+<p>Ansel offers the following capture types (selected via the Capture type slider):</p>
+
+<ul>
+<li>Screenshot</li>
+<li>Highres</li>
+<li>360</li>
+<li>Stereo</li>
+<li>360 Stereo</li>
+</ul>
+
+<p>Not all of these capture types may be available since it depends on the game integration and the current session (see
+sections 2.1 and 2.2). Once a type has been chosen the picture is taken by pressing Snap button. Some pictures may take
+significant time to produce, especially highres shots of large dimensions. If the game uses streaming the streaming
+performance may be affected when shots involving many parts are being stitched together.</p>
+
+<blockquote>
+<p><strong>NOTE:</strong>* Not all filters are valid with multipart Capture types (360 and Highres). You may therefore see filters (or
+aspects of a filter) removed in the final picture.</p>
+</blockquote>
+
+<h2>
+<a id="user-content-4-troubleshooting-and-debugging-common-problems" class="anchor" href="#4-troubleshooting-and-debugging-common-problems" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4. TROUBLESHOOTING AND DEBUGGING COMMON PROBLEMS</h2>
+
+<p>In this section we collected commonly occurring problems we've seen while integrating Ansel with games. This section can
+hopefully help you resolve a problem or two.
+It is generally useful to be able to inspect the individual shot tiles that are captured when generating pictures that
+require multiple shots. Locate the <code>NvCameraConfiguration.exe</code> utility. It can be found inside
+Program Files\NVIDIA Corporation\Ansel\Tools.</p>
+
+<p>Run the utility. A screen similar to this one should appear:</p>
+
+<p><a href="NvCameraConfiguration.exe_screen.png" target="_blank"><img src="NvCameraConfiguration.exe_screen.png" alt="NvCameraConfiguration utility" style="max-width:100%;"></a></p>
+
+<p>Check the 'Keep Intermediate Shots' option so that you can inspect the individual tiles. You can also pick a different
+location to store the tiles by changing the 'Temp Directory for Intermediate Shots'.</p>
+
+<p>Notice the 'Log level' setting. By default this is set to 'Disabled', which means that no logs are produced. If you set
+this to for instance 'Info' then all log messages with severity Info and higher will be emitted to a log file. Log files
+are stored in the current users profile directory, inside an 'ansel' folder. The path is <code>%USERPROFILE%\ansel</code>. Each
+log file is named after the associated executable and includes a timestamp. Please note that multiple log files can be
+produced by the same game during one session since each device starts a separate Ansel logging session. That being said
+only one device (and therefore log file) will be associated with the presentable surface and will thus contain the most
+helpful information.</p>
+
+<h3>
+<a id="user-content-41-ansel-cannot-be-activated" class="anchor" href="#41-ansel-cannot-be-activated" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.1 ANSEL CANNOT BE ACTIVATED</h3>
+
+<p>There are a number of configuration issues that can result in Ansel not activating for your game when you press the
+activation keys (ALT+F2). The following list is helpful in debugging the issue:
+1. Verify that Ansel is enabled for the machine. You can do this by running the <code>NvCameraEnable.exe</code> utility with no
+arguments (this tool was introduced in section 1.2). It will return <code>1</code> if Ansel is enabled, <code>0</code> otherwise. You can
+change this setting by issuing <code>NvCameraEnable.exe on</code> or using the GUI tool <code>NvCameraConfiguration.exe</code> that was
+introduced in the beginning of this chapter.
+2. If the game executable is not whitelisted for Ansel (by the installed driver) you can disable whitelisting checks as
+outlined in section 1.2.
+3. Verify that the hardware and software requirements from sections 1.2 and 1.3 are met by the machine and game.
+4. If you are running on a Hybrid/Optimus computer that has both a integrated GPU and a discreet NVIDIA GPU, make sure
+the game is running on the NVIDIA GPU. Use the NVIDIA Control Panel to verify/configure this setting for the game.
+5. Verify that Ansel is trying to start by setting a breakpoint on the startSessionCallback.
+6. Depending on which phase is blocking Ansel activation, logging can be helpful. See the beginning of this chapter on
+how to utilize logging.</p>
+
+<h3>
+<a id="user-content-42-artefacts-in-multipart-shots" class="anchor" href="#42-artefacts-in-multipart-shots" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.2 ARTEFACTS IN MULTIPART SHOTS</h3>
+
+<p>This is where we cover the most common errors we've seen while capturing multipart shots in games.</p>
+
+<h4>
+<a id="user-content-421-image-tiles-suffer-from-acne" class="anchor" href="#421-image-tiles-suffer-from-acne" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.2.1 Image tiles suffer from "acne"</h4>
+
+<p>This is probably best described with images. Here is a tile exhibiting the problem:</p>
+
+<p><a href="ImageAcne.jpg" target="_blank"><img src="ImageAcne.jpg" alt="Image acne" style="max-width:100%;"></a></p>
+
+<p>Note the "acne" to the left of the tree, caused by temporal anti-aliasing. This can be fixed in two different ways. One
+method is to use the captureSettleLatency field in the configuration object. This field specifies how many frames Ansel
+should wait when taking multipart shots for the frame to settle - i.e. for any temporal effects to have settled. In this
+specific case (where the image is taken from) it takes one frame so the value should be 1. This is what the image looks
+like with that setting:</p>
+
+<p><a href="ImageWithoutAcne.jpg" target="_blank"><img src="ImageWithoutAcne.jpg" alt="Image without acne" style="max-width:100%;"></a></p>
+
+<p>Another way to solve this problem is to harness the startCapture/stopCapture callbacks to disable temporal AA. This
+effectively disables the temporal AA feature during the multipart capture sequence.
+Which solution should you use? Well, it depends. You need to subjectively evaluate how much the temporal AA enhances
+image quality vs the cost of waiting for the frame to settle. At a settleLatency of 1 the cost is rather small and thus
+weighs in favor of using that solution.</p>
+
+<h4>
+<a id="user-content-422-ghosting-everywhere-in-final-picture" class="anchor" href="#422-ghosting-everywhere-in-final-picture" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.2.2 Ghosting everywhere in final picture</h4>
+
+<p>Usually it looks something like this:</p>
+
+<p><a href="GhostingEverywhere.jpg" target="_blank"><img src="GhostingEverywhere.jpg" alt="Ghosting everywhere" style="max-width:100%;"></a></p>
+
+<p>Most often this is the result of incorrect field of view being submitted to Ansel - or error made on conversion or usage
+of value coming back from Ansel. It is recommended that you match the field of view type between game and Ansel to avoid
+any conversion mistakes. See section 2.1 on how you can configure Ansel to use the game's field of view.</p>
+
+<h4>
+<a id="user-content-423-screen-space-reflections-fade-out-with-increased-highres-capture-resolution" class="anchor" href="#423-screen-space-reflections-fade-out-with-increased-highres-capture-resolution" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.2.3 Screen space reflections fade out with increased Highres capture resolution</h4>
+
+<p>Below is a regular screenshot taken with Ansel:</p>
+
+<p><a href="ScreenSpaceReflections.jpg" target="_blank"><img src="ScreenSpaceReflections.jpg" alt="Screen space reflections" style="max-width:100%;"></a></p>
+
+<p>If we now select capture type Highres with a large enough multiplier we get this picture (scaled down in resolution to
+fit this document):</p>
+
+<p><a href="ScreenSpaceReflectionsReduced.jpg" target="_blank"><img src="ScreenSpaceReflectionsReduced.jpg" alt="Screen space reflections reduced" style="max-width:100%;"></a></p>
+
+<p>There is unfortunately no workaround for this problem, it is a limitation of the capture method used.</p>
+
+<h4>
+<a id="user-content-424-its-all-a-blur" class="anchor" href="#424-its-all-a-blur" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.2.4 It's all a blur</h4>
+
+<p>Motion blur needs to be disabled during multipart capture. Otherwise results like this can be produced when taking 360
+picture:</p>
+
+<p><a href="Blur.jpg" target="_blank"><img src="Blur.jpg" alt="Blurry capture" style="max-width:100%;"></a></p>
+
+<h4>
+<a id="user-content-425-streaky-reflections" class="anchor" href="#425-streaky-reflections" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.2.5 Streaky reflections</h4>
+
+<p>When enabling highres capture for your game you may witness results similar to this:</p>
+
+<p><a href="StreakyReflections.jpg" target="_blank"><img src="StreakyReflections.jpg" alt="Streaky reflections in capture" style="max-width:100%;"></a></p>
+
+<p>The reason may be that the projection offset and reduced field of view employed by the highres capture method is not
+being accounted for in the game's reflection code path.</p>
+
+<h3>
+<a id="user-content-43-the-view-of-the-world-pops-when-entering-and-exiting-ansel-mode" class="anchor" href="#43-the-view-of-the-world-pops-when-entering-and-exiting-ansel-mode" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.3 THE VIEW OF THE WORLD "POPS" WHEN ENTERING AND EXITING ANSEL MODE</h3>
+
+<p>This is typically due to incorrect field of view being passed on the first frame or due to a screen space effect being
+disabled when Ansel mode is activated. For the latter it is preferred to deactivate troublesome effects only during
+multipart captures (via the capture callback).</p>
+
+<h3>
+<a id="user-content-44-game-mouse-cursor-is-not-visible-after-returning-to-game-from-ansel" class="anchor" href="#44-game-mouse-cursor-is-not-visible-after-returning-to-game-from-ansel" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.4 GAME MOUSE CURSOR IS NOT VISIBLE AFTER RETURNING TO GAME FROM ANSEL</h3>
+
+<p>The visible state of the mouse cursor needs to be restored by calling Windows API <code>SetCursor(true)</code> when the Ansel
+session has ended (after <code>ansel::Configuration::stopSessionCallback</code> is triggered).</p>
+
+<h3>
+<a id="user-content-45-double-mouse-cursors" class="anchor" href="#45-double-mouse-cursors" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.5 DOUBLE MOUSE CURSORS</h3>
+
+<p>Strictly speaking UI and HUD elements must not be rendered when game is in Ansel mode and this includes any cursors. We
+have however experienced the situation where the game renders a mouse cursor on top of its window when it regains focus.
+If the game is in Ansel mode this will result in two moving mouse cursors - a very confusing experience indeed. As
+mentioned the game shouldn't be rendering a mouse cursor when Ansel is active. That being said we have a mechanism to
+prevent this from happening - this mechanism is enabled if the game passes its window handle during configuration, in
+the Configuration::gameWindowHandle field.</p>
+
+<h3>
+<a id="user-content-46-camera-rotation-or-movement-is-incorrect" class="anchor" href="#46-camera-rotation-or-movement-is-incorrect" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.6 CAMERA ROTATION OR MOVEMENT IS INCORRECT</h3>
+
+<p>Incorrect rotation is best observed with a gamepad - i.e. pushing the joystick left doesn't rotate the view towards the
+left or pushing the joystick up doesn't rotate the view up. Incorrect movement can be verified with either keyboard or
+gamepad. </p>
+
+<p>This problem is usually rooted in incorrect axes provided for right, up, and down directions in the
+<code>ansel::Configuration</code> struct. See section 2.1.</p>
+
+<h3>
+<a id="user-content-47-camera-rotation-or-movement-is-too-slow--too-fast" class="anchor" href="#47-camera-rotation-or-movement-is-too-slow--too-fast" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.7 CAMERA ROTATION OR MOVEMENT IS TOO SLOW / TOO FAST</h3>
+
+<p>The speed for rotation is set via the <code>rotationalSpeedInDegreesPerSecond</code> field during configuration. The default value
+is 45 degrees/second. The speed for movement is set via the <code>translationalSpeedInWorldUnitsPerSecond</code> field during
+configuration. The default value is 1 world unit/second.</p>
+
+<h3>
+<a id="user-content-48-all-ansel-captures-produce-black-images" class="anchor" href="#48-all-ansel-captures-produce-black-images" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.8 ALL ANSEL CAPTURES PRODUCE BLACK IMAGES</h3>
+
+<p>This is usually caused by an unsupported backbuffer format. Please consult section 1.3 for a list of supported formats.</p>
+
+<h3>
+<a id="user-content-49-all-ansel-captures-are-named-after-the-game-executable" class="anchor" href="#49-all-ansel-captures-are-named-after-the-game-executable" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.9 ALL ANSEL CAPTURES ARE NAMED AFTER THE GAME EXECUTABLE</h3>
+
+<p>This happens because the game does not have a GeForce profile (yet) and a setting for <code>titleNameUtf8</code> was not specified
+when <code>ansel::setConfiguration</code> was called. It is best to provide a name for the title via <code>titleNameUtf8</code> since this
+will work regardless of whether the driver being used has a GeForce profile for the game.</p>
+
+<h3>
+<a id="user-content-49-raw-capture-fails" class="anchor" href="#49-raw-capture-fails" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>4.9 RAW CAPTURE FAILS</h3>
+
+<p>By default Ansel uses heuristics to try to identify the raw HDR buffer. For some games these heuristics won't work.
+Section 2.4 contains the information on how to address this.</p>
+
+<h2>
+<a id="user-content-appendix-a-" class="anchor" href="#appendix-a-" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>APPENDIX A </h2>
+
+<h3>
+<a id="user-content-notice" class="anchor" href="#notice" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Notice</h3>
+
+<p>The information provided in this specification is believed to be accurate and reliable as of the date provided. However,
+NVIDIA Corporation ("NVIDIA") does not give any representations or warranties, expressed or implied, as to the accuracy or completeness of such information. NVIDIA shall have no liability for the consequences or use of such information or for any infringement of patents or other rights of third parties that may result from its use. This publication supersedes and replaces all other specifications for the product that may have been previously supplied.
+NVIDIA reserves the right to make corrections, modifications, enhancements, improvements, and other changes to this specification, at any time and/or to discontinue any product or service without notice. Customer should obtain the latest relevant specification before placing orders and should verify that such information is current and complete.
+NVIDIA products are sold subject to the NVIDIA standard terms and conditions of sale supplied at the time of order acknowledgement, unless otherwise agreed in an individual sales agreement signed by authorized representatives of NVIDIA and customer. NVIDIA hereby expressly objects to applying any customer general terms and conditions with regard to the purchase of the NVIDIA product referenced in this specification.
+NVIDIA products are not designed, authorized or warranted to be suitable for use in medical, military, aircraft, space or life support equipment, nor in applications where failure or malfunction of the NVIDIA product can reasonably be expected to result in personal injury, death or property or environmental damage. NVIDIA accepts no liability for inclusion and/or use of NVIDIA products in such equipment or applications and therefore such inclusion and/or use is at customer's own risk.
+NVIDIA makes no representation or warranty that products based on these specifications will be suitable for any specified use without further testing or modification. Testing of all parameters of each product is not necessarily performed by NVIDIA. It is customer's sole responsibility to ensure the product is suitable and fit for the application planned by customer and to do the necessary testing for the application in order to avoid a default of the application or the product. Weaknesses in customer's product designs may affect the quality and reliability of the NVIDIA product and may result in additional or different conditions and/or requirements beyond those contained in this specification. NVIDIA does not accept any liability related to any default, damage, costs or problem which may be based on or attributable to: (i) the use of the NVIDIA product in any manner that is contrary to this specification, or (ii) customer product designs.
+No license, either expressed or implied, is granted under any NVIDIA patent right, copyright, or other NVIDIA intellectual property right under this specification. Information published by NVIDIA regarding third-party products or services does not constitute a license from NVIDIA to use such products or services or a warranty or endorsement thereof. Use of such information may require a license from a third party under the patents or other intellectual property rights of the third party, or a license from NVIDIA under the patents or other intellectual property rights of NVIDIA. Reproduction of information in this specification is permissible only if reproduction is approved by NVIDIA in writing, is reproduced without alteration, and is accompanied by all associated conditions, limitations, and notices.
+ALL NVIDIA DESIGN SPECIFICATIONS, REFERENCE BOARDS, FILES, DRAWINGS, DIAGNOSTICS, LISTS, AND OTHER DOCUMENTS (TOGETHER AND SEPARATELY, "MATERIALS") ARE BEING PROVIDED "AS IS." NVIDIA MAKES NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. Notwithstanding any damages that customer might incur for any reason whatsoever, NVIDIA's aggregate and cumulative liability towards customer for the products described herein shall be limited in accordance with the NVIDIA terms and conditions of sale for the product.</p>
+
+<p>VESA DisplayPort
+DisplayPort and DisplayPort Compliance Logo, DisplayPort Compliance Logo for Dual-mode Sources, and DisplayPort Compliance Logo for Active Cables are trademarks owned by the Video Electronics Standards Association in the United States and other countries.</p>
+
+<p>HDMI
+HDMI, the HDMI logo, and High-Definition Multimedia Interface are trademarks or registered trademarks of HDMI Licensing LLC.</p>
+
+<p>ROVI Compliance Statement
+NVIDIA Products that support Rovi Corporation's Revision 7.1.L1 Anti-Copy Process (ACP) encoding technology can only be sold or distributed to buyers with a valid and existing authorization from ROVI to purchase and incorporate the device into buyer's products.
+This device is protected by U.S. patent numbers 6,516,132; 5,583,936; 6,836,549; 7,050,698; and 7,492,896 and other intellectual property rights. The use of ROVI Corporation's copy protection technology in the device must be authorized by ROVI Corporation and is intended for home and other limited pay-per-view uses only, unless otherwise authorized in writing by ROVI Corporation. Reverse engineering or disassembly is prohibited.</p>
+
+<p>OpenCL
+OpenCL is a trademark of Apple Inc. used under license to the Khronos Group Inc.</p>
+
+<p>Trademarks
+NVIDIA and the NVIDIA logo are trademarks and/or registered trademarks of NVIDIA Corporation in the U.S. and other countries. Other company and product names may be trademarks of the respective companies with which they are associated.</p>
+
+<p>Copyright
+(c) 2016 NVIDIA Corporation. All rights reserved. </p>
+
+<p><a href="http://www.nvidia.com">www.nvidia.com</a></p>
+
+ </article>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+
+ </div>
+ <div>&nbsp;</div>
+ </div><script>
+ function showCanonicalImages() {
+ var images = document.getElementsByTagName('img');
+ if (!images) {
+ return;
+ }
+ for (var index = 0; index < images.length; index++) {
+ var image = images[index];
+ if (image.getAttribute('data-canonical-src') && image.src !== image.getAttribute('data-canonical-src')) {
+ image.src = image.getAttribute('data-canonical-src');
+ }
+ }
+ }
+
+ function scrollToHash() {
+ if (location.hash && !document.querySelector(':target')) {
+ var element = document.getElementById('user-content-' + location.hash.slice(1));
+ if (element) {
+ element.scrollIntoView();
+ }
+ }
+ }
+
+ function autorefreshContent(eventSourceUrl) {
+ var initialTitle = document.title;
+ var contentElement = document.getElementById('grip-content');
+ var source = new EventSource(eventSourceUrl);
+ var isRendering = false;
+
+ source.onmessage = function(ev) {
+ var msg = JSON.parse(ev.data);
+ if (msg.updating) {
+ isRendering = true;
+ document.title = '(Rendering) ' + document.title;
+ } else {
+ isRendering = false;
+ document.title = initialTitle;
+ contentElement.innerHTML = msg.content;
+ showCanonicalImages();
+ }
+ }
+
+ source.onerror = function(e) {
+ if (e.readyState === EventSource.CLOSED && isRendering) {
+ isRendering = false;
+ document.title = initialTitle;
+ }
+ }
+ }
+
+ window.onhashchange = function() {
+ scrollToHash();
+ }
+
+ window.onload = function() {
+ scrollToHash();
+ }
+
+ showCanonicalImages();
+
+ var autorefreshUrl = document.getElementById('preview-page').getAttribute('data-autorefresh-url');
+ if (autorefreshUrl) {
+ autorefreshContent(autorefreshUrl);
+ }
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/Ansel_integration_guide.md b/docs/Ansel_integration_guide.md
new file mode 100644
index 0000000..b7b2590
--- /dev/null
+++ b/docs/Ansel_integration_guide.md
@@ -0,0 +1,713 @@
+ANSEL INTEGRATION GUIDE
+=======================
+
+
+1. SETTING UP
+-------------
+### 1.1 CODE, COMPILER, AND LINKER CONFIGURATION
+The include folder in the Ansel SDK contains all the public header files you will need. A top-level include file,
+AnselSDK.h, is provided for convenience so that you only need to include that one file in your project's code. If you
+add the path to the Ansel SDK include folder to your project settings this is all you need to gain access to the
+functionality of the SDK:
+
+```cpp
+#include <AnselSDK.h>
+```
+Note that we do not offer Ansel SDK for static linking: this is intentional. The lib folder in the Ansel SDK contains
+the import libraries for 32-bit and 64-bit architecture DLLs. Based on the targeted platform architecture you must link
+in the corresponding import library.
+
+If you wish to delay load the Ansel SDK, a sample project and source files are provided in the
+samples folder. You can either link in the resulting static lib that this sample produces or simply include the source
+files directly in your game. Regardless of which route you choose for delay loading you need to define
+`ANSEL_SDK_DELAYLOAD` for the game and call the `loadAnselSDKLibrary` function that is implemented by the sample.
+The Ansel SDK needs to be loaded via this function before any call is made to Ansel SDK functions (except the
+`ansel::isAnselAvailable` function which can always be called - this function is covered in detail later in this
+document). All other aspects of the Ansel SDK integration should remain the same and no special workflow is required
+once the Ansel SDK has been loaded.
+
+The redist folder in the Ansel SDK contains the DLLs for 32-bit and 64-bit architecture. These DLLs must be
+redistributed with the game - if the game is only offered for 64-bit architecture then only 64-bit DLLs should be
+redistributed (and similarly for 32-bit).
+
+### 1.2 MACHINE CONFIGURATION
+In order to use Ansel you need
+
+* Windows PC with Windows 7 (32-bit or 64-bit) or newer
+* GeForce GTX 600 series or newer
+* Ansel-ready display driver. In order to take advantage of all features of the SDK a driver of version 378.49 or higher
+ is required.
+* A game using Dx11 that has integrated the Ansel SDK
+
+> **NOTE:**
+> * Support for Dx12 is coming soon and options for OpenGL are being investigated.
+> * We currently do not support Ansel for the following NVIDIA GPU / Display configurations
+> * Surround
+
+:warning: Your game executable needs to be whitelisted by the driver for Ansel activation to succeed. If you do not
+have a driver with the proper whitelisting you can force whitelisting to succeed for all executables with this command:
+
+```ms-dos
+NvCameraEnable.exe whitelisting-everything
+```
+
+This utility is provided with the installation of an Ansel-ready display driver. You will find it at
+NVIDIA Corporation/Ansel/Tools under Program Files.
+The whitelisting setting will be persisted - until you perform a clean driver install or call
+the command again with <code>whitelisting-default</code> option.
+
+### 1.3 GAME ENGINE CONFIGURATION
+Ansel currently supports the following backbuffer formats:
+
+Supported formats |
+--------------------------------|
+DXGI_FORMAT_R8G8B8A8_UNORM |
+DXGI_FORMAT_R8G8B8A8_UNORM_SRGB |
+DXGI_FORMAT_B8G8R8A8_UNORM |
+DXGI_FORMAT_B8G8R8A8_UNORM_SRGB |
+DXGI_FORMAT_R10G10B10A2_UNORM |
+
+Additionally, multisampling is supported for all the above formats. If your game is using a format that is not on the list
+Ansel will produce images with zero for every pixel - i.e. black.
+
+2. INTEGRATING SDK WITH YOUR GAME
+---------------------------------
+This Ansel SDK uses four major concepts: Configuration, Session, Camera, and optionally Hints. We will go through each of
+them in turn and build up an example of game integration in the process.
+
+> **NOTE:** Please consult the header files in the Ansel SDK for reference style documentation.
+
+### 2.1 CONFIGURATION
+As the first step in detecting whether a host computer can support Ansel (correct driver, Ansel enabled,
+title whitelisted, etc) the following function should be called:
+
+```cpp
+ANSEL_SDK_API bool isAnselAvailable();
+```
+
+This function can be called at any time (prior to calling any other function of Ansel) but it
+should be called after the game has created its graphics device. If called prior to device creation it will always
+return false. The function above is useful as the first step in determining if Ansel should be initialized for
+this game session. If delay loading of the Ansel SDK is being used then a game could for instance choose to only load
+the Ansel SDK library if the above function returned true. Please note that initialization of Ansel for this particular
+game can still fail during the `ansel::setConfiguration` call (see below). This means that a game should only advertise
+ Ansel functionality if both `ansel::isAnselAvailable` returns true and `ansel::setConfiguration` succeeds.
+
+During the initialization phase of the game the Ansel configuration should be specified. This is done via the
+`ansel::Configuration` object. Please consult the header file, ansel/Configuration.h, for detailed documentation on
+each field and default values for each. This is how configuration is typically performed:
+
+```cpp
+#include <AnselSDK.h>
+...
+// during initialization phase of game:
+ansel::Configuration config;
+// Configure values that we want different from defaults:
+config.translationalSpeedInWorldUnitsPerSecond = 5.0f;
+config.right = { -axis_left.x, -axis_left.y, -axis_left.z };
+config.up = { axis_up.x, axis_up.y, axis_up.z };
+config.forward = { axis_forward.x, axis_forward.y, axis_forward.z };
+
+config.fovType = ansel::kVerticalFov;
+config.isCameraOffcenteredProjectionSupported = true;
+config.isCameraRotationSupported = true;
+config.isCameraTranslationSupported = true;
+config.isCameraFovSupported = true;
+config.isFilterOutsideSessionAllowed = false;
+
+config.gameWindowHandle = hWnd;
+config.titleNameUtf8 = u8"Best Game Ever";
+
+config.startSessionCallback = startAnselSessionCallback;
+config.stopSessionCallback = stopAnselSessionCallback;
+config.startCaptureCallback = startAnselCaptureCallback;
+config.stopCaptureCallback = stopAnselCaptureCallback;
+
+auto status = ansel::setConfiguration(config);
+if (status != ansel::kSetConfigurationSuccess)
+ // Report error, keep calm, and carry on
+```
+
+> **NOTE:** Ansel cannot be activated by the player until the configuration has been successfully set. It is therefore advisable to perform the configuration soon after the AnselSDK DLL has been loaded. Also note that a failed `setConfiguration` call is not
+catastrophic. It means that Ansel cannot by activated by the player so none of the callbacks or any other parts of the SDK will
+come into use. The programmer is therefore not burdened with having to wrap Ansel SDK calls for the failure case. It is enough
+to report it for debugging purposes. The `setConfiguration` call will never fail if the integeration has been performed correctly.
+
+Let's go through this particular configuration in order.
+
+Games used different units to represent size - it is therefore not possible in Ansel to have a uniform translational
+speed that works for all games. This is why you will have to set the translationalSpeedInWorldUnitsPerSecond to a value
+that feels right for your game. Move the camera around once Ansel mode has been activated to test your settings; test it
+also with the accelerator key pressed (see Chapter 3 for Ansel controls)
+
+Note that even though a game must specify how many meters (or fraction of a meter) are in a world unit
+(see Configuration::metersInWorldUnit) this by itself is not enough to derive a default speed that works well for all
+games. Some games have large worlds where travel is often performed in vehicles (or on mounts) while other games use
+much smaller worlds and thus much lower travel speeds.
+
+Games use different orientations and chirality (handed-ness) for their coordinate system and camera. The conversion between game
+and Ansel's internal coordinate system and camera is handled by Ansel. This greatly simplifies
+integration for game developers. You must specify the unit vectors for right, up, and forward directions that your default
+oriented game camera uses as part of the configuration step. Once that is done all orientations exchanged between Ansel SDK and
+the game will be in the game's coordinate system (see section 2.3 for more details). The right, up, and forward directions that
+you provide must coincide with the default orientation of the game's camera. That is, if no rotation was applied to the
+camera these are the values of its right, up, and forward axes.
+
+Games will either use vertical or horizontal angle to specify the field of view. The default value in the Ansel
+configuration is horizontal angle but if your game uses vertical angle you must specify ansel::kVerticalFov as the
+fovType. This will free you from having to convert between the game's field of view and Ansel's internal field of view
+(see section 2.3 for details).
+
+Not all features of Ansel will necessarily be supported by a game integration. There are also cases where some features
+of Ansel will be disabled under a particular game scenario. Here we will only discuss the general settings that reflect
+the Ansel integration with the particular game engine; we will cover specific game scenarios in section 2.2.
+
+In order to support high resolution capture, where screenshots are taken at resolutions higher than display resolution,
+the game engine needs to support off center projection. In the Configuration object you specify if this feature is
+supported by this particular game integration via the isCameraOffcenteredProjectionSupported field. Similarly,
+support for allowing players to move, orient and zoom the camera is specified via the other Supported fields. We will
+discuss in detail how support for these features is implemented in section 2.3.
+
+The game must provide the window handle to its main window (the window that receives focus when the game is active -
+this is the same window that receives mouse events). Ansel will automatically hide the Windows mouse cursor when
+Ansel UI is enabled. Restoring the visbility of the Windows cursor cannot be done reliably by Ansel for all games. It is
+therefore necessary to call Windows API `ShowCursor` if the game wants the mouse cursor to be visible after the Ansel UI is closed.
+For completeness a game can call `ShowCursor(false)` to hide the mouse cursor in the start session callback (this is not
+necessary) and `ShowCursor(true)` to restore it in the stop session callback (this may be necessary for your game - of
+course depending on whether the cursor should be visible for the current game state).
+
+Finally we have the session and capture callbacks. The capture callbacks are optional. Those should only be configured
+if the game uses non-uniform screen based effects that cause issues in multipart shots. An example of an effect that
+causes issues is vignette. Applying this effect to all the individual tiles of a highres capture or 360 capture will
+produce poor results. The startCaptureCallback will be called when the multipart capture sequence starts and can
+therefore be used to disable vignette. The startCaptureCallback passes a const reference to a CaptureConfiguration
+object containing information about the capture about to be taken. The vignette can then be restored when stopCaptureCallback
+is called. A game integration could of course chose to disable vignette when Ansel session is started but we recommend
+against this since it would remove the vignette from regular screen shots (non-multipart shot). Note that all these
+callbacks receive the value of the userPointer that is specified in the Configuration object.
+
+Usually the version field in the <code>ansel::Configuration</code> structure is default initialized (if an object was created
+using the default constructor and not aggregate initialization or copy from other object for instance) and doesn't need
+to be set explicitly. In case an object is not created using the default constructor, the version field needs to be set to
+<code>ANSEL_SDK_VERSION</code> defined in <code>ansel/Version.h</code>.
+
+The session callbacks are mandatory, they are called when a player wants to begin an Ansel session or end a session.
+Without these callbacks Ansel cannot be activated. We will discuss them in detail in the next section.
+
+> **NOTE:** All callbacks in Ansel will be triggered from calling D3D Present. They will therefore also happen on the same
+thread that calls D3D Present.
+
+The <code>ansel::setConfiguration</code> function returns its status. The possible return values are:
+```cpp
+ enum SetConfigurationStatus
+ {
+ kSetConfigurationSuccess, // successfully initialized the Ansel SDK.
+ kSetConfigurationIncompatibleVersion, // the version provided in the Configuration structure is
+ // not the same as the one stored inside the SDK binary (header/binary mismatch).
+ kSetConfigurationIncorrectConfiguration, // the Configuration structure supplied for the setConfiguration call is
+ // not consistent
+ kSetConfigurationSdkNotLoaded // the Ansel SDK is delay loaded and setConfiguration is called before
+ // the SDK is actually loaded
+ };
+```
+
+The integration should only continue as normal (with regard to the Ansel functionality at least) when
+<code>kSetConfigurationSuccess</code> is returned.
+In case <code>kSetConfigurationIncompatibleVersion</code> is returned, most likely the Ansel SDK binary was obtained
+without updating the headers, which also contain a version. Every update of the Ansel SDK requires a new build of a game.
+In case <code>kSetConfigurationIncorrectConfiguration</code> is returned, on of the following fields could be set incorrectly:
+* right, up, forward vectors do not form an orthogonal basis
+* startSessionCallback or stopSessionCallback is nullptr
+* rotational or translational speed multipliers are zero
+* fovType is neither horizontal, nor vertical
+* gameWindowHandle field is not set
+In case `kSetConfigurationSdkNotLoaded` is returned, the reason is that the Ansel SDK is delay loaded and
+setConfiguration is called before loading the library via `loadAnselSDKLibrary` (see code under samples folder).
+
+### 2.2 SESSION
+The time period from when a player successfully starts Ansel and until Ansel is stopped is called a session. A session
+is collaboratively started and operated between the game and Ansel. When a player requests a session start (for example
+by pressing ALT+F2) Ansel will call the registered session start callback. It is however expected that Ansel cannot
+always be activated. The game may for instance be on a loading screen or playing a movie sequence. The callback should
+then immediately return with Ansel::kDisallowed return value.
+
+During an Ansel session the game:
+
+* Must stop drawing UI and HUD elements on the screen, including mouse cursor
+* Must call ansel::updateCamera on every frame (see section 2.3 for details)
+* Should pause rendering time (i.e. no movement should be visible in the world)
+* Should not act on any input from mouse and keyboard and must not act on any input from gamepads
+
+The function signatures of the session related callbacks are listed below.
+
+```cpp
+enum StartSessionStatus
+{
+ kDisallowed = 0,
+ kAllowed
+};
+
+typedef StartSessionStatus(*StartSessionCallback)(SessionConfiguration& settings, void* userPointer);
+
+typedef void(*StopSessionCallback)(void* userPointer);
+```
+
+As you will notice the start callback receives an additional SessionConfiguration object. This object must reflect the configuration of the currently activated session if Ansel::kAllowed is returned from the callback. Let's take a look at this configuration object:
+
+```cpp
+struct SessionConfiguration
+{
+ // User can move the camera during session
+ bool isTranslationAllowed;
+ // Camera can be rotated during session
+ bool isRotationAllowed;
+ // FoV can be modified during session
+ bool isFovChangeAllowed;
+ // Game is paused during session
+ bool isPauseAllowed;
+ // Game allows highres capture during session
+ bool isHighresAllowed;
+ // Game allows 360 capture during session
+ bool is360MonoAllowed;
+ // Game allows 360 stereo capture during session
+ bool is360StereoAllowed;
+ // Default constructor not included here
+};
+```
+
+As you can see each session has fine grained control over what features of Ansel are offered to the player. This is to
+support different contexts that the game may be in - where some features of Ansel may not be desired. For instance,
+let's say that a game uses in-engine movie sequences. Ansel could certainly be used to take regular and highres
+screenshots during those sequences. However, the game developers may wish to prohibit any player controlled camera
+movement or 360 captures during those sequences since they could expose geometry that was never built because the
+sequences have been carefully orchestrated. This is what such a callback could look like:
+
+```cpp
+ansel::StartSessionStatus startAnselSessionCallback(ansel::SessionConfiguration& conf,
+ void* userPointer)
+{
+ if (isGameLoading || isGameInMenuScreens)
+ return ansel::kDisallowed;
+
+ if (isGameCutScenePlaying)
+ {
+ conf.isTranslationAllowed = false;
+ conf.isRotationAllowed = false;
+ conf.isFovChangeAllowed = false;
+ conf.is360MonoAllowed = false;
+ conf.is360StereoAllowed = false;
+ }
+
+ g_isAnselSessionActive = true;
+
+ return ansel::kAllowed;
+}
+```
+
+> **NOTE:** The final feature set presented in the Ansel UI is always a combination of the global configuration
+specified via the <code>ansel::Configuration</code> object and the particular session configuration specified via the
+<code>ansel::SessionConfiguration</code> object. For instance, if off-center projection is not supported by the
+integration and this is marked as such in the global configuration then the <code>isHighresAllowed</code> setting will
+have no effect for an Ansel session because the feature is simply not supported by the integration.
+
+> Similarly, if `isRotationAllowed` is set to false for the session then no form of 360 capture will be
+possible and hence the `is360MonoAllowed` and `is360StereoAllowed` will have no effect. In the sample code above we
+still set them but this is done for clarity and completeness.
+
+In a session where rendering time cannot be paused this can be communicated with the isPauseAllowed setting. This could
+for instance be the case in a game that offers multiplayer game modes. That being said, some multiplayer game engines
+still allow rendering time to be frozen - this just means that the state of the world will have advanced when the Ansel
+session ends. The stitcher developed for Ansel does not currently support feature detection or other methods used to
+handle temporal inconsistencies. This means that multipart shots (highres and 360) are not supported during sessions
+when pause is disallowed.
+
+The stop session callback is called when the player requests to end the session (for instance by pressing ALT+F2). This
+function is only called if the previous call to start session returned `ansel::kAllowed`. The matching function to what
+we implemented above would look like this:
+
+```cpp
+void stopAnselSessionCallback(void* userPointer)
+{
+ g_isAnselSessionActive = false;
+}
+```
+
+A game can trigger a session start or stop (which leads to the above mentioned callbacks being eventually called).
+This is done using the following interface from Session.h:
+
+```cpp
+ANSEL_SDK_API void startSession();
+ANSEL_SDK_API void stopSession();
+```
+
+This can be used to enable activation of Ansel UI via gamepad for instance. A game can use its existing gamepad handling
+to call `ansel::startSession()` if for instance left-stick is pressed (and a session is not already active). Similarly,
+`ansel::stopSession()` should be called when the same action is performed and session is active. The game is expected
+to track whether a session is active via the start/stop session callbacks that were outlined earlier in this section.
+Other means of Ansel activation could of course be employed (different keyboard shortcut, etc) and the game could call
+start/stopSession accordingly.
+
+### 2.3 CAMERA
+The camera object acts as the communication channel between Ansel and the game. The concepts described earlier are
+either used for one-off configuration or rare events. Once an Ansel session has been started the game needs to call
+Ansel on every frame to update the camera. It's helpful to first look at the Camera interface:
+
+```cpp
+struct Camera
+{
+ nv::Vec3 position;
+ nv::Quat rotation;
+ float fov;
+ float projectionOffsetX, projectionOffsetY;
+};
+
+ANSEL_SDK_API void updateCamera(Camera& camera);
+```
+
+As noted before the header file contains documentation for each field. Here it suffices to say that the values are all
+in the game's coordinate system, since this has been established via the `ansel::setConfiguration` call
+(see section 2.1). The field of view, fov, is in degrees and in the format specified during the previously mentioned
+call. The final two values are used to specify the off-center projection amount. Let's illustrate how this all works
+with sample code following the earlier session callbacks we had created:
+
+```cpp
+if (g_isAnselSessionActive)
+{
+ if (!was_ansel_in_control)
+ {
+ store_original_camera_settings();
+ was_ansel_in_control = true;
+ }
+ ansel::Camera cam;
+ cam.fov = get_game_fov_vertical_degrees();
+ cam.position = { game_cam_position.x, game_cam_position.y,
+ game_cam_position.z };
+ cam.rotation = { game_cam_orientation.x,
+ game_cam_orientation.y,
+ game_cam_orientation.z,
+ game_cam_orientation.w };
+
+ ansel::updateCamera(cam);
+ // This is where a game would typically perform collision detection
+ // and adjust the values requested by player in cam.position
+
+ game_cam_position.x = cam.position.x;
+ game_cam_position.y = cam.position.y;
+ game_cam_position.z = cam.position.z;
+
+ game_cam_orientation.x = cam.rotation.x;
+ game_cam_orientation.y = cam.rotation.y;
+ game_cam_orientation.z = cam.rotation.z;
+ game_cam_orientation.w = cam.rotation.w;
+
+ set_game_fov_vertical_degrees(cam.fov);
+
+ // modify projection matrices by the offset amounts -
+ // we will explore this in detail separately
+ offset_game_projection_matrices(cam.projectionOffsetX, cam.projectionOffsetY);
+
+ return;
+}
+else
+{
+ if (was_ansel_in_control)
+ {
+ restore_original_camera_settings();
+ was_ansel_in_control = false;
+ }
+}
+```
+
+The sample above is a full implementation of Ansel support, in the sense that it supports camera translation, camera
+rotation, changing of field of view, and offset projection. Most rendering engines employ a view matrix; the camera
+is most often just a game side concept. Fortunately the view matrix is just the inverse of the camera matrix so it's easy
+to obtain. Remember that the camera matrix is established by transforming the default camera by the camera rotation.
+Since some code bases use matrices rather than quaternions for rotations we provide a couple of utility
+functions in the Camera interface:
+
+```cpp
+ANSEL_SDK_API void quaternionToRotationMatrixVectors(const nv::Quat& q,
+ nv::Vec3& right, nv::Vec3& up, nv::Vec3& forward);
+
+ANSEL_SDK_API void rotationMatrixVectorsToQuaternion(const nv::Vec3& right, const nv::Vec3& up, const nv::Vec3& forward,
+ nv::Quat& q);
+```
+
+The former one can be used to convert the `ansel::Camera::rotation` to a matrix that can then be used to transform
+the basis vectors of the game's default oriented camera to establish the camera matrix. The latter can be used to
+convert the game's camera rotation matrix to a quaternion that can be passed into `ansel::Camera::rotation` prior to
+calling `ansel::updateCamera`.
+
+Even though the sample above is a full implementation of Ansel support it does however not employ any collision detection
+or other constraints on the camera movement. This is unrealistic since most games will at least want to limit the range the
+camera can travel. These limitations will always be specific to the game in question and collision is best
+handled by the game using the systems that are already in place. We do therefore not elaborate on this piece here. It
+should still be noted that Ansel is stateless when it comes to position so the game can adjust the position (based on
+collision response or constraints) any way it sees fit. The new position will always be communicated to Ansel on the
+next frame, via `ansel::updateCamera`.
+
+Another aspect that is not covered in the sample code above is the handling of projection offset. We will explore that
+aspect in more detail here.
+
+The `projectionOffsetX` and `projectionOffsetY` members of the `ansel::Camera` specify the amount that the projection
+matrix needs to be offset by. These values are normalized coordinates applied directly to the projection matrix, they
+should not need any scaling. These values are only used by Super Resolution captures - for all other capture types
+they will be zero. Expanding on the sample code above:
+
+```cpp
+void offset_game_projection_matrices(float offsetX, float offsetY)
+{
+ // In this simple example we only need to modify the projection matrix associated with the game camera.
+ // If the game is doing clever things like optimizing reflections or shadows based on projection matrix
+ // then those code paths need to take a non-zero projection offset into account.
+
+ // For nostalgia effect this game is using an old classic:
+ D3DXMATRIX projection;
+ D3DXMatrixPerspectiveFovRH(&projection, g_fov_radians, g_aspect, g_z_near, g_z_far)
+
+ // Apply the offsets directly to the finished product (values are already normalized):
+ projection._31 += offsetX;
+ projection._32 += offsetY;
+
+ // Update the games projection matrix:
+ g_projection_matrix = projection;
+}
+```
+
+### 2.4 HINTS
+To perform Raw capture (to EXR format) Ansel tries to use certain heuristics to detect which of the game buffers
+contains HDR pixel data. These heuristics won't work for all games. For instance, they won't work for games that use
+deferred contexts with multithreaded rendering. For those scenarios the hinting API can be used (see ansel/Hints.h).
+
+Below we will outline how the hinting API is used to make capture work under these circumstances.
+If game developers do not want to use the hinting API to make raw capture work the `isRawAllowed` setting in the
+`ansel::SessionConfiguration` should be set to false during the startSession callback. This will disable the 'Raw'
+ option in the Ansel UI.
+```
+namespace ansel
+{
+ // Call this right before setting HDR render target active
+ ANSEL_SDK_API void markHdrBufferBind(uint64_t threadId = 0xFFFFFFFFFFFFFFFFull);
+ // Call this right after the last draw call into the HDR render target
+ ANSEL_SDK_API void markHdrBufferFinished(uint64_t threadId = 0xFFFFFFFFFFFFFFFFull, AnselHintsCopyMode copyMode = kAnselHintsCopyOnPresent);
+}
+```
+
+To identify the HDR buffer for Ansel call ```markHdrBufferBind``` before binding the buffer to the graphics pipeline. In case the buffer contents is not overwritten before calling ```Present```
+(or ```glSwapBuffers()```) it is fine to not call ```markHdrBufferFinished```. In case the same buffer is reused for other
+purposes and at the time the ```Present``` (or ```glSwapBuffers```) gets called its content does not represent the framebuffer
+calling ```markHdrBufferFinished``` at the moment where the buffer is not used anymore but before it is unbound from the graphics
+pipeline is neccessary. Both functions have threadId argument, which is an optional argument allowing Ansel to match the thread calling
+a hint and a particular graphics API call that some other game thread might perform. The default value of 0xFFFFFFFFFFFFFFFFull means that
+no such matching should happen. The special value of 0 means that Ansel SDK is going to match thread ids automatically. Any other
+value means a specific thread id known at integration side. markHdrBufferFinished also allows setting the copyMode, which is an optional
+argument specifying if HDR buffer is going to be reused or used in a fashion that is not compatible with capturing it at Present
+(or analogous function, since this is graphics API dependent) call. The default value is kAnselHintsCopyOnPresent, which means the buffer
+contents will remain in tact until Present call. In case copyMode is set to kAnselHintsCopyImmediately, HDR buffer will be copied upon
+the next call to the graphics API that Ansel hooks.
+
+3. TAKING PICTURES WITH ANSEL
+-----------------------------
+### 3.1 ACTIVATING AND DEACTIVATING ANSEL
+Players can start/stop Ansel session by pressing ALT+F2. Other ways of activation are possible if the game has used
+the `ansel::startSession` and `ansel::stopSession` functions in the Ansel SDK to implement other triggers
+(see section 2.2)
+
+### 3.2 MOVING THE CAMERA
+The camera can be moved via keys WASD and XZ for up/down. The camera can also be moved with the left stick on a gamepad
+and trigger buttons for up/down. Movement can be accelerated by holding SHIFT on keyboard or depressing right stick on
+gamepad.
+### 3.3 ROTATING THE CAMERA
+The yaw and pitch of the camera is directly controlled by mouse or right stick on gamepad. The roll of the camera is
+adjusted via the user interface Roll slider but can also be controlled directly via shoulder buttons on gamepad.
+### 3.4 APPLYING A FILTER
+A number of filters can be selected via the Filter slider. Some filters, like 'Custom' have additional settings that
+can be used to adjust the filter even further.
+### 3.5 TAKING A PICTURE
+Ansel offers the following capture types (selected via the Capture type slider):
+* Screenshot
+* Highres
+* 360
+* Stereo
+* 360 Stereo
+
+Not all of these capture types may be available since it depends on the game integration and the current session (see
+sections 2.1 and 2.2). Once a type has been chosen the picture is taken by pressing Snap button. Some pictures may take
+significant time to produce, especially highres shots of large dimensions. If the game uses streaming the streaming
+performance may be affected when shots involving many parts are being stitched together.
+
+> **NOTE:*** Not all filters are valid with multipart Capture types (360 and Highres). You may therefore see filters (or
+aspects of a filter) removed in the final picture.
+
+
+4. TROUBLESHOOTING AND DEBUGGING COMMON PROBLEMS
+------------------------------------------------
+In this section we collected commonly occurring problems we've seen while integrating Ansel with games. This section can
+hopefully help you resolve a problem or two.
+It is generally useful to be able to inspect the individual shot tiles that are captured when generating pictures that
+require multiple shots. Locate the `NvCameraConfiguration.exe` utility. It can be found inside
+Program Files\NVIDIA Corporation\Ansel\Tools.
+
+Run the utility. A screen similar to this one should appear:
+
+![NvCameraConfiguration utility](NvCameraConfiguration.exe_screen.png)
+
+Check the 'Keep Intermediate Shots' option so that you can inspect the individual tiles. You can also pick a different
+location to store the tiles by changing the 'Temp Directory for Intermediate Shots'.
+
+Notice the 'Log level' setting. By default this is set to 'Disabled', which means that no logs are produced. If you set
+this to for instance 'Info' then all log messages with severity Info and higher will be emitted to a log file. Log files
+are stored in the current users profile directory, inside an 'ansel' folder. The path is `%USERPROFILE%\ansel`. Each
+log file is named after the associated executable and includes a timestamp. Please note that multiple log files can be
+produced by the same game during one session since each device starts a separate Ansel logging session. That being said
+only one device (and therefore log file) will be associated with the presentable surface and will thus contain the most
+helpful information.
+
+### 4.1 ANSEL CANNOT BE ACTIVATED
+There are a number of configuration issues that can result in Ansel not activating for your game when you press the
+activation keys (ALT+F2). The following list is helpful in debugging the issue:
+1. Verify that Ansel is enabled for the machine. You can do this by running the `NvCameraEnable.exe` utility with no
+arguments (this tool was introduced in section 1.2). It will return `1` if Ansel is enabled, `0` otherwise. You can
+change this setting by issuing `NvCameraEnable.exe on` or using the GUI tool `NvCameraConfiguration.exe` that was
+introduced in the beginning of this chapter.
+2. If the game executable is not whitelisted for Ansel (by the installed driver) you can disable whitelisting checks as
+outlined in section 1.2.
+3. Verify that the hardware and software requirements from sections 1.2 and 1.3 are met by the machine and game.
+4. If you are running on a Hybrid/Optimus computer that has both a integrated GPU and a discreet NVIDIA GPU, make sure
+the game is running on the NVIDIA GPU. Use the NVIDIA Control Panel to verify/configure this setting for the game.
+5. Verify that Ansel is trying to start by setting a breakpoint on the startSessionCallback.
+6. Depending on which phase is blocking Ansel activation, logging can be helpful. See the beginning of this chapter on
+how to utilize logging.
+
+### 4.2 ARTEFACTS IN MULTIPART SHOTS
+This is where we cover the most common errors we've seen while capturing multipart shots in games.
+#### 4.2.1 Image tiles suffer from "acne"
+This is probably best described with images. Here is a tile exhibiting the problem:
+
+![Image acne](ImageAcne.jpg)
+
+Note the "acne" to the left of the tree, caused by temporal anti-aliasing. This can be fixed in two different ways. One
+method is to use the captureSettleLatency field in the configuration object. This field specifies how many frames Ansel
+should wait when taking multipart shots for the frame to settle - i.e. for any temporal effects to have settled. In this
+specific case (where the image is taken from) it takes one frame so the value should be 1. This is what the image looks
+like with that setting:
+
+![Image without acne](ImageWithoutAcne.jpg)
+
+Another way to solve this problem is to harness the startCapture/stopCapture callbacks to disable temporal AA. This
+effectively disables the temporal AA feature during the multipart capture sequence.
+Which solution should you use? Well, it depends. You need to subjectively evaluate how much the temporal AA enhances
+image quality vs the cost of waiting for the frame to settle. At a settleLatency of 1 the cost is rather small and thus
+weighs in favor of using that solution.
+
+#### 4.2.2 Ghosting everywhere in final picture
+Usually it looks something like this:
+
+![Ghosting everywhere](GhostingEverywhere.jpg)
+
+Most often this is the result of incorrect field of view being submitted to Ansel - or error made on conversion or usage
+of value coming back from Ansel. It is recommended that you match the field of view type between game and Ansel to avoid
+any conversion mistakes. See section 2.1 on how you can configure Ansel to use the game's field of view.
+#### 4.2.3 Screen space reflections fade out with increased Highres capture resolution
+Below is a regular screenshot taken with Ansel:
+
+![Screen space reflections](ScreenSpaceReflections.jpg)
+
+If we now select capture type Highres with a large enough multiplier we get this picture (scaled down in resolution to
+fit this document):
+
+![Screen space reflections reduced](ScreenSpaceReflectionsReduced.jpg)
+
+There is unfortunately no workaround for this problem, it is a limitation of the capture method used.
+#### 4.2.4 It's all a blur
+Motion blur needs to be disabled during multipart capture. Otherwise results like this can be produced when taking 360
+picture:
+
+![Blurry capture](Blur.jpg)
+
+#### 4.2.5 Streaky reflections
+When enabling highres capture for your game you may witness results similar to this:
+
+![Streaky reflections in capture](StreakyReflections.jpg)
+
+The reason may be that the projection offset and reduced field of view employed by the highres capture method is not
+being accounted for in the game's reflection code path.
+
+### 4.3 THE VIEW OF THE WORLD "POPS" WHEN ENTERING AND EXITING ANSEL MODE
+This is typically due to incorrect field of view being passed on the first frame or due to a screen space effect being
+disabled when Ansel mode is activated. For the latter it is preferred to deactivate troublesome effects only during
+multipart captures (via the capture callback).
+
+### 4.4 GAME MOUSE CURSOR IS NOT VISIBLE AFTER RETURNING TO GAME FROM ANSEL
+The visible state of the mouse cursor needs to be restored by calling Windows API `SetCursor(true)` when the Ansel
+session has ended (after `ansel::Configuration::stopSessionCallback` is triggered).
+
+### 4.5 DOUBLE MOUSE CURSORS
+Strictly speaking UI and HUD elements must not be rendered when game is in Ansel mode and this includes any cursors. We
+have however experienced the situation where the game renders a mouse cursor on top of its window when it regains focus.
+If the game is in Ansel mode this will result in two moving mouse cursors - a very confusing experience indeed. As
+mentioned the game shouldn't be rendering a mouse cursor when Ansel is active. That being said we have a mechanism to
+prevent this from happening - this mechanism is enabled if the game passes its window handle during configuration, in
+the Configuration::gameWindowHandle field.
+
+### 4.6 CAMERA ROTATION OR MOVEMENT IS INCORRECT
+Incorrect rotation is best observed with a gamepad - i.e. pushing the joystick left doesn't rotate the view towards the
+left or pushing the joystick up doesn't rotate the view up. Incorrect movement can be verified with either keyboard or
+gamepad.
+
+This problem is usually rooted in incorrect axes provided for right, up, and down directions in the
+`ansel::Configuration` struct. See section 2.1.
+
+### 4.7 CAMERA ROTATION OR MOVEMENT IS TOO SLOW / TOO FAST
+The speed for rotation is set via the `rotationalSpeedInDegreesPerSecond` field during configuration. The default value
+is 45 degrees/second. The speed for movement is set via the `translationalSpeedInWorldUnitsPerSecond` field during
+configuration. The default value is 1 world unit/second.
+
+### 4.8 ALL ANSEL CAPTURES PRODUCE BLACK IMAGES
+This is usually caused by an unsupported backbuffer format. Please consult section 1.3 for a list of supported formats.
+
+### 4.9 ALL ANSEL CAPTURES ARE NAMED AFTER THE GAME EXECUTABLE
+This happens because the game does not have a GeForce profile (yet) and a setting for `titleNameUtf8` was not specified
+when `ansel::setConfiguration` was called. It is best to provide a name for the title via `titleNameUtf8` since this
+will work regardless of whether the driver being used has a GeForce profile for the game.
+
+### 4.9 RAW CAPTURE FAILS
+By default Ansel uses heuristics to try to identify the raw HDR buffer. For some games these heuristics won't work.
+Section 2.4 contains the information on how to address this.
+
+APPENDIX A
+----------
+
+### Notice
+
+The information provided in this specification is believed to be accurate and reliable as of the date provided. However,
+NVIDIA Corporation ("NVIDIA") does not give any representations or warranties, expressed or implied, as to the accuracy or completeness of such information. NVIDIA shall have no liability for the consequences or use of such information or for any infringement of patents or other rights of third parties that may result from its use. This publication supersedes and replaces all other specifications for the product that may have been previously supplied.
+NVIDIA reserves the right to make corrections, modifications, enhancements, improvements, and other changes to this specification, at any time and/or to discontinue any product or service without notice. Customer should obtain the latest relevant specification before placing orders and should verify that such information is current and complete.
+NVIDIA products are sold subject to the NVIDIA standard terms and conditions of sale supplied at the time of order acknowledgement, unless otherwise agreed in an individual sales agreement signed by authorized representatives of NVIDIA and customer. NVIDIA hereby expressly objects to applying any customer general terms and conditions with regard to the purchase of the NVIDIA product referenced in this specification.
+NVIDIA products are not designed, authorized or warranted to be suitable for use in medical, military, aircraft, space or life support equipment, nor in applications where failure or malfunction of the NVIDIA product can reasonably be expected to result in personal injury, death or property or environmental damage. NVIDIA accepts no liability for inclusion and/or use of NVIDIA products in such equipment or applications and therefore such inclusion and/or use is at customer's own risk.
+NVIDIA makes no representation or warranty that products based on these specifications will be suitable for any specified use without further testing or modification. Testing of all parameters of each product is not necessarily performed by NVIDIA. It is customer's sole responsibility to ensure the product is suitable and fit for the application planned by customer and to do the necessary testing for the application in order to avoid a default of the application or the product. Weaknesses in customer's product designs may affect the quality and reliability of the NVIDIA product and may result in additional or different conditions and/or requirements beyond those contained in this specification. NVIDIA does not accept any liability related to any default, damage, costs or problem which may be based on or attributable to: (i) the use of the NVIDIA product in any manner that is contrary to this specification, or (ii) customer product designs.
+No license, either expressed or implied, is granted under any NVIDIA patent right, copyright, or other NVIDIA intellectual property right under this specification. Information published by NVIDIA regarding third-party products or services does not constitute a license from NVIDIA to use such products or services or a warranty or endorsement thereof. Use of such information may require a license from a third party under the patents or other intellectual property rights of the third party, or a license from NVIDIA under the patents or other intellectual property rights of NVIDIA. Reproduction of information in this specification is permissible only if reproduction is approved by NVIDIA in writing, is reproduced without alteration, and is accompanied by all associated conditions, limitations, and notices.
+ALL NVIDIA DESIGN SPECIFICATIONS, REFERENCE BOARDS, FILES, DRAWINGS, DIAGNOSTICS, LISTS, AND OTHER DOCUMENTS (TOGETHER AND SEPARATELY, "MATERIALS") ARE BEING PROVIDED "AS IS." NVIDIA MAKES NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. Notwithstanding any damages that customer might incur for any reason whatsoever, NVIDIA's aggregate and cumulative liability towards customer for the products described herein shall be limited in accordance with the NVIDIA terms and conditions of sale for the product.
+
+VESA DisplayPort
+DisplayPort and DisplayPort Compliance Logo, DisplayPort Compliance Logo for Dual-mode Sources, and DisplayPort Compliance Logo for Active Cables are trademarks owned by the Video Electronics Standards Association in the United States and other countries.
+
+HDMI
+HDMI, the HDMI logo, and High-Definition Multimedia Interface are trademarks or registered trademarks of HDMI Licensing LLC.
+
+ROVI Compliance Statement
+NVIDIA Products that support Rovi Corporation's Revision 7.1.L1 Anti-Copy Process (ACP) encoding technology can only be sold or distributed to buyers with a valid and existing authorization from ROVI to purchase and incorporate the device into buyer's products.
+This device is protected by U.S. patent numbers 6,516,132; 5,583,936; 6,836,549; 7,050,698; and 7,492,896 and other intellectual property rights. The use of ROVI Corporation's copy protection technology in the device must be authorized by ROVI Corporation and is intended for home and other limited pay-per-view uses only, unless otherwise authorized in writing by ROVI Corporation. Reverse engineering or disassembly is prohibited.
+
+OpenCL
+OpenCL is a trademark of Apple Inc. used under license to the Khronos Group Inc.
+
+Trademarks
+NVIDIA and the NVIDIA logo are trademarks and/or registered trademarks of NVIDIA Corporation in the U.S. and other countries. Other company and product names may be trademarks of the respective companies with which they are associated.
+
+Copyright
+(c) 2016 NVIDIA Corporation. All rights reserved.
+
+
+www.nvidia.com
+
diff --git a/docs/Blur.jpg b/docs/Blur.jpg
new file mode 100644
index 0000000..bcfcaff
--- /dev/null
+++ b/docs/Blur.jpg
Binary files differ
diff --git a/docs/GameWorks Binary SDK EULA _ NVIDIA Developer.txt b/docs/GameWorks Binary SDK EULA _ NVIDIA Developer.txt
new file mode 100644
index 0000000..080634f
--- /dev/null
+++ b/docs/GameWorks Binary SDK EULA _ NVIDIA Developer.txt
@@ -0,0 +1,317 @@
+
+ GameWorks Binary SDK EULA
+
+*NVIDIA CORPORATION
+NVIDIA GAMEWORKS BINARY SDK END USER LICENSE AGREEMENT*
+
+NVIDIA Corporation ("NVIDIA") is willing to license the NVIDIA GameWorks
+Binary SDK associated with this download and the accompanying
+documentation, installation routines and support files, sample art files
+and assets, and supporting utilities (collectively, the "NVIDIA
+GameWorks SDK") to you only on the condition that you accept all the
+terms in this License Agreement ("Agreement").
+
+IMPORTANT: READ THE FOLLOWING TERMS AND CONDITIONS BEFORE USING THE
+ACCOMPANYING NVIDIA GAMEWORKS SDK.
+
+IF YOU DO NOT AGREE TO THE TERMS OF THIS AGREEMENT, NVIDIA IS NOT
+WILLING TO LICENSE THE NVIDIA GAMEWORKS SDK TO YOU AND YOU SHALL NOT
+USE THIS SDK OR ANY PART OF IT.
+
+*Note: this End User License Agreement applies to GameWorks Modules
+downloaded in binary (compiled) form. This End User License Agreement
+does not apply to GameWorks Source Code. For GameWorks Source Code,
+please refer to:* GameWorks Source SDK EULA (please log into NVIDIA
+Registered Developer Program to see this document).
+<https://developer.nvidia.com/gameworks-source-sdk-eula>
+1. Definitions.
+
+“NVIDIA GameWorks Application” means a software application designed for
+use and fully compatible with the NVIDIA Graphics processor products,
+including but not limited to, a video game, visual simulation, movie, or
+other product.
+
+"NVIDIA GameWorks Binary SDK" means the set of instructions for
+computers, in executable form only and in any media (which may include
+diskette, CD-ROM, downloadable internet, hardware, or firmware)
+comprising NVIDIA's proprietary Software Development Kit (in compiled or
+binary form) and related media and printed materials, including
+reference guides, documentation, and other manuals, installation
+routines and support files, libraries, sample art files and assets,
+tools, support utilities and any subsequent updates or adaptations
+provided by NVIDIA, whether with this installation or as separately
+downloaded (unless containing their own separate license terms and
+conditions).
+
+“Sample Code” means the sample interface or application source and
+object code files contained within the particular GameWorks SDK’s
+“Samples” directory or made available for download from the NVIDIA
+GameWorks developer site and designated as sample code.
+
+2. License. Subject to the terms and conditions of this Agreement,
+NVIDIA grants you (“you”) a limited, non-exclusive, non-transferable
+world-wide, royalty-free license to (a) internally install, use and
+display the NVIDIA GAMEWORKS SDK, solely for purposes of developing
+NVIDIA GameWorks asset content for NVIDIA GameWorks Applications; (b)
+internally use, copy, modify and compile the Sample Code to design,
+develop and test NVIDIA GameWorks assets; and (c) reproduce and
+distribute the Redistributable Code only in object code form and only
+as fully integrated into NVIDIA GameWorks Applications, in each case
+solely for your commercial and non-commercial purposes provided that
+your NVIDIA GameWorks Applications run solely on Windows PCs .
+
+In addition, you may not and shall not permit others to:
+
+I. modify, reproduce, de-compile, reverse engineer or translate the
+NVIDIA GameWorks SDK; or
+II. distribute or transfer the NVIDIA GameWorks SDK other than as
+part of the NVIDIA GameWorks Application.
+
+Except as expressly granted herein, no other license under any
+patent, copyright, trade secret, trademark or other intellectual
+property right is granted to or conferred upon you by this Agreement.
+All other rights are expressly reserved by NVIDIA and its licensors.
+
+3. Redistribution; NVIDIA GameWorks Applications. Any redistribution of
+the NVIDIA GameWorks SDK (in accordance with Section 2 above) or
+portions thereof must be subject to an end user license agreement
+including language that
+
+a) prohibits the end user from modifying, reproducing, de-compiling,
+reverse engineering or translating the NVIDIA GameWorks SDK;
+b) prohibits the end user from distributing or transferring the NVIDIA
+GameWorks SDK other than as part of the NVIDIA GameWorks Application;
+c) disclaims any and all warranties on behalf of NVIDIA and its
+affiliated companies and licensors;
+d) disclaims, to the maximum extent permitted by law, NVIDIA’s, its
+affiliated companies and its licensors' liability for all damages,
+direct or indirect, incidental or consequential, that may arise from any
+use of the NVIDIA GameWorks SDK and/or NVIDIA GameWorks Application;
+e) requires the end user to agree not to export the NVIDIA GameWorks
+SDK and/or NVIDIA GameWorks Application, directly or indirectly, in
+violation of any U.S. laws; and
+
+You are required to notify NVIDIA prior to use of the NVIDIA GameWorks
+SDK in the development of any commercial Application. Please send
+notification by email to: [email protected] and provide the
+following information in the email:
+
+ * Company Name
+ * Publisher and Developer Name
+ * Game Title or Application Name
+ * Platforms (i.e. PC, Xbox, PlayStation)
+ * Scheduled Ship Date
+ * WebLink to product/video
+
+Any Application integrating the NVIDIA GameWorks SDK is subject to a
+license to NVIDIA for use and public display of such Application for
+advertising and marketing purposes.
+
+Failure to notify NVIDIA pursuant to this Section AND FAILURE to provide
+attribution pursuant to section 6 shall be considered a material breach
+of this agreement.
+
+4. Ownership, Protections. The NVIDIA GameWorks SDK is owned by NVIDIA
+and NVIDIA licensors, and is protected by United States copyright laws,
+international treaty provisions, and other applicable laws. With regard
+to any copies made, you agree to reproduce any copyright notices and
+other proprietary legends included on the original. NVIDIA
+copyright notice(s) may appear in any of several forms, including
+machine-readable form, and you agree to reproduce such notice in each
+form in which it appears. Title and copyrights to the NVIDIA GameWorks
+SDK and any copies made by you remain with NVIDIA and its licensors.
+You acknowledge that the NVIDIA GameWorks SDK contain valuable
+proprietary information and trade secrets and that unauthorized or
+improper use of the NVIDIA GameWorks SDK will result in irreparable harm
+to NVIDIA and its licensors for which monetary damages would be
+inadequate and for which NVIDIA and its licensors will be entitled to
+immediate injunctive relief. Subject to the rights of NVIDIA and its
+licensors in the NVIDIA GameWorks SDK and the Sample Code, you own your
+modifications to the Sample Code.
+
+5. Restrictions. You will not, and will not permit others to: (a)
+modify, translate, decompile, bootleg, reverse engineer, disassemble, or
+extract the inner workings of any portion of the NVIDIA GameWorks SDK
+except the Sample Code, (b) copy the look-and-feel or functionality of
+any portion of the NVIDIA GameWorks SDK except the Sample Code; (c)
+remove any proprietary notices, marks, labels, or logos from the NVIDIA
+GameWorks SDK or any portion thereof; (d) rent, transfer or use as a
+service bureau all or some of the NVIDIA GameWorks SDK without NVIDIA’s
+prior written consent, except in the form of Applications and subject to
+the requirements of this Agreement; (e) utilize any computer software or
+hardware which is designed to defeat any copy protection device, should
+the NVIDIA GameWorks SDK be equipped with such a protection device; or
+(f) use the NVIDIA Licensed Software in any manner that would cause the
+NVIDIA Licensed Software to become subject to an Open Source License.
+"Open Source License" includes, without limitation, a software license
+that requires as a condition of use, modification, and/or distribution
+of such software that the NVIDIA Licensed Software be (i) disclosed or
+distributed in source code form; (ii) be licensed for the purpose of
+making derivative works; or (iii) be redistributable at no charge.
+Unauthorized copying of the NVIDIA GameWorks SDK, or failure to comply
+with any of the provisions of this Agreement, will result in automatic
+termination of this license.
+
+6. Attribution Requirements and Trademark License. You must provide
+attribution to NVIDIA.
+
+A. You will include a reference to the NVIDIA GameWorks and NVIDIA in
+any press releases for such Game/Application that relate to NVIDIA, or
+in-game NVIDIA GameWorks technology, and will identify NVIDIA as the
+provider of "NVIDIA GameWorks" (or such other term or phrase as
+indicated by NVIDIA from time to time).
+
+B. For Games, Demos, and Videos that incorporate the NVIDIA GameWorks
+SDK or portions thereof, the NVIDIA GameWorks logos must appear:
+
+a. on the back cover of the instruction manual or similar placement in
+an electronic file for the purpose of
+acknowledgement/copyright/trademark notice;
+b. on external packaging;
+c. during opening marquee or credits with inclusion of “NVIDIA”;
+d. must appear on title marketing feature list with a specific
+call-out of NVIDIA GameWorks Technology
+e. on the credit screen; and
+f. in the “About” or “Info” box menu items (or equivalent)
+of all Games or Applications using any portion of the NVIDIA
+GameWorks SDK.
+
+C. Provide a quote citing yourthe Licensee’s integration of the NVIDIA
+GameWorks SDK into the Game or Application for NVIDIA’s use in press
+materials and website.
+
+D. Refer to NVIDIA GameWorks in all press coverage referring to the
+use NVIDIA GameWorks technology in the development of any Game or
+Application.
+
+E. Identification by NVIDIA. Subject to the terms and conditions of
+this Agreement, you agree that NVIDIA may identify you, on NVIDIA's
+website, printed collateral, trade-show displays and other retail
+packaging materials, as a company that produces products and/or services
+which incorporate the NVIDIA Gameworks SDK. To the extent that you
+provide NVIDIA with input or usage requests with regard to the use of
+your logo or materials, NVIDIA will use commercially reasonable efforts
+to comply with such requests. For the avoidance of doubt, NVIDIA’s
+rights pursuant to this Section 6(E) shall survive any cancellation or
+termination of the Agreement with respect to existing products and/or
+services which incorporate the NVIDIA GameWorks SDK.
+
+F. Game/Demo-related Marketing Material. You permit NVIDIA to create
+and display self-promotional demo materials and use screenshot materials
+that capture game assets from real-time game play, captured video clips
+and images from the Game, after release of the Game to the public, and
+you may also provide NVIDIA with screenshots / imagery and video footage
+of the Game/Demo representative of your use of the NVIDIA Gameworks SDK
+in the Game (collectively, “Assets”). You hereby grant to NVIDIA the
+right to distribute, sub-license, and use the Assets in order to promote
+and market the NVIDIA GameWorks SDK. To the extent that Company provides
+NVIDIA with input or usage requests with regard to the use of your logo
+or materials, NVIDIA will use commercially reasonable efforts to comply
+with such requests. For the avoidance of doubt, NVIDIA’s rights
+pursuant to this Section 6(F) shall survive any cancellation or
+termination of the Agreement with respect to Applications which
+incorporate the NVIDIA GameWorks SDK.
+
+Failure to provide attribution pursuant to this Section shall be
+considered a material breach of this agreement.
+
+Except as expressly set forth in this Section 6, or in a separate
+written agreement with NVIDIA, you may not use NVIDIA's trademarks,
+whether registered or unregistered, in connection with the Application
+in any manner or imply that NVIDIA endorses or otherwise approves of the
+Application or that you and NVIDIA are in any way affiliated. Your use
+of the NVIDIA name under this Agreement does not create any right, title
+or interest in the NVIDIA name or any NVIDIA trademarks and all goodwill
+arising from your use inure solely to the benefit of NVIDIA.
+
+7. DISCLAIMER. THE NVIDIA GAMEWORKS SDK IS PROVIDED “AS IS” AND NVIDIA
+AND ITS LICENSORS MAKE, AND YOU RECEIVE, NO OTHER WARRANTIES OF ANY
+KIND, WHETHER EXPRESS, IMPLIED, STATUTORY, OR IN ANY COMMUNICATION WITH
+YOU. NVIDIA SPECIFICALLY DISCLAIMS ANY OTHER WARRANTY INCLUDING THE
+IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR
+A PARTICULAR PURPOSE. NVIDIA DOES NOT WARRANT THAT THE OPERATION OF THE
+SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE OR THAT DEFECTS IN THE
+SOFTWARE WILL BE CORRECTED. NVIDIA MAKES NO WARRANTY WITH RESPECT TO
+THE CORRECTNESS, ACCURACY, OR RELIABILITY OF THE SOFTWARE AND
+DOCUMENTATION. Some jurisdictions do not allow the exclusion of implied
+warranties, so the above exclusion may not apply to you.
+
+
+8. Confidential Information. All technical and business information
+disclosed by NVIDIA to you under this Agreement, including but not
+limited to source code, documentation, technical assistance and any
+confidential information pertaining to NVIDIA’s business or products,
+are to be considered “NVIDIA Confidential Information.” You will not
+disclose any portion of NVIDIA Confidential Information to any third
+party and will protect all NVIDIA Confidential Information with the same
+degree of care as you use to protect your own information of a
+confidential or proprietary nature, but always with at least a
+reasonable degree of care. This obligation of confidentiality will
+survive termination and/or expiration of this Agreement for any reason.
+
+9. LIMITATION OF LIABILITY. THE TOTAL LIABILITY OF NVIDIA AND ITS
+LICENSORS UNDER THIS AGREEMENT FOR DAMAGES WILL NOT EXCEED $100 IN THE
+AGGREGATE. IN NO EVENT WILL NVIDIA OR ITS LICENSORS BE LIABLE IN ANY
+WAY FOR INCIDENTAL, CONSEQUENTIAL, INDIRECT, SPECIAL OR PUNITIVE DAMAGES
+OF ANY NATURE, INCLUDING WITHOUT LIMITATION, LOST BUSINESS PROFITS, OR
+LIABILITY OR INJURY TO THIRD PERSONS, WHETHER FORESEEABLE OR NOT,
+REGARDLESS OF WHETHER NVIDIA OR ITS LICENSORS HAVE BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES. Some jurisdictions do not permit
+limitations of liability for incidental or consequential damages, so the
+above exclusions may not apply to you.
+
+
+10. Term of License; Termination. Your right to use the NVIDIA
+GameWorks SDK will begin when you click the “ACCEPT” button, which
+constitutes acceptance of the terms and conditions herein. The license
+is effective until otherwise terminated. You may terminate it at any
+time by destroying the NVIDIA GameWorks SDK and all portions thereof,
+together with all copies in any form. If you fail to comply with any
+material term or condition of this Agreement and do not cure the
+noncompliance within 30 days of receipt of written notice of
+noncompliance from NVIDIA, NVIDIA may terminate your rights to conduct
+any further development under Sections 2(a) and (b) of this Agreement
+("Partial Termination"). Upon Partial Termination, you will certify to
+NVIDIA in writing that the original and all stand-alone copies, in whole
+or in part, of the NVIDIA GameWorks SDK have been destroyed. Upon
+Partial Termination, you may continue to distribute any Application that
+has been commercially released prior to such termination subject to
+prospective compliance with this Agreement. Upon any other termination,
+you will certify to NVIDIA in writing that the original and all copies,
+in whole or in part, of the NVIDIA GameWorks SDK have been destroyed,
+including those portions contained within any unshipped Applications.
+
+11. Governing Law. This Agreement will be governed by the laws of the
+United States of America to the extent that they apply and otherwise by
+the laws of the State of Delaware notwithstanding the application of any
+conflicts of law rules. Exclusive venue over all disputes arising under
+or relating to this Agreement shall be in the federal or state courts of
+Santa Clara County, California. .
+
+12. Export. You agree and certify that no portion of the NVIDIA
+GameWorks SDK nor any other technical data received from NVIDIA will be
+exported outside the United States except as authorized and as permitted
+by the laws and regulations of the United States. If you have rightfully
+obtained the NVIDIA GameWorks SDK outside of the United States, you
+agree that you will not re-export any portion of the NVIDIA GameWorks
+SDK nor any other technical data received from NVIDIA, except as
+permitted by the laws and regulations of the United States and the laws
+and regulations of the jurisdiction in which you obtained the NVIDIA
+GameWorks SDK.
+
+13. Assignment. You may not sublicense, assign or transfer this
+Agreement or the NVIDIA GameWorks SDK except as expressly provided in
+this Agreement. Any attempt to otherwise sublicense, assign or transfer
+any of the rights, duties or obligations hereunder is null and void.
+
+14. Survival. The parties agree that where the context of any provision
+indicates an intent that it will survive the term of this Agreement,
+then it will survive. All terms of this Agreement survive Partial
+Termination except Sections 2(a) and (b).
+
+15. Entire Agreement. This Agreement contains the parties’ entire
+agreement regarding your use
+of the NVIDIA GameWorks SDK and may be amended only in writing signed by
+both parties. Copyright © 2014 NVIDIA Corporation. All rights reserved.
+
+US AND INTERNATIONAL PATENTS PENDING.
diff --git a/docs/GhostingEverywhere.jpg b/docs/GhostingEverywhere.jpg
new file mode 100644
index 0000000..8e9313f
--- /dev/null
+++ b/docs/GhostingEverywhere.jpg
Binary files differ
diff --git a/docs/ImageAcne.jpg b/docs/ImageAcne.jpg
new file mode 100644
index 0000000..904b244
--- /dev/null
+++ b/docs/ImageAcne.jpg
Binary files differ
diff --git a/docs/ImageWithoutAcne.jpg b/docs/ImageWithoutAcne.jpg
new file mode 100644
index 0000000..a7a2ab6
--- /dev/null
+++ b/docs/ImageWithoutAcne.jpg
Binary files differ
diff --git a/docs/NvCameraConfiguration.exe_screen.png b/docs/NvCameraConfiguration.exe_screen.png
new file mode 100644
index 0000000..a96ad64
--- /dev/null
+++ b/docs/NvCameraConfiguration.exe_screen.png
Binary files differ
diff --git a/docs/ScreenSpaceReflections.jpg b/docs/ScreenSpaceReflections.jpg
new file mode 100644
index 0000000..8fec9bc
--- /dev/null
+++ b/docs/ScreenSpaceReflections.jpg
Binary files differ
diff --git a/docs/ScreenSpaceReflectionsReduced.jpg b/docs/ScreenSpaceReflectionsReduced.jpg
new file mode 100644
index 0000000..a69aadc
--- /dev/null
+++ b/docs/ScreenSpaceReflectionsReduced.jpg
Binary files differ
diff --git a/docs/StreakyReflections.jpg b/docs/StreakyReflections.jpg
new file mode 100644
index 0000000..1fb5fd1
--- /dev/null
+++ b/docs/StreakyReflections.jpg
Binary files differ
diff --git a/include/AnselSDK.h b/include/AnselSDK.h
new file mode 100644
index 0000000..ddf5197
--- /dev/null
+++ b/include/AnselSDK.h
@@ -0,0 +1,33 @@
+// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and related documentation and
+// any modifications thereto. Any use, reproduction, disclosure, or
+// distribution of this software and related documentation without an express
+// license agreement from NVIDIA Corporation is strictly prohibited.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright 2015 NVIDIA Corporation. All rights reserved.
+
+#pragma once
+
+#include <ansel/Configuration.h>
+#include <ansel/Session.h>
+#include <ansel/Camera.h>
+#include <ansel/Hints.h>
diff --git a/include/ansel/Camera.h b/include/ansel/Camera.h
new file mode 100644
index 0000000..cdd3d9f
--- /dev/null
+++ b/include/ansel/Camera.h
@@ -0,0 +1,63 @@
+// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and related documentation and
+// any modifications thereto. Any use, reproduction, disclosure, or
+// distribution of this software and related documentation without an express
+// license agreement from NVIDIA Corporation is strictly prohibited.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright 2015 NVIDIA Corporation. All rights reserved.
+
+#pragma once
+#include <ansel/Defines.h>
+#include <nv/Vec3.h>
+#include <nv/Quat.h>
+
+namespace ansel
+{
+ struct Camera
+ {
+ // Position of camera, in the game's coordinate space
+ nv::Vec3 position;
+ // Rotation of the camera, in the game's coordinate space. I.e. if you apply this
+ // rotation to the default orientation of the game's camera you will get the current
+ // orientation of the camera (again, in game's coordinate space)
+ nv::Quat rotation;
+ // Field of view in degrees. This value is either vertical or horizontal field of
+ // view based on the 'fovType' setting passed in with setConfiguration.
+ float fov;
+ // The amount that the projection matrix needs to be offset by. These values are
+ // applied directly as translations to the projection matrix. These values are only
+ // non-zero during Highres capture.
+ float projectionOffsetX, projectionOffsetY;
+ };
+
+ // Must be called on every frame an Ansel session is active. The 'camera' must contain
+ // the current display camera settings when called. After calling 'camera' will contain the
+ // new requested camera from Ansel.
+ ANSEL_SDK_API void updateCamera(Camera& camera);
+
+ // Converts quaternion to rotation matrix vectors.
+ ANSEL_SDK_API void quaternionToRotationMatrixVectors(const nv::Quat& q, nv::Vec3& right, nv::Vec3& up, nv::Vec3& forward);
+
+ // Converts rotation matrix vectors to quaternion.
+ ANSEL_SDK_API void rotationMatrixVectorsToQuaternion(const nv::Vec3& right, const nv::Vec3& up, const nv::Vec3& forward, nv::Quat& q);
+}
+
diff --git a/include/ansel/Configuration.h b/include/ansel/Configuration.h
new file mode 100644
index 0000000..e172e57
--- /dev/null
+++ b/include/ansel/Configuration.h
@@ -0,0 +1,180 @@
+// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and related documentation and
+// any modifications thereto. Any use, reproduction, disclosure, or
+// distribution of this software and related documentation without an express
+// license agreement from NVIDIA Corporation is strictly prohibited.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright 2015 NVIDIA Corporation. All rights reserved.
+
+#pragma once
+#include <ansel/Defines.h>
+#include <ansel/Session.h>
+#include <ansel/Version.h>
+#include <nv/Vec3.h>
+#include <stdint.h>
+
+namespace ansel
+{
+ enum SetConfigurationStatus
+ {
+ // successfully initialized the Ansel SDK
+ kSetConfigurationSuccess,
+ // the version provided in the Configuration structure is not the same as the one stored inside the SDK binary (header/binary mismatch)
+ kSetConfigurationIncompatibleVersion,
+ // the Configuration structure supplied for the setConfiguration call is not consistent
+ kSetConfigurationIncorrectConfiguration,
+ // the Ansel SDK is delay loaded and setConfiguration is called before the SDK is actually loaded
+ kSetConfigurationSdkNotLoaded
+ };
+
+ enum FovType
+ {
+ kHorizontalFov,
+ kVerticalFov
+ };
+
+ struct Configuration
+ {
+ // Basis vectors used by the game. They specify the handedness and orientation of
+ // the game's coordinate system. Think of them as the default orientation of the game
+ // camera.
+ nv::Vec3 right, up, forward;
+ // The speed at which camera moves in the world
+ float translationalSpeedInWorldUnitsPerSecond;
+ // The speed at which camera rotates
+ float rotationalSpeedInDegreesPerSecond;
+ // How many frames it takes for camera update to be reflected in a rendered frame
+ uint32_t captureLatency;
+ // How many frames we must wait for a new frame to settle - i.e. temporal AA and similar
+ // effects to stabilize after the camera has been adjusted
+ uint32_t captureSettleLatency;
+ // Game scale, the size of a world unit measured in meters
+ float metersInWorldUnit;
+ // Integration will support Camera::screenOriginXOffset/screenOriginYOffset
+ bool isCameraOffcenteredProjectionSupported;
+ // Integration will support Camera::position
+ bool isCameraTranslationSupported;
+ // Integration will support Camera::rotation
+ bool isCameraRotationSupported;
+ // Integration will support Camera::horizontalFov
+ bool isCameraFovSupported;
+ // Game name, in utf8 encoding, used to name the resulting image files from capturing.
+ // It is not mandatory to set this field. The name chosen is based on the following
+ // selection order:
+ // 1. If GeForce profile exists for the game that name will be used
+ // 2. If 'titleNameUtf8' is set that will be used
+ // 3. The executable name is used as a last resort
+ const char* titleNameUtf8;
+ // Camera structure will contain vertical FOV if this is set to kVerticalFov
+ // but horizontal FOV if this is set to kHorizontalFov. To simplify integration set
+ // this to the same orientation as the game is using.
+ FovType fovType;
+
+ // These callbacks will be called on the same thread Present()/glSwapBuffers is called
+ // The thread calling to updateCamera() might be a different thread
+
+ // User defined pointer which is then passed to all the callbacks (nullptr by default)
+ void* userPointer;
+
+ // The window handle for the game/application where input messages are processed
+ void* gameWindowHandle;
+
+ // Called when user activates Ansel. Return false if the game cannot comply with the
+ // request. If the function returns true the following must be done:
+ // 1. Change the SessionConfigruation settings, but only where you need to (the object
+ // is already populated with default settings).
+ // 2. On the next update loop the game will be in an Ansel session. This requires the game
+ // to
+ // a) stop drawing any UI or HUD related elements
+ // b) pause the simulation (if possible)
+ // c) call ansel::updateCamera and perform associated processing
+ // 3. Step 2 is repeated on every iteration of update loop until Session is stopped.
+ StartSessionCallback startSessionCallback;
+
+ // Called when Ansel is deactivated. This call will only be made if the previous call
+ // to the startSessionCallback returned true.
+ // Normally games will use this callback to restore their camera to the settings it had
+ // when the Ansel session was started.
+ StopSessionCallback stopSessionCallback;
+
+ // Called when the capture of a multipart shot (highres, 360, etc) has started.
+ // Handy to disable those fullscreen effects that aren't uniform (like vignette)
+ // This callback is optional (leave nullptr if not needed)
+ StartCaptureCallback startCaptureCallback;
+ // Called when the capture of a multipart shot (highres, 360, etc) has stopped.
+ // Handy to enable those fullscreen effects that were disabled by startCaptureCallback.
+ // This callback is optional (leave nullptr if not needed)
+ StopCaptureCallback stopCaptureCallback;
+ // Integration allows a filter/effect to remain active when the Ansel session is not active
+ bool isFilterOutsideSessionAllowed;
+ // The 'isExrSupported' setting has been phased out in version 1.1 of the SDK. Use
+ // 'isRawAllowed' setting in SessionConfiguration to enable/disable captures into EXR
+ // format.
+ bool unused1;
+ // Holds the sdk version, doesn't require modifications
+ uint64_t sdkVersion;
+
+ Configuration()
+ {
+ right.x = 0.0f;
+ right.y = 1.0f;
+ right.z = 0.0f;
+ up.x = 0.0f;
+ up.y = 0.0f;
+ up.z = 1.0f;
+ forward.x = 1.0f;
+ forward.y = 0.0f;
+ forward.z = 0.0f;
+ translationalSpeedInWorldUnitsPerSecond = 1.0f;
+ rotationalSpeedInDegreesPerSecond = 45.0f;
+ captureLatency = 1;
+ captureSettleLatency = 0;
+ metersInWorldUnit = 1.0f;
+ isCameraOffcenteredProjectionSupported = true;
+ isCameraTranslationSupported = true;
+ isCameraRotationSupported = true;
+ isCameraFovSupported = true;
+ titleNameUtf8 = nullptr;
+ fovType = kHorizontalFov;
+ userPointer = nullptr;
+ gameWindowHandle = 0;
+ startSessionCallback = nullptr;
+ stopSessionCallback = nullptr;
+ startCaptureCallback = nullptr;
+ stopCaptureCallback = nullptr;
+ isFilterOutsideSessionAllowed = true;
+ unused1 = false;
+ sdkVersion = ANSEL_SDK_VERSION;
+ }
+ };
+
+ // Called during startup by the game. See 'Configuration' for further documentation.
+ ANSEL_SDK_API SetConfigurationStatus setConfiguration(const Configuration& cfg);
+
+ // Can be called *after* D3D device has been created to see if Ansel is available.
+ // If called prior to D3D device creation it will always return false.
+ // Can be called *before* calling setConfiguration in which case it'll return true if Ansel is potentially available, otherwise false.
+ // If setConfiguration fails for any reason this function will return false (even if Ansel would be available otherwise)
+ // until a successfull call to setConfiguration has been made.
+ ANSEL_SDK_API bool isAnselAvailable();
+}
+
diff --git a/include/ansel/Defines.h b/include/ansel/Defines.h
new file mode 100644
index 0000000..56e76bc
--- /dev/null
+++ b/include/ansel/Defines.h
@@ -0,0 +1,39 @@
+// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and related documentation and
+// any modifications thereto. Any use, reproduction, disclosure, or
+// distribution of this software and related documentation without an express
+// license agreement from NVIDIA Corporation is strictly prohibited.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright 2015 NVIDIA Corporation. All rights reserved.
+
+#pragma once
+
+#ifdef ANSEL_SDK_EXPORTS
+ #define ANSEL_SDK_API extern "C" __declspec(dllexport)
+ #define ANSEL_SDK_CLASS_API __declspec(dllexport)
+#elif !defined(ANSEL_SDK_DELAYLOAD)
+ #define ANSEL_SDK_API extern "C" __declspec(dllimport)
+ #define ANSEL_SDK_CLASS_API __declspec(dllimport)
+#else
+ #define ANSEL_SDK_API
+ #define ANSEL_SDK_CLASS_API
+#endif
diff --git a/include/ansel/Hints.h b/include/ansel/Hints.h
new file mode 100644
index 0000000..81068a7
--- /dev/null
+++ b/include/ansel/Hints.h
@@ -0,0 +1,67 @@
+// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and related documentation and
+// any modifications thereto. Any use, reproduction, disclosure, or
+// distribution of this software and related documentation without an express
+// license agreement from NVIDIA Corporation is strictly prohibited.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright 2015 NVIDIA Corporation. All rights reserved.
+
+#pragma once
+#include <cstdint>
+#include <ansel/Defines.h>
+
+namespace ansel
+{
+ enum HintType
+ {
+ kHintTypePreBind,
+ kHintTypePostBind
+ };
+
+ enum HintThreadingBehaviour
+ {
+ kThreadingBehaviourMatchAutomatic = 0,
+ kThreadingBehaviourNoMatching = 0xFFFFFFFFFFFFFFFFull
+ };
+
+ // Call this right before setting HDR render target active
+ // hintType is an optional argument specifying what type of hint is this -
+ // it could be called after or before the bind of a buffer that this hint marks.
+ // The default option is kHintTypePreBind, which means the hint should be called before
+ // the render target is bound.
+ // threadId is an optional argument allowing Ansel to match the thread which calls
+ // SetRenderTarget (or analogous function, since this is graphics API dependent)
+ // to the thread which called the hint. The default value of kNoMatching
+ // means that no such matching is going to happen. The special value of 0 means that
+ // Ansel SDK is going to match thread ids automatically. Any other value means a specific thread id
+ // known at integration side.
+ ANSEL_SDK_API void markHdrBufferBind(HintType hintType = kHintTypePreBind, uint64_t threadId = kThreadingBehaviourNoMatching);
+ // Call this right after the last draw call into the HDR render target
+ // threadId is an optional argument allowing Ansel to match the thread which calls
+ // SetRenderTarget (or analogous function, since this is graphics API dependent)
+ // to the thread which called the hint. The default value of kNoMatching
+ // means that no such matching is going to happen. The special value of 0 means that
+ // Ansel SDK is going to match thread ids automatically. Any other value means a specific thread id
+ // known at integration side.
+ ANSEL_SDK_API void markHdrBufferFinished(uint64_t threadId = kThreadingBehaviourNoMatching);
+}
+
diff --git a/include/ansel/Session.h b/include/ansel/Session.h
new file mode 100644
index 0000000..53520e4
--- /dev/null
+++ b/include/ansel/Session.h
@@ -0,0 +1,105 @@
+// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and related documentation and
+// any modifications thereto. Any use, reproduction, disclosure, or
+// distribution of this software and related documentation without an express
+// license agreement from NVIDIA Corporation is strictly prohibited.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright 2015 NVIDIA Corporation. All rights reserved.
+
+#pragma once
+#include <ansel/Defines.h>
+
+namespace ansel
+{
+ struct SessionConfiguration
+ {
+ // User can move the camera during session
+ bool isTranslationAllowed;
+ // Camera can be rotated during session
+ bool isRotationAllowed;
+ // FoV can be modified during session
+ bool isFovChangeAllowed;
+ // Game is paused during session
+ bool isPauseAllowed;
+ // Game allows highres capture during session
+ bool isHighresAllowed;
+ // Game allows 360 capture during session
+ bool is360MonoAllowed;
+ // Game allows 360 stereo capture during session
+ bool is360StereoAllowed;
+ // Game allows capturing pre-tonemapping raw HDR buffer
+ bool isRawAllowed;
+ // The speed at which camera moves in the world, initialized with a value given in Configuration
+ float translationalSpeedInWorldUnitsPerSecond;
+ // The speed at which camera rotates, initialized with a value given in Configuration
+ float rotationalSpeedInDegreesPerSecond;
+
+ SessionConfiguration()
+ {
+ isTranslationAllowed = true;
+ isRotationAllowed = true;
+ isFovChangeAllowed = true;
+ isPauseAllowed = true;
+ isHighresAllowed = true;
+ is360MonoAllowed = true;
+ is360StereoAllowed = true;
+ isRawAllowed = true;
+ }
+ };
+
+ enum StartSessionStatus
+ {
+ kDisallowed = 0,
+ kAllowed
+ };
+
+ enum CaptureType
+ {
+ kCaptureType360Mono = 0,
+ kCaptureType360Stereo,
+ kCaptureTypeSuperResolution,
+ kCaptureTypeStereo
+ };
+
+ struct CaptureConfiguration
+ {
+ CaptureType captureType;
+ };
+
+ typedef StartSessionStatus(*StartSessionCallback)(SessionConfiguration& settings, void* userPointer);
+ typedef void(*StopSessionCallback)(void* userPointer);
+ typedef void(*StartCaptureCallback)(const CaptureConfiguration&, void* userPointer);
+ typedef void(*StopCaptureCallback)(void* userPointer);
+
+ // Starts a session if there is not one already active. This function can be used to trigger
+ // Ansel via any method that the game chooses (key combination, controller input, etc)
+ ANSEL_SDK_API void startSession();
+
+ // Stops current session if there is one active. This function needs to be used if the
+ // startSession function was used to implement custom activation method. The same custom
+ // activation method needs to used to deactivate Ansel. If for instance left-stick pressed
+ // was used for startSession then the same should be used for stopping the Ansel session.
+ // This function can also be used if Ansel session needs to be interrupted
+ // (for instance an online game where connection loss is experienced and needs to be
+ // reported).
+ ANSEL_SDK_API void stopSession();
+} \ No newline at end of file
diff --git a/include/ansel/Version.h b/include/ansel/Version.h
new file mode 100644
index 0000000..27f9d2b
--- /dev/null
+++ b/include/ansel/Version.h
@@ -0,0 +1,52 @@
+// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and related documentation and
+// any modifications thereto. Any use, reproduction, disclosure, or
+// distribution of this software and related documentation without an express
+// license agreement from NVIDIA Corporation is strictly prohibited.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright 2016 NVIDIA Corporation. All rights reserved.
+
+#pragma once
+
+// These are the version numbers used to version the API between Ansel SDK and the driver.
+// The driver provides backwards compatibility to all MINOR versions that are equal or lower
+// but requires matching MAJOR version. This effectively means that MAJOR version number will *not*
+// change because this would mean that a newer driver would stop supporting older Ansel SDKs.
+// The driver does however not provide forwards compatibility, i.e. when a new interface or change
+// in behavior is introduced between Ansel SDK and the driver the MINOR version is incremented. This
+// means that new driver supporting this new MINOR version is required. To track this relationship
+// we use the MINIMUM_DRIVER_VERSION define. When you increment MINOR version you need to adjust the
+// MINIMUM_DRIVER_VERSION as well. While a public driver hasn't been finalized use our internal
+// release tags to identify it (like 378.GA2).
+#define ANSEL_SDK_PRODUCT_VERSION_MAJOR 1
+#define ANSEL_SDK_PRODUCT_VERSION_MINOR 1
+#define ANSEL_SDK_MINIMUM_DRIVER_VERSION "378.49"
+
+// The lines below are automatically updated by build agents. Please don't touch.
+// The BUILD_NUMBER and COMMIT_HASH are useful in uniquely identifying a build of the Ansel SDK.
+// Changes to the customer facing API can be tracked with these since they are automatically
+// updated every time a change is made.
+#define ANSEL_SDK_BUILD_NUMBER 1027
+#define ANSEL_SDK_COMMIT_HASH 0x6e9b4e3a
+
+#define ANSEL_SDK_VERSION ( uint64_t(ANSEL_SDK_PRODUCT_VERSION_MAJOR) << 48 | uint64_t(ANSEL_SDK_PRODUCT_VERSION_MINOR) << 32 \
+ | ANSEL_SDK_COMMIT_HASH )
diff --git a/include/nv/Quat.h b/include/nv/Quat.h
new file mode 100644
index 0000000..94a4b44
--- /dev/null
+++ b/include/nv/Quat.h
@@ -0,0 +1,10 @@
+#pragma once
+
+namespace nv
+{
+ struct Quat
+ {
+ float x, y, z, w;
+ };
+}
+
diff --git a/include/nv/Vec3.h b/include/nv/Vec3.h
new file mode 100644
index 0000000..e7e7d86
--- /dev/null
+++ b/include/nv/Vec3.h
@@ -0,0 +1,12 @@
+#pragma once
+
+namespace nv
+{
+
+struct Vec3
+{
+ float x, y, z;
+};
+
+
+} // end of nv namspace \ No newline at end of file
diff --git a/samples/AnselSDKDelayLoader/AnselSDKDelayLoader.vcxproj b/samples/AnselSDKDelayLoader/AnselSDKDelayLoader.vcxproj
new file mode 100644
index 0000000..bd22385
--- /dev/null
+++ b/samples/AnselSDKDelayLoader/AnselSDKDelayLoader.vcxproj
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="source\DelayLoader.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="source\DelayLoader.h" />
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{396213D4-2D38-497D-A4F0-530E7B136874}</ProjectGuid>
+ <Keyword>Win32Proj</Keyword>
+ <RootNamespace>AnselSDK</RootNamespace>
+ <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ <ProjectName>AnselSDKDelayLoader</ProjectName>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LinkIncremental>true</LinkIncremental>
+ <OutDir>lib\$(Platform)\</OutDir>
+ <IntDir>intermediate\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
+ <PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
+ <TargetExt>.lib</TargetExt>
+ <TargetName>$(ProjectName)32d</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>true</LinkIncremental>
+ <OutDir>lib\$(Platform)\</OutDir>
+ <IntDir>intermediate\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
+ <PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
+ <TargetExt>.lib</TargetExt>
+ <TargetName>$(ProjectName)64d</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>lib\$(Platform)\</OutDir>
+ <IntDir>intermediate\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
+ <PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
+ <TargetExt>.lib</TargetExt>
+ <TargetName>$(ProjectName)32</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>lib\$(Platform)\</OutDir>
+ <IntDir>intermediate\$(TargetName)\$(Platform)\$(Configuration)\</IntDir>
+ <PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
+ <TargetExt>.lib</TargetExt>
+ <TargetName>$(ProjectName)64</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>../../include;source</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <DisableSpecificWarnings>4350;4514;4625;4626;4710;4711;4820;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <SmallerTypeCheck>false</SmallerTypeCheck>
+ <SDLCheck>true</SDLCheck>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ImportLibrary>lib\$(Platform)\$(TargetName).lib</ImportLibrary>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>../../include;source</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <DisableSpecificWarnings>4350;4514;4625;4626;4710;4711;4820;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <SmallerTypeCheck>false</SmallerTypeCheck>
+ <SDLCheck>true</SDLCheck>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ImportLibrary>lib\$(Platform)\$(TargetName).lib</ImportLibrary>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>../../include;source</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <DisableSpecificWarnings>4350;4514;4625;4626;4710;4711;4820;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <SmallerTypeCheck>false</SmallerTypeCheck>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <SDLCheck>true</SDLCheck>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <ImportLibrary>lib\$(Platform)\$(TargetName).lib</ImportLibrary>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>../../include;source</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <DisableSpecificWarnings>4350;4514;4625;4626;4710;4711;4820;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ <ExceptionHandling>Async</ExceptionHandling>
+ <SmallerTypeCheck>false</SmallerTypeCheck>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <SDLCheck>true</SDLCheck>
+ <ControlFlowGuard>Guard</ControlFlowGuard>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ </ClCompile>
+ <Link>
+ <SubSystem>Windows</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <ImportLibrary>lib\$(Platform)\$(TargetName).lib</ImportLibrary>
+ </Link>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/samples/AnselSDKDelayLoader/AnselSDKDelayLoader.vcxproj.filters b/samples/AnselSDKDelayLoader/AnselSDKDelayLoader.vcxproj.filters
new file mode 100644
index 0000000..02614af
--- /dev/null
+++ b/samples/AnselSDKDelayLoader/AnselSDKDelayLoader.vcxproj.filters
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>h;hpp;cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="source\DelayLoader.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="source\DelayLoader.h">
+ <Filter>Source Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/samples/AnselSDKDelayLoader/source/DelayLoader.cpp b/samples/AnselSDKDelayLoader/source/DelayLoader.cpp
new file mode 100644
index 0000000..6b837fb
--- /dev/null
+++ b/samples/AnselSDKDelayLoader/source/DelayLoader.cpp
@@ -0,0 +1,281 @@
+// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and related documentation and
+// any modifications thereto. Any use, reproduction, disclosure, or
+// distribution of this software and related documentation without an express
+// license agreement from NVIDIA Corporation is strictly prohibited.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright 2016 NVIDIA Corporation. All rights reserved.
+
+
+#define ANSEL_SDK_DELAYLOAD
+#include "DelayLoader.h"
+#include <ansel/Camera.h>
+#include <ansel/Hints.h>
+#include <ansel/Configuration.h>
+#include <cmath>
+#include <Windows.h>
+#include <stdio.h>
+#include <codecvt>
+
+
+namespace
+{
+ HMODULE anselSDK = NULL;
+}
+
+namespace ansel
+{
+ namespace
+ {
+ typedef SetConfigurationStatus(__cdecl *PFNSETCONFIGURATION)(const Configuration& cfg);
+ typedef void(__cdecl *PFNUPDATECAMERA)(Camera& camera);
+ typedef void(__cdecl *PFNSESSIONFUNC)();
+ typedef bool(__cdecl *PFNISANSELAVAILABLE)();
+ typedef void(__cdecl *PFNMARKHDRBUFFERBIND)(HintType, uint64_t);
+ typedef void(__cdecl *PFNMARKHDRBUFFERFINISHED)(uint64_t);
+ PFNMARKHDRBUFFERFINISHED markHdrBufferFinishedFunc = nullptr;
+ PFNMARKHDRBUFFERBIND markHdrBufferBindFunc = nullptr;
+ PFNSESSIONFUNC stopSessionFunc = nullptr;
+ PFNSESSIONFUNC startSessionFunc = nullptr;
+ PFNUPDATECAMERA updateCameraFunc = nullptr;
+ PFNSETCONFIGURATION setConfigurationFunc = nullptr;
+
+ DelayLoadStatus resolveFunctionPointers()
+ {
+ if (anselSDK == NULL)
+ return kDelayLoadDllNotFound;
+
+ setConfigurationFunc = reinterpret_cast<PFNSETCONFIGURATION>(GetProcAddress(anselSDK, "setConfiguration"));
+ stopSessionFunc = reinterpret_cast<PFNSESSIONFUNC>(GetProcAddress(anselSDK, "stopSession"));
+ startSessionFunc = reinterpret_cast<PFNSESSIONFUNC>(GetProcAddress(anselSDK, "startSession"));
+ updateCameraFunc = reinterpret_cast<PFNUPDATECAMERA>(GetProcAddress(anselSDK, "updateCamera"));
+ markHdrBufferBindFunc = reinterpret_cast<PFNMARKHDRBUFFERBIND>(GetProcAddress(anselSDK, "markHdrBufferBind"));
+ markHdrBufferFinishedFunc = reinterpret_cast<PFNMARKHDRBUFFERFINISHED>(GetProcAddress(anselSDK, "markHdrBufferFinished"));
+
+ if (setConfigurationFunc == nullptr ||
+ stopSessionFunc == nullptr ||
+ startSessionFunc == nullptr ||
+ updateCameraFunc == nullptr ||
+ markHdrBufferBindFunc == nullptr ||
+ markHdrBufferFinishedFunc == nullptr)
+ return kDelayLoadIncompatibleVersion;
+
+ return kDelayLoadOk;
+ }
+
+ void makeQuaternionFromRotationMatrix(nv::Quat& q, const float r[3][3])
+ {
+ float trace = r[0][0] + r[1][1] + r[2][2];
+
+ if (trace > 0.0f) {
+ // |w| > 1/2, may as well choose w > 1/2
+ float s = sqrtf(trace + 1.0f); // 2w
+
+ q.w = s * 0.5f;
+ s = 0.5f / s; // 1/(4w)
+
+ q.x = (r[2][1] - r[1][2]) * s;
+ q.y = (r[0][2] - r[2][0]) * s;
+ q.z = (r[1][0] - r[0][1]) * s;
+ }
+ else {
+ // |w| <= 1/2
+ int i = 0;
+ if (r[1][1] > r[0][0]) i = 1;
+ if (r[2][2] > r[i][i]) i = 2;
+
+ int j = (1 << i) & 3; // i + 1 modulo 3.
+ int k = (1 << j) & 3;
+
+ float s = sqrtf(r[i][i] - r[j][j] - r[k][k] + 1.0f);
+
+ float* component = &q.x;
+ component[i] = s * 0.5f;
+ s = 0.5f / s;
+ component[j] = (r[i][j] + r[j][i]) * s;
+ component[k] = (r[k][i] + r[i][k]) * s;
+ q.w = (r[k][j] - r[j][k]) * s;
+ }
+ }
+
+ void makeRotationMatrixFromQuaternion(float rot[3][3], const nv::Quat& q)
+ {
+ float s = 2.0f;
+
+ float xs = q.x * s;
+ float ys = q.y * s;
+ float zs = q.z * s;
+
+ float wx = q.w * xs;
+ float wy = q.w * ys;
+ float wz = q.w * zs;
+
+ float xx = q.x * xs;
+ float xy = q.x * ys;
+ float xz = q.x * zs;
+
+ float yy = q.y * ys;
+ float yz = q.y * zs;
+ float zz = q.z * zs;
+
+ rot[0][0] = 1.0f - (yy + zz);
+ rot[0][1] = xy - wz;
+ rot[0][2] = xz + wy;
+
+ rot[1][0] = xy + wz;
+ rot[1][1] = 1.0f - (xx + zz);
+ rot[1][2] = yz - wx;
+
+ rot[2][0] = xz - wy;
+ rot[2][1] = yz + wx;
+ rot[2][2] = 1.0f - (xx + yy);
+ }
+
+ // This may seem like a funky construct so allow me to explain. This code serves only
+ // one purpose: to create a signaling object that Ansel (when loaded from driver shim)
+ // can use to detect that a game has integrated the SDK. Note that this same object
+ // will also be created by the SDK DLL when loaded but this is safe since creating
+ // the same mutex again just provides a handle to the already existing mutex.
+ class SdkMutex
+ {
+ public:
+ SdkMutex()
+ {
+ DWORD id = GetCurrentProcessId();
+ char name[MAX_PATH];
+ sprintf_s(name, "NVIDIA/Ansel/%d", id);
+ CreateMutexA(NULL, false, name);
+ }
+ };
+
+ SdkMutex s_mySdkMutex;
+ }
+
+
+ SetConfigurationStatus setConfiguration(const Configuration& config)
+ {
+ if (setConfigurationFunc)
+ return setConfigurationFunc(config);
+ else
+ return kSetConfigurationSdkNotLoaded;
+ }
+
+ void updateCamera(ansel::Camera& cam)
+ {
+ if (updateCameraFunc)
+ updateCameraFunc(cam);
+ }
+
+ void stopSession()
+ {
+ if (stopSessionFunc)
+ stopSessionFunc();
+ }
+
+ void startSession()
+ {
+ if (startSessionFunc)
+ startSessionFunc();
+ }
+
+ bool isAnselAvailable()
+ {
+ // search for NvCamera32/64 DLL in the process
+ const char* moduleName =
+#if _M_AMD64
+ "NvCamera64.dll";
+#else
+ "NvCamera32.dll";
+#endif
+
+ return GetModuleHandleA(moduleName) != nullptr;
+ }
+
+ void markHdrBufferBind(HintType hintType, uint64_t threadId)
+ {
+ if (markHdrBufferBindFunc)
+ markHdrBufferBindFunc(hintType, threadId);
+ }
+
+ void markHdrBufferFinished(uint64_t threadId)
+ {
+ if (markHdrBufferFinishedFunc)
+ markHdrBufferFinishedFunc(threadId);
+ }
+
+ void quaternionToRotationMatrixVectors(const nv::Quat& q, nv::Vec3& right, nv::Vec3& up, nv::Vec3& forward)
+ {
+ float rot[3][3];
+ makeRotationMatrixFromQuaternion(rot, q);
+ right = { rot[0][0], rot[1][0], rot[2][0] };
+ up = { rot[0][1], rot[1][1], rot[2][1] };
+ forward = { rot[0][2], rot[1][2], rot[2][2] };
+ }
+
+ void rotationMatrixVectorsToQuaternion(const nv::Vec3& right, const nv::Vec3& up, const nv::Vec3& forward, nv::Quat& q)
+ {
+ const float rot[3][3] = {
+ { right.x, up.x, forward.x },
+ { right.y, up.y, forward.y },
+ { right.z, up.z, forward.z }
+ };
+ makeQuaternionFromRotationMatrix(q, rot);
+ }
+}
+
+DelayLoadStatus loadAnselSDKLibrary(const char* pathToLibraryUtf8)
+{
+ if (anselSDK == NULL)
+ {
+ if (pathToLibraryUtf8)
+ {
+ // convert from utf8 to wchar_t:
+ std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
+ std::wstring pathWstring = converter.from_bytes(pathToLibraryUtf8);
+ anselSDK = LoadLibraryW(pathWstring.c_str());
+ }
+ else
+ {
+ #if defined(_M_IX86)
+ #define ANSEL_BITNESS "32"
+ #elif defined(_M_AMD64)
+ #define ANSEL_BITNESS "64"
+ #endif
+
+ #if defined(_DEBUG)
+ #define ANSEL_RUNTIME_FLAVOR "d"
+ #else
+ #define ANSEL_RUNTIME_FLAVOR ""
+ #endif
+
+ const char* libName = "AnselSDK" ANSEL_BITNESS ANSEL_RUNTIME_FLAVOR ".dll";
+ anselSDK = LoadLibraryA(libName);
+ }
+
+ if (anselSDK == NULL)
+ return kDelayLoadDllNotFound;
+ else
+ return ansel::resolveFunctionPointers();
+ }
+
+ return kDelayLoadOk;
+}
diff --git a/samples/AnselSDKDelayLoader/source/DelayLoader.h b/samples/AnselSDKDelayLoader/source/DelayLoader.h
new file mode 100644
index 0000000..216261b
--- /dev/null
+++ b/samples/AnselSDKDelayLoader/source/DelayLoader.h
@@ -0,0 +1,41 @@
+// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and related documentation and
+// any modifications thereto. Any use, reproduction, disclosure, or
+// distribution of this software and related documentation without an express
+// license agreement from NVIDIA Corporation is strictly prohibited.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright 2016 NVIDIA Corporation. All rights reserved.
+
+#pragma once
+
+enum DelayLoadStatus
+{
+ kDelayLoadOk = 0,
+ kDelayLoadDllNotFound = -1,
+ kDelayLoadIncompatibleVersion = -2,
+};
+// In order to use delay loading instead of regular linking to a dynamic library
+// define ANSEL_SDK_DELAYLOAD for the project and use this function to explicitly
+// load the library. If you don't specify a path then Win32 LoadLibrary search
+// mechanism is applied. If you do specify a path it should be the full path to
+// the AnselSDK32/64.dll in utf8 encoding.
+DelayLoadStatus loadAnselSDKLibrary(const char* pathToLibraryUtf8 = nullptr);