diff --git a/Assets/NaughtyAttributes-2.1.4.meta b/Assets/NaughtyAttributes-2.1.4.meta new file mode 100644 index 0000000000000000000000000000000000000000..64a93fb73499f7cc211d1cafa503824c1ff1cbfc --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a7d8b68ffa0b2c349821962102f98990 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/AnimatorParam_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/AnimatorParam_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..4448061d619a629f9831ed126059ef78417c65fb Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/AnimatorParam_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/BoxGroup_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/BoxGroup_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..624d4f74b0866b248845663de5b841eb7230b5e4 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/BoxGroup_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/Button_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/Button_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..08ee97979d055baaf8d9d8584324774af9f9c9dd Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/Button_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/CurveRange_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/CurveRange_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..307294e07e9d8ee1bffcde672660c34da7e8475a Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/CurveRange_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/Dropdown_Inspector.gif b/Assets/NaughtyAttributes-2.1.4/Documentation~/Dropdown_Inspector.gif new file mode 100644 index 0000000000000000000000000000000000000000..ffa52526ef071bb9c444edcfe2ce57d7f8e46576 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/Dropdown_Inspector.gif differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/EnableIf_Inspector.gif b/Assets/NaughtyAttributes-2.1.4/Documentation~/EnableIf_Inspector.gif new file mode 100644 index 0000000000000000000000000000000000000000..3855dec5b63dc2c75463ec99b15dffdfc246ae3f Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/EnableIf_Inspector.gif differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/EnumFlags_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/EnumFlags_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..2feaf3125d4f9bf62a57b602656fddc804d8cf1c Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/EnumFlags_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/Expandable_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/Expandable_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..9030cf9d21cc7cf910fc464ac2dd14f7a12a6d73 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/Expandable_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/Foldout_Inspector.gif b/Assets/NaughtyAttributes-2.1.4/Documentation~/Foldout_Inspector.gif new file mode 100644 index 0000000000000000000000000000000000000000..62e71e1878ca0a4274b6bde480780a6e36454917 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/Foldout_Inspector.gif differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/HorizontalLine_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/HorizontalLine_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..8fe89555f1d2f374f84e6df34889ffaff8293459 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/HorizontalLine_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/InfoBox_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/InfoBox_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..02ce4f11f06f2aefcb5d6aa8dcce2b07759f953c Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/InfoBox_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/InputAxis_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/InputAxis_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..239771fa2efaf618e01ec592ea4b511467a28995 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/InputAxis_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/Label_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/Label_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..5fe1f42b97d8ea3d65d8b15b1171f1d46213c8f6 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/Label_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/Layer_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/Layer_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..df58f3dbf99f88b865e784d1d5abe723f4ad1d80 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/Layer_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/MinMaxSlider_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/MinMaxSlider_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..6086b401a3fcf054de4a68fda6af35e57988f32c Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/MinMaxSlider_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/MinValueMaxValue_Inspector.gif b/Assets/NaughtyAttributes-2.1.4/Documentation~/MinValueMaxValue_Inspector.gif new file mode 100644 index 0000000000000000000000000000000000000000..185c9ccd0001cca1f534bf76c03a5baf069eb1cf Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/MinValueMaxValue_Inspector.gif differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/ProgressBar_Inspector.gif b/Assets/NaughtyAttributes-2.1.4/Documentation~/ProgressBar_Inspector.gif new file mode 100644 index 0000000000000000000000000000000000000000..7aada2459a19822b553d649a3908dd9b9d623470 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/ProgressBar_Inspector.gif differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/ProgressBar_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/ProgressBar_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..dbf023b7154c90470400cca76f75c35ffe8bea1b Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/ProgressBar_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/ReadOnly_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/ReadOnly_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..aaad6ae6204d5ed4e46eaee888e02ed56fad4c14 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/ReadOnly_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/ReorderableList_Inspector.gif b/Assets/NaughtyAttributes-2.1.4/Documentation~/ReorderableList_Inspector.gif new file mode 100644 index 0000000000000000000000000000000000000000..bdf80f3a8cf35adc0fb0a3b1ff6f58396a7f9341 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/ReorderableList_Inspector.gif differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/Required_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/Required_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..97e28b83551022c6968392bfc238455d2b66f332 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/Required_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/ResizableTextArea_Inspector.gif b/Assets/NaughtyAttributes-2.1.4/Documentation~/ResizableTextArea_Inspector.gif new file mode 100644 index 0000000000000000000000000000000000000000..414efa73cd0bfac0eb9310465d81f1619a6d7b42 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/ResizableTextArea_Inspector.gif differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/Scene_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/Scene_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..70eaff1e4a9694147d608714ba082a8ef28a4160 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/Scene_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/ShowAssetPreview_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/ShowAssetPreview_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..ebf989ae0331c35a55fb9b24dd54ee5472816fed Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/ShowAssetPreview_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/ShowIf_Inspector.gif b/Assets/NaughtyAttributes-2.1.4/Documentation~/ShowIf_Inspector.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f032caede78a2ed5c060e18bc6ac02f15b74c37 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/ShowIf_Inspector.gif differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/ShowNativeProperty_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/ShowNativeProperty_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..8969c640db9503d4098ac0109d7f91f5b05a9f1c Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/ShowNativeProperty_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/ShowNonSerializedField_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/ShowNonSerializedField_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..a1f3795871d675cba43f6d36fde2f654b9d52e6a Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/ShowNonSerializedField_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/SortingLayer_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/SortingLayer_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..c163b7c930c157ec18d616f4f20f9a29c8170de8 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/SortingLayer_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/Tag_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/Tag_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..31e561f7c0bf140c0a0fa1bf2aa2464e0b94623e Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/Tag_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Documentation~/ValidateInput_Inspector.png b/Assets/NaughtyAttributes-2.1.4/Documentation~/ValidateInput_Inspector.png new file mode 100644 index 0000000000000000000000000000000000000000..084d2039afe992e1604a9a1e8fb75b32429f0ddc Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Documentation~/ValidateInput_Inspector.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/README.html b/Assets/NaughtyAttributes-2.1.4/README.html new file mode 100644 index 0000000000000000000000000000000000000000..d5c88728cfbe46bfcdce92f03bfa6792f990a5de --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/README.html @@ -0,0 +1,1648 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8" /> + <title>README.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> + /*! + * GitHub Light v0.4.1 + * Copyright (c) 2012 - 2017 GitHub, Inc. + * Licensed under MIT (https://github.com/primer/github-syntax-theme-generator/blob/master/LICENSE) + */.pl-c{color:#6a737d}.pl-c1, +.pl-s .pl-v{color:#005cc5}.pl-e, +.pl-en{color:#6f42c1}.pl-smi, +.pl-s .pl-s1{color:#24292e}.pl-ent{color:#22863a}.pl-k{color:#d73a49}.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:#032f62}.pl-v, +.pl-smw{color:#e36209}.pl-bu{color:#b31d28}.pl-ii{color:#fafbfc;background-color:#b31d28}.pl-c2{color:#fafbfc;background-color:#d73a49}.pl-c2::before{content:"^M"}.pl-sr .pl-cce{font-weight:bold;color:#22863a}.pl-ml{color:#735c0f}.pl-mh, +.pl-mh .pl-en, +.pl-ms{font-weight:bold;color:#005cc5}.pl-mi{font-style:italic;color:#24292e}.pl-mb{font-weight:bold;color:#24292e}.pl-md{color:#b31d28;background-color:#ffeef0}.pl-mi1{color:#22863a;background-color:#f0fff4}.pl-mc{color:#e36209;background-color:#ffebda}.pl-mi2{color:#f6f8fa;background-color:#005cc5}.pl-mdr{font-weight:bold;color:#6f42c1}.pl-ba{color:#586069}.pl-sg{color:#959da5}.pl-corl{text-decoration:underline;color:#032f62}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler{background-color:#fff}.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:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;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-fat-cursor-mark{background-color:rgba(20,255,20,0.5);animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@keyframes blink{50%{background-color:transparent}}.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:#00f}.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, .cm-s-default .cm-type{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:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,0.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.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}.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 ::-moz-selection{background-color:transparent}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.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:contextual;font-variant-ligatures:contextual}.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;padding:0.1px}.CodeMirror-rtl pre{direction:rtl}.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-color:#ffa;background-color:rgba(255,255,0,0.4)}.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%}.CodeMirror-merge{position:relative;border:1px solid #ddd;white-space:pre}.CodeMirror-merge, .CodeMirror-merge .CodeMirror{height:350px}.CodeMirror-merge-2pane .CodeMirror-merge-pane{width:47%}.CodeMirror-merge-2pane .CodeMirror-merge-gap{width:6%}.CodeMirror-merge-3pane .CodeMirror-merge-pane{width:31%}.CodeMirror-merge-3pane .CodeMirror-merge-gap{width:3.5%}.CodeMirror-merge-pane{display:inline-block;white-space:normal;vertical-align:top}.CodeMirror-merge-pane-rightmost{position:absolute;right:0px;z-index:1}.CodeMirror-merge-gap{z-index:2;display:inline-block;height:100%;box-sizing:border-box;overflow:hidden;border-left:1px solid #ddd;border-right:1px solid #ddd;position:relative;background:#f8f8f8}.CodeMirror-merge-scrolllock-wrap{position:absolute;bottom:0;left:50%}.CodeMirror-merge-scrolllock{position:relative;left:-50%;cursor:pointer;color:#555;line-height:1}.CodeMirror-merge-scrolllock:after{content:"\21db\00a0\00a0\21da"}.CodeMirror-merge-scrolllock.CodeMirror-merge-scrolllock-enabled:after{content:"\21db\21da"}.CodeMirror-merge-copybuttons-left, .CodeMirror-merge-copybuttons-right{position:absolute;left:0;top:0;right:0;bottom:0;line-height:1}.CodeMirror-merge-copy{position:absolute;cursor:pointer;color:#44c;z-index:3}.CodeMirror-merge-copy-reverse{position:absolute;cursor:pointer;color:#44c}.CodeMirror-merge-copybuttons-left .CodeMirror-merge-copy{left:2px}.CodeMirror-merge-copybuttons-right .CodeMirror-merge-copy{right:2px}.CodeMirror-merge-r-inserted, .CodeMirror-merge-l-inserted{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12MwuCXy3+CWyH8GBgYGJgYkAABZbAQ9ELXurwAAAABJRU5ErkJggg==);background-position:bottom left;background-repeat:repeat-x}.CodeMirror-merge-r-deleted, .CodeMirror-merge-l-deleted{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12M4Kyb2/6yY2H8GBgYGJgYkAABURgPz6Ks7wQAAAABJRU5ErkJggg==);background-position:bottom left;background-repeat:repeat-x}.CodeMirror-merge-r-chunk{background:#ffffe0}.CodeMirror-merge-r-chunk-start{border-top:1px solid #ee8}.CodeMirror-merge-r-chunk-end{border-bottom:1px solid #ee8}.CodeMirror-merge-r-connect{fill:#ffffe0;stroke:#ee8;stroke-width:1px}.CodeMirror-merge-l-chunk{background:#eef}.CodeMirror-merge-l-chunk-start{border-top:1px solid #88e}.CodeMirror-merge-l-chunk-end{border-bottom:1px solid #88e}.CodeMirror-merge-l-connect{fill:#eef;stroke:#88e;stroke-width:1px}.CodeMirror-merge-l-chunk.CodeMirror-merge-r-chunk{background:#dfd}.CodeMirror-merge-l-chunk-start.CodeMirror-merge-r-chunk-start{border-top:1px solid #4e4}.CodeMirror-merge-l-chunk-end.CodeMirror-merge-r-chunk-end{border-bottom:1px solid #4e4}.CodeMirror-merge-collapsed-widget:before{content:"(...)"}.CodeMirror-merge-collapsed-widget{cursor:pointer;color:#88b;background:#eef;border:1px solid #ddf;font-size:90%;padding:0 3px;border-radius:4px}.CodeMirror-merge-collapsed-line .CodeMirror-gutter-elt{display:none} + +/*! + * GitHub Light v0.4.2 + * Copyright (c) 2012 - 2017 GitHub, Inc. + * Licensed under MIT (https://github.com/primer/github-syntax-theme-generator/blob/master/LICENSE) + */.cm-s-github-light.CodeMirror{background:#fff;color:#24292e}.cm-s-github-light .CodeMirror-gutters{background:#fff;border-right-width:0}.cm-s-github-light .CodeMirror-guttermarker{color:#fff}.cm-s-github-light .CodeMirror-guttermarker-subtle{color:#d0d0d0}.cm-s-github-light .CodeMirror-linenumber{color:#959da5;padding:0 16px 0 16px}.cm-s-github-light .CodeMirror-cursor{border-left:1px solid #24292e}.cm-s-github-light div.CodeMirror-selected, +.cm-s-github-light .CodeMirror-line::-moz-selection, +.cm-s-github-light .CodeMirror-line > span::-moz-selection, +.cm-s-github-light .CodeMirror-line > span > span::-moz-selection, +.cm-s-github-light .CodeMirror-line::-moz-selection, +.cm-s-github-light .CodeMirror-line > span::-moz-selection, +.cm-s-github-light .CodeMirror-line > span > span::-moz-selection{background:#c8c8fa}.cm-s-github-light div.CodeMirror-selected, +.cm-s-github-light .CodeMirror-line::selection, +.cm-s-github-light .CodeMirror-line > span::selection, +.cm-s-github-light .CodeMirror-line > span > span::selection, +.cm-s-github-light .CodeMirror-line::-moz-selection, +.cm-s-github-light .CodeMirror-line > span::-moz-selection, +.cm-s-github-light .CodeMirror-line > span > span::-moz-selection{background:#c8c8fa}.cm-s-github-light .CodeMirror-activeline-background{background:#fafbfc}.cm-s-github-light .CodeMirror-matchingbracket{text-decoration:underline;color:#24292e!important}.cm-s-github-light .CodeMirror-lines{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px;background:#fff;line-height:1.5}.cm-s-github-light .cm-comment{color:#6a737d}.cm-s-github-light .cm-constant{color:#005cc5}.cm-s-github-light .cm-entity{font-weight:normal;font-style:normal;text-decoration:none;color:#6f42c1}.cm-s-github-light .cm-keyword{font-weight:normal;font-style:normal;text-decoration:none;color:#d73a49}.cm-s-github-light .cm-storage{color:#d73a49}.cm-s-github-light .cm-string{font-weight:normal;font-style:normal;text-decoration:none;color:#032f62}.cm-s-github-light .cm-support{font-weight:normal;font-style:normal;text-decoration:none;color:#005cc5}.cm-s-github-light .cm-variable{font-weight:normal;font-style:normal;text-decoration:none;color:#e36209}details-dialog{position:fixed;margin:10vh auto;top:0;left:50%;transform:translateX(-50%);z-index:999;max-height:80vh;max-width:90vw;width:448px}.octicon{display:inline-block;vertical-align:text-top;fill:currentColor}body.intent-mouse [role="button"]:focus, +body.intent-mouse button:focus, +body.intent-mouse summary:focus{outline:none}.CodeMirror{height:calc(100vh - 1px)}.file-editor-textarea{width:100%;padding:5px 4px;font:12px "SFMono-Regular",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:600}.container-preview.template-editor .commit-create, +.container-preview.template-editor .file-actions{display:block}.container-preview.template-editor .show-code, +.container-preview.template-editor .commit-preview, +.container-preview.template-editor .loading-preview-msg, +.container-preview.template-editor .no-changes-preview-msg, +.container-preview.template-editor .error-preview-msg{display:none}.container-preview.render-editor .commit-create, +.container-preview.render-editor .file-actions{display:block}.container-preview.render-editor .template-editor, +.container-preview.render-editor .show-code, +.container-preview.render-editor .commit-preview, +.container-preview.render-editor .loading-preview-msg, +.container-preview.render-editor .no-changes-preview-msg, +.container-preview.render-editor .error-preview-msg{display:none}.container-preview.show-code .commit-create, +.container-preview.show-code .file-actions{display:block}.container-preview.show-code .template-editor, +.container-preview.show-code .render-editor, +.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) .file-actions{display:none}.container-preview.loading-preview .loading-preview-msg{display:block}.container-preview.loading-preview .template-editor, +.container-preview.loading-preview .render-editor, +.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 .template-editor, +.container-preview.show-preview .render-editor, +.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 .template-editor, +.container-preview.no-changes-preview .render-editor, +.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 .template-editor, +.container-preview.error-preview .render-editor, +.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}.CodeMirror-merge-header{height:30px}.CodeMirror-merge-header .CodeMirror-merge-pane{height:30px;line-height:30px}.cm-s-github-light .merge-gutter{width:14px}.conflict-background + .CodeMirror-gutter-wrapper .CodeMirror-linenumber{background-color:#fffbdd}.conflict-gutter-marker{background-color:#fffbdd}.conflict-gutter-marker::after, .conflict-gutter-marker::before{position:absolute;left:-1px;content:"";background-color:#d73a49}.conflict-gutter-marker-start::after, +.conflict-gutter-marker-end::after{width:1px;height:10px}.conflict-gutter-marker-start::before, +.conflict-gutter-marker-middle::before, +.conflict-gutter-marker-end::before{width:10px;height:1px}.conflict-gutter-marker-start::after{bottom:0}.conflict-gutter-marker-end::after{top:0}.conflict-gutter-marker-start::before{top:7px}.conflict-gutter-marker-end::before{bottom:7px}.conflict-gutter-marker-line::after, +.conflict-gutter-marker-middle::after{width:1px;height:18px}.conflict-gutter-marker-middle::before{top:9px}.form-group .draggable-box{height:20px;opacity:0}.form-group .draggable-box:hover{cursor:move}.form-group .edit-action{opacity:0.6}.form-group .draggable-box-icon{margin-left:-4px}.form-group .form-field-hover{background-color:none;border:1px solid rgba(149,157,165,0)}.form-group:hover{cursor:pointer}.form-group:hover .draggable-box{opacity:0.2}.form-group:hover .edit-action{opacity:0.7}.form-group:hover .form-field-hover{border:1px solid #959da5}.placeholder-box{border:1px solid #959da5}.template-previews{max-width:768px}.template-previews .Box .expand-group{display:none;height:0}.template-previews .Box .dismiss-preview-button{display:none}.template-previews .Box.expand-preview .expand-group{display:block;height:100%;transition:height 3s}.template-previews .Box.expand-preview .preview-button{display:none}.template-previews .Box.expand-preview .dismiss-preview-button{display:inline}.additional-options{display:none}.edit-labels{display:none}.preview-section{display:block}.edit-section{display:none}.Box .section-focus .preview-section{display:none}.Box .section-focus .edit-section{display:block}.user-select-contain{-ms-user-select:element;-ms-user-select:contain;-webkit-user-select:contain;-moz-user-select:contain;user-select:contain}.zeroclipboard-link{padding:0;margin:0;color:#0366d6;cursor:pointer;background:none;border:0}.zeroclipboard-link .octicon{display:block}image-crop{display:block}image-crop.nesw{cursor:nesw-resize}image-crop.nwse{cursor:nwse-resize}image-crop.nesw .crop-box, +image-crop.nwse .crop-box{cursor:inherit}image-crop[loaded] .crop-image{display:block}image-crop[loaded] [data-loading-slot], +image-crop .crop-image{display:none}image-crop .crop-wrapper{position:relative;font-size:0}image-crop .crop-container{user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;position:absolute;overflow:hidden;z-index:1;top:0;width:100%;height:100%}image-crop .crop-box{position:absolute;border:1px dashed #fff;box-sizing:border-box;cursor:move}image-crop .crop-outline{position:absolute;top:0;bottom:0;left:0;right:0;outline:600px solid rgba(0,0,0,0.3)}image-crop .handle{position:absolute}image-crop .handle:before{position:absolute;display:block;padding:4px;transform:translate(-50%,-50%);content:' ';background:#fff;border:1px solid #767676}image-crop .ne{top:0;right:0;cursor:nesw-resize}image-crop .nw{top:0;left:0;cursor:nwse-resize}image-crop .se{bottom:0;right:0;cursor:nwse-resize}image-crop .sw{bottom:0;left:0;cursor:nesw-resize} + +/*! + * Primer-core + * http://primer.github.io + * + * Released under MIT license. Copyright (c) 2018 GitHub Inc. + */ +/*! 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{display:block}summary{display:list-item}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}a:active, +a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;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 silver;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",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:14px;line-height:1.5;color:#24292e;background-color:#fff}a{color:#0366d6;text-decoration:none}a:hover{text-decoration:underline}b, +strong{font-weight:600}hr, +.rule{height:0;margin:15px 0;overflow:hidden;background:transparent;border:0;border-bottom:1px solid #dfe2e5}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;border-radius:0}details summary{cursor:pointer}details:not([open]) > *:not(summary){display:none!important}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:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px}pre{margin-top:0;margin-bottom:0;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px}.octicon{vertical-align:text-bottom}.Box{background-color:#fff;border:1px solid #d1d5da;border-radius:3px}.Box--condensed{line-height:1.25}.Box--condensed .Box-header{padding:8px 16px}.Box--condensed .Box-body{padding:8px 16px}.Box--condensed .Box-footer{padding:8px 16px}.Box--condensed .Box-btn-octicon.btn-octicon{padding:8px 16px;margin:-8px -16px;line-height:1.25}.Box--condensed .Box-row{padding:8px 16px}.Box--spacious .Box-header{padding:24px;line-height:1.25}.Box--spacious .Box-title{font-size:20px}.Box--spacious .Box-body{padding:24px}.Box--spacious .Box-footer{padding:24px}.Box--spacious .Box-btn-octicon.btn-octicon{padding:24px;margin:-24px -24px}.Box--spacious .Box-row{padding:24px}.Box-header{padding:16px;margin:-1px -1px 0 -1px;background-color:#f6f8fa;border-color:#d1d5da;border-style:solid;border-width:1px;border-top-left-radius:3px;border-top-right-radius:3px}.Box-title{font-size:14px;font-weight:600}.Box-body{padding:16px;border-bottom:1px solid #e1e4e8}.Box-body:last-of-type{margin-bottom:-1px;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.Box-row{padding:16px;margin-top:-1px;list-style-type:none;border-top:1px solid #e1e4e8}.Box-row:first-of-type{border-top-color:transparent;border-top-left-radius:2px;border-top-right-radius:2px}.Box-row:last-of-type{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.Box-row.Box-row--unread, .Box-row.unread{box-shadow:2px 0 0 #0366d6 inset}.Box-row.navigation-focus .Box-row--drag-button{color:#0366d6;cursor:-webkit-grab;cursor:grab;opacity:100}.Box-row.navigation-focus.is-dragging .Box-row--drag-button{cursor:-webkit-grabbing;cursor:grabbing}.Box-row.navigation-focus.sortable-chosen{background-color:#fafbfc}.Box-row.navigation-focus.sortable-ghost{background-color:#f6f8fa}.Box-row.navigation-focus.sortable-ghost .Box-row--drag-hide{opacity:0}.Box-row--focus-gray.navigation-focus{background-color:#f6f8fa}.Box-row--focus-blue.navigation-focus{background-color:#f1f8ff}.Box-row--hover-gray:hover{background-color:#f6f8fa}.Box-row--hover-blue:hover{background-color:#f1f8ff}@media (min-width: 768px){.Box-row-link{color:#24292e;text-decoration:none}.Box-row-link:hover{color:#0366d6;text-decoration:none}}.Box-row--drag-button{opacity:0}.Box-footer{padding:16px;margin-top:-1px;border-top:1px solid #e1e4e8}.Box--scrollable{max-height:324px;overflow:scroll}.Box--blue{border-color:#c8e1ff}.Box--blue .Box-header{background-color:#f1f8ff;border-color:#c8e1ff}.Box--blue .Box-body{border-color:#c8e1ff}.Box--blue .Box-row{border-color:#c8e1ff}.Box--blue .Box-footer{border-color:#c8e1ff}.Box--danger{border-color:#d73a49}.Box--danger .Box-row:first-of-type{border-color:#d73a49}.Box--danger .Box-body:last-of-type{border-color:#d73a49}.Box-header--blue{background-color:#f1f8ff;border-color:#c8e1ff}.Box-row--yellow{background-color:#fffbdd}.Box-row--blue{background-color:#f1f8ff}.Box-row--gray{background-color:#f6f8fa}.Box-btn-octicon.btn-octicon{padding:16px 16px;margin:-16px -16px;line-height:1.5}.breadcrumb-item{display:inline-block;margin-left:-0.35em;white-space:nowrap;list-style:none}.breadcrumb-item::after{padding-right:0.5em;padding-left:0.5em;color:#e1e4e8;content:"/"}.breadcrumb-item:first-child{margin-left:0}.breadcrumb-item-selected::after{content:none}.btn{position:relative;display:inline-block;padding:6px 12px;font-size:14px;font-weight:600;line-height:20px;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-repeat:repeat-x;background-position:-1px -1px;background-size:110% 110%;border:1px solid rgba(27,31,35,0.2);border-radius:0.25em;-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn i{font-style:normal;font-weight:500;opacity:0.75}.btn .octicon{vertical-align:text-top}.btn .Counter{color:#586069;text-shadow:none;background-color:rgba(27,31,35,0.1)}.btn:hover{text-decoration:none;background-repeat:repeat-x}.btn:focus{outline:0}.btn:disabled, .btn.disabled{cursor:default;background-position:0 0}.btn:active, .btn.selected{background-image:none}.btn{color:#24292e;background-color:#eff3f6;background-image:linear-gradient(-180deg,#fafbfc 0%,#eff3f6 90%)}.btn:focus, .btn.focus{box-shadow:0 0 0 0.2em rgba(3,102,214,0.3)}.btn:hover, .btn.hover{background-color:#e6ebf1;background-image:linear-gradient(-180deg,#f0f3f6 0%,#e6ebf1 90%);background-position:-0.5em;border-color:rgba(27,31,35,0.35)}.btn:active, .btn.selected, +[open] > .btn{background-color:#e9ecef;background-image:none;border-color:rgba(27,31,35,0.35);box-shadow:inset 0 0.15em 0.3em rgba(27,31,35,0.15)}.btn:disabled, .btn.disabled{color:rgba(36,41,46,0.4);background-color:#eff3f6;background-image:none;border-color:rgba(27,31,35,0.2);box-shadow:none}.btn-primary{color:#fff;background-color:#28a745;background-image:linear-gradient(-180deg,#34d058 0%,#28a745 90%)}.btn-primary:focus, .btn-primary.focus{box-shadow:0 0 0 0.2em rgba(52,208,88,0.4)}.btn-primary:hover, .btn-primary.hover{background-color:#269f42;background-image:linear-gradient(-180deg,#2fcb53 0%,#269f42 90%);background-position:-0.5em;border-color:rgba(27,31,35,0.5)}.btn-primary:active, .btn-primary.selected, +[open] > .btn-primary{background-color:#279f43;background-image:none;border-color:rgba(27,31,35,0.5);box-shadow:inset 0 0.15em 0.3em rgba(27,31,35,0.15)}.btn-primary:disabled, .btn-primary.disabled{color:hsla(0,0%,100%,0.75);background-color:#94d3a2;background-image:none;border-color:rgba(27,31,35,0.2);box-shadow:none}.btn-primary .Counter{color:#29b249;background-color:#fff}.btn-purple{color:#fff;background-color:#643ab0;background-image:linear-gradient(-180deg,#7e55c7 0%,#643ab0 90%)}.btn-purple:focus, .btn-purple.focus{box-shadow:0 0 0 0.2em rgba(126,85,199,0.4)}.btn-purple:hover, .btn-purple.hover{background-color:#5f37a8;background-image:linear-gradient(-180deg,#784ec5 0%,#5f37a8 90%);background-position:-0.5em;border-color:rgba(27,31,35,0.5)}.btn-purple:active, .btn-purple.selected, +[open] > .btn-purple{background-color:#613ca4;background-image:none;border-color:rgba(27,31,35,0.5);box-shadow:inset 0 0.15em 0.3em rgba(27,31,35,0.15)}.btn-purple:disabled, .btn-purple.disabled{color:hsla(0,0%,100%,0.75);background-color:#b19cd7;background-image:none;border-color:rgba(27,31,35,0.2);box-shadow:none}.btn-purple .Counter{color:#683cb8;background-color:#fff}.btn-blue{color:#fff;background-color:#0361cc;background-image:linear-gradient(-180deg,#0679fc 0%,#0361cc 90%)}.btn-blue:focus, .btn-blue.focus{box-shadow:0 0 0 0.2em rgba(6,121,252,0.4)}.btn-blue:hover, .btn-blue.hover{background-color:#035cc2;background-image:linear-gradient(-180deg,#0374f4 0%,#035cc2 90%);background-position:-0.5em;border-color:rgba(27,31,35,0.5)}.btn-blue:active, .btn-blue.selected, +[open] > .btn-blue{background-color:#045cc1;background-image:none;border-color:rgba(27,31,35,0.5);box-shadow:inset 0 0.15em 0.3em rgba(27,31,35,0.15)}.btn-blue:disabled, .btn-blue.disabled{color:hsla(0,0%,100%,0.75);background-color:#81b0e5;background-image:none;border-color:rgba(27,31,35,0.2);box-shadow:none}.btn-blue .Counter{color:#0366d6;background-color:#fff}.btn-danger{color:#cb2431;background-color:#fafbfc;background-image:linear-gradient(-180deg,#fafbfc 0%,#eff3f6 90%)}.btn-danger:focus{box-shadow:0 0 0 0.2em rgba(203,36,49,0.4)}.btn-danger:hover{color:#fff;background-color:#cb2431;background-image:linear-gradient(-180deg,#de4450 0%,#cb2431 90%);border-color:rgba(27,31,35,0.5)}.btn-danger:hover .Counter{color:#fff}.btn-danger:active, .btn-danger.selected, +[open] > .btn-danger{color:#fff;background-color:#b5202c;background-image:none;border-color:rgba(27,31,35,0.5);box-shadow:inset 0 0.15em 0.3em rgba(27,31,35,0.15)}.btn-danger:disabled, .btn-danger.disabled{color:rgba(203,36,49,0.4);background-color:#eff3f6;background-image:none;border-color:rgba(27,31,35,0.2);box-shadow:none}.btn-outline{color:#0366d6;background-color:#fff;background-image:none}.btn-outline .Counter{background-color:rgba(27,31,35,0.07)}.btn-outline:hover, .btn-outline:active, .btn-outline.selected, +[open] > .btn-outline{color:#fff;background-color:#0366d6;background-image:none;border-color:#0366d6}.btn-outline:hover .Counter, .btn-outline:active .Counter, .btn-outline.selected .Counter, +[open] > .btn-outline .Counter{color:#0366d6;background-color:#fff}.btn-outline:focus{border-color:#0366d6;box-shadow:0 0 0 0.2em rgba(3,102,214,0.4)}.btn-outline:disabled, .btn-outline.disabled{color:rgba(27,31,35,0.3);background-color:#fff;border-color:rgba(27,31,35,0.15);box-shadow:none}.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}.btn-large{padding:0.75em 1.25em;font-size:inherit;border-radius:6px}.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:600;line-height:6px;color:#444d56;text-decoration:none;vertical-align:middle;background:#dfe2e5;border:0;border-radius:1px}.hidden-text-expander a:hover, +.ellipsis-expander:hover{text-decoration:none;background-color:#c6cbd1}.hidden-text-expander a:active, +.ellipsis-expander:active{color:#fff;background-color:#2188ff}.social-count{float:left;padding:3px 10px;font-size:12px;font-weight:600;line-height:20px;color:#24292e;vertical-align:middle;background-color:#fff;border:1px solid rgba(27,31,35,0.2);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:#0366d6;cursor:pointer}.btn-block{display:block;width:100%;text-align:center}.btn-link{display:inline-block;padding:0;font-size:inherit;color:#0366d6;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{text-decoration:underline}.btn-link:disabled, .btn-link:disabled:hover{color:rgba(88,96,105,0.5);cursor:default}.details-reset > summary{list-style:none}.details-reset > summary::before{display:none}.details-reset > summary::-webkit-details-marker{display: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-parent .BtnGroup-item, +.BtnGroup-item.selected + .BtnGroup-form .BtnGroup-item, .BtnGroup-item:focus + .BtnGroup-item, +.BtnGroup-item:focus + .BtnGroup-parent .BtnGroup-item, +.BtnGroup-item:focus + .BtnGroup-form .BtnGroup-item, .BtnGroup-item:active + .BtnGroup-item, +.BtnGroup-item:active + .BtnGroup-parent .BtnGroup-item, +.BtnGroup-item:active + .BtnGroup-form .BtnGroup-item, .BtnGroup-item:hover + .BtnGroup-item, +.BtnGroup-item:hover + .BtnGroup-parent .BtnGroup-item, +.BtnGroup-item:hover + .BtnGroup-form .BtnGroup-item{border-left-width:0}.BtnGroup-parent, +.BtnGroup-form{float:left}.BtnGroup-parent:first-child .BtnGroup-item, +.BtnGroup-form:first-child .BtnGroup-item{border-top-left-radius:3px;border-bottom-left-radius:3px}.BtnGroup-parent:last-child .BtnGroup-item, +.BtnGroup-form:last-child .BtnGroup-item{border-right-width:1px;border-top-right-radius:3px;border-bottom-right-radius:3px}.BtnGroup-parent .BtnGroup-item, +.BtnGroup-form .BtnGroup-item{border-right-width:0;border-radius:0}.BtnGroup-parent.selected .BtnGroup-item, .BtnGroup-parent:focus .BtnGroup-item, .BtnGroup-parent:active .BtnGroup-item, .BtnGroup-parent:hover .BtnGroup-item, +.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-parent.selected + .BtnGroup-item, +.BtnGroup-parent.selected + .BtnGroup-parent .BtnGroup-item, +.BtnGroup-parent.selected + .BtnGroup-form .BtnGroup-item, .BtnGroup-parent:focus + .BtnGroup-item, +.BtnGroup-parent:focus + .BtnGroup-parent .BtnGroup-item, +.BtnGroup-parent:focus + .BtnGroup-form .BtnGroup-item, .BtnGroup-parent:active + .BtnGroup-item, +.BtnGroup-parent:active + .BtnGroup-parent .BtnGroup-item, +.BtnGroup-parent:active + .BtnGroup-form .BtnGroup-item, .BtnGroup-parent:hover + .BtnGroup-item, +.BtnGroup-parent:hover + .BtnGroup-parent .BtnGroup-item, +.BtnGroup-parent:hover + .BtnGroup-form .BtnGroup-item, +.BtnGroup-form.selected + .BtnGroup-item, +.BtnGroup-form.selected + .BtnGroup-parent .BtnGroup-item, +.BtnGroup-form.selected + .BtnGroup-form .BtnGroup-item, +.BtnGroup-form:focus + .BtnGroup-item, +.BtnGroup-form:focus + .BtnGroup-parent .BtnGroup-item, +.BtnGroup-form:focus + .BtnGroup-form .BtnGroup-item, +.BtnGroup-form:active + .BtnGroup-item, +.BtnGroup-form:active + .BtnGroup-parent .BtnGroup-item, +.BtnGroup-form:active + .BtnGroup-form .BtnGroup-item, +.BtnGroup-form:hover + .BtnGroup-item, +.BtnGroup-form:hover + .BtnGroup-parent .BtnGroup-item, +.BtnGroup-form:hover + .BtnGroup-form .BtnGroup-item{border-left-width:0}.TableObject{display:table}.TableObject-item{display:table-cell;width:1%;white-space:nowrap;vertical-align:middle}.TableObject-item--primary{width:99%}fieldset{padding:0;margin:0;border:0}label{font-weight:600}.form-control, +.form-select{min-height:34px;padding:6px 8px;font-size:16px;line-height:20px;color:#24292e;vertical-align:middle;background-color:#fff;background-repeat:no-repeat;background-position:right 8px center;border:1px solid #d1d5da;border-radius:3px;outline:none;box-shadow:inset 0 1px 2px rgba(27,31,35,0.075)}.form-control.focus, .form-control:focus, +.form-select.focus, +.form-select:focus{border-color:#2188ff;outline:none;box-shadow:inset 0 1px 2px rgba(27,31,35,0.075),0 0 0 0.2em rgba(3,102,214,0.3)}@media (min-width: 768px){.form-control, + .form-select{font-size:14px}}.input-contrast{background-color:#fafbfc}.input-contrast:focus{background-color:#fff}:-ms-input-placeholder{color:#6a737d}::-ms-input-placeholder{color:#6a737d}::placeholder{color:#6a737d}.input-sm{min-height:28px;padding-top:3px;padding-bottom:3px;font-size:12px;line-height:20px}.input-lg{padding:4px 10px;font-size:16px}.input-block{display:block;width:100%}.input-monospace{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace}.input-hide-webkit-autofill::-webkit-contacts-auto-fill-button{position:absolute;right:0;display:none!important;pointer-events:none;visibility:hidden}.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:#fffbdd;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:400;color:#586069}.form-checkbox-details{display:none}.form-checkbox-details-trigger:checked ~ * .form-checkbox-details, +.form-checkbox-details-trigger:checked ~ .form-checkbox-details{display:block}.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:#586069}.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:#735c0f;background:#fffbdd;border:1px solid #d9d0a5;border-radius:3px}.form-warning p{margin:0;line-height:1.5}.form-warning a{font-weight:600}.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:#fafbfc}.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:#cb2431}.form-group dd h4.is-success{color:#28a745}.form-group dd h4 + .note{margin-top:0}.form-group.required dt label::after{padding-left:5px;color:#cb2431;content:"*"}.form-group .success, +.form-group .error, +.form-group .indicator{display:none;font-size:12px;font-weight:600}.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:#28a745}.form-group.warn .warning, +.form-group.warn .error, .form-group.errored .warning, +.form-group.errored .error{position:absolute;z-index:10;display:block;max-width:450px;padding:5px 8px;margin:4px 0 0;font-size:13px;font-weight:400;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:#735c0f;background-color:#fffbdd;border-color:#d9d0a5}.form-group.warn .warning::after{border-bottom-color:#fffbdd}.form-group.warn .warning::before{border-bottom-color:#d9d0a5}.form-group.errored label{color:#cb2431}.form-group.errored .error{color:#86181d;background-color:#ffdce0;border-color:#cea0a5}.form-group.errored .error::after{border-bottom-color:#ffdce0}.form-group.errored .error::before{border-bottom-color:#cea0a5}.note{min-height:17px;margin:4px 0 2px;font-size:12px;color:#586069}.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/success@2x.png")}dl.form-group > dd .form-control.is-autocheck-errored{background-image:url("/images/modules/ajax/error@2x.png")}}.status-indicator{display:inline-block;width:16px;height:16px;margin-left:5px}.status-indicator .octicon{display:none}.status-indicator-success::before{content:""}.status-indicator-success .octicon-check{display:inline-block;color:#28a745;fill:#28a745}.status-indicator-success .octicon-x{display:none}.status-indicator-failed::before{content:""}.status-indicator-failed .octicon-check{display:none}.status-indicator-failed .octicon-x{display:inline-block;color:#cb2431;fill:#d73a49}.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:#586069;background-color:#fafbfc;border:1px solid #c3c8cf;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:#cb2431}.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:400;color:#586069}.drag-and-drop-error-info a{color:#0366d6}.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 #dfe2e5;border-bottom-right-radius:0;border-bottom-left-radius:0}.upload-enabled.focused{border-radius:3px;box-shadow:inset 0 1px 2px rgba(27,31,35,0.075),0 0 0 0.2em rgba(3,102,214,0.3)}.upload-enabled.focused .form-control{box-shadow:none}.upload-enabled.focused .drag-and-drop{border-color:#4a9eff}.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:8px 8px 0}.previewable-comment-form .comment{border:1px solid #c3c8cf}.previewable-comment-form .comment-form-error{margin-bottom:8px}.previewable-comment-form .write-content, +.previewable-comment-form .preview-content{display:none;margin:0 8px 8px}.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:8px;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:400;color:#586069}p.explain{position:relative;font-size:12px;color:#586069}p.explain strong{color:#24292e}p.explain .octicon{margin-right:5px;color:#959da5}p.explain .minibutton{top:-4px;float:right}.form-group label{position:static}.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}.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-lg{max-width:1012px;margin-right:auto;margin-left:auto}.container-xl{max-width:1280px;margin-right:auto;margin-left:auto}.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%}.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: 1012px){.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%}}.gutter{margin-right:-16px;margin-left:-16px}.gutter > [class*="col-"]{padding-right:16px!important;padding-left:16px!important}.gutter-condensed{margin-right:-8px;margin-left:-8px}.gutter-condensed > [class*="col-"]{padding-right:8px!important;padding-left:8px!important}.gutter-spacious{margin-right:-24px;margin-left:-24px}.gutter-spacious > [class*="col-"]{padding-right:24px!important;padding-left:24px!important}@media (min-width: 544px){.gutter-sm{margin-right:-16px;margin-left:-16px}.gutter-sm > [class*="col-"]{padding-right:16px!important;padding-left:16px!important}.gutter-sm-condensed{margin-right:-8px;margin-left:-8px}.gutter-sm-condensed > [class*="col-"]{padding-right:8px!important;padding-left:8px!important}.gutter-sm-spacious{margin-right:-24px;margin-left:-24px}.gutter-sm-spacious > [class*="col-"]{padding-right:24px!important;padding-left:24px!important}}@media (min-width: 768px){.gutter-md{margin-right:-16px;margin-left:-16px}.gutter-md > [class*="col-"]{padding-right:16px!important;padding-left:16px!important}.gutter-md-condensed{margin-right:-8px;margin-left:-8px}.gutter-md-condensed > [class*="col-"]{padding-right:8px!important;padding-left:8px!important}.gutter-md-spacious{margin-right:-24px;margin-left:-24px}.gutter-md-spacious > [class*="col-"]{padding-right:24px!important;padding-left:24px!important}}@media (min-width: 1012px){.gutter-lg{margin-right:-16px;margin-left:-16px}.gutter-lg > [class*="col-"]{padding-right:16px!important;padding-left:16px!important}.gutter-lg-condensed{margin-right:-8px;margin-left:-8px}.gutter-lg-condensed > [class*="col-"]{padding-right:8px!important;padding-left:8px!important}.gutter-lg-spacious{margin-right:-24px;margin-left:-24px}.gutter-lg-spacious > [class*="col-"]{padding-right:24px!important;padding-left:24px!important}}@media (min-width: 1280px){.gutter-xl{margin-right:-16px;margin-left:-16px}.gutter-xl > [class*="col-"]{padding-right:16px!important;padding-left:16px!important}.gutter-xl-condensed{margin-right:-8px;margin-left:-8px}.gutter-xl-condensed > [class*="col-"]{padding-right:8px!important;padding-left:8px!important}.gutter-xl-spacious{margin-right:-24px;margin-left:-24px}.gutter-xl-spacious > [class*="col-"]{padding-right:24px!important;padding-left:24px!important}}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 544px){.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 1012px){.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1280px){.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.menu{margin-bottom:15px;list-style:none;background-color:#fff;border:1px solid #d1d5da;border-radius:3px}.menu-item{position:relative;display:block;padding:8px 10px;border-bottom:1px solid #e1e4e8}.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:#f6f8fa}.menu-item.selected{font-weight:600;color:#24292e;cursor:default;background-color:#fff}.menu-item.selected::before{position:absolute;top:0;bottom:0;left:0;width:2px;content:"";background-color:#e36209}.menu-item .octicon{width:16px;margin-right:5px;color:#24292e;text-align:center}.menu-item .Counter{float:right;margin-left:5px}.menu-item .menu-warning{float:right;color:#86181d}.menu-item .avatar{float:left;margin-right:5px}.menu-item.alert .Counter{color:#cb2431}.menu-heading{display:block;padding:8px 10px;margin-top:0;margin-bottom:0;font-size:13px;font-weight:600;line-height:20px;color:#586069;background-color:#f3f5f8;border-bottom:1px solid #e1e4e8}.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 #d1d5da}.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:#586069;text-decoration:none;background-color:transparent;border:1px solid transparent;border-bottom:0}.tabnav-tab.selected{color:#24292e;background-color:#fff;border-color:#d1d5da;border-radius:3px 3px 0 0}.tabnav-tab:hover, .tabnav-tab:focus{color:#24292e;text-decoration:none}.tabnav-extra{display:inline-block;padding-top:10px;margin-left:10px;font-size:12px;color:#586069}.tabnav-extra > .octicon{margin-right:2px}a.tabnav-extra:hover{color:#0366d6;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:#586069;background-color:transparent}.filter-list.pjax-active .filter-item.pjax-active{color:#fff;background-color:#0366d6}.filter-item{position:relative;display:block;padding:8px 10px;margin-bottom:5px;overflow:hidden;font-size:14px;color:#586069;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-radius:3px}.filter-item:hover{text-decoration:none;background-color:#eaecef}.filter-item.selected{color:#fff;background-color:#0366d6}.filter-item .count{float:right;font-weight:600}.filter-item .bar{position:absolute;top:2px;right:0;bottom:2px;z-index:-1;display:inline-block;background-color:#eff3f6}.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 #eaecef}.subnav-flush{margin-bottom:0}.subnav-item{position:relative;float:left;padding:6px 14px;font-weight:600;line-height:20px;color:#586069;border:1px solid #e1e4e8}.subnav-item + .subnav-item{margin-left:-1px}.subnav-item:hover, .subnav-item:focus{text-decoration:none;background-color:#f6f8fa}.subnav-item.selected, .subnav-item.selected:hover, .subnav-item.selected:focus{z-index:2;color:#fff;background-color:#0366d6;border-color:#0366d6}.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:#586069}.subnav-search-input-wide{width:500px}.subnav-search-icon{position:absolute;top:9px;left:8px;display:block;color:#c6cbd1;text-align:center;pointer-events:none}.subnav-search-context .btn{color:#444d56;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}.UnderlineNav{display:flex;justify-content:space-between;border-bottom:1px solid #e1e4e8}.UnderlineNav-body{display:flex;margin-bottom:-1px}.UnderlineNav-item{padding:16px 8px;margin-right:16px;font-size:14px;line-height:1.5;color:#586069;text-align:center;border-bottom:2px solid transparent}.UnderlineNav-item:hover, .UnderlineNav-item:focus{color:#24292e;text-decoration:none;border-bottom-color:#d1d5da;transition:0.2s ease}.UnderlineNav-item:hover .UnderlineNav-octicon, .UnderlineNav-item:focus .UnderlineNav-octicon{color:#6a737d}.UnderlineNav-item.selected{font-weight:600;color:#24292e;border-bottom-color:#e36209}.UnderlineNav-item.selected .UnderlineNav-octicon{color:#6a737d}.UnderlineNav--right{justify-content:flex-end}.UnderlineNav--right .UnderlineNav-item{margin-right:0;margin-left:16px}.UnderlineNav--right .UnderlineNav-actions{flex:1 1 auto}.UnderlineNav-actions{align-self:center}.UnderlineNav--full{display:block}.UnderlineNav-octicon{color:#959da5}.UnderlineNav-container{display:flex;justify-content:space-between}.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:#0366d6;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 #e1e4e8}.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:#eff3f6;border-color:#e1e4e8}.pagination .selected{z-index:3}.pagination .current, +.pagination .current:hover{z-index:3;color:#fff;background-color:#0366d6;border-color:#0366d6}.pagination .gap, +.pagination .disabled, +.pagination .gap:hover, +.pagination .disabled:hover{color:#d1d5da;cursor:default;background-color:#fafbfc}.paginate-container{margin-top:20px;margin-bottom:15px;text-align:center}.paginate-container .pagination{display:inline-block}.tooltipped{position:relative}.tooltipped::after{position:absolute;z-index:1000000;display:none;padding:0.5em 0.75em;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",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:#1b1f23;border-radius:3px;opacity:0}.tooltipped::before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:#1b1f23;pointer-events:none;content:"";border:6px solid transparent;opacity:0}@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;animation-name:tooltip-appear;animation-duration:0.1s;animation-fill-mode:forwards;animation-timing-function:ease-in;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{animation-delay:0s}.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:6px}.tooltipped-s::before, +.tooltipped-se::before, +.tooltipped-sw::before{top:auto;right:50%;bottom:-7px;margin-right:-6px;border-bottom-color:#1b1f23}.tooltipped-se::after{right:auto;left:50%;margin-left:-16px}.tooltipped-sw::after{margin-right:-16px}.tooltipped-n::after, +.tooltipped-ne::after, +.tooltipped-nw::after{right:50%;bottom:100%;margin-bottom:6px}.tooltipped-n::before, +.tooltipped-ne::before, +.tooltipped-nw::before{top:-7px;right:50%;bottom:auto;margin-right:-6px;border-top-color:#1b1f23}.tooltipped-ne::after{right:auto;left:50%;margin-left:-16px}.tooltipped-nw::after{margin-right:-16px}.tooltipped-s::after, +.tooltipped-n::after{transform:translateX(50%)}.tooltipped-w::after{right:100%;bottom:50%;margin-right:6px;transform:translateY(50%)}.tooltipped-w::before{top:50%;bottom:50%;left:-7px;margin-top:-6px;border-left-color:#1b1f23}.tooltipped-e::after{bottom:50%;left:100%;margin-left:6px;transform:translateY(50%)}.tooltipped-e::before{top:50%;right:-7px;bottom:50%;margin-top:-6px;border-right-color:#1b1f23}.tooltipped-align-right-1::after, +.tooltipped-align-right-2::after{right:0;margin-right:0}.tooltipped-align-right-1::before{right:10px}.tooltipped-align-right-2::before{right:15px}.tooltipped-align-left-1::after, +.tooltipped-align-left-2::after{left:0;margin-left:0}.tooltipped-align-left-1::before{left:5px}.tooltipped-align-left-2::before{left:10px}.tooltipped-multiline::after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-wrap:break-word;white-space:pre-line;border-collapse:separate}.tooltipped-multiline.tooltipped-s::after, .tooltipped-multiline.tooltipped-n::after{right:auto;left: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}.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{animation-name:fade-in;animation-duration:1s;animation-timing-function:ease-in-out}.anim-fade-in.fast{animation-duration:300ms}@keyframes fade-in{0%{opacity:0}100%{opacity:1}}.anim-fade-out{animation-name:fade-out;animation-duration:1s;animation-timing-function:ease-out}.anim-fade-out.fast{animation-duration:0.3s}@keyframes fade-out{0%{opacity:1}100%{opacity:0}}.anim-fade-up{opacity:0;animation-name:fade-up;animation-duration:0.3s;animation-fill-mode:forwards;animation-timing-function:ease-out;animation-delay:1s}@keyframes fade-up{0%{opacity:0.8;transform:translateY(100%)}100%{opacity:1;transform:translateY(0)}}.anim-fade-down{animation-name:fade-down;animation-duration:0.3s;animation-fill-mode:forwards;animation-timing-function:ease-in}@keyframes fade-down{0%{opacity:1;transform:translateY(0)}100%{opacity:0.5;transform:translateY(100%)}}.anim-grow-x{width:0%;animation-name:grow-x;animation-duration:0.3s;animation-fill-mode:forwards;animation-timing-function:ease;animation-delay:0.5s}@keyframes grow-x{to{width:100%}}.anim-shrink-x{animation-name:shrink-x;animation-duration:0.3s;animation-fill-mode:forwards;animation-timing-function:ease-in-out;animation-delay:0.5s}@keyframes shrink-x{to{width:0%}}.anim-scale-in{animation-name:scale-in;animation-duration:0.15s;animation-timing-function:cubic-bezier(0.2,0,0.13,1.5)}@keyframes scale-in{0%{opacity:0;transform:scale(0.5)}100%{opacity:1;transform:scale(1)}}.anim-pulse{animation-name:pulse;animation-duration:2s;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes pulse{0%{opacity:0.3}10%{opacity:1}100%{opacity:0.3}}.anim-pulse-in{animation-name:pulse-in;animation-duration:0.5s}@keyframes pulse-in{0%{transform:scale3d(1,1,1)}50%{transform:scale3d(1.1,1.1,1.1)}100%{transform:scale3d(1,1,1)}}.hover-grow{transition:transform 0.3s;-webkit-backface-visibility:hidden;backface-visibility:hidden}.hover-grow:hover{transform:scale(1.025)}.border{border:1px #e1e4e8 solid!important}.border-top{border-top:1px #e1e4e8 solid!important}.border-right{border-right:1px #e1e4e8 solid!important}.border-bottom{border-bottom:1px #e1e4e8 solid!important}.border-left{border-left:1px #e1e4e8 solid!important}.border-y{border-top:1px #e1e4e8 solid!important;border-bottom:1px #e1e4e8 solid!important}.border-dashed{border-style:dashed!important}.border-blue{border-color:#0366d6!important}.border-blue-light{border-color:#c8e1ff!important}.border-green{border-color:#34d058!important}.border-green-light{border-color:#a2cbac!important}.border-red{border-color:#d73a49!important}.border-red-light{border-color:#cea0a5!important}.border-purple{border-color:#6f42c1!important}.border-yellow{border-color:#d9d0a5!important}.border-gray-light{border-color:#eaecef!important}.border-gray-dark{border-color:#d1d5da!important}.border-black-fade{border-color:rgba(27,31,35,0.15)!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}.circle{border-radius:50%!important}.box-shadow{box-shadow:0 1px 1px rgba(27,31,35,0.1)!important}.box-shadow-medium{box-shadow:0 1px 5px rgba(27,31,35,0.15)!important}.box-shadow-large{box-shadow:0 1px 15px rgba(27,31,35,0.15)!important}.box-shadow-extra-large{box-shadow:0 10px 50px rgba(27,31,35,0.07)!important}.box-shadow-none{box-shadow:none!important}.bg-white{background-color:#fff!important}.bg-blue{background-color:#0366d6!important}.bg-blue-light{background-color:#f1f8ff!important}.bg-gray-dark{background-color:#24292e!important}.bg-gray{background-color:#f6f8fa!important}.bg-gray-light{background-color:#fafbfc!important}.bg-green{background-color:#28a745!important}.bg-green-light{background-color:#dcffe4!important}.bg-red{background-color:#d73a49!important}.bg-red-light{background-color:#ffdce0!important}.bg-yellow{background-color:#ffd33d!important}.bg-yellow-light{background-color:#fff5b1!important}.bg-purple{background-color:#6f42c1!important}.bg-purple-light{background-color:#f5f0ff!important}.bg-shade-gradient{background-image:linear-gradient(180deg,rgba(27,31,35,0.065),rgba(27,31,35,0))!important;background-repeat:no-repeat!important;background-size:100% 200px!important}.text-blue{color:#0366d6!important}.text-red{color:#cb2431!important}.text-gray-light{color:#6a737d!important}.text-gray{color:#586069!important}.text-gray-dark{color:#24292e!important}.text-green{color:#28a745!important}.text-orange{color:#a04100!important}.text-orange-light{color:#e36209!important}.text-purple{color:#6f42c1!important}.text-white{color:#fff!important}.text-inherit{color:inherit!important}.text-pending{color:#b08800!important}.bg-pending{color:#dbab09!important}.link-gray{color:#586069!important}.link-gray:hover{color:#0366d6!important}.link-gray-dark{color:#24292e!important}.link-gray-dark:hover{color:#0366d6!important}.link-hover-blue:hover{color:#0366d6!important}.muted-link{color:#586069!important}.muted-link:hover{color:#0366d6!important;text-decoration:none}.details-overlay[open] > summary::before{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:block;cursor:default;content:" ";background:transparent}.details-overlay-dark[open] > summary::before{z-index:99;background:rgba(27,31,35,0.5)}.flex-row{flex-direction:row!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column{flex-direction:column!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-justify-start{justify-content:flex-start!important}.flex-justify-end{justify-content:flex-end!important}.flex-justify-center{justify-content:center!important}.flex-justify-between{justify-content:space-between!important}.flex-justify-around{justify-content:space-around!important}.flex-items-start{align-items:flex-start!important}.flex-items-end{align-items:flex-end!important}.flex-items-center{align-items:center!important}.flex-items-baseline{align-items:baseline!important}.flex-items-stretch{align-items:stretch!important}.flex-content-start{align-content:flex-start!important}.flex-content-end{align-content:flex-end!important}.flex-content-center{align-content:center!important}.flex-content-between{align-content:space-between!important}.flex-content-around{align-content:space-around!important}.flex-content-stretch{align-content:stretch!important}.flex-auto{flex:1 1 auto!important}.flex-shrink-0{flex-shrink:0!important}.flex-self-auto{align-self:auto!important}.flex-self-start{align-self:flex-start!important}.flex-self-end{align-self:flex-end!important}.flex-self-center{align-self:center!important}.flex-self-baseline{align-self:baseline!important}.flex-self-stretch{align-self:stretch!important}.flex-item-equal{flex-grow:1;flex-basis:0}@media (min-width: 544px){.flex-sm-row{flex-direction:row!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column{flex-direction:column!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-justify-start{justify-content:flex-start!important}.flex-sm-justify-end{justify-content:flex-end!important}.flex-sm-justify-center{justify-content:center!important}.flex-sm-justify-between{justify-content:space-between!important}.flex-sm-justify-around{justify-content:space-around!important}.flex-sm-items-start{align-items:flex-start!important}.flex-sm-items-end{align-items:flex-end!important}.flex-sm-items-center{align-items:center!important}.flex-sm-items-baseline{align-items:baseline!important}.flex-sm-items-stretch{align-items:stretch!important}.flex-sm-content-start{align-content:flex-start!important}.flex-sm-content-end{align-content:flex-end!important}.flex-sm-content-center{align-content:center!important}.flex-sm-content-between{align-content:space-between!important}.flex-sm-content-around{align-content:space-around!important}.flex-sm-content-stretch{align-content:stretch!important}.flex-sm-auto{flex:1 1 auto!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-self-auto{align-self:auto!important}.flex-sm-self-start{align-self:flex-start!important}.flex-sm-self-end{align-self:flex-end!important}.flex-sm-self-center{align-self:center!important}.flex-sm-self-baseline{align-self:baseline!important}.flex-sm-self-stretch{align-self:stretch!important}.flex-sm-item-equal{flex-grow:1;flex-basis:0}}@media (min-width: 768px){.flex-md-row{flex-direction:row!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column{flex-direction:column!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-justify-start{justify-content:flex-start!important}.flex-md-justify-end{justify-content:flex-end!important}.flex-md-justify-center{justify-content:center!important}.flex-md-justify-between{justify-content:space-between!important}.flex-md-justify-around{justify-content:space-around!important}.flex-md-items-start{align-items:flex-start!important}.flex-md-items-end{align-items:flex-end!important}.flex-md-items-center{align-items:center!important}.flex-md-items-baseline{align-items:baseline!important}.flex-md-items-stretch{align-items:stretch!important}.flex-md-content-start{align-content:flex-start!important}.flex-md-content-end{align-content:flex-end!important}.flex-md-content-center{align-content:center!important}.flex-md-content-between{align-content:space-between!important}.flex-md-content-around{align-content:space-around!important}.flex-md-content-stretch{align-content:stretch!important}.flex-md-auto{flex:1 1 auto!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-self-auto{align-self:auto!important}.flex-md-self-start{align-self:flex-start!important}.flex-md-self-end{align-self:flex-end!important}.flex-md-self-center{align-self:center!important}.flex-md-self-baseline{align-self:baseline!important}.flex-md-self-stretch{align-self:stretch!important}.flex-md-item-equal{flex-grow:1;flex-basis:0}}@media (min-width: 1012px){.flex-lg-row{flex-direction:row!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column{flex-direction:column!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-justify-start{justify-content:flex-start!important}.flex-lg-justify-end{justify-content:flex-end!important}.flex-lg-justify-center{justify-content:center!important}.flex-lg-justify-between{justify-content:space-between!important}.flex-lg-justify-around{justify-content:space-around!important}.flex-lg-items-start{align-items:flex-start!important}.flex-lg-items-end{align-items:flex-end!important}.flex-lg-items-center{align-items:center!important}.flex-lg-items-baseline{align-items:baseline!important}.flex-lg-items-stretch{align-items:stretch!important}.flex-lg-content-start{align-content:flex-start!important}.flex-lg-content-end{align-content:flex-end!important}.flex-lg-content-center{align-content:center!important}.flex-lg-content-between{align-content:space-between!important}.flex-lg-content-around{align-content:space-around!important}.flex-lg-content-stretch{align-content:stretch!important}.flex-lg-auto{flex:1 1 auto!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-self-auto{align-self:auto!important}.flex-lg-self-start{align-self:flex-start!important}.flex-lg-self-end{align-self:flex-end!important}.flex-lg-self-center{align-self:center!important}.flex-lg-self-baseline{align-self:baseline!important}.flex-lg-self-stretch{align-self:stretch!important}.flex-lg-item-equal{flex-grow:1;flex-basis:0}}@media (min-width: 1280px){.flex-xl-row{flex-direction:row!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column{flex-direction:column!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-justify-start{justify-content:flex-start!important}.flex-xl-justify-end{justify-content:flex-end!important}.flex-xl-justify-center{justify-content:center!important}.flex-xl-justify-between{justify-content:space-between!important}.flex-xl-justify-around{justify-content:space-around!important}.flex-xl-items-start{align-items:flex-start!important}.flex-xl-items-end{align-items:flex-end!important}.flex-xl-items-center{align-items:center!important}.flex-xl-items-baseline{align-items:baseline!important}.flex-xl-items-stretch{align-items:stretch!important}.flex-xl-content-start{align-content:flex-start!important}.flex-xl-content-end{align-content:flex-end!important}.flex-xl-content-center{align-content:center!important}.flex-xl-content-between{align-content:space-between!important}.flex-xl-content-around{align-content:space-around!important}.flex-xl-content-stretch{align-content:stretch!important}.flex-xl-auto{flex:1 1 auto!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-self-auto{align-self:auto!important}.flex-xl-self-start{align-self:flex-start!important}.flex-xl-self-end{align-self:flex-end!important}.flex-xl-self-center{align-self:center!important}.flex-xl-self-baseline{align-self:baseline!important}.flex-xl-self-stretch{align-self:stretch!important}.flex-xl-item-equal{flex-grow:1;flex-basis:0}}.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}.v-align-baseline{vertical-align:baseline!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}.float-none{float:none!important}@media (min-width: 544px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width: 768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width: 1012px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width: 1280px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.width-fit{max-width:100%!important}.width-full{width:100%!important}.height-fit{max-height:100%!important}.height-full{height:100%!important}.min-width-0{min-width:0!important}.direction-rtl{direction:rtl!important}.direction-ltr{direction:ltr!important}@media (min-width: 544px){.direction-sm-rtl{direction:rtl!important}.direction-sm-ltr{direction:ltr!important}}@media (min-width: 768px){.direction-md-rtl{direction:rtl!important}.direction-md-ltr{direction:ltr!important}}@media (min-width: 1012px){.direction-lg-rtl{direction:rtl!important}.direction-lg-ltr{direction:ltr!important}}@media (min-width: 1280px){.direction-xl-rtl{direction:rtl!important}.direction-xl-ltr{direction:ltr!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}.mt-n0{margin-top:-0!important}.mr-n0{margin-right:-0!important}.mb-n0{margin-bottom:-0!important}.ml-n0{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:4px!important}.mt-1{margin-top:4px!important}.mr-1{margin-right:4px!important}.mb-1{margin-bottom:4px!important}.ml-1{margin-left:4px!important}.mt-n1{margin-top:-4px!important}.mr-n1{margin-right:-4px!important}.mb-n1{margin-bottom:-4px!important}.ml-n1{margin-left:-4px!important}.mx-1{margin-right:4px!important;margin-left:4px!important}.my-1{margin-top:4px!important;margin-bottom:4px!important}.m-2{margin:8px!important}.mt-2{margin-top:8px!important}.mr-2{margin-right:8px!important}.mb-2{margin-bottom:8px!important}.ml-2{margin-left:8px!important}.mt-n2{margin-top:-8px!important}.mr-n2{margin-right:-8px!important}.mb-n2{margin-bottom:-8px!important}.ml-n2{margin-left:-8px!important}.mx-2{margin-right:8px!important;margin-left:8px!important}.my-2{margin-top:8px!important;margin-bottom:8px!important}.m-3{margin:16px!important}.mt-3{margin-top:16px!important}.mr-3{margin-right:16px!important}.mb-3{margin-bottom:16px!important}.ml-3{margin-left:16px!important}.mt-n3{margin-top:-16px!important}.mr-n3{margin-right:-16px!important}.mb-n3{margin-bottom:-16px!important}.ml-n3{margin-left:-16px!important}.mx-3{margin-right:16px!important;margin-left:16px!important}.my-3{margin-top:16px!important;margin-bottom:16px!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}.mt-n4{margin-top:-24px!important}.mr-n4{margin-right:-24px!important}.mb-n4{margin-bottom:-24px!important}.ml-n4{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:32px!important}.mt-5{margin-top:32px!important}.mr-5{margin-right:32px!important}.mb-5{margin-bottom:32px!important}.ml-5{margin-left:32px!important}.mt-n5{margin-top:-32px!important}.mr-n5{margin-right:-32px!important}.mb-n5{margin-bottom:-32px!important}.ml-n5{margin-left:-32px!important}.mx-5{margin-right:32px!important;margin-left:32px!important}.my-5{margin-top:32px!important;margin-bottom:32px!important}.m-6{margin:40px!important}.mt-6{margin-top:40px!important}.mr-6{margin-right:40px!important}.mb-6{margin-bottom:40px!important}.ml-6{margin-left:40px!important}.mt-n6{margin-top:-40px!important}.mr-n6{margin-right:-40px!important}.mb-n6{margin-bottom:-40px!important}.ml-n6{margin-left:-40px!important}.mx-6{margin-right:40px!important;margin-left:40px!important}.my-6{margin-top:40px!important;margin-bottom:40px!important}.mx-auto{margin-right:auto!important;margin-left:auto!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}.mt-sm-n0{margin-top:-0!important}.mr-sm-n0{margin-right:-0!important}.mb-sm-n0{margin-bottom:-0!important}.ml-sm-n0{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:4px!important}.mt-sm-1{margin-top:4px!important}.mr-sm-1{margin-right:4px!important}.mb-sm-1{margin-bottom:4px!important}.ml-sm-1{margin-left:4px!important}.mt-sm-n1{margin-top:-4px!important}.mr-sm-n1{margin-right:-4px!important}.mb-sm-n1{margin-bottom:-4px!important}.ml-sm-n1{margin-left:-4px!important}.mx-sm-1{margin-right:4px!important;margin-left:4px!important}.my-sm-1{margin-top:4px!important;margin-bottom:4px!important}}@media (min-width: 544px){.m-sm-2{margin:8px!important}.mt-sm-2{margin-top:8px!important}.mr-sm-2{margin-right:8px!important}.mb-sm-2{margin-bottom:8px!important}.ml-sm-2{margin-left:8px!important}.mt-sm-n2{margin-top:-8px!important}.mr-sm-n2{margin-right:-8px!important}.mb-sm-n2{margin-bottom:-8px!important}.ml-sm-n2{margin-left:-8px!important}.mx-sm-2{margin-right:8px!important;margin-left:8px!important}.my-sm-2{margin-top:8px!important;margin-bottom:8px!important}}@media (min-width: 544px){.m-sm-3{margin:16px!important}.mt-sm-3{margin-top:16px!important}.mr-sm-3{margin-right:16px!important}.mb-sm-3{margin-bottom:16px!important}.ml-sm-3{margin-left:16px!important}.mt-sm-n3{margin-top:-16px!important}.mr-sm-n3{margin-right:-16px!important}.mb-sm-n3{margin-bottom:-16px!important}.ml-sm-n3{margin-left:-16px!important}.mx-sm-3{margin-right:16px!important;margin-left:16px!important}.my-sm-3{margin-top:16px!important;margin-bottom:16px!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}.mt-sm-n4{margin-top:-24px!important}.mr-sm-n4{margin-right:-24px!important}.mb-sm-n4{margin-bottom:-24px!important}.ml-sm-n4{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:32px!important}.mt-sm-5{margin-top:32px!important}.mr-sm-5{margin-right:32px!important}.mb-sm-5{margin-bottom:32px!important}.ml-sm-5{margin-left:32px!important}.mt-sm-n5{margin-top:-32px!important}.mr-sm-n5{margin-right:-32px!important}.mb-sm-n5{margin-bottom:-32px!important}.ml-sm-n5{margin-left:-32px!important}.mx-sm-5{margin-right:32px!important;margin-left:32px!important}.my-sm-5{margin-top:32px!important;margin-bottom:32px!important}}@media (min-width: 544px){.m-sm-6{margin:40px!important}.mt-sm-6{margin-top:40px!important}.mr-sm-6{margin-right:40px!important}.mb-sm-6{margin-bottom:40px!important}.ml-sm-6{margin-left:40px!important}.mt-sm-n6{margin-top:-40px!important}.mr-sm-n6{margin-right:-40px!important}.mb-sm-n6{margin-bottom:-40px!important}.ml-sm-n6{margin-left:-40px!important}.mx-sm-6{margin-right:40px!important;margin-left:40px!important}.my-sm-6{margin-top:40px!important;margin-bottom:40px!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}.mt-md-n0{margin-top:-0!important}.mr-md-n0{margin-right:-0!important}.mb-md-n0{margin-bottom:-0!important}.ml-md-n0{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:4px!important}.mt-md-1{margin-top:4px!important}.mr-md-1{margin-right:4px!important}.mb-md-1{margin-bottom:4px!important}.ml-md-1{margin-left:4px!important}.mt-md-n1{margin-top:-4px!important}.mr-md-n1{margin-right:-4px!important}.mb-md-n1{margin-bottom:-4px!important}.ml-md-n1{margin-left:-4px!important}.mx-md-1{margin-right:4px!important;margin-left:4px!important}.my-md-1{margin-top:4px!important;margin-bottom:4px!important}}@media (min-width: 768px){.m-md-2{margin:8px!important}.mt-md-2{margin-top:8px!important}.mr-md-2{margin-right:8px!important}.mb-md-2{margin-bottom:8px!important}.ml-md-2{margin-left:8px!important}.mt-md-n2{margin-top:-8px!important}.mr-md-n2{margin-right:-8px!important}.mb-md-n2{margin-bottom:-8px!important}.ml-md-n2{margin-left:-8px!important}.mx-md-2{margin-right:8px!important;margin-left:8px!important}.my-md-2{margin-top:8px!important;margin-bottom:8px!important}}@media (min-width: 768px){.m-md-3{margin:16px!important}.mt-md-3{margin-top:16px!important}.mr-md-3{margin-right:16px!important}.mb-md-3{margin-bottom:16px!important}.ml-md-3{margin-left:16px!important}.mt-md-n3{margin-top:-16px!important}.mr-md-n3{margin-right:-16px!important}.mb-md-n3{margin-bottom:-16px!important}.ml-md-n3{margin-left:-16px!important}.mx-md-3{margin-right:16px!important;margin-left:16px!important}.my-md-3{margin-top:16px!important;margin-bottom:16px!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}.mt-md-n4{margin-top:-24px!important}.mr-md-n4{margin-right:-24px!important}.mb-md-n4{margin-bottom:-24px!important}.ml-md-n4{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:32px!important}.mt-md-5{margin-top:32px!important}.mr-md-5{margin-right:32px!important}.mb-md-5{margin-bottom:32px!important}.ml-md-5{margin-left:32px!important}.mt-md-n5{margin-top:-32px!important}.mr-md-n5{margin-right:-32px!important}.mb-md-n5{margin-bottom:-32px!important}.ml-md-n5{margin-left:-32px!important}.mx-md-5{margin-right:32px!important;margin-left:32px!important}.my-md-5{margin-top:32px!important;margin-bottom:32px!important}}@media (min-width: 768px){.m-md-6{margin:40px!important}.mt-md-6{margin-top:40px!important}.mr-md-6{margin-right:40px!important}.mb-md-6{margin-bottom:40px!important}.ml-md-6{margin-left:40px!important}.mt-md-n6{margin-top:-40px!important}.mr-md-n6{margin-right:-40px!important}.mb-md-n6{margin-bottom:-40px!important}.ml-md-n6{margin-left:-40px!important}.mx-md-6{margin-right:40px!important;margin-left:40px!important}.my-md-6{margin-top:40px!important;margin-bottom:40px!important}}@media (min-width: 1012px){.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}.mt-lg-n0{margin-top:-0!important}.mr-lg-n0{margin-right:-0!important}.mb-lg-n0{margin-bottom:-0!important}.ml-lg-n0{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: 1012px){.m-lg-1{margin:4px!important}.mt-lg-1{margin-top:4px!important}.mr-lg-1{margin-right:4px!important}.mb-lg-1{margin-bottom:4px!important}.ml-lg-1{margin-left:4px!important}.mt-lg-n1{margin-top:-4px!important}.mr-lg-n1{margin-right:-4px!important}.mb-lg-n1{margin-bottom:-4px!important}.ml-lg-n1{margin-left:-4px!important}.mx-lg-1{margin-right:4px!important;margin-left:4px!important}.my-lg-1{margin-top:4px!important;margin-bottom:4px!important}}@media (min-width: 1012px){.m-lg-2{margin:8px!important}.mt-lg-2{margin-top:8px!important}.mr-lg-2{margin-right:8px!important}.mb-lg-2{margin-bottom:8px!important}.ml-lg-2{margin-left:8px!important}.mt-lg-n2{margin-top:-8px!important}.mr-lg-n2{margin-right:-8px!important}.mb-lg-n2{margin-bottom:-8px!important}.ml-lg-n2{margin-left:-8px!important}.mx-lg-2{margin-right:8px!important;margin-left:8px!important}.my-lg-2{margin-top:8px!important;margin-bottom:8px!important}}@media (min-width: 1012px){.m-lg-3{margin:16px!important}.mt-lg-3{margin-top:16px!important}.mr-lg-3{margin-right:16px!important}.mb-lg-3{margin-bottom:16px!important}.ml-lg-3{margin-left:16px!important}.mt-lg-n3{margin-top:-16px!important}.mr-lg-n3{margin-right:-16px!important}.mb-lg-n3{margin-bottom:-16px!important}.ml-lg-n3{margin-left:-16px!important}.mx-lg-3{margin-right:16px!important;margin-left:16px!important}.my-lg-3{margin-top:16px!important;margin-bottom:16px!important}}@media (min-width: 1012px){.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}.mt-lg-n4{margin-top:-24px!important}.mr-lg-n4{margin-right:-24px!important}.mb-lg-n4{margin-bottom:-24px!important}.ml-lg-n4{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: 1012px){.m-lg-5{margin:32px!important}.mt-lg-5{margin-top:32px!important}.mr-lg-5{margin-right:32px!important}.mb-lg-5{margin-bottom:32px!important}.ml-lg-5{margin-left:32px!important}.mt-lg-n5{margin-top:-32px!important}.mr-lg-n5{margin-right:-32px!important}.mb-lg-n5{margin-bottom:-32px!important}.ml-lg-n5{margin-left:-32px!important}.mx-lg-5{margin-right:32px!important;margin-left:32px!important}.my-lg-5{margin-top:32px!important;margin-bottom:32px!important}}@media (min-width: 1012px){.m-lg-6{margin:40px!important}.mt-lg-6{margin-top:40px!important}.mr-lg-6{margin-right:40px!important}.mb-lg-6{margin-bottom:40px!important}.ml-lg-6{margin-left:40px!important}.mt-lg-n6{margin-top:-40px!important}.mr-lg-n6{margin-right:-40px!important}.mb-lg-n6{margin-bottom:-40px!important}.ml-lg-n6{margin-left:-40px!important}.mx-lg-6{margin-right:40px!important;margin-left:40px!important}.my-lg-6{margin-top:40px!important;margin-bottom:40px!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}.mt-xl-n0{margin-top:-0!important}.mr-xl-n0{margin-right:-0!important}.mb-xl-n0{margin-bottom:-0!important}.ml-xl-n0{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:4px!important}.mt-xl-1{margin-top:4px!important}.mr-xl-1{margin-right:4px!important}.mb-xl-1{margin-bottom:4px!important}.ml-xl-1{margin-left:4px!important}.mt-xl-n1{margin-top:-4px!important}.mr-xl-n1{margin-right:-4px!important}.mb-xl-n1{margin-bottom:-4px!important}.ml-xl-n1{margin-left:-4px!important}.mx-xl-1{margin-right:4px!important;margin-left:4px!important}.my-xl-1{margin-top:4px!important;margin-bottom:4px!important}}@media (min-width: 1280px){.m-xl-2{margin:8px!important}.mt-xl-2{margin-top:8px!important}.mr-xl-2{margin-right:8px!important}.mb-xl-2{margin-bottom:8px!important}.ml-xl-2{margin-left:8px!important}.mt-xl-n2{margin-top:-8px!important}.mr-xl-n2{margin-right:-8px!important}.mb-xl-n2{margin-bottom:-8px!important}.ml-xl-n2{margin-left:-8px!important}.mx-xl-2{margin-right:8px!important;margin-left:8px!important}.my-xl-2{margin-top:8px!important;margin-bottom:8px!important}}@media (min-width: 1280px){.m-xl-3{margin:16px!important}.mt-xl-3{margin-top:16px!important}.mr-xl-3{margin-right:16px!important}.mb-xl-3{margin-bottom:16px!important}.ml-xl-3{margin-left:16px!important}.mt-xl-n3{margin-top:-16px!important}.mr-xl-n3{margin-right:-16px!important}.mb-xl-n3{margin-bottom:-16px!important}.ml-xl-n3{margin-left:-16px!important}.mx-xl-3{margin-right:16px!important;margin-left:16px!important}.my-xl-3{margin-top:16px!important;margin-bottom:16px!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}.mt-xl-n4{margin-top:-24px!important}.mr-xl-n4{margin-right:-24px!important}.mb-xl-n4{margin-bottom:-24px!important}.ml-xl-n4{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:32px!important}.mt-xl-5{margin-top:32px!important}.mr-xl-5{margin-right:32px!important}.mb-xl-5{margin-bottom:32px!important}.ml-xl-5{margin-left:32px!important}.mt-xl-n5{margin-top:-32px!important}.mr-xl-n5{margin-right:-32px!important}.mb-xl-n5{margin-bottom:-32px!important}.ml-xl-n5{margin-left:-32px!important}.mx-xl-5{margin-right:32px!important;margin-left:32px!important}.my-xl-5{margin-top:32px!important;margin-bottom:32px!important}}@media (min-width: 1280px){.m-xl-6{margin:40px!important}.mt-xl-6{margin-top:40px!important}.mr-xl-6{margin-right:40px!important}.mb-xl-6{margin-bottom:40px!important}.ml-xl-6{margin-left:40px!important}.mt-xl-n6{margin-top:-40px!important}.mr-xl-n6{margin-right:-40px!important}.mb-xl-n6{margin-bottom:-40px!important}.ml-xl-n6{margin-left:-40px!important}.mx-xl-6{margin-right:40px!important;margin-left:40px!important}.my-xl-6{margin-top:40px!important;margin-bottom:40px!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:4px!important}.pt-1{padding-top:4px!important}.pr-1{padding-right:4px!important}.pb-1{padding-bottom:4px!important}.pl-1{padding-left:4px!important}.px-1{padding-right:4px!important;padding-left:4px!important}.py-1{padding-top:4px!important;padding-bottom:4px!important}.p-2{padding:8px!important}.pt-2{padding-top:8px!important}.pr-2{padding-right:8px!important}.pb-2{padding-bottom:8px!important}.pl-2{padding-left:8px!important}.px-2{padding-right:8px!important;padding-left:8px!important}.py-2{padding-top:8px!important;padding-bottom:8px!important}.p-3{padding:16px!important}.pt-3{padding-top:16px!important}.pr-3{padding-right:16px!important}.pb-3{padding-bottom:16px!important}.pl-3{padding-left:16px!important}.px-3{padding-right:16px!important;padding-left:16px!important}.py-3{padding-top:16px!important;padding-bottom:16px!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:32px!important}.pt-5{padding-top:32px!important}.pr-5{padding-right:32px!important}.pb-5{padding-bottom:32px!important}.pl-5{padding-left:32px!important}.px-5{padding-right:32px!important;padding-left:32px!important}.py-5{padding-top:32px!important;padding-bottom:32px!important}.p-6{padding:40px!important}.pt-6{padding-top:40px!important}.pr-6{padding-right:40px!important}.pb-6{padding-bottom:40px!important}.pl-6{padding-left:40px!important}.px-6{padding-right:40px!important;padding-left:40px!important}.py-6{padding-top:40px!important;padding-bottom:40px!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:4px!important}.pt-sm-1{padding-top:4px!important}.pr-sm-1{padding-right:4px!important}.pb-sm-1{padding-bottom:4px!important}.pl-sm-1{padding-left:4px!important}.px-sm-1{padding-right:4px!important;padding-left:4px!important}.py-sm-1{padding-top:4px!important;padding-bottom:4px!important}}@media (min-width: 544px){.p-sm-2{padding:8px!important}.pt-sm-2{padding-top:8px!important}.pr-sm-2{padding-right:8px!important}.pb-sm-2{padding-bottom:8px!important}.pl-sm-2{padding-left:8px!important}.px-sm-2{padding-right:8px!important;padding-left:8px!important}.py-sm-2{padding-top:8px!important;padding-bottom:8px!important}}@media (min-width: 544px){.p-sm-3{padding:16px!important}.pt-sm-3{padding-top:16px!important}.pr-sm-3{padding-right:16px!important}.pb-sm-3{padding-bottom:16px!important}.pl-sm-3{padding-left:16px!important}.px-sm-3{padding-right:16px!important;padding-left:16px!important}.py-sm-3{padding-top:16px!important;padding-bottom:16px!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:32px!important}.pt-sm-5{padding-top:32px!important}.pr-sm-5{padding-right:32px!important}.pb-sm-5{padding-bottom:32px!important}.pl-sm-5{padding-left:32px!important}.px-sm-5{padding-right:32px!important;padding-left:32px!important}.py-sm-5{padding-top:32px!important;padding-bottom:32px!important}}@media (min-width: 544px){.p-sm-6{padding:40px!important}.pt-sm-6{padding-top:40px!important}.pr-sm-6{padding-right:40px!important}.pb-sm-6{padding-bottom:40px!important}.pl-sm-6{padding-left:40px!important}.px-sm-6{padding-right:40px!important;padding-left:40px!important}.py-sm-6{padding-top:40px!important;padding-bottom:40px!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:4px!important}.pt-md-1{padding-top:4px!important}.pr-md-1{padding-right:4px!important}.pb-md-1{padding-bottom:4px!important}.pl-md-1{padding-left:4px!important}.px-md-1{padding-right:4px!important;padding-left:4px!important}.py-md-1{padding-top:4px!important;padding-bottom:4px!important}}@media (min-width: 768px){.p-md-2{padding:8px!important}.pt-md-2{padding-top:8px!important}.pr-md-2{padding-right:8px!important}.pb-md-2{padding-bottom:8px!important}.pl-md-2{padding-left:8px!important}.px-md-2{padding-right:8px!important;padding-left:8px!important}.py-md-2{padding-top:8px!important;padding-bottom:8px!important}}@media (min-width: 768px){.p-md-3{padding:16px!important}.pt-md-3{padding-top:16px!important}.pr-md-3{padding-right:16px!important}.pb-md-3{padding-bottom:16px!important}.pl-md-3{padding-left:16px!important}.px-md-3{padding-right:16px!important;padding-left:16px!important}.py-md-3{padding-top:16px!important;padding-bottom:16px!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:32px!important}.pt-md-5{padding-top:32px!important}.pr-md-5{padding-right:32px!important}.pb-md-5{padding-bottom:32px!important}.pl-md-5{padding-left:32px!important}.px-md-5{padding-right:32px!important;padding-left:32px!important}.py-md-5{padding-top:32px!important;padding-bottom:32px!important}}@media (min-width: 768px){.p-md-6{padding:40px!important}.pt-md-6{padding-top:40px!important}.pr-md-6{padding-right:40px!important}.pb-md-6{padding-bottom:40px!important}.pl-md-6{padding-left:40px!important}.px-md-6{padding-right:40px!important;padding-left:40px!important}.py-md-6{padding-top:40px!important;padding-bottom:40px!important}}@media (min-width: 1012px){.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: 1012px){.p-lg-1{padding:4px!important}.pt-lg-1{padding-top:4px!important}.pr-lg-1{padding-right:4px!important}.pb-lg-1{padding-bottom:4px!important}.pl-lg-1{padding-left:4px!important}.px-lg-1{padding-right:4px!important;padding-left:4px!important}.py-lg-1{padding-top:4px!important;padding-bottom:4px!important}}@media (min-width: 1012px){.p-lg-2{padding:8px!important}.pt-lg-2{padding-top:8px!important}.pr-lg-2{padding-right:8px!important}.pb-lg-2{padding-bottom:8px!important}.pl-lg-2{padding-left:8px!important}.px-lg-2{padding-right:8px!important;padding-left:8px!important}.py-lg-2{padding-top:8px!important;padding-bottom:8px!important}}@media (min-width: 1012px){.p-lg-3{padding:16px!important}.pt-lg-3{padding-top:16px!important}.pr-lg-3{padding-right:16px!important}.pb-lg-3{padding-bottom:16px!important}.pl-lg-3{padding-left:16px!important}.px-lg-3{padding-right:16px!important;padding-left:16px!important}.py-lg-3{padding-top:16px!important;padding-bottom:16px!important}}@media (min-width: 1012px){.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: 1012px){.p-lg-5{padding:32px!important}.pt-lg-5{padding-top:32px!important}.pr-lg-5{padding-right:32px!important}.pb-lg-5{padding-bottom:32px!important}.pl-lg-5{padding-left:32px!important}.px-lg-5{padding-right:32px!important;padding-left:32px!important}.py-lg-5{padding-top:32px!important;padding-bottom:32px!important}}@media (min-width: 1012px){.p-lg-6{padding:40px!important}.pt-lg-6{padding-top:40px!important}.pr-lg-6{padding-right:40px!important}.pb-lg-6{padding-bottom:40px!important}.pl-lg-6{padding-left:40px!important}.px-lg-6{padding-right:40px!important;padding-left:40px!important}.py-lg-6{padding-top:40px!important;padding-bottom:40px!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:4px!important}.pt-xl-1{padding-top:4px!important}.pr-xl-1{padding-right:4px!important}.pb-xl-1{padding-bottom:4px!important}.pl-xl-1{padding-left:4px!important}.px-xl-1{padding-right:4px!important;padding-left:4px!important}.py-xl-1{padding-top:4px!important;padding-bottom:4px!important}}@media (min-width: 1280px){.p-xl-2{padding:8px!important}.pt-xl-2{padding-top:8px!important}.pr-xl-2{padding-right:8px!important}.pb-xl-2{padding-bottom:8px!important}.pl-xl-2{padding-left:8px!important}.px-xl-2{padding-right:8px!important;padding-left:8px!important}.py-xl-2{padding-top:8px!important;padding-bottom:8px!important}}@media (min-width: 1280px){.p-xl-3{padding:16px!important}.pt-xl-3{padding-top:16px!important}.pr-xl-3{padding-right:16px!important}.pb-xl-3{padding-bottom:16px!important}.pl-xl-3{padding-left:16px!important}.px-xl-3{padding-right:16px!important;padding-left:16px!important}.py-xl-3{padding-top:16px!important;padding-bottom:16px!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:32px!important}.pt-xl-5{padding-top:32px!important}.pr-xl-5{padding-right:32px!important}.pb-xl-5{padding-bottom:32px!important}.pl-xl-5{padding-left:32px!important}.px-xl-5{padding-right:32px!important;padding-left:32px!important}.py-xl-5{padding-top:32px!important;padding-bottom:32px!important}}@media (min-width: 1280px){.p-xl-6{padding:40px!important}.pt-xl-6{padding-top:40px!important}.pr-xl-6{padding-right:40px!important}.pb-xl-6{padding-bottom:40px!important}.pl-xl-6{padding-left:40px!important}.px-xl-6{padding-right:40px!important;padding-left:40px!important}.py-xl-6{padding-top:40px!important;padding-bottom:40px!important}}.p-responsive{padding-right:16px!important;padding-left:16px!important}@media (min-width: 544px){.p-responsive{padding-right:40px!important;padding-left:40px!important}}@media (min-width: 1012px){.p-responsive{padding-right:16px!important;padding-left:16px!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}.h5{font-size:14px!important}.h6{font-size:12px!important}.h1, .h2, .h3, .h4, .h5, .h6{font-weight:600!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:#586069}.lh-condensed-ultra{line-height:1!important}.lh-condensed{line-height:1.25!important}.lh-default{line-height:1.5!important}.lh-0{line-height:0!important}.text-right{text-align:right!important}.text-left{text-align:left!important}.text-center{text-align:center!important}@media (min-width: 544px){.text-sm-right{text-align:right!important}.text-sm-left{text-align:left!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.text-md-right{text-align:right!important}.text-md-left{text-align:left!important}.text-md-center{text-align:center!important}}@media (min-width: 1012px){.text-lg-right{text-align:right!important}.text-lg-left{text-align:left!important}.text-lg-center{text-align:center!important}}@media (min-width: 1280px){.text-xl-right{text-align:right!important}.text-xl-left{text-align:left!important}.text-xl-center{text-align:center!important}}.text-normal{font-weight:400!important}.text-bold{font-weight:600!important}.text-italic{font-style:italic!important}.text-uppercase{text-transform:uppercase!important}.text-underline{text-decoration:underline!important}.no-underline{text-decoration:none!important}.no-wrap{white-space:nowrap!important}.ws-normal{white-space:normal!important}.wb-break-all{word-break:break-all!important}.text-emphasized{font-weight:600;color:#24292e}.list-style-none{list-style:none!important}.text-shadow-dark{text-shadow:0 1px 1px rgba(27,31,35,0.25),0 1px 25px rgba(27,31,35,0.75)}.text-shadow-light{text-shadow:0 1px 0 hsla(0,0%,100%,0.5)}.text-mono{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!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-flex{display:flex!important}.d-inline-flex{display:inline-flex!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-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!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-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}}@media (min-width: 1012px){.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-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!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-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!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: 1012px){.hide-lg{display:none!important}}@media (min-width: 1012px){.hide-xl{display:none!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);word-wrap:normal;border:0}.show-on-focus{position:absolute;width:1px;height:1px;margin:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}.show-on-focus:focus{z-index:20;width:auto;height:auto;clip:auto} +/*# sourceMappingURL=frameworks-df973073d880f28fbbae0263fb1ef62b.css.map */ + /*! + * Primer-product + * http://primer.github.io + * + * Released under MIT license. Copyright (c) 2018 GitHub Inc. + */.flash{position:relative;padding:16px;color:#032f62;background-color:#dbedff;border:1px solid rgba(27,31,35,0.15);border-radius:3px}.flash p:last-child{margin-bottom:0}.flash-messages{margin-bottom:24px}.flash-close{float:right;padding:16px;margin:-16px;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:-3px;margin-left:24px}.flash-warn{color:#735c0f;background-color:#fffbdd;border-color:rgba(27,31,35,0.15)}.flash-error{color:#86181d;background-color:#ffdce0;border-color:rgba(27,31,35,0.15)}.flash-success{color:#165c26;background-color:#dcffe4;border-color:rgba(27,31,35,0.15)}.flash-full{margin-top:-1px;border-width:1px 0;border-radius:0}.warning{padding:0.5em;margin-bottom:0.8em;font-weight:600;background-color:#fffbdd}.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 hsla(0,0%,100%,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;transition:margin 0.1s ease-in-out}.avatar-stack .avatar:only-child{background-color:transparent}.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}.AvatarStack{position:relative;min-width:26px;height:20px}.AvatarStack .AvatarStack-body{position:absolute}.AvatarStack.AvatarStack--two{min-width:36px}.AvatarStack.AvatarStack--three-plus{min-width:46px}.AvatarStack-body{display:flex;background:#fff}.AvatarStack-body .avatar{position:relative;z-index:2;display:flex;width:20px;height:20px;box-sizing:content-box;margin-right:-11px;background-color:#fff;border-right:1px solid #fff;border-radius:2px;transition:margin 0.1s ease-in-out}.AvatarStack-body .avatar:first-child{z-index:3}.AvatarStack-body .avatar:last-child{z-index:1;border-right:0}.AvatarStack-body .avatar img{border-radius:2px}.AvatarStack-body .avatar:nth-child(n+4){display:none;opacity:0}.AvatarStack-body:hover .avatar{margin-right:3px}.AvatarStack-body:hover .avatar:nth-child(n+4){display:flex;opacity:1}.AvatarStack-body:hover .avatar-more{display:none!important}.avatar.avatar-more{z-index:1;margin-right:0;background:#f6f8fa}.avatar.avatar-more::before, .avatar.avatar-more::after{position:absolute;display:block;height:20px;content:"";border-radius:2px;outline:1px solid #fff}.avatar.avatar-more::before{width:17px;background:#e1e4e8}.avatar.avatar-more::after{width:14px;background:#d1d5da}.AvatarStack--right .AvatarStack-body{right:0;flex-direction:row-reverse}.AvatarStack--right .AvatarStack-body:hover .avatar{margin-right:0;margin-left:3px}.AvatarStack--right .avatar.avatar-more{background:#d1d5da}.AvatarStack--right .avatar.avatar-more::before{width:5px}.AvatarStack--right .avatar.avatar-more::after{width:2px;background:#f6f8fa}.AvatarStack--right .avatar{margin-right:0;margin-left:-11px;border-right:0;border-left:1px solid #fff}.CircleBadge{display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%;box-shadow:0 1px 5px rgba(27,31,35,0.15)}.CircleBadge-icon{max-width:60%!important;height:auto!important;max-height:55%!important}.CircleBadge--small{width:56px;height:56px}.CircleBadge--medium{width:96px;height:96px}.CircleBadge--large{width:128px;height:128px}.DashedConnection{position:relative}.DashedConnection::before{position:absolute;top:50%;left:0;width:100%;content:"";border-bottom:2px dashed #e1e4e8}.DashedConnection .CircleBadge{position:relative}.blankslate{position:relative;padding:32px;text-align:center;background-color:#fafbfc;border:1px solid #e1e4e8;border-radius:3px;box-shadow:inset 0 0 10px rgba(27,31,35,0.05)}.blankslate code{padding:2px 5px 3px;font-size:14px;background:#fff;border:1px solid #eaecef;border-radius:3px}.blankslate-icon{margin-right:4px;margin-bottom:8px;margin-left:4px;color:#a3aab1}.blankslate-capped{border-radius:0 0 3px 3px}.blankslate-spacious{padding:80px 40px}.blankslate-narrow{width:485px;margin:0 auto}.blankslate-large h3{margin:16px 0;font-size:20px}.blankslate-large p{font-size:16px}.blankslate-clean-background{background:none;border:0;box-shadow:none}.branch-name{display:inline-block;padding:2px 6px;font:12px "SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;color:rgba(27,31,35,0.6);background-color:#eaf5ff;border-radius:3px}.branch-name .octicon{margin:1px -2px 0 0;color:#a8bbd0}a.branch-name{color:#0366d6}.labels{position:relative}.label, +.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(27,31,35,0.12)}.label:hover, +.Label:hover{text-decoration:none}.Label--gray{color:#586069;background-color:#eaecef}.Label--outline{margin-top:-1px;margin-bottom:-1px;font-weight:400;color:#586069;background-color:transparent;border:1px solid rgba(27,31,35,0.15);box-shadow:none}.Label--outline-green{color:#28a745;border:1px solid #34d058}.Label--gray-darker{background-color:#6a737d}.Label--orange{background-color:#d15704}.state, +.State{display:inline-block;padding:4px 8px;font-weight:600;line-height:20px;color:#fff;text-align:center;background-color:#6a737d;border-radius:3px}.State--green{background-color:#2cbe4e}.State--purple{background-color:#6f42c1}.State--red{background-color:#cb2431}.State--small{padding:0.125em 4px;font-size:12px}.State--small .octicon{width:1em}.Counter{display:inline-block;padding:2px 5px;font-size:12px;font-weight:600;line-height:1;color:#586069;background-color:rgba(27,31,35,0.08);border-radius:20px}.Counter--gray-light{color:#24292e;background-color:rgba(27,31,35,0.15)}.Counter--gray{color:#fff;background-color:#6a737d}.markdown-body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",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:#cb2431}.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:#e1e4e8;border:0}.markdown-body blockquote{padding:0 1em;color:#6a737d;border-left:0.25em solid #dfe2e5}.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:#444d56;vertical-align:middle;background-color:#fafbfc;border:solid 1px #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5}.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:#1b1f23;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 #eaecef}.markdown-body h2{padding-bottom:0.3em;font-size:1.5em;border-bottom:1px solid #eaecef}.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:#6a737d}.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{word-wrap:break-all}.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:600}.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:600}.markdown-body table th, +.markdown-body table td{padding:6px 13px;border:1px solid #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body table img{background-color:transparent}.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 #dfe2e5}.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:#24292e}.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.2em 0.4em;margin:0;font-size:85%;background-color:rgba(27,31,35,0.05);border-radius:3px}.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:#f6f8fa;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 .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:600;background:#f6f8fa;border-top:0}.Popover{position:absolute;z-index:100}.Popover-message{position:relative;width:232px;margin-right:auto;margin-left:auto}.Popover-message::before, .Popover-message::after{position:absolute;left:50%;display:inline-block;content:""}.Popover-message::before{top:-16px;margin-left:-9px;border:8px solid transparent;border-bottom-color:rgba(27,31,35,0.15)}.Popover-message::after{top:-14px;margin-left:-8px;border:7px solid transparent;border-bottom-color:#fff}.Popover-message--bottom::before, .Popover-message--bottom::after, +.Popover-message--bottom-right::before, +.Popover-message--bottom-right::after, +.Popover-message--bottom-left::before, +.Popover-message--bottom-left::after{top:auto;border-bottom-color:transparent}.Popover-message--bottom::before, +.Popover-message--bottom-right::before, +.Popover-message--bottom-left::before{bottom:-16px;border-top-color:rgba(27,31,35,0.15)}.Popover-message--bottom::after, +.Popover-message--bottom-right::after, +.Popover-message--bottom-left::after{bottom:-14px;border-top-color:#fff}.Popover-message--top-right, +.Popover-message--bottom-right{right:-9px;margin-right:0}.Popover-message--top-right::before, .Popover-message--top-right::after, +.Popover-message--bottom-right::before, +.Popover-message--bottom-right::after{left:auto;margin-left:0}.Popover-message--top-right::before, +.Popover-message--bottom-right::before{right:20px}.Popover-message--top-right::after, +.Popover-message--bottom-right::after{right:21px}.Popover-message--top-left, +.Popover-message--bottom-left{left:-9px;margin-left:0}.Popover-message--top-left::before, .Popover-message--top-left::after, +.Popover-message--bottom-left::before, +.Popover-message--bottom-left::after{left:24px;margin-left:0}.Popover-message--top-left::after, +.Popover-message--bottom-left::after{left:25px}.Popover-message--right::before, .Popover-message--right::after, +.Popover-message--right-top::before, +.Popover-message--right-top::after, +.Popover-message--right-bottom::before, +.Popover-message--right-bottom::after, +.Popover-message--left::before, +.Popover-message--left::after, +.Popover-message--left-top::before, +.Popover-message--left-top::after, +.Popover-message--left-bottom::before, +.Popover-message--left-bottom::after{top:50%;left:auto;margin-left:0;border-bottom-color:transparent}.Popover-message--right::before, +.Popover-message--right-top::before, +.Popover-message--right-bottom::before, +.Popover-message--left::before, +.Popover-message--left-top::before, +.Popover-message--left-bottom::before{margin-top:-9px}.Popover-message--right::after, +.Popover-message--right-top::after, +.Popover-message--right-bottom::after, +.Popover-message--left::after, +.Popover-message--left-top::after, +.Popover-message--left-bottom::after{margin-top:-8px}.Popover-message--right::before, +.Popover-message--right-top::before, +.Popover-message--right-bottom::before{right:-16px;border-left-color:rgba(27,31,35,0.15)}.Popover-message--right::after, +.Popover-message--right-top::after, +.Popover-message--right-bottom::after{right:-14px;border-left-color:#fff}.Popover-message--left::before, +.Popover-message--left-top::before, +.Popover-message--left-bottom::before{left:-16px;border-right-color:rgba(27,31,35,0.15)}.Popover-message--left::after, +.Popover-message--left-top::after, +.Popover-message--left-bottom::after{left:-14px;border-right-color:#fff}.Popover-message--right-top::before, .Popover-message--right-top::after, +.Popover-message--left-top::before, +.Popover-message--left-top::after{top:24px}.Popover-message--right-bottom::before, .Popover-message--right-bottom::after, +.Popover-message--left-bottom::before, +.Popover-message--left-bottom::after{top:auto}.Popover-message--right-bottom::before, +.Popover-message--left-bottom::before{bottom:16px}.Popover-message--right-bottom::after, +.Popover-message--left-bottom::after{bottom:17px}@media (min-width: 544px){.Popover-message--large{min-width:320px}}.Subhead{display:flex;padding-bottom:8px;margin-bottom:16px;border-bottom:1px #e1e4e8 solid;flex-flow:row wrap}.Subhead--spacious{margin-top:40px}.Subhead-heading{font-size:24px;font-weight:normal;flex:1 1 auto}.Subhead-heading--danger{font-weight:600;color:#cb2431}.Subhead-description{font-size:14px;color:#586069;flex:1 100%}.Subhead-actions{align-self:center;justify-content:flex-end}.table-list{display:table;width:100%;color:#6a737d;table-layout:fixed;border-bottom:1px solid #e1e4e8}.table-list ol{list-style-type:decimal}.table-list-bordered{border-bottom-color:#eaecef}.table-list-bordered .table-list-cell:first-child{border-left:1px solid #eaecef}.table-list-bordered .table-list-cell:last-child{border-right:1px solid #eaecef}.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 #0366d6 inset}.table-list-cell{position:relative;display:table-cell;padding:8px 10px;font-size:12px;vertical-align:top;border-top:1px solid #eaecef}.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:#f6f8fa;border:1px solid #e1e4e8;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:400}.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:#586069}.table-list-header-toggle h4{padding:12px 0}.table-list-filters:first-child .table-list-header-toggle:first-child{padding-left:16px}.table-list-header-toggle.states .selected{font-weight:600}.table-list-header-toggle .btn-link{color:#586069}.table-list-header-toggle .btn-link .octicon{margin-right:2px}.table-list-header-toggle .btn-link:hover{color:#24292e;text-decoration:none}.table-list-header-toggle .btn-link.selected, .table-list-header-toggle .btn-link.selected:hover{color:#24292e}.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[aria-checked="true"], +.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:#24292e}.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}.table-list-triage{display:none}.triage-mode .table-list-filters{display:none}.triage-mode .table-list-triage{display:block}.ajax-pagination-form .ajax-pagination-btn{width:100%;padding:6px;margin-top:20px;font-weight:600;color:#0366d6;background:#fff;border:1px solid #e1e4e8;border-radius:3px}.ajax-pagination-form .ajax-pagination-btn:hover, .ajax-pagination-form .ajax-pagination-btn:focus{background-color:#f6f8fa}.ajax-pagination-form.loading .ajax-pagination-btn{text-indent:-3000px;background-color:#f6f8fa;background-image:url("/images/spinners/octocat-spinner-16px-EAF2F5.gif");background-repeat:no-repeat;background-position:center center;border-color:#d1d5da}@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}}.autocomplete-results{position:absolute;z-index:99;width:100%;max-height:20em;overflow-y:auto;font-size:13px;list-style:none;background:#fff;border-radius:3px;box-shadow:0 0 5px rgba(27,31,35,0.3)}.autocomplete-item{display:block;padding:5px;overflow:hidden;font-weight:600;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.autocomplete-item:hover, .autocomplete-item[aria-selected="true"], .autocomplete-item.selected, .autocomplete-item.navigation-focus{color:#fff;text-decoration:none;background-color:#0366d6}.autocomplete-item:hover .organization-member, +.autocomplete-item:hover .ldap-group-dn, .autocomplete-item[aria-selected="true"] .organization-member, +.autocomplete-item[aria-selected="true"] .ldap-group-dn, .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:#f6f8fa}.autocomplete-item .secondary-label{font-weight:400}.autocomplete-item .organization-member{float:right;padding-top:1px;color:#6a737d}.is-auto-complete-loading .form-control{padding-right:30px;background-image:url("/images/spinners/octocat-spinner-32.gif");background-size:16px}.suggester-container{position:absolute;top:0;left:0;z-index:30;transform:translateZ(0)}.suggester{position:relative;top:0;left:0;min-width:180px;margin-top:20px;cursor:pointer;background:#fff;border:1px solid #dfe2e5;border-radius:3px;box-shadow:0 0 5px rgba(27,31,35,0.1)}.suggester ul{padding:0;margin:0;list-style:none}.suggester li{display:block;padding:5px 10px;font-weight:600;border-bottom:1px solid #dfe2e5}.suggester li small{font-weight:400;color:#586069}.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:hover, .suggester li[aria-selected="true"], .suggester li.navigation-focus{color:#fff;text-decoration:none;background:#0366d6}.suggester li:hover small, .suggester li[aria-selected="true"] small, .suggester li.navigation-focus small{color:#fff}.Box--overlay{width:448px;margin-right:auto;margin-left:auto;background-color:#fff;background-clip:padding-box;border-color:#444d56;box-shadow:0 0 18px rgba(0,0,0,0.4)}.Box--overlay .Box-header{margin:0;border-width:0;border-bottom-width:1px;border-top-left-radius:2px;border-top-right-radius:2px}.Box-overlay--narrow{width:320px}.Box-overlay--wide{width:640px}.Overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99;overflow-y:auto}.bg-transparent-dark{background-color:rgba(0,0,0,0.5)}.transition-in-out{transition:opacity 0.2s ease-in-out}.transition-in-out[hidden]{opacity:0}.Box-body.scrollable-overlay{max-height:400px;overflow-y:scroll}.Box-body .help{padding-top:8px;margin:0;color:#586069;text-align:center}.boxed-group{position:relative;margin-bottom:30px;border-radius:3px}.boxed-group .Counter{color:#fff;background-color:rgba(47,54,61,0.5)}.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:#f6f8fa;border:1px solid rgba(27,31,35,0.15);border-bottom:0;border-radius:3px 3px 0 0}.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:400;color:#586069;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;background-color:#d73a49;border:1px solid #9e1c23}.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:#586069;background:#fff;border:1px solid #d1d5da;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.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 #dfe2e5}.boxed-group-inner .help{padding:1em 10px 1em 35px;margin:1em -10px -10px;clear:both;color:#586069;border-top:1px solid #dfe2e5}.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:5px 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:600;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 #e1e4e8}.boxed-group-list > li:first-child{border-top:1px solid #dfe2e5}.boxed-group-list > li:last-of-type{border-bottom:0}.boxed-group-list > li.selected{background:#dcffe4}.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:#fafbfc;border-bottom:1px solid #eaecef}.boxed-group-table td{padding:9px;vertical-align:top;border-bottom:1px solid #eaecef}.ajax-error-message{position:fixed;top:-200px;left:50%;z-index:9999;display:none;width:974px;margin:0 3px;margin-left:-487px;transition:top 0.5s ease-in-out}.ajax-error-message.visible{top:0;display:block}.ajax-error-message > .octicon-alert{vertical-align:text-top}.boxed-group-warning{padding:10px 15px;margin:-10px -10px 10px;color:rgba(27,31,35,0.85);background-color:#fffbdd;border-color:rgba(27,31,35,0.15);border-style:solid;border-width:1px 0}.boxed-group-warning .btn-sm{margin:-5px 0}.boxed-group-warning:first-child{border-top:0}.breadcrumb{margin-bottom:10px;font-size:18px;color:#586069}.breadcrumb .separator::before, .breadcrumb .separator::after{content:" "}.breadcrumb strong.final-path{color:#24292e}.breadcrumb .zeroclipboard-button{display:inline-block;margin-left:5px}.breadcrumb .repo-root{font-weight:600}.breadcrumb .octicon{vertical-align:-2px}.editor-license-template, +.editor-code-of-conduct-template, +.editor-flow-template, +.editor-gitignore-template{position:relative;top:3px;display:block;float:right;font-size:14px}.editor-license-template .select-menu-git-ignore, +.editor-code-of-conduct-template .select-menu-git-ignore, +.editor-flow-template .select-menu-git-ignore, +.editor-gitignore-template .select-menu-git-ignore{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:#0366d6;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:#0366d6;background:none;outline:none;box-shadow:none}.btn-octicon{display:inline-block;padding:5px;margin-left:5px;line-height:1;color:#586069;vertical-align:middle;background:transparent;border:0}.btn-octicon:hover{color:#0366d6}.btn-octicon.disabled{color:#959da5;cursor:default}.btn-octicon.disabled:hover{color:#959da5}.btn-octicon-danger:hover{color:#cb2431}.btn-states .btn-state-alternate{display:none}.btn-states:hover .btn-state-default{display:none}.btn-states:hover .btn-state-alternate{display:inline-block}.commit-ref{position:relative;display:inline-block;padding:0 5px;font:0.75em/2 "SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;color:#274466;white-space:nowrap;background-color:#eff7ff;border-radius:3px}.commit-ref .user{color:#044289}a.commit-ref:hover{text-decoration:none;background-color:#dbedff}.capped-cards{list-style:none}.capped-cards .capped-card{float:left;width:450px}.capped-card{margin:10px;list-style:none;border:1px solid #dfe2e5;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 #eaecef}.capped-card > p{display:block;padding:0 10px 10px;margin:0;font-size:15px;line-height:100%;color:#586069;border-bottom:1px solid #eaecef}.capped-card-content{display:block;background:#f6f8fa}.capped-card-content::before{display:table;content:""}.capped-card-content::after{display:table;clear:both;content:""}.details-collapse .collapse{position:relative;display:none;height:0;overflow:hidden;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 .previewable-comment-form{display:block}.is-comment-editing .timeline-comment-actions, +.is-comment-editing .edit-comment-hide{display:none}.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;line-height:1.6}.comment-form-textarea.dragover{border:solid 1px #0366d6}.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:#86181d;background-color:#ffdce0;border:1px solid rgba(27,31,35,0.15);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:#586069;border-left:4px solid #dfe2e5}.email-format .email-hidden-toggle a{display:inline-block;height:12px;padding:0 9px;font-size:12px;font-weight:600;line-height:6px;color:#444d56;text-decoration:none;vertical-align:middle;background:#dfe2e5;border-radius:1px}.email-format .email-hidden-toggle a:hover{background-color:#c6cbd1}.email-format .email-hidden-toggle a:active{color:#fff;background-color:#0366d6}.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:#c6cbd1}.related-issues-display-link{cursor:pointer}.commit-form{position:relative;padding:15px;border:1px solid #dfe2e5;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:#dfe2e5}.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:400;background-color:#f6f8fa;border:1px solid #eaecef;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:#444d56}.commit .commit-title.blank, +.commit .commit-title.blank a{color:rgba(27,31,35,0.3)}.commit .commit-title .issue-link{font-weight:600;color:#0366d6}.commit .sha-block, +.commit .sha{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px}.commit.open .commit-desc{display:block}.commit-link{font-weight:400;color:#0366d6}.commit-email-flash{display:inline}.commit-desc{display:none}.commit-desc pre{max-width:700px;margin-top:10px;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:11px;line-height:1.45;color:#444d56;white-space:pre-wrap}.commit-desc + .commit-branches{padding-top:8px;margin-top:2px;border-top:solid 1px rgba(27,31,35,0.15)}.commit-author-section{color:#24292e}.commit-author-section span.user-mention{font-weight:400}.commit-tease{position:relative;padding:10px;margin-bottom:-1px;font-size:13px;line-height:20px;color:#586069;background-color:#f1f8ff;border:1px solid #c8e1ff;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:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:90%;color:#444d56}.commit-tease-contributors{padding:5px 10px;margin:10px -10px -10px;background-color:#fff;border-top:1px solid #bedfff;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 .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:#eff1f3}.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:#586069}.commit-group-title .octicon-git-commit{margin-right:17px;color:#c6cbd1;background:#fff}.commits-list-item[aria-selected="true"], .commits-list-item.navigation-focus{background:#f6fbff}.commits-list-item .commit-title{margin:0;font-size:15px;font-weight:600;color:#24292e}.commits-list-item .commit-meta{margin-top:1px;font-weight:400;color:#586069}.commits-list-item .status .octicon{height:14px;line-height:14px}.commits-list-item .commit-author{color:#586069}.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:#586069}.commits-list-item .commit-desc pre a{word-break:break-word}.commits-list-item em{padding:3px;font-style:normal;font-weight:600;background-color:rgba(255,247,140,0.5);border-radius:3px}.commit-indicator{margin-left:4px}.commit-links-cell{width:335px;text-align:right}.commit-links-group{margin-right:5px}.commits-list-item + .commits-list-item{border-top:1px solid #e1e4e8}.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 .author{font-weight:600;color:#444d56}.timeline-commits .commit-message{max-width:550px;min-height:0;flex-grow:2;white-space:normal}.timeline-commits .commit-message > code a{color:#444d56}.timeline-commits .commit-message > code a:hover{color:#0366d6}.timeline-commits .commit-desc pre{overflow:visible;color:#586069}.timeline-commits .hidden-text-expander .ellipsis-expander{height:13px;background-color:#eaecef}.timeline-commits .hidden-text-expander .ellipsis-expander:hover{color:#fff;background-color:#0366d6}.timeline-commits .commit-sig-status{width:60px;margin-left:auto}.timeline-commits .commit-ci-status{width:16px}.timeline-commits .commit-ci-status .octicon-primitive-dot{width:9px;margin-right:3px;margin-left:2px}.timeline-commits .commit-meta{width:50px}.commit-icon{color:#d1d5da}.commit-icon .octicon{background-color:#fff}.commit-id{color:#959da5}.commit-id:hover{color:#0366d6}.full-commit{padding:8px 8px 0;margin:10px 0;font-size:14px;background:#eaf5ff;border:1px solid rgba(27,31,35,0.15);border-radius:3px}.full-commit:first-child{margin-top:0}.full-commit .btn-outline, .full-commit .btn-outline:disabled{background-color:transparent;border-color:rgba(27,31,35,0.15)}.full-commit .btn-outline:not(:disabled):hover{color:#005cc5;border-color:#005cc5}.full-commit p.commit-title{margin:0 0 8px;font-size:18px;font-weight:600;color:#05264c}.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:600;color:#444d56}.full-commit .branches-list li::before{padding-right:6px;font-weight:400;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:400;color:#6a737d}.full-commit .branches-list li.pull-request{font-weight:400;color:#6a737d}.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 rgba(27,31,35,0.15);border-bottom-right-radius:3px;border-bottom-left-radius:3px}.full-commit .sha-block{margin-left:16px;font-size:12px;line-height:24px;color:#586069}.full-commit .sha-block > .sha{color:#444d56}.full-commit .sha-block > a{color:#444d56;text-decoration:none;border-bottom:1px dotted #c6cbd1}.full-commit .sha-block > a:hover{border-bottom:1px solid #444d56}.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:600;color:#444d56}.branches-tag-list li.loading{font-weight:400;color:#6a737d}.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:#d3e2f4}.branches-tag-list li .ellipsis-expander:hover{background-color:#d6e2f1}.commit-branches{min-height:18px;margin-top:-6px;margin-bottom:8px;font-size:12px;color:#6a737d;vertical-align:middle}.commit-branches .octicon{vertical-align:middle}.commit-loader .loader-error{display:none;margin:0;font-size:12px;font-weight:600;color:#cb2431}.commit-loader.is-error .loader-loading{display:none}.commit-loader.is-error .loader-error{display:block}.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 .dropdown-menu{width:260px;margin-top:8px;font-size:13px;line-height:1.4}.dropdown-signed-commit .dropdown-menu::after{border-bottom-color:#f6f8fa}.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:#f6f8fa}.signed-commit-header{padding:12px;line-height:1.3;white-space:normal;border-collapse:separate;background-color:#f6f8fa;border-bottom:solid 1px #e1e4e8;border-top-left-radius:3px;border-top-right-radius:3px}.signed-commit-header .octicon-verified{color:#28a745}.signed-commit-header .octicon-unverified{color:#959da5}.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:#586069;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:none;border:solid 1px #e1e4e8;border-radius:2px}.signed-commit-badge:hover{text-decoration:none;border-color:#c6cbd1}.signed-commit-badge.verified{color:#22863a}.signed-commit-badge.verified:hover{border-color:#28a745}.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:#1e7e34;white-space:nowrap}.signed-commit-signer-name{font-size:14px;text-align:left}.signed-commit-signer-name .signer{display:block;font-weight:600;color:#24292e}.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 #eaecef}.table-of-contents li > .octicon{margin-right:3px}.table-of-contents .toc-diff-stats{padding-left:20px;line-height:26px}.table-of-contents .toc-diff-stats .octicon{float:left;margin-top:3px;margin-left:-20px;color:#c6cbd1}.table-of-contents .toc-diff-stats .btn-link{font-weight:600}.table-of-contents .toc-diff-stats + .content{padding-top:5px}.table-of-contents .octicon-diff-removed{color:#cb2431}.table-of-contents .octicon-diff-renamed{color:#6a737d}.table-of-contents .octicon-diff-modified{color:#dbab09}.table-of-contents .octicon-diff-added{color:#28a745}.toc-select .select-menu-modal{width:420px}.toc-select .select-menu-item .css-truncate{max-width:290px}.toc-select .select-menu-item-heading, +.toc-select .select-menu-item-text{color:#24292e}.toc-select .select-menu-item-icon.octicon-diff-removed{color:#cb2431}.toc-select .select-menu-item-icon.octicon-diff-renamed{color:#6a737d}.toc-select .select-menu-item-icon.octicon-diff-modified{color:#dbab09}.toc-select .select-menu-item-icon.octicon-diff-added{color:#28a745}.toc-select[aria-selected="true"] .select-menu-item-heading, +.toc-select[aria-selected="true"] .select-menu-item-text, +.toc-select[aria-selected="true"] .text-green, +.toc-select[aria-selected="true"] .text-red, +.toc-select[aria-selected="true"] .text-gray-light, +.toc-select[aria-selected="true"] .octicon-diff-removed, +.toc-select[aria-selected="true"] .octicon-diff-renamed, +.toc-select[aria-selected="true"] .octicon-diff-modified, +.toc-select[aria-selected="true"] .octicon-diff-added, +.toc-select[aria-selected="true"] .diffstat, +.toc-select .navigation-focus .select-menu-item-heading, +.toc-select .navigation-focus .select-menu-item-text, +.toc-select .navigation-focus .text-green, +.toc-select .navigation-focus .text-red, +.toc-select .navigation-focus .text-gray-light, +.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!important}.select-menu-item + .semantic-toc-file, +.semantic-toc-symbol:not(.last-visible){overflow:visible!important}.semantic-toc-symbol:not(.last-visible)::after, +.select-menu-item + .semantic-toc-file::after{position:absolute;left:0;width:100%;height:16px;pointer-events:none;content:" ";background-color:#f6f8fa;border-color:#e1e4e8;border-style:solid;border-width:1px 0}.semantic-toc-symbol:not(.last-visible){margin-bottom:16px}.semantic-toc-symbol:not(.last-visible)::after{bottom:-18px}.select-menu-item + .semantic-toc-file{margin-top:16px}.select-menu-item + .semantic-toc-file::after{top:-18px}.filterable-active .select-menu-item-nested{padding-left:16px!important;margin-left:0}.filterable-active .semantic-toc-symbol{margin-bottom:0}.filterable-active .semantic-toc-file{margin-top:0}.filterable-active .semantic-toc-symbol::after, +.filterable-active .semantic-toc-file::after{display:none}.conversation-list-heading{height:0;margin:35px 0 10px;font-size:16px;font-weight:400;color:#6a737d;text-align:center;border-bottom:1px solid #dfe2e5}.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:#6a737d}.simple-conversation-list > li{padding:11px 0 8px;margin:0;list-style-type:none;border-top:1px solid #f6f8fa}.simple-conversation-list > li:first-child{border-top:0}.simple-conversation-list > li .title{font-weight:600}.simple-conversation-list > li .num{color:#6a737d}.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 .state{float:left;width:80px;margin-left:-90px}.copyable-terminal{position:relative;padding:10px 55px 10px 10px;background-color:#f6f8fa;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}.Details--on .Details-content--shown{display:none!important}.Details:not(.Details--on) .Details-content--hidden{display:none!important}.Details-element[open] > summary .Details-content--closed{display:none!important}.Details-element:not([open]) > summary .Details-content--open{display:none!important}.details-overlay[open] > .dropdown-item:hover{color:inherit;background:#fff}details-menu{display:block}.blob-wrapper{overflow-x:auto;overflow-y:hidden;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.blob-wrapper-embedded{max-height:240px;overflow-y:auto}.diff-table{width:100%;border-collapse:separate}.diff-table .line-comments{padding:10px;vertical-align:top;border-top:1px solid #e1e4e8}.diff-table .line-comments:first-child + .empty-cell{border-left-width:1px}.diff-table tr:not(:last-child) .line-comments{border-top:1px solid #e1e4e8;border-bottom:1px solid #e1e4e8}.blob-num{width:1%;min-width:50px;padding-right:10px;padding-left:10px;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px;line-height:20px;color:rgba(27,31,35,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}.blob-num:hover{color:rgba(27,31,35,0.6)}.blob-num::before{content:attr(data-line-number)}.blob-num.non-expandable{cursor:default}.blob-num.non-expandable:hover{color:rgba(27,31,35,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:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px;color:#24292e;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:" "}.blob-code-inner.highlighted{background-color:#fffbdd}.blob-code-marker-addition::before{content:"+ "}.blob-code-marker-deletion::before{content:"- "}.blob-code-marker-context::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(27,31,35,0.5);vertical-align:middle}.blob-num-hunk, +.blob-num-expandable{background-color:#dbedff}.blob-code-hunk, +.blob-code-expandable{padding-top:4px;padding-bottom:4px;background-color:#f1f8ff;border-width:1px 0}.blob-expanded .blob-num, +.blob-expanded .blob-code{background-color:#fafbfc}.blob-expanded + tr:not(.blob-expanded) .blob-num, +.blob-expanded + tr:not(.blob-expanded) .blob-code{border-top:1px solid #eaecef}.blob-expanded .blob-num-hunk{border-top:1px solid #eaecef}tr:not(.blob-expanded) + .blob-expanded .blob-num, +tr:not(.blob-expanded) + .blob-expanded .blob-code{border-top:1px solid #eaecef}.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:#586069;cursor:pointer}.blob-num-expandable .diff-expander:hover{color:#fff;text-shadow:none;background-color:#0366d6;border-color:#0366d6}.blob-code-addition{background-color:#e6ffed}.blob-code-addition .x{color:#24292e;background-color:#acf2bd}.blob-num-addition{background-color:#cdffd8;border-color:#bef5cb}.blob-code-deletion{background-color:#ffeef0}.blob-code-deletion .x{color:#24292e;background-color:#fdb8c0}.blob-num-deletion{background-color:#ffdce0;border-color:#fdaeb7}.selected-line.blob-code{background-color:#fffbdd}.selected-line.blob-code .x{background-color:transparent}.selected-line.blob-num{background-color:#fff5b1;border-color:#ffea7f}.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:#0366d6;background-image:linear-gradient(#0372ef,#0366d6);border-radius:3px;box-shadow:0 1px 4px rgba(27,31,35,0.15);opacity:0;transition:transform 0.1s ease-in-out;transform:scale(0.8,0.8)}.add-line-comment:hover{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 #dfe2e5;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 #eaecef}.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.split-diff .container-lg, +body.full-width .container, +body.full-width .container-lg{width:100%;max-width:none;padding-right:20px;padding-left:20px}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:1px solid #f6f8fa}.file-diff-split .blob-code-inner{word-wrap:break-word;white-space:pre-wrap}.file-diff-split .empty-cell{cursor:default;background-color:#fafbfc;border-right-color:#eaecef}.submodule-diff-stats .octicon-diff-removed{color:#cb2431}.submodule-diff-stats .octicon-diff-renamed{color:#677a85}.submodule-diff-stats .octicon-diff-modified{color:#d0b44c}.submodule-diff-stats .octicon-diff-added{color:#28a745}.BlobToolbar{left:-17px}.BlobToolbar-dropdown{margin-left:-2px}.diffstat{font-size:12px;font-weight:600;color:#586069;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:#cb2431}.block-diff-added, +.block-diff-neutral{background-color:#2cbe4e}.block-diff-neutral{background-color:#d1d5da}.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:#e6ebf1}.discussion-timeline.team-discussion-timeline::before{bottom:24px;left:20px;z-index:auto;background-color:#e1e4e8}.discussion-timeline.team-discussion-timeline .blankslate{background:#fff}.discussion-sidebar{top:0;z-index:21;float:right;width:200px}.discussion-sidebar-item{padding-top:15px;font-size:12px;color:#586069}.discussion-sidebar-item .btn .octicon{margin-right:0}.discussion-sidebar-item + .discussion-sidebar-item{margin-top:15px;border-top:1px solid #e6ebf1}.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:#586069}.discussion-sidebar-toggle{padding:5px 0;margin:-5px 0 5px}.discussion-sidebar-toggle .octicon{float:right;color:#c3c8cf}.discussion-sidebar-toggle:hover{color:#0366d6;text-decoration:none;cursor:pointer}.discussion-sidebar-toggle:hover .octicon{color:inherit}button.discussion-sidebar-toggle{display:block;width:100%;font-weight:600;text-align:left;background:none;border:0}.sidebar-milestone .progress-bar, +.sidebar-projects .progress-bar{height:8px;margin-bottom:2px;border-radius:2px}.milestone-name{display:block;margin-top:5px;font-weight:600;color:#586069}.milestone-name .css-truncate-target{max-width:100%}.milestone-name:hover{color:#0366d6;text-decoration:none}.sidebar-assignee .css-truncate-target{max-width:110px}.sidebar-assignee .assignee{font-weight:600;color:#586069;vertical-align:middle}.sidebar-assignee .assignee:hover{color:#0366d6;text-decoration:none}.sidebar-assignee .reviewers-status-icon{width:14px}.sidebar-assignee .octicon{margin-top:2px}.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:#586069}.participation a:hover{color:#0366d6;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}.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:400;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:#a3aab1;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:#fafbfc}.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:8px;font-size:14px;line-height:20px;color:#586069;border-bottom:1px solid #e6ebf1}.gh-header.issue .gh-header-meta{margin-bottom:15px}.gh-header.pull .gh-header-meta{padding-bottom:0;border-bottom:0}.gh-header-meta .TableObject-item--primary{word-wrap:break-word;white-space:normal}.gh-header-meta .TableObject-item--primary .commit-ref .css-truncate-target, +.gh-header-meta .TableObject-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:600;color:#586069}.gh-header-meta .noun{text-transform:lowercase}.tabnav-pr{margin:15px 0 20px;border-color:#e1e4e8}.tabnav-pr .tabnav-tab{position:relative;padding:9px 14px;font-size:13px;color:#586069}.tabnav-pr .tabnav-tab.selected{color:#24292e;border-color:#e1e4e8}.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:#f6f8fa}.timeline-comment-wrapper > .timeline-comment::before, +.timeline-new-comment .timeline-comment::before{border-width:8px;border-right-color:#d1d5da}.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 .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:#f1f8ff}.timeline-comment-wrapper .timeline-comment.current-user::before{border-width:8px;border-right-color:#c0d3eb}.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:#fffdef}.timeline-comment-wrapper .timeline-comment.unread-item::before{border-width:8px;border-right-color:#e5d999}.timeline-comment-avatar{float:left;margin-left:-60px;border-radius:3px}.timeline-comment{position:relative;background-color:#fff;border:1px solid #d1d5da;border-radius:3px}.timeline-comment.will-transition-once{transition:border-color 0.65s ease-in-out}.timeline-comment.will-transition-once .timeline-comment-header{transition:background-color 0.65s ease,border-bottom-color 0.65s ease-in-out}.timeline-comment.will-transition-once .timeline-comment-label{transition:border-color 0.65s ease-in-out}.timeline-comment.will-transition-once::before, .timeline-comment.will-transition-once::after{transition:border-right-color 0.65s ease-in-out}.timeline-comment.current-user{border-color:#c0d3eb}.timeline-comment.current-user .timeline-comment-header{background-color:#f1f8ff;border-bottom-color:#c0d3eb}.timeline-comment.current-user .timeline-comment-label{border-color:#c0d3eb}.timeline-comment.current-user .previewable-comment-form .comment-form-head.tabnav{color:#c0d3eb;background-color:#f1f8ff;border-bottom-color:#c0d3eb}.timeline-comment.unread-item{border-color:#e5d999}.timeline-comment.unread-item .timeline-comment-header{background-color:#fffdef;border-bottom-color:#e5d999}.timeline-comment.unread-item .timeline-comment-label{border-color:#e5d999}.timeline-comment.unread-item .previewable-comment-form .comment-form-head.tabnav{color:#e5d999;background-color:#fffdef;border-bottom-color:#e5d999}.timeline-comment:empty{display:none}.timeline-comment .comment + .comment{border-top:1px solid #e1e4e8}.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-group:target .timeline-comment{border-color:#2188ff;box-shadow:0 0 0 0.2em #c8e1ff}.timeline-comment-group:target .timeline-comment::before{filter:drop-shadow(-0.25em 0 0 #c8e1ff);border-right-color:#2188ff}.review-comment:target{border:1px solid #2188ff;border-radius:3px;box-shadow:0 0 0 0.2em #c8e1ff}.timeline-comment:target .review-summary{box-shadow:0 0 0 0.2em #c8e1ff}.timeline-comment:target .review-summary::before{filter:drop-shadow(0 -0.28em 0 #c8e1ff);border-bottom-color:#2188ff}.timeline-comment:target .review-summary .comment-body{border:1px solid #2188ff;border-radius:3px}.timeline-comment-header{padding-right:15px;padding-left:15px;color:#586069;background-color:#f6f8fa;border-bottom:1px solid #d1d5da;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:#586069}.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(27,31,35,0.1);border-radius:3px}.timeline-comment-label-spammy{color:#cb2431;border-color:#d73a49}.timeline-comment-header-text{max-width:78%;padding-top:10px;padding-bottom:10px}.timeline-comment-header-text code a{color:#586069}.timeline-comment-actions{float:right;margin-right:-5px;margin-left:10px}.timeline-comment-actions .show-more-popover.dropdown-menu-sw{right:-6px;margin-top:-5px}.timeline-comment-action{display:inline-block;padding:10px 5px;color:inherit;opacity:0.5}.timeline-comment-action:hover, .timeline-comment-action:focus{color:#0366d6;text-decoration:none;opacity:1}.timeline-comment-action .octicon-check{height:16px;font-size:18px}.timeline-comment-action.disabled{color:#b1b7bc;cursor:default}.timeline-comment-action.disabled:hover{color:#b1b7bc}.compare-tab-comments .timeline-comment-actions{display:none}.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 #e1e4e8}.discussion-item + .discussion-item, +.discussion-item-review + .discussion-item{padding-top:15px;border-top:1px solid #e6ebf1}.discussion-item + .discussion-item-review{padding-top:8px;border-top:1px solid #e6ebf1}.discussion-item{position:relative;padding-left:25px;margin:15px 0 15px 79px}.discussion-item .author{font-weight:600;color:#586069}.discussion-item .timestamp{color:inherit;white-space:nowrap}.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 .code-owner{color:inherit}.discussion-item-details{display:none}.discussion-item-deployed{padding-top:15px;border-top:1px solid #e6ebf1}.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:#586069;text-align:center;background-color:#e6ebf1;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:22px;color:#586069;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{font-size:12px}.discussion-item-link{color:#586069}.discussion-item-link:hover{color:#0366d6}.discussion-item-entity{font-weight:600;color:#24292e}.discussion-item-entity:hover{color:#0366d6;text-decoration:none}.discussion-item-ref-title .issue-num{font-weight:400;color:#586069}.discussion-item-ref-title .title-link{color:#24292e}.discussion-item-ref-title .title-link:hover{color:#0366d6;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:#586069}.discussion-item-help:hover{color:#0366d6}.discussion-item-private{color:rgba(27,31,35,0.7)}.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:#2cbe4e}.discussion-item-closed .discussion-item-icon, +.discussion-item-review.is-rejected.is-writer .discussion-item-icon{color:#fff;background-color:#cb2431}.discussion-item-head_ref_deleted .discussion-item-icon{padding-left:1px;color:#fff;background-color:#6a737d}.discussion-item-locked .discussion-item-icon, +.discussion-item-unlocked .discussion-item-icon{color:#fff;background-color:#24292e}.discussion-item-integrations-callout .discussion-item-icon{color:#fff;background-color:#428ade}.discussion-item-integrations-callout .pull-request-integrations-dismiss{padding:4px 8px;margin:-3px 0 0 10px;color:#586069}.pull-request-integrations-title{margin:0;font-size:15px;color:#24292e}.pull-request-integrations-body{margin-top:5px;color:#586069}.discussion-item .renamed-was, +.discussion-item .renamed-is{font-weight:600;color:#24292e}.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 .discussion-item-icon{color:#fff;background-color:#0366d6}.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}.new-discussion-timeline .previewable-comment-form .comment-form-head.tabnav{padding:6px 10px 0;background:#f6f8fa;border-radius:3px 3px 0 0}.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 #e1e4e8}.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:#e6ebf1;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 #e6ebf1}.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:#6f42c1}.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 #d1d5da;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 #d1d5da}.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:#d1d5da}.discussion-item-merged.open .merge-status-item{padding-left:15px}.pagination-loader-container{background-color:#fff;background-image:url("/images/modules/pulls/progressive-disclosure-line@2x.png");background-repeat:repeat-x;background-position:left center;background-size:32px}.progressive-timeline-loader-container{padding-left:64px}.deployment-icon .octicon-rocket{position:relative;bottom:-1px;left:-1px}.environment-name{color:#586069}.deployment-meta{font-size:12px;color:#586069}.deployment-meta .octicon{color:#c3c8cf}.deployment-status-label{display:inline-block;padding:1px 4px;margin-top:-2px;margin-right:3px;font-size:10px;line-height:16px;color:#6a737d;vertical-align:middle;background:none;border:solid 1px #e1e4e8;border-radius:2px}.deployment-status-label.is-error, .deployment-status-label.is-failure{color:#cb2431;text-align:center}.deployment-status-label.is-active{color:#28a745}.deployment-status-label.is-pending, .deployment-status-label.is-queued, .deployment-status-label.is-in_progress{color:#b08800}.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-copy{max-width:460px}.discussion-item-review .discussion-item-body{margin-left:25px}.discussion-item-review .file-header{padding:2px 12px;background-color:#fafbfc;border-bottom:1px solid #d1d5da;border-top-left-radius:3px;border-top-right-radius:3px}.discussion-item-review .blob-wrapper{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:#d9d0a5}.discussion-item-review.is-pending .file-header, +.discussion-item-review.is-pending .comment-form-head.tabnav{background-color:#fffdef}.discussion-item-review-comment{border-bottom:1px solid #e1e4e8}.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:#d1d5da}.discussion-item-icon-gray{background-color:#e6ebf1!important}.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;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(27,31,35,0.15);border-radius:4px;box-shadow:0 3px 12px rgba(27,31,35,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(27,31,35,0.15)}.dropdown-menu::after{border:7px solid transparent;border-bottom-color:#fff}.dropdown-menu > ul{list-style:none}.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:#24292e;text-overflow:ellipsis;white-space:nowrap}.dropdown-item:focus, .dropdown-item:hover, .dropdown-item.zeroclipboard-is-hover{color:#fff;text-decoration:none;background-color:#0366d6;outline:none}.dropdown-item:focus > .octicon, .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:#e1e4e8}.dropdown-header{padding:4px 15px;font-size:12px;color:#586069}.dropdown-menu-content{display:none}.dropdown-menu-content.anim-scale-in{position:relative;z-index:100;pointer-events:none}.dropdown-menu-w{top:0;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(27,31,35,0.15)}.dropdown-menu-w::after{top:11px;right:-14px;left:auto;border-color:transparent;border-left-color:#fff}.dropdown-menu-e{top:0;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(27,31,35,0.15)}.dropdown-menu-e::after{top:11px;left:-14px;border-color:transparent;border-right-color:#fff}.dropdown-menu-ne{top:auto;bottom:100%;left:0;margin-bottom:3px}.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(27,31,35,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;transform:translateX(50%)}.dropdown-menu-s::before{top:-16px;right:50%;transform:translateX(50%)}.dropdown-menu-s::after{top:-14px;right: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:1.2em;font-weight:400;line-height:20px;vertical-align:middle}g-emoji img{width:1em;height:1em}body.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){body.emoji-size-boost g-emoji{margin-right:0;font-size:1.4em}}.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:400;vertical-align:middle}.facebox{position:absolute;top:0;left:0;z-index:100;padding-bottom:40px}.facebox ul{margin-bottom:15px;margin-left:25px}.facebox .suggester ul{margin:0}.facebox-popup{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid rgba(27,31,35,0.25);border-radius:5px;box-shadow:0 0 18px rgba(27,31,35,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}.facebox-header{padding:15px;margin:-15px -15px 15px;font-size:18px;font-weight:400;border-bottom:1px solid #e1e4e8}.facebox-header:focus{outline:none}.facebox-footer{padding:10px 15px;margin:0 -15px -15px;text-align:right;background:#fafbfc;border-top:1px solid #e1e4e8;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.facebox-footer .help{margin:0;color:#586069;text-align:center}.facebox-alert{padding:10px 15px;margin:-16px -15px 15px;color:#735c0f;background-color:#ffea7f;border-color:rgba(176,136,0,0.3);border-style:solid;border-width:1px 0}.keyboard-shortcuts{float:right}.keyboard-mappings{font-size:12px;color:#444d56}.keyboard-mappings th{padding-top:25px;font-size:14px;line-height:1.5;color:#24292e;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:#586069;text-align:right;white-space:nowrap}.linejump .linejump-input{width:340px;background-color:#fafbfc}.linejump .linejump-input, +.linejump .btn{padding:10px 15px;font-size:16px}.linejump + .facebox-close{top:18px}.repo-transfer-tip{margin-bottom:0}.flash-banner{position:fixed;top:0;z-index:90;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:#586069}.footer-octicon{color:#c6cbd1}.footer-octicon:hover{color:#959da5}.page-responsive .footer .footer-octicon{display:none}@media (min-width: 1012px){.page-responsive .footer .footer-octicon{display:block}}.gollum-editor .comment-form-head.tabnav{border:1px solid #dfe2e5}.gollum-editor .gollum-editor-body{height:390px;resize:vertical}.active .gollum-editor-function-buttons{display:block!important}include-fragment, +poll-include-fragment{display:block}kbd{display:inline-block;padding:3px 5px;font:11px "SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:solid 1px #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1}.badmono{font-family:sans-serif;font-weight:600}.IssueLabel{height:20px;padding:0.15em 4px;font-size:12px;font-weight:600;line-height:15px;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(27,31,35,0.12)}.IssueLabel .g-emoji{position:relative;top:-0.05em;display:inline-block;font-size:1em;line-height:1}.IssueLabel:hover{text-decoration:none}.IssueLabel--big{padding:0 8px;font-size:16px;font-weight:600;line-height:2;border-radius:3px;transition:opacity 0.2s linear}.IssueLabel--big .g-emoji{display:inline-block;margin-top:-1px}.IssueLabel--big:hover{opacity:0.85}.list-group-item{position:relative;display:block;padding:8px 10px 10px 40px;margin-bottom:-1px;border:1px solid #e1e4e8}.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:#fafbfc}.list-group-item.selectable{padding-left:60px}.list-group-item.selected{background-color:#fffdef}.list-group-item[aria-selected="true"], .list-group-item.navigation-focus{background-color:#f1f8ff}.list-group-item .list-group-item-summary a{color:#586069}.list-group-item .list-group-item-summary a.quiet{color:#6a737d}.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:#24292e}.closed.octicon, +.reverted.octicon{color:#cb2431}.open.octicon{color:#28a745}.merged.octicon{color:#6f42c1}.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;transform:translateZ(0)}.animated-ellipsis-container > .animated-ellipsis{display:inline-block;overflow:hidden;vertical-align:bottom;animation:ellipsis 1s infinite}.large-loading-area{padding:100px 0;text-align:center}.user-mention, +.team-mention{font-weight:600;color:#24292e;white-space:nowrap}.pagehead{position:relative;padding-top:20px;padding-bottom:20px;margin-bottom:20px}@media (min-width: 1012px){.pagehead{border-bottom:1px solid #e1e4e8}}.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:400;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:#24292e;list-style-type:none}.pagehead-actions > li:last-child{margin-right:0}.pagehead-actions .octicon-mute{color:#cb2431}.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:#586069;white-space:nowrap;border:solid transparent;border-width:3px 1px 1px;border-radius:3px 3px 0 0}.pagehead-tabs-item .octicon{color:rgba(27,31,35,0.3)}.pagehead-tabs-item .Counter{color:#444d56}.pagehead-tabs-item:hover{color:#24292e;text-decoration:none}.pagehead-tabs-item.selected{font-weight:600;color:#24292e;background-color:#fff;border-color:#e36209 #e1e4e8 transparent}.pagehead-tabs-item.selected > .octicon{color:inherit}.repohead.experiment-repo-nav{padding-bottom:0;background-color:#fafbfc}.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:#586069}.repohead h1.private .octicon{color:rgba(27,31,35,0.5)}.repohead h1 .octicon{position:absolute;top:0;left:0;margin-top:5px;color:#959da5}.repohead .octicon-mirror{left:-3px}.repohead .octicon-lock{top:10px}.repohead .fork-flag, +.repohead .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-item{float:left;padding:7px 15px 8px;color:#586069;white-space:nowrap;border:solid transparent;border-width:3px 1px 1px;border-radius:3px 3px 0 0}.reponav-item .octicon{color:rgba(27,31,35,0.3)}.reponav-item .Counter{color:#444d56}.reponav-item:hover, .reponav-item:focus{color:#24292e;text-decoration:none}.reponav-item.selected{color:#24292e;background-color:#fff;border-color:#e36209 #e1e4e8 transparent}.reponav-item.selected > .octicon{color:inherit}.reponav-wrapper{position:relative;z-index:2;overflow-y:hidden;background-color:#24292e}.reponav-wrapper .reponav{top:0;padding-right:8px;padding-left:8px;margin-top:0;-webkit-overflow-scrolling:touch;overflow-x:auto;color:hsla(0,0%,100%,0.75)}.reponav-wrapper .reponav-item{display:inline-block;float:none;padding:4px 8px 16px;color:hsla(0,0%,100%,0.75);border:0}.reponav-wrapper .reponav-item .Counter{color:inherit;background-color:hsla(0,0%,100%,0.15)}.reponav-wrapper .reponav-item.selected{font-weight:600;color:#fff;background-color:transparent;border:0}.progress-bar{display:block;height:15px;overflow:hidden;background-color:#eaecef;border-radius:3px}.progress-bar .progress{display:block;height:100%;background-color:#2cbe4e}.reverse-progress-container{position:relative;height:3px;background-color:#e1e4e8;background-image:linear-gradient(to right,#28a745,#005cc5,#3a1d6e,#cb2431,#f66a0a);background-size:100% 3px}.reverse-progress-bar{position:absolute;right:0;height:100%;background-color:#e1e4e8}.progress-bar-small{height:10px}.progress-bar-inline .progress-bar{width:100%;border-color:#e1e4e8;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 #dfe2e5;border-radius:3px;box-shadow:0 1px 3px rgba(27,31,35,0.05)}.steps li{display:table-cell;width:33.3%;padding:10px 15px;color:#c6cbd1;cursor:default;background-color:#fafbfc;border-left:1px solid #dfe2e5}.steps li.current{color:#24292e;background-color:#fff}.steps li.current .octicon{color:#0366d6}.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:#586069}.steps .complete .octicon{color:#28a745}.prose-diff .anchor{display:none}.prose-diff .show-rich-diff{color:#0366d6;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:#d1d5da}.prose-diff.collapsed .rich-diff-level-zero.expandable:hover .octicon{color:#24292e}.prose-diff.collapsed .rich-diff-level-zero.expandable:only-child::before{font-size:18px;color:#d1d5da;content:"Sorry, no visible changes to display."}.prose-diff.collapsed .rich-diff-level-zero.expandable:only-child:hover::before{color:#24292e}.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 #2cbe4e}.prose-diff .markdown-body > del{text-decoration:none;box-shadow:inset 4px 0 0 #cb2431}.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 #2cbe4e}.prose-diff .rich-diff-level-zero.removed{box-shadow:inset 4px 0 0 #cb2431}.prose-diff .rich-diff-level-zero.changed{box-shadow:inset 4px 0 0 #f9c513}.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:#cb2431;text-decoration:line-through;background:#ffdce0}.prose-diff .changed ins, +.prose-diff .changed ins code, +.prose-diff .changed ins pre, +.prose-diff .changed .added{background:#e6ffed;border-bottom:1px solid #2cbe4e}.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:#e6ffed}.prose-diff > .markdown-body li ul.removed{color:#cb2431;background:#ffeef0}.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:#d1d5da}.prose-diff > .markdown-body li.added.moved{background:#fffdef}.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:#fffdef;border-left-color:#dfe2e5}.prose-diff > .markdown-body :not(li.moved).removed{color:#cb2431;text-decoration:line-through;background:#ffeef0}.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:#e6ffed}.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:#cb2431;background:#ffeef0}.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 #6a737d;border-radius:0}a.added_href, +a.changed_href, +span.removed_href{border-bottom:1px dotted #6a737d;border-radius:0}.diff-view .file-type-prose .rich-diff{display:none}.diff-view .display-rich-diff .rich-diff{display:block}.diff-view .display-rich-diff .file-diff{display:none}.diff-view .display-rich-diff.has-inline-notes .show-file-notes{display:none}.protip{margin-top:20px;text-align:center}.protip code{padding:2px;background-color:#f6f8fa;border-radius:3px}.protip-callout{padding:8px 10px;margin-bottom:20px;color:#444d56;text-align:left;border:solid 1px #eaecef;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:#24292e;cursor:pointer;border:1px solid #d1d5da}:checked + .radio-label{position:relative;z-index:1;border-color:#0366d6}.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:14px -35px 0 14px}.add-reaction-btn{opacity:0;transition:opacity 0.1s ease-in-out}.add-reaction-plus-icon{margin-right:-1px}.reaction-popover-container{display:inline-block}.reaction-popover-container[open] .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;transition:transform 0.15s cubic-bezier(0.2,0,0.13,2);transform:scale(1)}.add-reactions-options-item:hover, .add-reactions-options-item:focus{text-decoration:none;transform:scale(1.2)}.add-reactions-options-item:active{background-color:#dbedff}.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 #e1e4e8}.comment-reactions.has-reactions:hover .add-reaction-btn{opacity:1}.comment-reactions .user-has-reacted{background-color:#f1f8ff}.comment-reactions .add-reaction-btn{border-right:0}.reaction-summary-item{float:left;padding:9px 15px 7px;line-height:18px;border-right:1px solid #e1e4e8}.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:#dfe2e5}.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:#444d56;background-color:#f6f8fa;border-color:rgba(27,31,35,0.15)}.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:#28a745}.select-menu-button-large::after{margin-left:0.25em;border-width:0.33em}.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.has-error .select-menu-error{display:block}.select-menu-error{display:none}.select-menu-loading-overlay{position:absolute;top:0;z-index:5;display:none;width:100%;height:100%;background-color:hsla(0,0%,100%,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:#586069;background-color:#fff;background-clip:padding-box;border:1px solid rgba(27,31,35,0.15);border-radius:3px;box-shadow:0 3px 12px rgba(27,31,35,0.15)}.select-menu-modal-narrow{width:200px}.select-menu-header, +.select-menu-divider{padding:8px 10px;line-height:16px;background:#f6f8fa;border-bottom:1px solid #e1e4e8}.select-menu-header .select-menu-title, +.select-menu-divider{font-weight:600;color:#24292e}.select-menu-divider{margin-top:-1px;border-top:1px solid #e1e4e8}.select-menu-header .close-button, +.select-menu-header .octicon{display:block;float:right;color:#c6cbd1;cursor:pointer}.select-menu-header .close-button:hover, +.select-menu-header .octicon:hover{color:#444d56}.select-menu-header:focus{outline:none}.select-menu-filters{background-color:#f6f8fa}.select-menu-text-filter{padding:10px 10px 0}.select-menu-text-filter:first-child:last-child{padding-bottom:10px;border-bottom:1px solid #dfe2e5}.select-menu-text-filter input{display:block;width:100%;max-width:100%;padding:5px;border:1px solid #dfe2e5;border-radius:3px}.select-menu-text-filter input:-ms-input-placeholder{color:#a3aab1}.select-menu-text-filter input::-ms-input-placeholder{color:#a3aab1}.select-menu-text-filter input::placeholder{color:#a3aab1}.select-menu-tabs{padding:10px 10px 0;border-bottom:1px solid #dfe2e5}.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:#6a737d;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:#24292e}.select-menu-tabs a[aria-selected="true"], .select-menu-tabs a.selected, +.select-menu-tabs .select-menu-tab-nav[aria-selected="true"], +.select-menu-tabs .select-menu-tab-nav.selected{color:#24292e;background-color:#fff;border-color:#dfe2e5;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:#879099}.select-menu-blankslate h3{font-size:14px;color:#24292e}.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 #eaecef}.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:#6a737d;cursor:default}.select-menu-item.disabled .description, .select-menu-item.disabled.selected .description{color:#6a737d}.select-menu-item.disabled.opaque, .select-menu-item.disabled.selected.opaque{opacity:0.7}.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, +.select-menu-item input[type="radio"]:not(:checked) + .octicon-check{visibility:hidden}.select-menu-item input[type="radio"]{display:none}.select-menu-item:focus{outline:none}.select-menu-item:hover, .select-menu-item:hover.selected, .select-menu-item:hover.select-menu-action, +.select-menu-item:hover .description-inline, .select-menu-item:focus, .select-menu-item:focus.selected, .select-menu-item:focus.select-menu-action, +.select-menu-item:focus .description-inline, .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, .select-menu-item[aria-checked="true"]:focus, .select-menu-item[aria-checked="true"]:hover, .select-menu-item[aria-selected="true"], .select-menu-item[aria-selected="true"].selected, .select-menu-item[aria-selected="true"].select-menu-action, +.select-menu-item[aria-selected="true"] .description-inline{color:#fff;background-color:#0366d6}.select-menu-item:hover > .octicon, .select-menu-item:hover.selected > .octicon, .select-menu-item:hover.select-menu-action > .octicon, +.select-menu-item:hover .description-inline > .octicon, .select-menu-item:focus > .octicon, .select-menu-item:focus.selected > .octicon, .select-menu-item:focus.select-menu-action > .octicon, +.select-menu-item:focus .description-inline > .octicon, .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, .select-menu-item[aria-checked="true"]:focus > .octicon, .select-menu-item[aria-checked="true"]:hover > .octicon, .select-menu-item[aria-selected="true"] > .octicon, .select-menu-item[aria-selected="true"].selected > .octicon, .select-menu-item[aria-selected="true"].select-menu-action > .octicon, +.select-menu-item[aria-selected="true"] .description-inline > .octicon{color:#fff}.select-menu-item:hover .description, +.select-menu-item:hover .description-warning, .select-menu-item:hover.selected .description, +.select-menu-item:hover.selected .description-warning, .select-menu-item:hover.select-menu-action .description, +.select-menu-item:hover.select-menu-action .description-warning, +.select-menu-item:hover .description-inline .description, +.select-menu-item:hover .description-inline .description-warning, .select-menu-item:focus .description, +.select-menu-item:focus .description-warning, .select-menu-item:focus.selected .description, +.select-menu-item:focus.selected .description-warning, .select-menu-item:focus.select-menu-action .description, +.select-menu-item:focus.select-menu-action .description-warning, +.select-menu-item:focus .description-inline .description, +.select-menu-item:focus .description-inline .description-warning, .select-menu-item.navigation-focus .description, +.select-menu-item.navigation-focus .description-warning, .select-menu-item.navigation-focus.selected .description, +.select-menu-item.navigation-focus.selected .description-warning, .select-menu-item.navigation-focus.select-menu-action .description, +.select-menu-item.navigation-focus.select-menu-action .description-warning, +.select-menu-item.navigation-focus .description-inline .description, +.select-menu-item.navigation-focus .description-inline .description-warning, .select-menu-item[aria-checked="true"]:focus .description, +.select-menu-item[aria-checked="true"]:focus .description-warning, .select-menu-item[aria-checked="true"]:hover .description, +.select-menu-item[aria-checked="true"]:hover .description-warning, .select-menu-item[aria-selected="true"] .description, +.select-menu-item[aria-selected="true"] .description-warning, .select-menu-item[aria-selected="true"].selected .description, +.select-menu-item[aria-selected="true"].selected .description-warning, .select-menu-item[aria-selected="true"].select-menu-action .description, +.select-menu-item[aria-selected="true"].select-menu-action .description-warning, +.select-menu-item[aria-selected="true"] .description-inline .description, +.select-menu-item[aria-selected="true"] .description-inline .description-warning{color:#fff}.select-menu-item[aria-selected="true"].disabled, .select-menu-item.navigation-focus.disabled{color:hsla(0,0%,100%,0.5)}.select-menu-item[aria-selected="true"].disabled .description, .select-menu-item.navigation-focus.disabled .description{color:hsla(0,0%,100%,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 input:checked + .octicon-check{color:inherit;visibility:visible}.select-menu-item[aria-checked="true"], .select-menu-item.selected{color:#24292e}.select-menu-item[aria-checked="true"] .description, .select-menu-item.selected .description{color:#586069}.select-menu-item[aria-checked="true"] > .octicon, .select-menu-item.selected > .octicon{color:#24292e}.select-menu-item[aria-checked="true"] .octicon-check, .select-menu-item.selected .octicon-check{color:inherit;visibility:visible}.select-menu-item[aria-checked="true"] .select-menu-item-text .octicon-x, .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, .select-menu-item-parent[aria-selected="true"], .select-menu-item-parent[aria-selected="true"].selected{color:#24292e;background-color:#f1f8ff}.select-menu-item-parent.navigation-focus .octicon-check, .select-menu-item-parent.navigation-focus.selected .octicon-check, .select-menu-item-parent[aria-selected="true"] .octicon-check, .select-menu-item-parent[aria-selected="true"].selected .octicon-check{color:#24292e}.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:400;color:#444d56}.select-menu-action > .octicon{color:inherit}.select-menu-action:hover{color:#0366d6}.select-menu-no-results{display:none;padding:9px;color:#586069;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:#586069}.select-menu-item-text .description-inline{font-size:10px;color:#586069}.select-menu-item-text .description-warning{color:#cb2431}.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:400}.select-menu-new-item-form{display:none}.select-menu-new-item-form .octicon{color:#0366d6}.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}.authors-2 .AvatarStack{min-width:36px!important}.authors-3 .AvatarStack{min-width:46px!important}[aria-selected="true"] .AvatarStack-body, +.navigation-focus .AvatarStack-body{background:#f6fbff}.commit-tease .AvatarStack-body{background:#f1f8ff}.blame-commit .AvatarStack{margin-top:3px}.unfurl{padding:0 1em;border-left:0.25em solid #d1d5da}.unfurl-icon{width:15px;height:15px}.hide-unfurl{display:none}.editable-comment .hide-unfurl{display:block}body{min-width:1012px;word-wrap:break-word}.page-content{padding-top:20px}.container-sm{max-width:544px}.marketing .pagehead h1{font-size:30px}.marketing .pagehead p{margin-top:4px;margin-bottom:0;font-size:14px;color:#586069}.marketing .pagehead ul.actions{margin-top:10px}.marketing h2 .secure{float:right;padding:1px 0;font-size:11px;font-weight:600;color:#28a745;text-transform:uppercase}.marketing .questions p{font-size:14px}.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:400}.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:#0366d6}.marketing-hero-octicon .octicon-checklist{position:relative;right:-3px}.hanging-icon-list li{padding-left:25px;margin:10px 0;font-size:14px;list-style-type:none}.hanging-icon-list .octicon{float:left;margin-top:3px;margin-left:-25px;color:#586069}.hanging-icon-list .octicon-check{color:#28a745}.hanging-icon-list .octicon-x{color:#cb2431}.nonprofit-head{padding:100px 0 120px}.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;transform:rotate(45deg)}.heart:first-child{margin-left:-400px;transform:rotate(-45deg),scaleX(-1)}.octo-earth{position:absolute;bottom:-150px;left:50%;margin-left:-120px;animation:rotate 20s infinite linear}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(-360deg)}}.btn-blurple{color:#fff;background-color:#3b41af;background-image:linear-gradient(-180deg,#6570e2 0%,#3b41af 90%)}.btn-blurple:focus, .btn-blurple.focus{box-shadow:0 0 0 0.2em rgba(101,112,226,0.4)}.btn-blurple:hover, .btn-blurple.hover{background-color:#383ea7;background-image:linear-gradient(-180deg,#5c68e0 0%,#383ea7 90%);background-position:-0.5em;border-color:rgba(27,31,35,0.5)}.btn-blurple:active, .btn-blurple.selected, +[open] > .btn-blurple{background-color:#3a43bb;background-image:none;border-color:rgba(27,31,35,0.5);box-shadow:inset 0 0.15em 0.3em rgba(27,31,35,0.15)}.btn-blurple:disabled, .btn-blurple.disabled{color:hsla(0,0%,100%,0.75);background-color:#9da0d7;background-image:none;border-color:rgba(27,31,35,0.2);box-shadow:none}.btn-blurple .Counter{color:#4350dc;background-color:#fff}.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}.intgrs-dir .marketing-graphic{padding-right:0;margin:0}.intgrs-dir .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:linear-gradient(-110deg,#48227d 0%,#2f569c 100%);border-bottom:0}.pagehead + .intgrs-dir-intro{margin-top:-20px}.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:400;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:inline-flex;width:30.8%;font-size:14px;border:1px solid #ededed;border-radius:4px;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);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:#0366d6}.intgrs-lstng-item-header{margin:15px 10px 0;font-size:14px;font-weight:600;color:#333}.intgrs-lstng-item-description{position:relative;height:2.8em;padding:0 10px;margin-top:5px;overflow:hidden;font-size:13px;color:#586069}.intgrs-lstng-item-description::after{position:absolute;right:0;bottom:0;padding:0 15px 0 20px;color:transparent;content:"\00a0";background-image:linear-gradient(to right,hsla(0,0%,100%,0),#fff 80%)}.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:#0366d6}.intgr-admin-link .octicon{position:absolute;top:3px;left:5px;color:#586069}.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:400;color:#8296cc}.integrations-breadcrumb-link{line-height:0;color:#d7def1}.integrations-breadcrumb-link:hover{color:#fff;text-decoration:none}.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:400}.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:rgba(27,31,35,0.7)}.integrations-install-target .private{background-color:#fff9ea}.integrations-install-target [aria-selected="true"].private, +.integrations-install-target .navigation-focus.private{background-color:#4078c0}.integrations-install-target [aria-selected="true"].octicon-lock, +.integrations-install-target .navigation-focus .octicon-lock{color:inherit}.integrations-setup-note{margin:10px 0}.listgroup-item{line-height:inherit}.listgroup-item.disabled{background-color:#fafbfc}.listgroup-item.disabled .listgroup-item-title{color:#333}.integration-key-management-wrapper .integration-key-downloading{display:none}.integration-key-management-wrapper .integration-key-list{display:none}.integration-key-management-wrapper .flash-error{display:none}.integration-key-management-wrapper .blankslate{margin-bottom:30px}.integration-key-management-wrapper .action .deletable{display:none}.integration-key-management-wrapper .action .undeletable{display:block}.integration-key-management-wrapper.multi-keys .action .deletable{display:block}.integration-key-management-wrapper.multi-keys .action .undeletable{display:none}.integration-key-management-wrapper.error .flash-error{display:block}.integration-key-management-wrapper.error .integration-key{opacity:0.5}.integration-key-management-wrapper.error .action .deletable{display:none}.integration-key-management-wrapper.error .action .undeletable{display:block}.integration-key-management-wrapper.downloading .blankslate{display:none}.integration-key-management-wrapper.downloading .integration-key-downloading{display:block}.integration-key-management-wrapper.downloading .integration-key-list{display:block}.integration-key-management-wrapper.downloading .integration-key-management{display:none}.integration-key-management-wrapper.has-keys .blankslate{display:none}.integration-key-management-wrapper.has-keys .integration-key-list{display:block}.link-small{color:#767676;transition:color 500ms ease}.listgroup-item:hover .link-small{color:#0366d6}.manifest-errors{border-left:3px solid #d73a49;border-radius:0 3px 3px 0}.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}.accessibility-error{outline:10px solid #d73a49!important}.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:600;color:#333}.billing-plans .coupon{font-size:12px}.billing-plans .coupon td{color:#fff;background-color:#28a745}.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:#28a745}.boxed-group-table .toggle-currency{font-size:11px;font-weight:400}.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}.member-list-item .member-username{display:inline}.member-list-item .member-link{display:inline}.actor-and-action{font-weight:600}.vertical-separator{margin-right:8px;margin-left:5px;border-left:1px solid grey}.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 hsla(0,0%,100%,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 ol, +.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 ol, +.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:0}.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{color:#333}.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}.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.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}.cvv-hint:hover .cvv-hint-tooltip{display:block}.cvv-hint-tooltip{position:absolute;left:-115px;z-index:1000;display:none;padding:15px;background-color:#fff;border:1px solid #d0d0d0;border-radius:3px;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:#6a737d;text-align:center;letter-spacing:1px;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 red;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:#586069}.credit-card .text{display:block;font-family:monospace;font-size:7px;font-weight:600;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:#fafbfc}.billing-addon-items tr.total-row{color:#cb2431;background-color:#fff}.billing-addon-items .new-addon-items{margin-left:5px}.billing-addon-items .addon-cost{color:#6a737d}.billing-addon-items .discounted-original-price{color:#666}.billing-addon-items .form-submit, +.billing-addon-items .payment-method{margin-left:8px}.billing-addon-items .payment-summary{margin-right:8px;margin-left:8px}.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}.billing-heres-what-appears{margin:0 0 10px}.billing-extra-box{padding-left:10px;margin:10px 0;border-left:3px solid #eee}.billing-vat-box{padding-left:10px;margin:10px 0;border-left:3px solid #eee}.billing-section .action-button{float:right;margin-bottom:5px;margin-left:10px}.billing-section .section-label{position:absolute;width:85px;font-weight:400;color:#586069;text-align:right}.billing-section .section-title{width:100px}.billing-section .section-content{margin-left:100px;color:#333}.billing-section:last-child{border-bottom:0}.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:#d73a49}.usage-bar .progress{position:relative;max-width:100%;height:5px;background:#67d07c;border-radius:20px;transition:width 0.3s}.usage-bar .progress.no-highlight{background:#959da5}.live-update-seats-usage{margin:10px 0 5px}.billing-per-seat-callout{position:relative}.lfs-data-pack-field{margin:-6px 0}.packs-table .desc{width:1%;white-space:nowrap}.lfs-data-icon{color:#586069;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 .form-group dd .card-select-number{width:300px}.payment-methods .form-group dd .form-control.short.input-vat{width:300px}.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}.paypal-label{margin:15px 0 10px;font-weight:600}.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{white-space:nowrap}.payment-history .break-all{word-break:break-all}.payment-history .receipt{text-align:center}.payment-history .currency, +.payment-history .status{color:#586069}.payment-history .status-icon{width:14px;text-align:center}.payment-history .succeeded .status{color:#28a745}.payment-history .refunded, +.payment-history .failed{background:#f6f8fa}.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:#6a737d}.payment-history .failed .status{color:#cb2431}.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:600}.discounted-original-price{font-weight:400;color:#586069;text-decoration:line-through}.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:600;color:#586069}.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:400}.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:400;background-color:#fafbfc;border:1px solid #e0e0e0}.plan-choice.open, .plan-choice.selected{background-color:#fff}.plan-choice--experiment{cursor:pointer;transition:transform 0.3s,box-shadow 0.3s,border-color 0.3s}.plan-choice--experiment.open, .plan-choice--experiment.selected{border-color:#d1d5da;box-shadow:0 1px 15px rgba(27,31,35,0.15);transform:scale(1.025)}.plan-choice--experiment.open .plan-choice-icon, .plan-choice--experiment.selected .plan-choice-icon{background-color:#28a745;box-shadow:0 1px 1px rgba(27,31,35,0.1)}.plan-choice--experiment.open .plan-choice-icon .octicon, .plan-choice--experiment.selected .plan-choice-icon .octicon{transform:scale(1)}.plan-choice--experiment.plan-choice--blue.open, .plan-choice--experiment.plan-choice--blue.selected{border-color:#2188ff}.plan-choice--experiment.plan-choice--blue.open .plan-choice-icon, .plan-choice--experiment.plan-choice--blue.selected .plan-choice-icon{background-color:#0366d6}.plan-choice--experiment.plan-choice--green.open, .plan-choice--experiment.plan-choice--green.selected{border-color:#34d058}.plan-choice--experiment.plan-choice--green.open .plan-choice-icon, .plan-choice--experiment.plan-choice--green.selected .plan-choice-icon{background-color:#28a745}.plan-choice--experiment.plan-choice--purple.open, .plan-choice--experiment.plan-choice--purple.selected{border-color:#8a63d2}.plan-choice--experiment.plan-choice--purple.open .plan-choice-icon, .plan-choice--experiment.plan-choice--purple.selected .plan-choice-icon{background-color:#6f42c1}.plan-choice-icon{transition:box-shadow 0.3s}.plan-choice-icon .octicon{transition:transform 0.2s;transform:scale(0.5)}.plan-choice-radio{position:absolute;top:18px;left:15px}.plan-choice-exp{margin-top:5px;font-size:12px;color:#6a737d}.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:600;border-top-width:3px}.line-item-value{float:right}.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%}.zuora-billing-section.PaymentMethod--creditcard:not(.has-removed-contents) ~ .SignUpContinueActions{display:none}.zuora-billing-section.PaymentMethod--creditcard-added ~ .SignUpContinueActions{display:block}.zuora-billing-section.PaymentMethod--paypal ~ .SignUpContinueActions{display:block}.blame-commit{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.blame-commit[data-heat="1"]{border-right:2px solid #f66a0a}.blame-commit[data-heat="2"]{border-right:2px solid rgba(246,106,10,0.9)}.blame-commit[data-heat="3"]{border-right:2px solid rgba(246,106,10,0.8)}.blame-commit[data-heat="4"]{border-right:2px solid rgba(246,106,10,0.7)}.blame-commit[data-heat="5"]{border-right:2px solid rgba(246,106,10,0.6)}.blame-commit[data-heat="6"]{border-right:2px solid rgba(246,106,10,0.5)}.blame-commit[data-heat="7"]{border-right:2px solid rgba(246,106,10,0.4)}.blame-commit[data-heat="8"]{border-right:2px solid rgba(246,106,10,0.3)}.blame-commit[data-heat="9"]{border-right:2px solid rgba(246,106,10,0.2)}.blame-commit[data-heat="10"]{border-right:2px solid rgba(246,106,10,0.1)}.heat[data-heat="1"]{background:#f66a0a}.heat[data-heat="2"]{background:rgba(246,106,10,0.9)}.heat[data-heat="3"]{background:rgba(246,106,10,0.8)}.heat[data-heat="4"]{background:rgba(246,106,10,0.7)}.heat[data-heat="5"]{background:rgba(246,106,10,0.6)}.heat[data-heat="6"]{background:rgba(246,106,10,0.5)}.heat[data-heat="7"]{background:rgba(246,106,10,0.4)}.heat[data-heat="8"]{background:rgba(246,106,10,0.3)}.heat[data-heat="9"]{background:rgba(246,106,10,0.2)}.heat[data-heat="10"]{background:rgba(246,106,10,0.1)}.blame-commit-date{font-size:11px;line-height:25px;flex-shrink:0}.blame-commit-date[data-heat="1"]{color:#c24e00}.blame-commit-date[data-heat="2"]{color:#ac571f}.blame-commit-date[data-heat="3"]{color:#a35b2c}.blame-commit-date[data-heat="4"]{color:#9a5f38}.blame-commit-date[data-heat="5"]{color:#926245}.blame-commit-date[data-heat="6"]{color:#896651}.blame-commit-date[data-heat="7"]{color:#806a5e}.blame-commit-date[data-heat="8"]{color:#776d6a}.blame-commit-date[data-heat="9"]{color:#6e7177}.blame-commit-date[data-heat="10"]{color:#6a737d}.line-age-legend .heat{width:2px;height:10px;margin:2px 1px 0}.blame-breadcrumb .css-truncate-target{max-width:680px}.blame-commit-info{width:450px;height:26px}.blame-commit-content{flex-grow:2;overflow:hidden}.blame-commit-message{text-overflow:ellipsis}.blame-commit-message .message.blank{color:rgba(27,31,35,0.3)}.blob-reblame{min-width:24px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reblame-link{padding-top:2px;color:#d1d5da}.blame-hunk g-emoji{font-size:14px!important}.blame-hunk:hover .reblame-link{color:#6a737d}.blame-container .blame-blob-num, +.blame-container .blob-code-inner{padding-top:3px;padding-bottom:3px}.blame-container .blob-code-inner{flex-grow:1}.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:#586069}.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}.TagsearchPopover-content{width:inherit;max-width:600px}.license-summary-octicon{color:#959da5}.rule-type-permissions{color:#28a745}.rule-type-conditions{color:#0366d6}.rule-type-limitations{color:#d73a49}.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}.commit-form-avatar{margin-left:-64px}.file-commit-form{padding-left:64px}.file-commit-form--full{position:absolute;top:0;right:0;z-index:2;margin-top:16px}.file-commit-form--full .commit-form{padding:0;margin-bottom:24px;border:0}.file-commit-form--full .commit-form::before{display:none}.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}.quick-pull-new-branch-icon{top:9px;left:10px}.code-formatting-menu{width:260px}.merge-pr{padding-top:10px;margin:20px 0 0;border-top:1px solid #d1d5da}.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 #e1e4e8;border-width:1px 0 0;transition:max-height 0.25s ease-in-out}.statuses-toggle-opened{display:none}.merge-status-item{position:relative;padding:10px 15px;background-color:#fafbfc;border-bottom:1px solid #e1e4e8}.merge-status-item:last-child{border-bottom:0}.merge-status-item .css-truncate-target{max-width:100%}.merge-status-item .dismiss-review-form{display:none}.merge-status-item.open .review-status-item{display:none!important}.merge-status-item.open .dismiss-review-form{display:block}.status-meta{color:#586069}.status-meta-file-name{padding:0.2em 0.4em;margin:0;font-size:85%;background-color:rgba(27,31,35,0.05);border-radius:3px}.status-actions{margin-left:auto}.branch-action-item-icon{float:left;margin-left:-40px}.merge-status-icon{width:30px;margin-right:12px}.merge-pr-more-commits{margin-top:10px;margin-bottom:10px;margin-left:60px;font-size:12px;color:#586069}.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 #d1d5da;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:#d1d5da}.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:#fafbfc;border-top:1px solid #e1e4e8;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 #e1e4e8}.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:#2cbe4e}.branch-action-state-clean .branch-action-body{border-color:#34d058}.branch-action-state-clean .branch-action-body::before{border-right-color:#34d058}.branch-action-state-unknown .branch-action-icon, +.branch-action-state-unstable .branch-action-icon{background-color:#dbab09}.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:#6f42c1}.branch-action-state-merged .branch-action-body{border-color:#d5c8ed}.branch-action-state-merged .branch-action-body::before{border-right-color:#d5c8ed}.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:#6a737d}.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:#d1d5da}.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:#d1d5da}.branch-action-state-error .branch-action-icon{background-color:#d73a49}.branch-action-state-error .branch-action-body{border-color:#f97583}.branch-action-state-error .branch-action-body::before{border-right-color:#f97583}@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:#85e89d}.merge-branch-form .commit-form::before{border-right-color:#e1e4e8}.merge-branch-form.error .commit-form, +.merge-branch-form.danger .commit-form{border-color:#f97583}.merge-branch-form.error .commit-form::before, +.merge-branch-form.danger .commit-form::before{border-right-color:#f97583}.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:#2cbe4e;border-radius:50%}.completeness-indicator-error{color:#fff;background-color:#cb2431;border-radius:50%}.completeness-indicator-problem{color:#fff;background-color:#6a737d;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:#fffbdd;border:1px solid rgba(27,31,35,0.15);border-radius:3px}.RecentBranches-item{line-height:28px;color:#735c0f}.RecentBranches-item + .RecentBranches-item{border-top:1px solid rgba(27,31,35,0.05)}.RecentBranches-item-link{color:#735c0f}.RecentBranches-item-link.css-truncate-target{max-width:400px}.range-editor{position:relative;padding:5px 15px 5px 40px;margin-top:15px;margin-bottom:15px;background-color:#fafbfc;border:1px solid #e1e4e8;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:#586069}.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 #dfe2e5;border-radius:3px}ul.comparison-list > li{padding:7px 10px;list-style-type:none;border-top:1px solid #eaecef}ul.comparison-list > li a{font-weight:600}ul.comparison-list > li em{float:right;font-style:normal;color:#586069}ul.comparison-list > li .octicon{position:relative;top:1px;color:#a3aab1}ul.comparison-list > li .css-truncate-target{max-width:200px}ul.comparison-list > li.title{font-size:12px;font-weight:600;color:#6a737d;text-transform:uppercase;background:#fafbfc;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:hsla(0,0%,100%,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 .branch-actions{position:relative;top:-4px;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;background:#f6f8fa;border:1px solid #dfe2e5;border-bottom:0}.branch-group-heading + .branch-summary{border-top:1px solid #dfe2e5}.branch-group-heading .branch-name{color:#fff;background:#6a737d}.branch-group-name{font-weight:600;color:#586069}.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:#6a737d}.branch-search-field{width:250px;padding-right:25px}.no-results-message{padding:12px;color:rgba(27,31,35,0.5);text-align:center;border:1px solid #dfe2e5;border-radius:0 0 3px 3px}.branch-summary{padding:12px;color:rgba(27,31,35,0.5);border:1px solid #dfe2e5;border-bottom:0}.branch-summary:last-child{border-bottom:1px solid #dfe2e5}.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}.branch-delete{display:inline-block;margin:4px 2px 0 8px;color:#cb2431}.branch-delete.disabled{color:#dfe2e5}.more-branches{display:block;width:100%;padding:6px;color:#0366d6;text-align:center;text-decoration:none;background:#eaf5ff;border:1px solid rgba(27,31,35,0.05);border-radius:0 0 3px 3px}.more-branches:hover{background:#dbedff}.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:#6a737d}.default-label{display:inline-block;width:150px;text-align:center;vertical-align:top}.default-label .sha{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace}.default-label .sha .ellipses{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",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 #959da5}.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:#c6cbd1}.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:#eaecef}.businesses-toolbar .subnav-search{width:240px;margin-right:20px}.custom-messages .add-message{flex:1}.custom-messages .add-message .Subhead-heading{flex:0 0 auto}.custom-messages .add-message p{flex:1;line-height:21px}.custom-messages .tabnav{height:23px;padding:0;border:0}.custom-messages .write-content{margin-right:0;margin-left:0}.custom-messages .timeline-comment{margin-top:-25px;background-color:inherit;border:0}.custom-messages .comment-form-textarea{min-height:200px}.custom-messages .flash{margin-bottom:10px;overflow-y:hidden}.admin-options-block .admin-option-button{margin-top:8px}.admin-options-block .policy-enforcement{display:inline;margin-left:8px;color:#586069}.admin-options-block .policy-enforcement label{font-size:13px}.admin-options-block .disabled{color:#6a737d}.admin-options-block .disabled .note{color:#6a737d}body.full-width-p-0 .new-discussion-timeline{padding:0!important;border-bottom:1px #e1e4e8 solid}body.full-width-p-0 .footer .mt-6{margin-top:0!important;border-top:0!important}body.full-width-p-0 .tabnav-pr .tabnav-extra{margin-right:24px}body.full-width-p-0 .tabnav-pr .tabnav-tabs{margin-left:16px}.checks-toolbar-commit-message.css-truncate{max-width:300px}.checks-index-group .octicon{vertical-align:text-top}.checks-index-item:first-child::before{position:absolute;top:0;left:0;z-index:1;width:100%;height:5px;content:" ";background-image:linear-gradient(to bottom,rgba(47,54,61,0.1) 0%,hsla(0,0%,100%,0) 100%)}.checks-index-item:hover{background-color:#fff!important}.checks-index-item.selected{background-color:#fff!important}.checks-index-item.selected::after{position:absolute;top:0;bottom:0;left:0;display:block;width:3px;content:" ";background-color:#e36209}.checks-index-item .css-truncate-target{max-width:220px}.checks-index-item-icon{width:16px}.selected .checks-index-label{font-weight:600;color:#24292e}.checks-summary-meta .octicon{width:16px}.checks-results-items .octicon-fold{display:none}.checks-results-items .Details--on .octicon-fold{display:inline-block}.checks-results-items .Details--on .octicon-unfold{display:none}.check-annotation{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.check-annotation::after{position:absolute;top:-1px;bottom:-1px;left:0;display:block;width:4px;content:" "}.check-annotation .annotation-actions{top:4px;right:8px}.check-annotation .annotation-octicon{width:16px}.check-annotation.Details--on .Details-content--hidden{display:block!important}.diff-table .check-annotation{max-width:962px}.annotation-title{word-break:break-all}.check-annotation-failure::after{background-color:#d73a49}.check-annotation-failure .annotation-title{color:#d73a49}.check-annotation-warning::after{background-color:#ffd33d}.check-annotation-warning .octicon-alert{color:#dbab09}.check-annotation-warning .annotation-title{color:#b08800}.check-annotation-notice::after{background-color:#6a737d}.check-annotation-notice .annotation-title{color:#6a737d}.neutral-check{color:#959da5}.code-frequency .addition{fill:#2cbe4e;fill-opacity:1}.code-frequency .deletion{fill:#cb2431;fill-opacity:1}.cadd{font-weight:600;color:#28a745}.cdel{font-weight:600;color:#cb2431}.code-list .file-box{border:1px #e1e4e8 solid;border-radius:3px}.code-list em{padding:2px;margin:0 -2px;font-style:normal;font-weight:600;color:#24292e;background-color:rgba(255,255,140,0.5);border-radius:3px}.code-list .title{min-height:24px;margin:-3px 0 10px 38px;font-weight:600;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:400}.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{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:#0366d6}.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:#586069}.code-list .full-path .octicon-lock{color:#e9dba4}.code-list .full-path a{color:#6a737d}.code-list-item-private .file-box{border:1px solid #fadda5}.code-list-item-private .blob-num{background-color:#fffdef;border-right:1px solid #fadda5}.code-list-item-private .blob-num a{color:rgba(27,31,35,0.7)}.code-list-item-private .divider .blob-num, +.code-list-item-private .divider .blob-code{color:rgba(27,31,35,0.7);background-color:#fffdef}.codesearch-head.pagehead h1{width:250px;line-height:33px}.search-autocomplete-dropdown{min-width:240px}.search-autocomplete-dropdown .autocomplete-category-heading::after{position:absolute;width:100%;height:1px;margin-top:8px;content:"";background-color:#e1e4e8}.search-autocomplete-dropdown .autocomplete-keyword-only{background:#f6f8fa}.search-autocomplete-dropdown .autocomplete-text{color:#24292e}.search-autocomplete-dropdown .navigation-item{cursor:pointer}.search-autocomplete-dropdown .navigation-item[aria-selected="true"], .search-autocomplete-dropdown .navigation-item.navigation-focus{color:#fff;background-color:#0366d6;border-radius:3px}.search-autocomplete-dropdown .navigation-item[aria-selected="true"] .autocomplete-text, .search-autocomplete-dropdown .navigation-item.navigation-focus .autocomplete-text{color:#fff}@media (min-width: 768px){.advanced-search-form .flattened dt{width:230px}.advanced-search-form .flattened dt label{font-weight:400}.advanced-search-form .flattened dd{margin-left:250px}.advanced-search-form .form-checkbox{margin-left:250px}}.codesearch-results .code-list .title a{word-wrap:break-word}.codesearch-results .repo-list-item{border-bottom:0}.codesearch-results .repo-list-item + .repo-list-item{border-top:1px #e1e4e8 solid}.search-form-fluid .TableObject-item--primary{position:relative;padding-right:8px}.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:400;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}.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}.topics-row-container{height:30px;overflow:hidden}@media (max-width: 544px){.codesearch-pagination-container a:not(.next_page):not(.previous_page), + .codesearch-pagination-container .gap{display:none}.codesearch-pagination-container .previous_page, + .codesearch-pagination-container .next_page{width:100%}.codesearch-pagination-container .current{color:#586069;background:#fff;border-color:#e1e4e8}.codesearch-pagination-container .current::after{content:" of " attr(data-total-pages)}}.comment-apps-container{border-top-width:0}.comment-apps-container .comment-app-details[open] > .comment-app{color:#fff;background-color:#0366d6}.comment-apps .select-menu{bottom:36px}.comment-apps .select-menu .select-menu-button{background-color:#e1e4e8;box-shadow:0 0 0 4px #fafbfc}.comment-apps .select-menu .select-menu-button.selected{color:#fff;background-color:#0366d6}.comment-apps .select-menu .select-menu-button::after{display:none}.comment-apps .select-menu-modal{z-index:90}.write-content.focused .select-menu-button{box-shadow:0 0 0 4px #fff}.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:#f9c513}g.bar{fill:#28a745}g.mini{fill:#fb8532}g.active rect{fill:#b31d28}circle.focus{fill:#444d56}.dot text{fill:#444d56;stroke:none}.CommunityTemplate-header{height:40px}.CommunityTemplate-markdown{height:800px;overflow-y:scroll;font-size:14px}.CommunityTemplate-highlight{padding:2px 4px;margin:0;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px;font-style:normal;font-weight:600;color:#24292e;cursor:pointer;background-color:#ffd33d;border-radius:3px}.CommunityTemplate-highlight--focus{color:#fff;background-color:#0366d6}.community-checklist .progress-bar{background:linear-gradient(to right,#ffd33d,#c5e300,#28a745);background-color:transparent}.community-checklist .progress{float:right;background-color:#f6f8fa}.community-checklist .checklist-dot{color:#dbab09}body.full-width-p0 .container{width:100%;padding-right:20px;padding-left:20px}body.full-width-p0 .container.new-discussion-timeline{padding-right:0;padding-left:0}.compare-cutoff, +.diff-cutoff{padding:8px 0;margin:5px 0;font-weight:600;color:#4c4a42;text-align:center;background-color:#fff9ea;border:solid 1px #dfd8c2;border-radius:3px}span.no-nl-marker{position:relative;color:#cb2431;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:400;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:600;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}.timeline-jump-to-menu{left:-85px;z-index:80}.contributions-setting-menu{z-index:80;width:330px}.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}.graph-before-activity-overview{border-top-left-radius:3px;border-top-right-radius:3px}.activity-overview-box{border-top-left-radius:0;border-top-right-radius:0}.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:#cce888}.contribution-activity h2{margin:30px 0 15px;font-size:18px;font-weight:400}.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:#586069}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 .d{color:#c00}li.contribution .a{color:#8cac29}li.contribution .num{color:#586069}.activity-overview-axis, +.activity-overview-point{stroke:#6cb267}.halloween-activity-overview .activity-overview-axis, +.halloween-activity-overview .activity-overview-point{stroke:#fe9600}.activity-overview-label{fill:#586069}.activity-overview-percentage{font-size:10px;fill:#959da5}.tint-box{position:relative;margin-bottom:10px;background:#f6f8fa;border-radius:6px}.tint-box.transparent{background:#fff}.tint-box .activity{padding-top:100px;margin-top:0}.contrib-person path{fill:#fb8532}.contrib-person .midlabel{fill:#959da5}.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: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:#0366d6;border:1px solid #dedede;border-radius:40px}.coupon-icon .octicon{margin-top:15px;margin-right:2px}.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}.repo-private-icon{fill:#dbab09}.dashboard-rollup-items > .dashboard-rollup-item{border-top:1px solid #e1e4e8}@keyframes broadCastMaskFade{0%{opacity:0}30%{opacity:1}70%{opacity:1}100%{opacity:0}}.github-jobs-logo:hover{text-decoration:none}.github-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}.dashboard h1{margin-bottom:0.5em;font-size:160%}.dashboard h1 a{font-size:70%;font-weight:400}.dashboard .notice{padding:15px;margin-top:0;margin-bottom:0;text-align:center}.news-full, +.page-profile .news{float:none;width:auto}.dashboard-break-word{-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;word-break:break-word}.news .error-message{display:none}.news .is-error .loading-message{display:none}.news .is-error .error-message{display:block}.news .bio g-emoji, +.news .repo-description g-emoji{display:inline-block}.account-switcher-truncate-override{width:calc(100% - 36px);max-width:100%!important}.dashboard-underlined-link:hover, +.dashboard-underlined-link:hover *{text-decoration:underline}.dashboard-notice{position:relative;padding:15px 15px 15px 55px;margin-bottom:20px;font-size:14px;background-color:#fafbfc;border:solid 1px #d1d5da;border-radius:3px}.dashboard-notice .dismiss{position:absolute;top:10px;right:10px;width:16px;height:16px;color:#959da5;cursor:pointer}.dashboard-notice .dismiss:hover{color:#586069}.dashboard-notice .notice-icon{position:absolute;top:15px;left:15px}.dashboard-notice .octicon-organization{color:#0366d6}.dashboard-notice h2{margin-top:9px;margin-bottom:16px;font-size:18px;font-weight:400;color:#24292e}.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:600;text-align:center;background:#fff;border:1px dashed #dbedff}.dashboards-overview-lead{width:700px}.dashboards-overview-cards .boxed-group{width:100%;margin:10px 0}.dashboards-overview-cards .boxed-group .graph-canvas path{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:#cb2431}.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 .metric-0{color:#1db34f}.dashboards-overview-cards .summary-stats .metric-1{color:#0366d6}.dashboards-overview-cards .summary-stats .totals-num{margin:0 7px}.dashboards-overview-cards .summary-stats .single{width:100%}.dashboards-overview-cards .dashboards-overview-graph{height:160px}.dashboards-overview-cards .dashboards-overview-graph path{fill:none;stroke-width:2}.dashboards-overview-cards .dashboards-overview-graph path.metric-0{stroke:#1db34f}.dashboards-overview-cards .dashboards-overview-graph path.metric-1{stroke:#1d7fb3}.dashboards-overview-cards .dashboards-overview-graph .y line{stroke:#1db34f}.dashboards-overview-cards .dashboards-overview-graph .y.unique line{stroke:#1d7fb3}.dashboards-overview-cards .dashboards-overview-graph .overlay{fill-opacity:0}.dashboards-overview-cards .metric-0 circle{fill:#1db34f;stroke:#fff;stroke-width:2}.dashboards-overview-cards .dots.metric-1 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:400}.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:#28a745;vertical-align:middle}.deployments-timeline{border-bottom:solid 2px #e6ebf1}.deployments-timeline-item{border-left:solid 2px #e6ebf1}.deployments-timeline-icon{left:-1px}.deployments-timeline-icon.is-error, .deployments-timeline-icon.is-failure{color:#cb2431}.deployments-timeline-icon.is-active{color:#28a745}.deployments-timeline-icon.is-inactive{color:#6a737d}.deployments-timeline-icon.is-pending, .deployments-timeline-icon.is-queued, .deployments-timeline-icon.is-in_progress{color:#b08800}.donut-chart > .error, +.donut-chart > .cancelled, +.donut-chart > .action_required, +.donut-chart > .timed_out, +.donut-chart > .failure{fill:#cb2431}.donut-chart > .expected, +.donut-chart > .queued, +.donut-chart > .in_progress, +.donut-chart > .pending{fill:#dbab09}.donut-chart > .success{fill:#2cbe4e}.donut-chart > .neutral{fill:#959da5}.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;transform:translateY(-50%)}.early-access-thanks-title{margin-top:0;font-weight:400}.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:#586069}.ghe-license-expiry-icon{margin:5px 10px 0 0;color:#ddb38a}.explore-content{margin-top:-15px}.explore-content .blankslate{margin-top:15px}.explore-pjax-container{position:relative}.repo-snipit{display:inline-block;margin-top:7px}.repo-snipit:hover{text-decoration:none}.repo-snipit .octicon{font-size:14px;color:#586069}.repo-snipit-name{max-width:200px;color:#666}.repo-snipit-description{max-width:300px;color:#586069}.repo-snipit:hover .repo-snipit-name, +.repo-snipit:hover .repo-snipit-description{color:#0366d6}.newsletter-frequency-choice{font-weight:400;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:600;color:#28a745;text-align:center;opacity:0}.newsletter-frequency-choice .notice.visible{bottom:-2em;opacity:1;transition:opacity 0.15s ease-in-out}.newsletter-frequency-choice h3{padding:10px;margin:0;font-weight:400;text-align:center;background-color:#fafbfc;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:#0366d6}.newsletter-frequency-choice:hover h3{color:#fff;background-color:#0366d6;border-color:#0366d6}.newsletter-frequency-choice.selected{border-color:#28a745;box-shadow:0 0 5px rgba(0,0,0,0.2)}.newsletter-frequency-choice.selected h3{color:#fff;background-color:#28a745;border-color:#28a745}@media (min-width: 1012px){.col-lg-9 .Collection{max-width:744px}}@media (min-width: 1012px){.Spotlight{margin-top:100px}}.Spotlight-text{z-index:1}.Spotlight-blur{z-index:0;opacity:0.9}@media (min-width: 1012px){.Spotlight-blur{opacity:1;-webkit-mask-image:linear-gradient(0deg,#000,#000 75%,transparent);mask-image:linear-gradient(0deg,#000,#000 75%,transparent)}}@media (min-width: 1280px){.Spotlight-blur--toleft{-webkit-mask-image:linear-gradient(to left,#000,#000 75%,transparent);mask-image:linear-gradient(to left,#000,#000 75%,transparent)}}@media (min-width: 1012px){.width-lg-auto{width:auto!important}}@media (min-width: 1280px){.width-xl-full{width:100%!important}}@media (min-width: 1012px){.height-lg-full{height:100%!important}}@media (min-width: 1280px){.height-xl-auto{height:auto!important}}.exploregrid{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:stretch;list-style:none}.exploregrid-item-wrap{display:flex;flex-direction:column}.exploregrid-item{flex:1;position:relative;display:block;height:100%;padding-top:24px;padding-bottom:64px;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);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:#0366d6}.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;transition:opacity 0.1s ease-in-out}.exploregrid-item-title{margin-top:0;margin-bottom:5px;font-size:20px;font-weight:400;line-height:1.2;color:#24292e}.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: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:16px;margin-bottom:16px;border:1px solid #ddd;border-radius:3px}.file .data.empty{padding:5px 10px;color:#586069}.file:not(.open) .file-header.file-header--expandable{border-bottom:0}.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 #6a737d}.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:#fafbfc;border-bottom:1px solid #e1e4e8;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-info{font-family:"SFMono-Regular",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}.comments-indicator{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}.has-inline-notes.hide-file-notes-toggle .show-file-notes{display:none!important}.has-inline-notes.hide-file-notes-toggle .comments-indicator{display:inline-block}.file-blankslate{border:0;border-radius:0 0 2px 2px}.diff-progressive-loader{min-height:150px}.load-diff-button, +.load-diff-retry{z-index:1;min-height:32px}.diff-placeholder-svg{clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%)}.hidden-diff-reason{z-index:2}.graphs h2.ghead::after{display:block;height:0;clear:both;visibility:hidden;content:"."}.graphs.wheader h2{padding:1px}.graphs .area{fill:#28a745;fill-opacity:0.5}.graphs .path{fill:none;stroke:#28a745;stroke-opacity:1;stroke-width:2px}.graphs .dot{fill:#28a745;stroke:#1e7e34;stroke-width:2px}.graphs .dot.padded{stroke:#fff;stroke-width:1px}.graphs .dot.padded circle:hover{fill:#0366d6}.graphs .d3-tip{fill:#24292e}.graphs .d3-tip text{font-size:11px;fill:#fff}.graphs .dir{float:right;padding-top:5px;font-size:12px;font-weight:400;line-height:100%;color:#6a737d}.graphs .selection .overlay{visibility:none}.graphs .selection .selection{fill:#24292e;fill-opacity:0.1;stroke:#24292e;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:#586069}.graph-canvas .activity{width:400px;padding:10px;margin:100px auto 0;color:#2f363d;text-align:center;border-radius:3px}.graph-canvas .dots{margin:0 auto}.graph-canvas > .activity{display:none}.graph-canvas .axis{font-size:10px}.graph-canvas .axis line{stroke:rgba(27,31,35,0.1);shape-rendering:crispedges}.graph-canvas .axis path{display:none}.graph-canvas .axis .zero line{stroke:#0366d6;stroke-dasharray:3 3;stroke-width:1.5}.graph-canvas .graph-loading, +.graph-canvas .graph-error, +.graph-canvas .graph-no-usable-data, +.graph-canvas .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}.graph-canvas.is-graph-loading .graph-loading, +.graph-canvas.is-graph-empty .graph-empty, +.graph-canvas.is-graph-without-usable-data .graph-no-usable-data, +.graph-canvas.is-graph-load-error .graph-error{display:block}.svg-tip{position:absolute;z-index:99999;padding:10px;font-size:12px;color:#959da5;text-align:center;background:rgba(0,0,0,0.8);border-radius:3px}.svg-tip strong{color:#dfe2e5}.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:600;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 .metric-0{border-top:3px solid #28a745;border-right:1px solid #24292e}.svg-tip.comparison .metric-1{border-top:3px solid #2188ff}.svg-tip-one-line{white-space:nowrap}.LoadingDependencies{position:absolute;left:0;width:100%;animation:fadeOut;animation-duration:0.6s;animation-fill-mode:forwards;animation-timing-function:ease-in}.LoadingDependencies--loading{position:relative}.LoadingDependencies--loading .octicon{opacity:0;animation:dropBox;animation-duration:1.25s;animation-fill-mode:forwards;animation-timing-function:linear;animation-delay:1s;animation-iteration-count:infinite}.LoadingDependencies--loading .octicon:nth-child(2){position:absolute;left:calc(50% - 27px);animation-delay:1.61s}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes dropBox{0%{opacity:1;transform:translateY(-110%)}7%{opacity:1;transform:translateY(20%);transform:translateX(0)}80%{opacity:1}100%{opacity:0;transform:translateX(-250%)}}.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:#fafbfc}.getting-started .link-text{color:#24292e}.getting-started .link-text strong{color:#0366d6}.topic-tag{display:inline-block;padding:0.3em 0.9em;margin:0 0.5em 0.5em 0;white-space:nowrap;background-color:#f1f8ff;border-radius:3px}.topic-tag-link:hover{text-decoration:none;background-color:#def}.delete-topic-button{display:inline-block;width:26px;color:#6a737d;background-color:#f1f8ff;border-top:0;border-right:0;border-bottom:0;border-left:1px solid #b4d9ff;border-top-right-radius:3px;border-bottom-right-radius:3px}.delete-topic-button:hover{background-color:#def}.invalid-topic .delete-topic-button{color:#86181d;background-color:#ffdce0;border-left-color:#cea0a5}.invalid-topic .delete-topic-button:hover{background-color:#ffc8ce}.topic-tag-action{display:inline-flex;align-items:center;padding-left:0.8em;margin:0.4em 0.4em 0 0;background-color:#f1f8ff;border-radius:3px}.topic-tag-action.invalid-topic{color:#86181d;background-color:#ffdce0;border-color:#cea0a5}.topic-tag-action .add-topic-button, +.topic-tag-action .remove-topic-button{display:inline-block;width:26px;font-size:15px;color:#6a737d;background-color:#f1f8ff;border-top:0;border-right:0;border-bottom:0;border-left:1px solid #b4d9ff}.topic-tag-action .add-topic-button:hover, +.topic-tag-action .remove-topic-button:hover{color:#fff}.topic-tag-action .add-topic-button:hover{background-color:#28a745}.topic-tag-action .remove-topic-button{border-right:0;border-top-right-radius:3px;border-bottom-right-radius:3px}.topic-tag-action .remove-topic-button:hover{background-color:#d73a49}.topic-input-container .tag-input{width:908px;cursor:text}.topic-input-container .tag-input.org-repo-tag-input{width:100%}.topic-input-container .tag-input .tag-input-inner{min-height:26px;background-image:none}.topic-input-container .topic-tag{margin-top:2px}.repository-topics-container .list-topics-container{display:inline-flex;flex-wrap:wrap;align-items:baseline}.topic .css-truncate-target{max-width:75%}.topic-list .topic-list-item + .topic-list-item{border-top:1px #e1e4e8 solid}.team-breadcrumb .team-breadcrumb-item{display:inline-block}.team-breadcrumb .team-breadcrumb-item::after{padding-right:0.5em;padding-left:0.5em;color:#e1e4e8;content:"/"}.team-breadcrumb .team-breadcrumb-item-selected::after{content:none}.team-discussions-container{min-height:100vh}.team-left-column{max-width:100%}@media (min-width: 768px){.team-left-column{max-width:350px}}.team-left-column .team-avatar{width:80px;height:80px}@media (min-width: 768px){.team-left-column .team-avatar{width:140px;height:140px}}.team-discussions{max-width:768px}.team-discussions .previewable-comment-form .comment{border:0}.discussion-post{opacity:1;transition:opacity 400ms}.discussion-post .timeline-comment::after, +.discussion-post .timeline-comment::before{display:none}.discussion-post .post-author{margin-top:-6px}.discussion-post .post-author-timestamp{margin-top:-3px}.discussion-post.fade-out{opacity:0}.discussion-post .timeline-inline-comments{background:#fafbfc}.discussion-post .team-discussion-timeline::before{bottom:20px}.discussion-post .reply-comment:first-child{border-top:1px solid #e1e4e8}.discussion-post .reply-comment:first-child .review-comment{padding-top:16px}.discussion-post .reply-comment .review-comment{padding:8px 16px}.discussion-post .reply-comment .review-comment.is-comment-editing{padding:0;background:#fafbfc}.discussion-post .comment .comment-reactions{margin-left:16px;border-top:0}.discussion-post .comment .reaction-summary-item{margin-bottom:16px}.discussion-post .reaction-summary-item:not(.add-reaction-btn){padding:0 8px;font-size:12px;line-height:26px;border:1px solid #d2dff0;border-radius:3px}.discussion-post .reaction-summary-item:not(.add-reaction-btn) .emoji{font-size:16px;vertical-align:sub}.discussion-post .reaction-summary-item:not(.add-reaction-btn) + .reaction-summary-item{margin-left:8px}.discussion-post .reply-comments-holder{position:relative}.discussion-post .reply-comments-holder::before{position:absolute;top:51px;bottom:0;left:29px;width:2px;content:"";background-color:#e1e4e8}.discussion-post .add-reaction-btn{padding:4px 10px}.discussion-post .pin-btn:disabled{pointer-events:none}.discussion-post .pinned{color:#f66a0a;opacity:1}.discussion-post .loading-spinner{display:none;float:left;margin-top:12px}.discussion-post .loading .loading-spinner{display:block}.discussion-post ~ .blankslate{display:none}.team-discussion-new-post .review-thread-reply-button:disabled{cursor:inherit;background-color:#f6f8fa;border:0;box-shadow:none}.team-project-suggestion-number{font-weight:300;color:#a3aab1}.team-discussion-nav-disabled{pointer-events:none}.header-search-wrapper{display:table;width:100%;max-width:100%;min-height:0;padding:0;font-weight:400;vertical-align:middle}.header-search-wrapper.header-search-wrapper-jump-to .header-search-scope{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.header-search-input{display:table-cell;width:100%;min-height:26px;padding-top:0;padding-bottom:0;background:none;border:0;box-shadow:none}.header-search-input:focus{border:0;box-shadow:none}.header-search-input:focus ~ .header-search-key-slash{display:none!important}.header-search-input::-ms-clear{display:none}.header-search-scope{display:none;width:1%;padding-right:8px;padding-left:8px;font-size:12px;color:#586069;white-space:nowrap;vertical-align:middle;border-right:1px solid #eaecef;border-top-left-radius:3px;border-bottom-left-radius:3px}.header-search-scope:empty + .header-search-input{width:100%}.header-search-scope:hover{color:#fff;background-color:hsla(0,0%,100%,0.12)}.scoped-search .header-search-scope{display:table-cell}.scoped-search .form-control.focus .header-search-scope{color:#0366d6;background-color:#c0ddfe;border-color:#8ec2fd}.jump-to-field-active{color:#24292e!important;background-color:#fafbfc}.jump-to-field-active:-ms-input-placeholder{color:#586069!important}.jump-to-field-active::-ms-input-placeholder{color:#586069!important}.jump-to-field-active::placeholder{color:#586069!important}.jump-to-field-active ~ .header-search-key-slash{display:none}.jump-to-field-active.jump-to-dropdown-visible{border-bottom-right-radius:0;border-bottom-left-radius:0}.jump-to-suggestions{top:30px;left:0;z-index:35;width:100%;border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;box-shadow:0 4px 10px rgba(0,0,0,0.1)}.jump-to-suggestions-path{min-width:0;min-height:44px;color:#1b1f23}.jump-to-suggestions-path .jump-to-octicon{width:28px;color:#6a737d}.jump-to-suggestions-path .jump-to-suggestion-name{max-width:none}.jump-to-suggestions-path mark{font-weight:600;background-color:transparent}.jump-to-suggestions-results-container .navigation-item{border-bottom:1px solid #e1e4e8}.jump-to-suggestions-results-container .navigation-item:last-child{border-bottom:0}.jump-to-suggestions-results-container .d-on-nav-focus{display:none}.jump-to-suggestions-results-container [aria-selected="true"] .jump-to-octicon, +.jump-to-suggestions-results-container .navigation-focus .jump-to-octicon{color:#fff}.jump-to-suggestions-results-container [aria-selected="true"] .jump-to-suggestions-path, +.jump-to-suggestions-results-container .navigation-focus .jump-to-suggestions-path{color:#fff;background:#0366d6}.jump-to-suggestions-results-container [aria-selected="true"] mark, +.jump-to-suggestions-results-container .navigation-focus mark{color:#fff}.jump-to-suggestions-results-container [aria-selected="true"] .d-on-nav-focus, +.jump-to-suggestions-results-container .navigation-focus .d-on-nav-focus{display:block}.Header{z-index:32;padding-top:12px;padding-bottom:12px;color:hsla(0,0%,100%,0.75);background-color:#24292e}.server-stats + .Header{box-shadow:inset 0 1px 0 hsla(0,0%,100%,0.075)}.Header .header-search-scope{font-size:inherit;line-height:28px;color:hsla(0,0%,100%,0.75);border-right-color:#282e34}.Header .header-search-wrapper{min-height:30px;font-size:inherit;color:#fff;background-color:hsla(0,0%,100%,0.125);border:0;box-shadow:none}.Header .header-search-wrapper .truncate-repo-scope{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Header .header-search-wrapper.focus{background-color:hsla(0,0%,100%,0.175);box-shadow:none}.Header .header-search-wrapper.focus .header-search-scope{color:#fff;background-color:hsla(0,0%,100%,0.075);border-right-color:#282e34}.Header .header-search-input{min-height:30px;font-size:16px;color:inherit}@media (min-width: 1012px){.Header .header-search-input{font-size:inherit}}.Header .header-search-input:-ms-input-placeholder{color:hsla(0,0%,100%,0.75)}.Header .header-search-input::-ms-input-placeholder{color:hsla(0,0%,100%,0.75)}.Header .header-search-input::placeholder{color:hsla(0,0%,100%,0.75)}.Header .dropdown-menu{width:300px}.Header .notification-indicator:hover::after{content:none}@media (min-width: 1012px){.Header .notification-indicator:hover::after{content:attr(aria-label)}}.page-responsive .HeaderMenu{display:none;clear:both}@media (min-width: 1012px){.page-responsive .HeaderMenu{display:block;clear:none}}.page-responsive .HeaderMenu .header-search{float:none;width:auto;max-width:none;padding-top:16px;padding-bottom:16px;margin-right:0;border-top:1px solid #444d56}@media (min-width: 1012px){.page-responsive .HeaderMenu .header-search{float:left;width:300px;padding-top:4px;padding-bottom:4px;border-top:0}}.open .HeaderMenu{display:block}.HeaderMenu .header-search{width:300px;padding-top:3px;padding-bottom:3px;font-size:13px}.read-only-mode-banner{text-align:center;background-color:#f8e45f;border-bottom-color:#f6dc2e}.header-logo-invertocat{margin:-1px 15px -1px -2px;color:#fff;white-space:nowrap}.header-logo-invertocat .octicon-mark-github{float:left}.header-logo-invertocat:hover{color:#fff;text-decoration:none}.header-logo-subbrand{float:left;margin-left:6px;font-size:16px;font-weight:600;line-height:30px}.header-logo-wordmark{position:relative;float:left;height:26px;margin-right:15px;color:#fff}.header-logo-wordmark .octicon{float:left}.header-logo-wordmark:hover{color:#fff}.header-actions{float:right;margin-top:-3px;margin-bottom:-3px}.header-actions .btn{margin-left:5px}.notification-indicator{color:hsla(0,0%,100%,0.75)}.notification-indicator .mail-status{position:absolute;top:-6px;left:6px;z-index:2;display:none;width:14px;height:14px;color:#fff;background-image:linear-gradient(#54a3ff,#006eed);background-clip:padding-box;border:2px solid #24292e;border-radius:50%}.notification-indicator .mail-status.unread{display:inline-block}.notification-indicator:hover .mail-status{text-decoration:none;background-color:#0366d6}.HeaderNavlink{display:block;color:#fff}.page-responsive .HeaderNavlink{border-top:1px solid #444d56}@media (min-width: 1012px){.page-responsive .HeaderNavlink{border-top:0}}.HeaderNavlink:hover, .HeaderNavlink:focus{color:hsla(0,0%,100%,0.75);text-decoration:none}.HeaderNavlink:hover .dropdown-caret, .HeaderNavlink:focus .dropdown-caret{border-top-color:hsla(0,0%,100%,0.75)}.HeaderNavlink.selected{color:#fff}.HeaderNavlink.selected.js-menu-target{border-bottom-color:transparent}.HeaderNavlink.selected.tooltipped::before, .HeaderNavlink.selected.tooltipped::after{display:none}.user-nav .octicon{width:16px}.user-nav .octicon-plus{margin-right:1px}.user-nav .dropdown-menu{width:180px;margin-top:8px}.header-nav-current-user{padding-bottom:0;font-size:inherit}.header-nav-current-user .css-truncate-target{max-width:100%}.header-nav-current-user .user-profile-link{color:#24292e}.unsupported-browser{color:#211e14;background-image:linear-gradient(#feefae,#fae692);border-bottom:1px solid #b3a569}.mobile-banner button.switch-to-mobile{display:block;width:100%;padding:30px 0 45px;font-size:60px;font-weight:600;color:#eaeaea;text-align:center;background-color:#444;border: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:#6a737d}.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-mute, +.hook-item .icon-for-inactive{display:none}.hook-item.success .icon-for-success{display:inline-block;color:#28a745}.hook-item.failure .icon-for-failure{display:inline-block;color:#cb2431}.hook-item.pending .icon-for-pending{display:inline-block;color:#6a737d}.hook-item.inactive .icon-for-inactive{display:inline-block;color:#6a737d}.hook-item.mute .icon-for-mute{display:inline-block;color:#6a737d}.hook-item .icon-for-enabled, +.hook-item .icon-for-disabled{display:none}.hook-item.enabled .icon-for-enabled{display:inline-block;color:#28a745}.hook-item.disabled .icon-for-disabled{display:inline-block;color:#ccc}.hook-item .hook-error-message{margin-left:24px;color:#cb2431}.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:400}.hook-event-choice{font-weight:400}.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 .error-message{padding:7px 4px;margin:10px 0}.hook-deliveries-list .error-message .octicon{position:relative;top:1px}.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:#28a745;visibility:visible}.hook-deliveries-list .item-status.success .icon-for-success{display:inline-block}.hook-deliveries-list .item-status.failure{color:#cb2431}.hook-deliveries-list .item-status.failure .icon-for-failure{display:inline-block}.hook-deliveries-list .item-status.pending{color:#6a737d}.hook-deliveries-list .item-status.pending .icon-for-pending{display:inline-block}.boxed-group-list li.hook-delivery-item{padding:10px}.hook-deliveries-list .error-message, +.hook-delivery-loader .error-message{display:none}.hook-deliveries-list.is-error .loading-message, +.hook-delivery-loader.is-error .loading-message{display:none}.hook-deliveries-list.is-error .error-message, +.hook-delivery-loader.is-error .error-message{display:block}.hook-delivery-time{float:right;margin-right:10px;font-size:10px;color:#6a737d}.hook-delivery-guid{display:inline-block;padding:2px 6px;font-family:"SFMono-Regular",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 span.animated-ellipsis-container, +.boxed-group span.animated-ellipsis{padding:0}.boxed-group .animated-ellipsis-container{line-height:1.3}.hook-delivery-container .tabnav-tabcontent{display:none}.hook-delivery-container .tabnav-tabcontent.selected{display:block}.hook-delivery-container hr{margin:10px 0}.hook-delivery-container 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-container .tabnav{margin:10px 0}.hook-delivery-container h4.remote-call-header{margin:20px 0 10px;border-bottom:1px solid #959da5}.hook-delivery-response-status{display:inline-block;padding:4px 6px 3px;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:10px;line-height:1.1;color:#fff;background-color:#d73a49;border-radius:3px}.hook-delivery-response-status[data-response-status^="2"]{background-color:#28a745}.redelivery-dialog .pending-message{display:block}.redelivery-dialog .failure-message{display:none}.redelivery-dialog.failed{color:#9c2400;background-image:linear-gradient(#f8d8d8,#efd0d0);border-color:#da9797}.redelivery-dialog.failed .pending-message{display:none}.redelivery-dialog.failed .failure-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:600}.integration-meta-head{font-size:16px;color:#586069}.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 hsla(0,0%,100%,0.5)}.integrations-select-repos::-webkit-scrollbar-track-piece{background:transparent}.integrations-repository-picker{position:relative;top:-5px;width:440px}.integrations-repository-picker .select-menu-modal{width:440px}.integrations-repository-picker .autocomplete-results{border:0}.integrations-repository-picker .select-menu .search-status{display:none}.integrations-repository-picker .select-menu.is-loading .search-status{display:block}.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}.target-avatar{position:relative;top:-2px}.issue-list em{padding:3px;font-style:normal;font-weight:600;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:400;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:#cb2431}.issue-list .title .open.octicon{color:#28a745}.issue-list .title .merged.octicon{color:#6f42c1}.issue-list .description{margin:0 0 10px;overflow:hidden;line-height:20px}.issue-list-item + .issue-list-item{border-top:1px #e1e4e8 solid}.issues-reset-query-wrapper{margin-bottom:20px}.label-link:hover{text-decoration:none}.issues-reset-query{font-weight:600;color:#586069}.issues-reset-query:hover{color:#0366d6;text-decoration:none}.issues-reset-query:hover .issues-reset-query-icon{background-color:#0366d6}.issues-reset-query-icon{width:18px;height:18px;padding:1px;margin-right:3px;color:#fff;text-align:center;background-color:#6a737d;border-radius:3px}.table-list-milestones .table-list-cell{padding:15px 20px}.table-list-milestones .stat{display:inline-block;font-size:14px;font-weight:600;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:400;color:#586069}.milestone-title{width:500px}.milestone-title-link{margin-top:0;margin-bottom:5px;font-size:24px;font-weight:400;line-height:1.2}.milestone-title-link a{color:#333}.milestone-title-link a:hover{color:#0366d6}.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:#0366d6;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}.issue-reorder-warning{z-index:110}.task-progress{color:#586069;text-decoration:none;vertical-align:top}.task-progress .octicon{margin-right:5px;color:#999;vertical-align:bottom}.task-progress .progress-bar{display:inline-block;width:80px;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:#0366d6}a.task-progress:hover .octicon{color:inherit}a.task-progress:hover .progress-bar .progress{background-color:#0366d6}.issues-listing{position:relative}.issues-listing .octocat-search{position:absolute;right:0;height:250px;margin:-132px -4px;transform:scaleX(-1)}.issue-meta-section .octicon{color:#ccc;vertical-align:bottom}.issue-milestone{max-width:240px}.issue-milestone .css-truncate-target{max-width:100px}.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:relative}.label-select-menu .description{margin-left:19px}.label-select-menu .color{display:inline-block;width:14px;height:14px;margin-top:-1px;margin-right: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:hover, .label-select-menu .select-menu-item:focus, .label-select-menu .select-menu-item[aria-selected="true"], .label-select-menu .select-menu-item.navigation-focus{color:inherit;background-color:#f4f4f4}.label-select-menu .select-menu-item:hover .select-menu-item-icon, .label-select-menu .select-menu-item:focus .select-menu-item-icon, .label-select-menu .select-menu-item[aria-selected="true"] .select-menu-item-icon, .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:focus, .reaction-sort-item:hover{text-decoration:none;background-color:#0366d6;opacity:1}.reaction-sort-item[aria-checked="true"]{background-color:#f1f8ff;border-color:#0366d6;opacity:1}body.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){body.emoji-size-boost .reaction-sort-item g-emoji{margin-left:0}}.issue-keyword{border-bottom:1px dotted #959da5}.issue-keyword:hover{border-bottom:0}.new-label-color-dimensions{width:24px;height:24px}.select-menu-item[aria-selected="true"] > .octicon.label-options-icon, +.select-menu-item.navigation-focus > .octicon.label-options-icon{color:#24292e}.new-label-color-input:invalid{color:#cb2431}.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:600;color:#6a737d;text-decoration:none}.repository-lang-stats ol.repository-lang-stats-numbers li .lang{color:#24292e}.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;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{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{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}.facebox-loading, +.octocat-spinner{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, + .octocat-spinner{background-image:url("/images/spinners/octocat-spinner-128.gif");background-size:64px 64px}}.MarketplaceJumbotron{background-color:#2f363d;background-image:url("/images/modules/marketplace/bg-hero.svg");background-repeat:repeat-y;background-position:center top;background-size:150% auto}@media (min-width: 768px){.MarketplaceJumbotron{background-repeat:no-repeat;background-size:cover}}.CircleBadge--feature{position:relative;top:0;transition:top 0.15s ease-in,box-shadow 0.12s ease-in}.MarketplaceFeature-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.MarketplaceFeature{min-width:250px}.MarketplaceFeature-text{opacity:0.7;transition:opacity 0.12s ease-in}.MarketplaceFeature-link:hover .CircleBadge--feature{top:-3px;box-shadow:0 3px 8px 0 rgba(0,0,0,0.2)}.MarketplaceFeature-link:hover .MarketplaceFeature-text{opacity:1}.MarketplaceFeature-link:active .CircleBadge--feature{top:0;box-shadow:0}.MarketplaceSideNav{-webkit-overflow-scrolling:touch;background-color:#f6f8fa}@media (min-width: 768px){.MarketplaceSideNav{background-color:#fff;border-right:1px #e1e4e8 solid}}.ScreenshotCarousel{border:1px #e1e4e8 solid;border-radius:3px}.ScreenshotCarousel-screenshot{display:none;padding:16px}.ScreenshotCarousel-screenshot.active{display:block}.ScreenshotCarousel-nav{display:flex;overflow-x:auto;align-items:top;box-shadow:inset 0 1px 0 #e1e4e8}.ScreenshotCarousel-navitem{width:20%;min-width:120px;padding:16px;cursor:pointer;border-right:1px #e1e4e8 solid}.ScreenshotCarousel-navitem:last-child{border-right:0}.ScreenshotCarousel-navitem.selected{background-color:#f6f8fa;box-shadow:inset 0 0 4px rgba(36,41,46,0.15)}.marketplace-plan-edit-unit, +.marketplace-plan-edit-unit-label, +.marketplace-plan-edit-price{display:none}.marketplace-plan-enable-free-trial{display:none}.marketplace-plan-editor[data-model="FLAT_RATE"] .marketplace-plan-edit-price{display:block}.marketplace-plan-editor[data-model="FLAT_RATE"] .marketplace-plan-enable-free-trial{display:block}.marketplace-plan-editor[data-model="PER_UNIT"] .marketplace-plan-edit-price, +.marketplace-plan-editor[data-model="PER_UNIT"] .marketplace-plan-edit-unit{display:block}.marketplace-plan-editor[data-model="PER_UNIT"] .marketplace-plan-edit-unit-label{display:inline}.marketplace-plan-editor[data-model="PER_UNIT"] .marketplace-plan-enable-free-trial{display:block}.marketplace-listing-screenshot-container{width:175px;min-height:175px;background-repeat:no-repeat;background-position:center center;background-size:cover}.marketplace-listing-screenshot-container .marketplace-listing-screenshot{min-width:100%;min-height:100%;opacity:0}.marketplace-listing-screenshot-zoom{display:none;cursor:move}.marketplace-listing-details-sidebar{order:2}@media (min-width: 768px){.marketplace-listing-details-sidebar{order:1}}.marketplace-listing-details-description{order:1}@media (min-width: 768px){.marketplace-listing-details-description{order:2}}.marketplace-listing-screenshot-link{height:100px;cursor:move}.marketplace-listing-screenshot-link:hover .marketplace-listing-screenshot-zoom, .marketplace-listing-screenshot-link:focus .marketplace-listing-screenshot-zoom{top:0;left:0;display:block;width:100%;height:100%;padding-top:28px;background-color:hsla(0,0%,100%,0.75)}.marketplace-integratable-logo{width:40px;height:40px}.marketplace-listing-save-notice, +.marketplace-listing-save-error{display:none;opacity:0;transition:opacity 0.15s linear}.marketplace-listing-save-notice.visible, +.marketplace-listing-save-error.visible{display:inline-block;opacity:1}.marketplace-listing-screenshot-delete-form{position:absolute;bottom:-24px;width:100%;text-align:center}.marketplace-plan-dollar-field-container .price-note{display:none}.marketplace-plan-dollar-field-container.is-errored .price-note{display:block}.marketplace-plan-dollar-field-container.is-errored .form-control{border-color:#d73a49}.marketplace-plan-emphasis{color:#24292e}.selected .marketplace-plan-emphasis{color:#fff}.marketplace-plan-unit-name-preview::before{content:"per "}.marketplace-plan-per-time{clear:right}.marketplace-billing-modal{width:540px;max-height:90vh}.marketplace-listing-markdown, +.marketplace-url-link{word-wrap:break-word;white-space:pre-wrap}.marketplace-listing-markdown{line-height:1.4}.integrations-promo-bg{background-image:url("/images/modules/works-with/build-your-own.svg");background-repeat:no-repeat;background-size:0 0}@media (min-width: 544px){.integrations-promo-bg{background-position:top right;background-size:auto 100%}}.marketplace-product-callout{border-color:#d1d5da!important}.marketplace-product-callout::before, .marketplace-product-callout::after{display:none}.marketplace-product-callout .branch-action-item-icon{color:#586069;background-color:#e1e4e8}.filter-item.selected .Label--outline-white{color:#fff;border-color:#fff}.MarketplaceEdit-body{min-height:570px}.MarketplaceEdit-body .pricing-model-selector{width:calc(100% - 12px);max-width:100%!important}.MarketplaceEdit-body .Box-row--pending{box-shadow:2px 0 0 #f9c513 inset}.MarketplaceEdit-body .menu{border-right:0;border-left:0;border-radius:0}.MarketplaceEdit-body .menu-item{padding:12px 16px;background:#fafbfc}.MarketplaceEdit-body .menu-item.selected{background:#fff}.MarketplaceEdit-body .menu-item:hover{background:#f6f8fa}.MarketplaceEdit-body .menu-item.selected::before{position:absolute;top:0;bottom:0;left:0;width:3px;content:"";background-color:#f66a0a}.MarketplaceEdit-body .menu-item:first-child::before{border-top-left-radius:0}.MarketplaceEdit-body .CircleIcon{display:inline-block;width:32px;height:32px;font-weight:bold;line-height:32px;color:#586069;text-align:center;background:#e6ebf1;border-radius:100%}.MarketplaceEdit-body .CircleIcon .octicon{display:inline-block}.MarketplaceEdit-body .CircleIcon--success{color:#fff;background:#28a745}.MarketplaceInsights-graph .insights-month .tick:nth-child(2n){visibility:hidden}.CircleBadge--tiny{width:32px;height:32px}.CircleBadge--github{position:relative}.CircleBadge--github.CircleBadge--large::after{right:5px;bottom:5px}.CircleBadge--github.CircleBadge--small::after{right:-5px;bottom:-5px}.CircleBadge--github::after{position:absolute;right:0;bottom:0;display:block;width:22px;height:22px;padding:3px;line-height:0;content:"";background:#fff url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyMnB4IiBoZWlnaHQ9IjIycHgiIHZpZXdCb3g9IjAgMCAyMiAyMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4gICAgICAgIDx0aXRsZT5TaGFwZSBDb3B5PC90aXRsZT4gICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+ICAgIDxkZWZzPjwvZGVmcz4gICAgPGcgaWQ9IktpdGNoZW4tc2luayIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+ICAgICAgICA8ZyBpZD0iT2N0aWNvbnMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zNzAuMDAwMDAwLCAtMTU4NC4wMDAwMDApIiBmaWxsPSIjMUIxRjIzIj4gICAgICAgICAgICA8cGF0aCBkPSJNMzgxLDE1ODQgQzM3NC45MjI1LDE1ODQgMzcwLDE1ODguOTIyNSAzNzAsMTU5NSBDMzcwLDE1OTkuODY3NSAzNzMuMTQ4NzUsMTYwMy45Nzg3NSAzNzcuNTIxMjUsMTYwNS40MzYyNSBDMzc4LjA3MTI1LDE2MDUuNTMyNSAzNzguMjc3NSwxNjA1LjIwMjUgMzc4LjI3NzUsMTYwNC45MTM3NSBDMzc4LjI3NzUsMTYwNC42NTI1IDM3OC4yNjM3NSwxNjAzLjc4NjI1IDM3OC4yNjM3NSwxNjAyLjg2NSBDMzc1LjUsMTYwMy4zNzM3NSAzNzQuNzg1LDE2MDIuMTkxMjUgMzc0LjU2NSwxNjAxLjU3MjUgQzM3NC40NDEyNSwxNjAxLjI1NjI1IDM3My45MDUsMTYwMC4yOCAzNzMuNDM3NSwxNjAwLjAxODc1IEMzNzMuMDUyNSwxNTk5LjgxMjUgMzcyLjUwMjUsMTU5OS4zMDM3NSAzNzMuNDIzNzUsMTU5OS4yOSBDMzc0LjI5LDE1OTkuMjc2MjUgMzc0LjkwODc1LDE2MDAuMDg3NSAzNzUuMTE1LDE2MDAuNDE3NSBDMzc2LjEwNSwxNjAyLjA4MTI1IDM3Ny42ODYyNSwxNjAxLjYxMzc1IDM3OC4zMTg3NSwxNjAxLjMyNSBDMzc4LjQxNSwxNjAwLjYxIDM3OC43MDM3NSwxNjAwLjEyODc1IDM3OS4wMiwxNTk5Ljg1Mzc1IEMzNzYuNTcyNSwxNTk5LjU3ODc1IDM3NC4wMTUsMTU5OC42MyAzNzQuMDE1LDE1OTQuNDIyNSBDMzc0LjAxNSwxNTkzLjIyNjI1IDM3NC40NDEyNSwxNTkyLjIzNjI1IDM3NS4xNDI1LDE1OTEuNDY2MjUgQzM3NS4wMzI1LDE1OTEuMTkxMjUgMzc0LjY0NzUsMTU5MC4wNjM3NSAzNzUuMjUyNSwxNTg4LjU1MTI1IEMzNzUuMjUyNSwxNTg4LjU1MTI1IDM3Ni4xNzM3NSwxNTg4LjI2MjUgMzc4LjI3NzUsMTU4OS42Nzg3NSBDMzc5LjE1NzUsMTU4OS40MzEyNSAzODAuMDkyNSwxNTg5LjMwNzUgMzgxLjAyNzUsMTU4OS4zMDc1IEMzODEuOTYyNSwxNTg5LjMwNzUgMzgyLjg5NzUsMTU4OS40MzEyNSAzODMuNzc3NSwxNTg5LjY3ODc1IEMzODUuODgxMjUsMTU4OC4yNDg3NSAzODYuODAyNSwxNTg4LjU1MTI1IDM4Ni44MDI1LDE1ODguNTUxMjUgQzM4Ny40MDc1LDE1OTAuMDYzNzUgMzg3LjAyMjUsMTU5MS4xOTEyNSAzODYuOTEyNSwxNTkxLjQ2NjI1IEMzODcuNjEzNzUsMTU5Mi4yMzYyNSAzODguMDQsMTU5My4yMTI1IDM4OC4wNCwxNTk0LjQyMjUgQzM4OC4wNCwxNTk4LjY0Mzc1IDM4NS40Njg3NSwxNTk5LjU3ODc1IDM4My4wMjEyNSwxNTk5Ljg1Mzc1IEMzODMuNDIsMTYwMC4xOTc1IDM4My43NjM3NSwxNjAwLjg1NzUgMzgzLjc2Mzc1LDE2MDEuODg4NzUgQzM4My43NjM3NSwxNjAzLjM2IDM4My43NSwxNjA0LjU0MjUgMzgzLjc1LDE2MDQuOTEzNzUgQzM4My43NSwxNjA1LjIwMjUgMzgzLjk1NjI1LDE2MDUuNTQ2MjUgMzg0LjUwNjI1LDE2MDUuNDM2MjUgQzM4OC44NTEyNSwxNjAzLjk3ODc1IDM5MiwxNTk5Ljg1Mzc1IDM5MiwxNTk1IEMzOTIsMTU4OC45MjI1IDM4Ny4wNzc1LDE1ODQgMzgxLDE1ODQgTDM4MSwxNTg0IFoiIGlkPSJTaGFwZS1Db3B5Ij48L3BhdGg+ICAgICAgICA8L2c+ICAgIDwvZz48L3N2Zz4=") center no-repeat;border-radius:100px}.select-search-icon{position:absolute;top:19px;left:18px}body.min-width-0.page-responsive .flash-full .container{width:100%;max-width:980px}.ClipboardButton{position:relative}.ClipboardButton.ClipboardButton--success{border-color:#28a745;box-shadow:0 0 0 0.2em rgba(52,208,88,0.4)}.ClipboardButton.ClipboardButton--success:focus{box-shadow:0 0 0 0.2em rgba(52,208,88,0.4)}.ClipboardButton.ClipboardButton--success::after{content:"Copied!"}.member-list-item .table-list-cell-checkbox{width:30px}.member-list-item.adminable .member-info{padding-left:5px}.member-list-item .member-avatar-cell{width:58px}.member-list-item .dropdown-menu-content{text-align:left}.member-info{width:450px}.member-info .css-truncate-target{max-width:430px}.member-meta .select-menu-modal{width:310px}.member-meta .select-menu-modal-holder{right:0;text-align:left}.triage-mode .none-selected{display:none}.member-role-menu .select-menu-item-text{padding-right:8px}.merge-branch-heading{margin:0;line-height:1;color:#24292e}.merge-branch-description{margin-right:160px;margin-bottom:-5px;line-height:1.6em;color:#586069}.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:60px}.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 .copyable-terminal{background-color:#f2f2f2}.open .merge-branch-manually{display:block}.select-menu-merge-method{width:310px}.merge-pr.is-rebasing .commit-form-fields{margin-top:-110px;opacity:0;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{transition:opacity 0.15s linear 0.1s,margin-top 0.25s ease 0s}.unavailable-merge-method{display:block;margin-top:6px;color:#a04100}[aria-selected="true"].disabled .unavailable-merge-method, +.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:#fff5b1}.page-new-repo .octicon-repo{color:#959da5}.page-new-repo .octicon-lock{color:rgba(115,92,15,0.5)}.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 .form-checkbox.disabled{color:#6a737d}.page-new-repo .license-info{float:left;margin-top:5px;margin-left:10px;color:#0366d6}.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:#586069}.reponame-suggestion{color:#34631a;cursor:pointer}.upgrade-upsell{padding-left:33px}.cc-upgrade{padding-left:20px}.featured-license{font-weight:600}.license-container{padding-left:15px;border-left:1px solid #ccc}.news .account-switcher{margin-bottom:20px}.news .release{margin-top:0;margin-bottom:0}.news blockquote{color:#586069}.news h1{margin-bottom:0}.news .alert{position:relative;padding:0 0 1em 45px;overflow:hidden;border-top:1px solid #eff3f6}.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:#959da5}.news .alert .dashboard-event-icon{position:absolute;top:18px;left:22px;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:#959da5}.news .alert .title{padding:0;font-weight:600}.news .alert .title .subtle{color:#959da5}.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:400;color:#586069}.news .alert .simple .time{display:inline-block}.news .alert .branch-link{position:relative;top:-2px;margin:0;font-family:"SFMono-Regular",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:#586069;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:#586069}.notification-routing .notification-email .edit-link{margin-right:10px;font-weight:600}.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:600;color:#0366d6;text-align:center}.notifications .notifications-more > a:hover{text-decoration:underline}.notifications .read .type-icon{color:#586069}.notifications .read .list-group-item-name > a{color:#586069}.notifications .read .notification-actions{color:#586069}.notifications .read .avatar-stack{opacity:0.5}.notifications .read .undo{display:block}.notifications .read .delete{visibility:hidden}.notifications .read[aria-selected="true"], .notifications .read.navigation-focus{background-color:#f5f9fc}.notifications .muted .unmute{display:block}.notifications .muted .mute{display:none}.notifications .unmute{display:none}.notifications-sso-prompt{padding:0}.notifications-sso-prompt[aria-selected="true"], .notifications-sso-prompt.navigation-focus{background-color:#f5f9fc}.notifications-sso-prompt a{display:block;padding:10px 15px;color:#586069;text-align:center;background:none;border:0;outline:none}.notifications-sso-prompt a:hover{text-decoration:none}.notifications-sso-prompt em{font-style:normal;color:#0366d6}.notifications-sso-prompt a:hover em{text-decoration:underline}.notifications-sso-prompt strong{font-weight:bold}.type-icon-state-none{color:#586069}.type-icon-state-open{color:#28a745}.type-icon-state-closed{color:#cb2431}.type-icon-state-merged{color:#6f42c1}.notifications-list{float:left;width:100%}.notifications-list .notifications-repo-link{max-width:500px}.notifications-list .boxed-group .notification-success{position:absolute;right:3px;width:220px;margin-top:4px;font-size:13px;color:#28a745;text-align:right;visibility:hidden;opacity:0;transition:opacity 0.35s ease-in-out,transform 0.35s ease-in-out;transform:translateX(10px)}.notifications-list .mark-all-as-read{padding:2px 6px 5px 10px;margin-top:0;margin-right:0;line-height:20px;color:#586069;background-color:transparent;border:0}.notifications-list .mark-all-as-read-confirmed .notification-success{visibility:visible;opacity:1;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;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:#586069}.notification-actions .undo{position:absolute;top:0;display:none}.notification-actions .btn-link{padding-right:5px;padding-left:5px;line-height:inherit;color:#586069}.notification-actions .btn-link:hover{color:#0366d6;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:16px;font-size:22px;font-weight:400}.repo-subscription-container .intro{font-size:14px;color:#666}.repo-subscription-label{display:inline-block}.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:#586069;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-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:#586069;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:#586069}.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:#6a737d}.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-emails-followers, +.oauth-user-permissions .limited-access-emails-profile, +.oauth-user-permissions .limited-access-followers-profile, +.oauth-user-permissions .limited-access-profile, +.oauth-user-permissions .limited-access-followers, +.oauth-user-permissions .limited-access-emails, +.oauth-user-permissions .no-access{display:none}.oauth-user-permissions.limited.limited-email .limited-access-emails{display:inline}.oauth-user-permissions.limited.limited-email.limited-profile .limited-access-emails, +.oauth-user-permissions.limited.limited-email.limited-profile .limited-access-profile{display:none}.oauth-user-permissions.limited.limited-email.limited-profile .limited-access-emails-profile{display:inline}.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-emails, +.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-profile, +.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-followers, +.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-emails-profile, +.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-emails-followers, +.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access-followers-profile{display:none}.oauth-user-permissions.limited.limited-email.limited-profile.limited-follow .limited-access{display:inline}.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-email.limited-follow .limited-access-emails-followers{display:inline}.oauth-user-permissions.limited.limited-follow .limited-access-followers{display:inline}.oauth-user-permissions.limited.limited-follow.limited-profile .limited-access-followers, +.oauth-user-permissions.limited.limited-follow.limited-profile .limited-access-profile{display:none}.oauth-user-permissions.limited.limited-follow.limited-profile .limited-access-followers-profile{display:inline}.oauth-user-permissions.limited.limited-profile .limited-access-profile{display:inline}.oauth-repo-permissions .default-access, +.oauth-repo-permissions .public-access, +.oauth-repo-permissions .limited-repo-invite-access, +.oauth-repo-permissions .full-access{display:none}.oauth-repo-permissions.public .public-access{display:inline}.oauth-delete-repo-permissions .octicon-alert{color:#cb2431}.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:#586069}.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 .oauth-org-item{line-height:24px}.oauth-org-access-details .oauth-org-item:first-child{border-radius:3px 3px 0 0}.oauth-org-access-details .oauth-org-item .loading-indicator{display:none;margin:4px}.oauth-org-access-details .oauth-org-item.on{background:#fff}.oauth-org-access-details .oauth-org-item.on:hover{background:#ffe}.oauth-org-access-details .oauth-org-item.on .authorized-tools{display:block}.oauth-org-access-details .oauth-org-item.on .unauthorized-tools{display:none}.oauth-org-access-details .oauth-org-item.on strong{color:#24292e}.oauth-org-access-details .oauth-org-item.on .octicon-check{display:inline}.oauth-org-access-details .oauth-org-item.on .octicon-x{display:none}.oauth-org-access-details .oauth-org-item.revoked{background:#fff}.oauth-org-access-details .oauth-org-item.revoked .unauthorized-tools, +.oauth-org-access-details .oauth-org-item.revoked .authorized-tools{display:none}.oauth-org-access-details .oauth-org-item.revoked .octicon-x{color:#cb2431}.oauth-org-access-details .oauth-org-item.loading .unauthorized-tools, +.oauth-org-access-details .oauth-org-item.loading .authorized-tools{display:none}.oauth-org-access-details .oauth-org-item.loading .loading-indicator{display:block}.oauth-org-access-details .oauth-org-item .authorized-tools{display:none}.oauth-org-access-details .oauth-org-item .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:#28a745}.oauth-org-access-details .octicon-x{display:inline}.oauth-org-access-details .octicon-x.org-access-denied{color:#cb2431}.permission-title{margin-top:0}.oauth-application-whitelist h2{display:inline-block}.oauth-application-whitelist .request-info{display:block}.oauth-application-whitelist .request-info strong{display:inline-block;color:#24292e}.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:600}.oauth-application-whitelist .octicon-alert{color:#a04100}.oauth-application-whitelist .octicon-check, +.oauth-application-whitelist .approved-request{color:#28a745}.oauth-application-whitelist .denied-request{color:#cb2431}.oauth-application-whitelist .request-indicator{margin-left:10px}.oauth-application-whitelist .edit-link{color:#6a737d}.oauth-application-whitelist .edit-link:hover{color:#0366d6}.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:#24292e}.oauth-application-info .application-description{margin-top:3px;margin-bottom:0}.oauth-application-info .app-info{display:inline-block;margin-right:10px;color:#6a737d}.oauth-application-info .app-info .octicon{margin-right:5px}.oauth-application-info .listgroup-item{line-height:inherit}.oauth-application-info .app-denied, +.oauth-application-info .app-approved{margin-left:10px;font-size:13px;font-weight:400;white-space:nowrap}.oauth-application-info .app-approved, +.oauth-application-info .octicon-check{color:#28a745}.oauth-application-info .app-denied, +.oauth-application-info .octicon-x{color:#a04100}.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:600;line-height:1.2;color:#24292e}.developer-app-item .developer-app-name:hover{color:#0366d6;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:400;color:#6a737d}.org-transfer-requests{margin:10px 0 20px}.octocaptcha-element{height:310px}.octocaptcha-frame{height:340px}.zero-height{height:0!important}.zero-height .octocaptcha-frame{height:0!important}.org-insights-graph-canvas .activity{width:400px;padding:10px;margin:100px auto 0;color:#2f363d;text-align:center;border-radius:3px}.org-insights-graph-canvas .dots{margin:0 auto}.org-insights-graph-canvas > .activity{display:none}.org-insights-graph-canvas .axis{font-size:10px}.org-insights-graph-canvas .axis line{stroke:rgba(27,31,35,0.1);shape-rendering:crispedges}.org-insights-graph-canvas .axis text{font-size:12px;font-weight:300;fill:#959da5}.org-insights-graph-canvas .axis path{display:none}.org-insights-graph-canvas .axis .zero line{stroke:#0366d6;stroke-dasharray:3 3;stroke-width:1.5}.org-insights-graph-canvas path{fill:none;stroke-width:2}.org-insights-graph-canvas .y line{display:none}.org-insights-graph-canvas .y.unique line{stroke:#1d7fb3}.org-insights-graph-canvas .overlay{fill-opacity:0}.org-insights-graph-canvas .graph-loading{padding:110px 0}.org-insights-graph-canvas .graph-loading, +.org-insights-graph-canvas .graph-error, +.org-insights-graph-canvas .graph-no-usable-data, +.org-insights-graph-canvas .graph-empty{display:none}.org-insights-graph-canvas.is-graph-loading > .activity, +.org-insights-graph-canvas.is-graph-without-usable-data > .activity, +.org-insights-graph-canvas.is-graph-empty > .activity{display:block}.org-insights-graph-canvas.is-graph-loading .graph-loading, +.org-insights-graph-canvas.is-graph-empty .graph-empty, +.org-insights-graph-canvas.is-graph-without-usable-data .graph-no-usable-data, +.org-insights-graph-canvas.is-graph-load-error .graph-error{display:block}.org-insights-svg-tip{position:absolute;z-index:99999;padding:10px;pointer-events:none}.org-insights-svg-tip.is-visible{display:block}.org-insights-svg-tip::after, .org-insights-svg-tip::before{position:absolute;top:100%;left:50%;width:0;height:0;pointer-events:none;content:" ";border:solid transparent}.org-insights-svg-tip::after{margin-left:-5px;border-color:hsla(0,0%,100%,0);border-width:5px;border-top-color:#fff}.org-insights-svg-tip::before{margin-left:-6px;border-color:transparent;border-width:6px;border-top-color:#e1e4e8}.org-insights-svg-tip.comparison{padding:10px;text-align:left;pointer-events:none}.org-insights-svg-tip.comparison ul{margin:0;white-space:nowrap;list-style:none}.org-insights-svg-tip.comparison li{position:relative}.org-insights-svg-tip.comparison li .legend{width:7px;height:7px;border-radius:50%}.org-insights-card-legend .metric-0{color:#0366d6}.org-insights-card-legend .metric-1{color:#28a745}.org-insights-card-legend .metric-2{color:#e36209}.org-insights-card-legend .metric-3{color:#6f42c1}.org-insights-svg-tip .metric-0 .legend, +.org-insights-graph-canvas path.metric-0, +.org-insights-graph-canvas .metric-0 circle{stroke:#0366d6;background-color:#0366d6}.org-insights-svg-tip .metric-1 .legend, +.org-insights-graph-canvas path.metric-1, +.org-insights-graph-canvas .metric-1 circle{stroke:#28a745;background-color:#28a745}.org-insights-svg-tip .metric-2 .legend, +.org-insights-graph-canvas path.metric-2, +.org-insights-graph-canvas .metric-2 circle{stroke:#e36209;background-color:#e36209}.org-insights-svg-tip .metric-3 .legend, +.org-insights-graph-canvas path.metric-3, +.org-insights-graph-canvas .metric-3 circle{stroke:#6f42c1;background-color:#6f42c1}.org-insights-header{background:linear-gradient(180deg,#fff 0%,#fafbfc 100%)}.org-insights-cards .tabnav-tabcontent{display:none}.org-insights-cards .tabnav-tabcontent.selected{display:block}.org-insights-cards .boxed-group{width:100%;margin:10px 0}.org-insights-cards .is-no-activity .blankslate{display:block}.org-insights-cards .is-no-activity .org-insights-graph-canvas{display:none}.org-insights-cards .blankslate{display:none;padding-top:47px;background-color:#fff;border:0;box-shadow:none}.org-insights-cards .org-insights-card-header{display:none}.org-insights-cards .org-insights-card-legend{display:none;color:#959da5}.org-insights-cards .is-rendered .org-insights-card-legend{display:flex}.org-insights-cards .is-rendered .org-insights-card-header{display:flex}.org-insights-cards .octicon-arrow-down, +.org-insights-cards .octicon-arrow-up{display:none}.org-insights-cards .is-increase .octicon-arrow-up{display:inline-block}.org-insights-cards .is-decrease .octicon-arrow-down{display:inline-block}.org-insights-cards .graph-canvas .dots{padding:43px 0}.invitation-2fa-banner{margin-right:-24px;margin-left:-24px}.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:#fafbfc;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:#0366d6;background-color:#fff}.orghead .edit-org .octicon{font-size:14px}.orghead .orgnav{position:relative;top:1px;margin-top:10px}.org-header-wrapper .TableObject-item--primary, +.org-repos .TableObject-item--primary{white-space:normal}.org-header-wrapper .avatar{display:block;width:100px}.org-header-wrapper .TableObject-item--primary{padding-left:20px}.org-name{font-weight:400;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 .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-profile .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:#0366d6;border-radius:3px;box-shadow:inset 1px 1px 0 rgba(0,0,0,0.2)}.map-background{pointer-events:all;fill:#0366d6;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:#d73a49;fill-opacity:0.8;stroke:#d73a49}.country-info{position:absolute;top:10px;right:10px;padding:10px;pointer-events:none;background:hsla(0,0%,100%,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:#586069}.audit-log-search .blankslate{border-top-left-radius:0;border-top-right-radius:0}.audit-log-search .export-phrase{margin:5px 0}.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:400;vertical-align:bottom}.audit-type .repo{color:#a04100}.audit-type .team{color:#28a745}.audit-type .user{color:#6f42c1}.audit-type .oauth_access{color:#cb2431}.audit-type .hook{color:#e1bf4e}.export-actions{display:inline-block;margin-left:10px}.export-actions a{margin-top:-3px;color:#6a737d}.export-actions a:hover{color:#0366d6;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:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;white-space:pre-wrap;border-left:1px solid #eee}.audit-log-export-button{width:110px;height:30px;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}.saml-enabled-banner-container{background-image:linear-gradient(-1deg,#fff 0%,#f5f5f5 100%)}.saml-settings-form .test-status-indicator{width:30px;height:30px;margin-top:-4px;border-radius:50%}.saml-settings-form .test-status-indicator .octicon{display:block;margin-top:7px;margin-right:auto;margin-left:auto}.saml-settings-form .form-group.errored{margin-bottom:40px}.saml-settings-form .test-status-indicator-error{color:#fff;background-color:#cb2431}.saml-settings-form .test-status-indicator-success{color:#fff;background-color:#28a745}.saml-settings-form .details-container .method-field{display:none}.saml-settings-form .details-container .method-label{font-weight:400}.saml-settings-form .details-container .details-target{cursor:pointer}.saml-settings-form .details-container.open .method-value, +.saml-settings-form .details-container.open .details-target{display:none}.saml-settings-form .details-container.open .method-field{display:inline-block}.saml-settings-form .saml-enforcement-disabled{opacity:0.5}.form-group .form-control.saml-certificate-field{width:440px;height:150px;min-height: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{width:100%;min-height:40px;padding-bottom:15px;margin-top: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 a:hover{color:#0366d6;text-decoration:none}.member-row:last-child{padding-bottom:0;border-bottom:0}.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:#586069}.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}.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-repos .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-name{margin-top:0;margin-bottom:0;font-size:14px;word-wrap:break-word}.org-repos-mini .org-repo-name .octicon-repo{color:#586069}.org-repos-mini .org-repo-name .octicon-lock{color:rgba(115,92,15,0.5)}.org-repos-mini .org-repo-name .repo-prefix{font-weight:400}.org-repos-mini .org-repo-name .repo-slash{display:inline-block;margin-right:-4px;margin-left:-4px}.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}.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{float:none;opacity:0;transition:opacity 0.2s ease-in-out}.permission-level-cell .permission-success-icon{color:#28a745}.permission-level-cell .is-loading .spinner, +.permission-level-cell .was-successful .permission-success-icon{opacity:1}.select-menu-option-title{margin-top:0;margin-bottom:0}.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}.add-member-wrapper{position:relative;width:500px;margin:40px auto}.add-member-wrapper .available-seats{color:#586069}.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:400;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:#586069}.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:#586069}.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;padding-right:3px}.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:400}.invite-team-member-list .team-meta{width:100px;text-align:left;vertical-align:middle}.invite-team-member-list .team-link{color:#0366d6;text-align:right}.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: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;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:linear-gradient(-45deg,#6f42c1 30%,#f66a0a 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:hsla(0,0%,100%,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:#6f42c1;background-color:#fff;border-width:0;box-shadow:0 3px 3px rgba(0,0,0,0.05)}.migration-jumbotron-btn:hover{color:#6f42c1;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:#586069;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:#586069;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{position:-webkit-sticky;position:sticky;top:20px}.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:400}.org-migration-settings-info{margin-top:5px;margin-bottom:30px;font-size:16px;color:#586069}.migrate-owners-wrapper{position:relative;min-height:550px}.migrate-owners-content-about{position:absolute;top:0;left:50%;width:700px;margin:30px auto 0;text-align:center;transition:opacity 0.2s ease-in-out,transform 0.3s ease-in-out;transform:translate(-50%,0)}.migrate-owners-title{font-size:35px;font-weight:400}.migrate-owners-lead{margin-top:0;margin-bottom:20px}.migrate-owners-content-rename{width:520px;margin:auto}.delete-owners-button{color:#586069}.delete-owners-button:hover{color:#cb2431}.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:#28a745}.migrate-ability-list-item .octicon-x{color:#aaa}.migrate-ability-list-item .octicon-question{font-size:12px;color:#555}.migrate-ability-not-possible{color:#586069}.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:400}.migrate-org-roles-lead{margin-top:4px;margin-bottom:0;font-size:14px;color:#586069}.migrate-org-roles-count{padding:10px 20px;color:#586069;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:#586069;text-align:center}.migrate-org-avatar-list .migrate-org-more-ellipsis{font-weight:600;line-height:20px;background-color:#f5f5f5}.migrate-org-avatar-list .migrate-org-zero{color:#586069;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}.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-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:#586069;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:#0366d6;text-decoration:none}.stats-group-stat.no-link:hover{color:#586069;text-decoration:none}.stats-group-stat.no-link:hover .stat-number{color:#333}.stat-number{display:block;font-size:16px;color:#333}.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:400;line-height:normal}.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:600;line-height:20px}.team-member-list .Label--gray, +.team-member-list .Label--outline{cursor:default}.team-member-list .invite-icon{width:28px;color:#959da5}.menu-item-danger, +.menu-item-danger.selected{color:#cb2431}.menu-item-danger:hover, .menu-item-danger[aria-selected="true"], .menu-item-danger.navigation-focus, +.menu-item-danger.selected:hover, +.menu-item-danger.selected[aria-selected="true"], +.menu-item-danger.selected.navigation-focus{color:#fff;background:#d73a49}.team-member-list-avatar{float:left;margin-right:10px}.team-member-list-avatar .octicon{width:40px;color:#959da5}.org-team-form .disabled{opacity:0.5}.org-team-form .css-truncate-target{max-width:250px}.confirm-removal-container .private-fork-count{margin-top:0;font-size:12px;font-weight:400;color:#586069}.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:#cb2431}.confirm-removal-list-container{margin-bottom:15px;border:1px solid #eaeaea;border-radius:3px}.confirm-removal-list-item{padding:10px;margin:0;font-size:14px;font-weight:600;border-top:1px solid #eaeaea}.confirm-removal-list-item:first-child{border-top:0}.confirm-removal-team .octicon, +.confirm-removal-repo .octicon{margin-right:3px;color:#586069}.team-repo-access-list{max-height:245px}.manage-member-meta{list-style:none}.manage-member-meta-item{margin-top:12px;color:#586069}.manage-member-meta-item:first-child{margin-top:0}.manage-member-meta-item .btn-link{color:#586069}.manage-member-meta-item > .octicon{width:14px;margin-right:5px;color:#586069;text-align:center}.manage-member-meta-item > .octicon-alert{color:#a04100}.member-two-factor-disabled{color:#cb2431}.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:#586069}.org-user-notice-icon{float:right;margin:10px 10px 20px;font-size:45px;color:#ccc}.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:400}.manage-repo-access-lead{margin-top:3px;margin-bottom:0;font-size:16px;color:#586069}.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:#24292e;background-color:#fafbfc}.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:400;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-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 .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:#0366d6;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}.invited .team-member-list{margin:-20px 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:600}.manage-member-sso-sessions.has-active-sessions .blankslate{display:none}.manage-memberships-nav{position:relative;top:1px;margin-top:10px}.manage-memberships-tabs-item{color:#586069;white-space:nowrap;cursor:pointer;border:solid transparent;border-width:3px 1px 1px;border-radius:3px 3px 0 0}.manage-memberships-tabs-item:hover{color:#333}.manage-memberships-tabs-item.selected{font-weight:600;color:#24292e;background-color:#fff;border-bottom:2px solid #d26911}.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:600;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:#0366d6}.owner-select-target:active{color:#fff;background-color:#024ea4}.owner-select-target .css-truncate-target{max-width:90px}.owner-select-target.disabled{color:#6a737d;cursor:not-allowed}.owner-select-target.disabled .user-mention{color:#6a737d}.owner-select-target.disabled .owner-select-avatar{opacity:0.3}.owner-select-avatar{display:block;margin-bottom:9px}.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-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;overflow:hidden}.theme-toggle-full-left{left:4px}.theme-toggle-full-right{right:4px}.theme-selector{height:102px;margin:15px 46px}.theme-selector-thumbnail{padding:2px;border:1px solid #ddd}.theme-selector-thumbnail:hover{text-decoration:none;background-color:#f5f5f5}.theme-selector-thumbnail.selected{padding:3px;background-color:#0366d6;border:0}.theme-selector-thumbnail.selected .theme-selector-img{border:1px solid #fff}.theme-selector-img{width:126px;height:96px;border-radius:1px}.theme-picker-spinner{position:absolute;top:16px;left:50%;margin-left:-16px;background-color:#fff;opacity:0;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-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%;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{z-index:-100;display:block;width:100%;height:6000px;padding:0;background-color:#fff;border:0}.pinned-repos-spinner{position:relative;top:2px;left:6px}.pinned-repos-reorder-error{padding-left:6px;font-size:12px;font-weight:400;color:#86181d}.pinned-repos-setting-link{font-size:13px;font-weight:400}.pinned-repo-name{color:#6a737d}.pinned-repo-checkbox:checked + .pinned-repo-name{color:#24292e;background-color:#f1f8ff}.org-pinned-repos-list.pinned-repos-list{justify-content:flex-start}.org-pinned-repo-item.pinned-repo-item{width:319px;margin-right:11px}.org-pinned-repo-item.pinned-repo-item + .org-pinned-repo-item + .org-pinned-repo-item + .org-pinned-repo-item{margin-right:11px}.org-pinned-repo-item.pinned-repo-item + .org-pinned-repo-item + .org-pinned-repo-item{margin-right:0}.org-pinned-repo-item.pinned-repo-item + .org-pinned-repo-item + .org-pinned-repo-item + .org-pinned-repo-item + .org-pinned-repo-item + .org-pinned-repo-item{margin-right:0}@media print{#serverstats, + .Header, + .header-search, + .site-search, + .reponav, + .comment::before, + .comment::after, + .footer, + .pagehead-actions, + .discussion-timeline-actions, + .timeline-comment-actions, + .timeline-new-comment, + .thread-subscription-status, + .lock-toggle-link, + .header, + .pr-review-tools, + .file-actions, + .js-expandable-line, + .pr-toolbar-shadow, + .pr-toolbar.is-placeholder, + .language-color{display:none!important}.repository-lang-stats-graph{height:0}.btn:not(.btn-outline){color:#24292e!important;background:none}p, + .comment +h2{page-break-inside:avoid}.markdown-body h2{page-break-after:avoid}.topic-tag{padding:0}.topic-tag::before{content:"#";margin-right:-2px}.blob-num{border-right:2px solid #e1e4e8}.blob-num-deletion{border-right-color:#d73a49}.blob-num-addition{border-right-color:#28a745}.blob-code-addition .x{border-bottom:2px solid #28a745;border-radius:0px}.blob-code-deletion .x{border-bottom:2px solid #d73a49;border-radius:0px}.pr-toolbar.is-stuck{position:static!important;width:100%!important}.block-diff-neutral{border:4px solid #d1d5da}.block-diff-deleted{border:4px solid #d73a49}.block-diff-added{border:4px solid #28a745}.State{border:1px #e1e4e8 solid;color:#1b1f23;border-color:none;background:none}.State--green{border:1px solid #2cbe4e;color:#28a745}.State--purple{border:1px solid #6f42c1;color:#6f42c1}.State--red{border:1px solid #cb2431;color:#cb2431}.markdown-body pre > code{white-space:pre-wrap}}.pjax-loader-bar{position:fixed;top:0;left:0;z-index:40;opacity:0;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);transition:width 0.4s ease}.pjax-loader-bar.is-loading{opacity:1;transition:none}.project-full-screen .pagehead, +.project-full-screen .Header{display:block}@media (min-width: 544px){.project-full-screen .pagehead, + .project-full-screen .Header{display:none}}.project-full-screen .project-header{padding-top:10px;padding-bottom:10px;color:hsla(0,0%,100%,0.75)}@media (min-width: 544px){.project-full-screen .project-header{background-color:#24292e}}.project-full-screen .project-header .project-header-link{color:hsla(0,0%,100%,0.75)!important}.project-full-screen .project-header .project-header-link:hover{color:#fff!important}.project-full-screen .project-header .pending-cards-status{border-color:#24292e}@media (min-width: 544px){.project-full-screen .card-filter-input{color:#fff;background-color:hsla(0,0%,100%,0.125);border:0;outline:none;box-shadow:none}.project-full-screen .card-filter-input:-ms-input-placeholder{color:hsla(0,0%,100%,0.7)}.project-full-screen .card-filter-input::-ms-input-placeholder{color:hsla(0,0%,100%,0.7)}.project-full-screen .card-filter-input::placeholder{color:hsla(0,0%,100%,0.7)}.project-full-screen .card-filter-input:focus{background-color:hsla(0,0%,100%,0.175)}}.project-header{background-color:#eff1f3}@media (min-width: 544px){.project-header{background-color:#fff}}.project-header .select-menu-modal-holder{z-index:500}.project-updated-message{top:6px;left:50%;z-index:50;transform:translate(-50%,0)}.pending-cards-status{top:-2px;right:-9px;z-index:2;width:14px;height:14px;background-image:linear-gradient(#54a3ff,#006eed);background-clip:padding-box;border:2px solid #fff}.project-columns{overflow-x:auto}@media (min-width: 544px){.project-columns-container{height:0;overflow-x:visible!important}}.project-column{min-width:100%;max-width:100%;background-color:#eff1f3;border-width:0!important;border-radius:0!important}.project-column:focus{outline:none}@media (min-width: 544px){.project-column{min-width:355px;max-width:355px;border-width:1px!important;border-radius:6px!important}.project-column:focus{border-color:#2188ff!important;box-shadow:0 0 0 0.2em rgba(3,102,214,0.3)}}.project-column.moving{background-color:#f1f8ff!important;box-shadow:0 0 0 0.2em rgba(3,102,214,0.3);transform:translateX(4px) translateY(-4px)}.project-column .automation-summary-tooltip::after{max-width:190px!important}.new-project-column{width:315px;border-color:#959da5!important}.project-search-form .loading-indicator{top:21px;right:21px;display:none}.project-search-form.loading .loading-indicator{display:inline-block}.sortable-ghost{background-color:#f6f8fa;opacity:0.5}.project-card .project-reference-markdown > p, .project-card:last-child{margin-bottom:0!important}.project-card:first-child{margin-top:8px!important}@media (min-width: 544px){.project-card:first-child{margin-top:3px!important}}.project-card ul, +.project-card ol{margin-bottom:8px;margin-left:16px}.project-card .contains-task-list{margin-left:24px}.project-card:hover{border-color:#d1d5da!important;box-shadow:0 1px 3px rgba(106,115,125,0.3)!important}.project-card:focus{outline:none}@media (min-width: 544px){.project-card:focus{border-color:#2188ff!important;box-shadow:0 0 0 0.2em rgba(3,102,214,0.3)!important}}.project-card.moving{background-color:#f1f8ff!important;box-shadow:0 0 0 0.2em rgba(3,102,214,0.3)!important;transform:translateX(4px) translateY(0)}.archived-project-cards-pane .project-card .archived-header{display:flex!important;color:#735c0f}.archived-project-cards-pane .project-card .archive-dropdown-item{display:none}.issue-card.draggable{cursor:move}.issue-card .issue-card-label{max-width:50%}.issue-card .issue-card-label::after{max-width:150px}.issue-card .avatar-stack:hover .from-avatar{margin-right:-4px}.issue-card pre{word-wrap:break-word;white-space:pre-wrap}@keyframes show-pane{0%{transform:translateX(390px)}100%{transform:translateX(0)}}.project-pane{z-index:30;background-clip:padding-box;box-shadow:-3px 0 5px rgba(36,41,46,0.05)}@media (min-width: 544px){.project-pane{position:absolute!important;width:360px!important;height:auto!important;animation:show-pane 0.2s cubic-bezier(0,0,0,1)}}.project-pane .redacted-activity{cursor:help;border-bottom:1px dotted #959da5}.project-pane .project-body-markdown p:last-child, +.project-pane .project-body-markdown ul:last-child, +.project-pane .project-body-markdown ol:last-child{margin-bottom:0}.project-pane-close{color:rgba(27,31,35,0.5)}.project-pane-close:hover{color:rgba(27,31,35,0.7)}.project-note-form textarea{resize:vertical}.card-menu-container .dropdown-menu, +.column-menu-container .dropdown-menu{min-width:180px}.card-octicon{top:6px;left:10px}.card-note-octicon{top:8px}.is-sending .auto-search-group .chooser-spinner{top:15px;right:21px;left:auto}.card-filter-input{width:0}@media (min-width: 544px){.card-filter-input{width:290px}}.card-filter-autocomplete-dropdown{z-index:500;float:none;min-width:240px;max-height:240px;cursor:pointer}.card-filter-autocomplete-dropdown [aria-selected="true"], +.card-filter-autocomplete-dropdown .navigation-focus{color:#fff!important;background-color:#0366d6;border-radius:3px}.card-filter-autocomplete-dropdown [aria-selected="true"] .autocomplete-text-qualifier, +.card-filter-autocomplete-dropdown .navigation-focus .autocomplete-text-qualifier{color:#fff!important}.projects-reset-query:hover .projects-reset-query-icon{background-color:#0366d6}.projects-reset-query-icon{width:18px;height:18px;padding:1px;background-color:#6a737d}.project-small-menu-dropdown::before, +.project-small-menu-dropdown::after{display:none}.project-header-controls, +.project-header-search{flex-grow:1}@media (min-width: 1012px){.project-header-controls, + .project-header-search{flex-grow:0}}.project-header-subnav-search{flex-grow:1}@media (min-width: 544px){.project-header-subnav-search{flex-grow:0}}.project-page .application-main{flex-shrink:0!important}@media (min-width: 544px){.project-page .application-main{flex-shrink:1!important}}.project-page .reponav-small{display:none!important}@media (min-width: 544px){.project-page .reponav-small{display:block!important}}@media (min-width: 1012px){.project-page .reponav-small{display:none!important}}.project-edit-mode .column-menu-container, +.project-edit-mode .column-menu-item{display:none!important}.project-edit-mode .project-move-actions{display:flex!important}.push-board-over{padding-right:0!important;transition:all 0.2s ease}@media (min-width: 544px){.push-board-over{padding-right:360px!important}}.project-touch-scrolling{-webkit-overflow-scrolling:touch}.project-page.menu-active .project-touch-scrolling{-webkit-overflow-scrolling:auto}.projects-comment-form .comment-md-support-link{float:none;width:100%;text-align:center}.projects-comment-form .comment-form-actions{width:100%;padding:8px 16px;margin:4px 0!important}.projects-comment-form .comment-form-actions button{width:100%;margin:4px 0!important}.projects-comment-form .comment-form-head{padding:0!important;margin:0!important;border-bottom:0}.projects-comment-form .comment-form-head .tabnav-tabs{padding:8px 8px 0}.projects-comment-form .comment-form-head .toolbar-commenting{width:100%;background-color:#fff;border-top:1px solid #d1d5da}.projects-comment-form .comment-form-head .toolbar-commenting .toolbar-group{margin:10px 7px 5px!important}.projects-comment-form .comment-form-head::after{display:block;clear:both;content:" "}.projects-comment-form .comment-form-textarea{height:250px!important}.projects-comment-form .preview-content{margin:0;border-top:1px solid #d1d5da}.projects-comment-form .preview-content .comment-body{padding:16px}.project-issue-body-wrapper{max-height:200px;overflow:hidden}.Details--on .project-issue-body-wrapper{max-height:none;overflow:visible}.project-issue-body-blur{height:32px;background:linear-gradient(to top,#fff,hsla(0,0%,100%,0))}.Details--on .project-issue-body-blur{height:0}.project-comment-title-hover .comment-action, +.project-comment-body-hover .comment-action{opacity:0}.project-comment-title-hover:hover .comment-action, +.project-comment-body-hover:hover .comment-action{opacity:1}.project-comment-title-hover .octicon-pencil, +.project-comment-body-hover .octicon-pencil{color:rgba(27,31,35,0.5)}.project-comment-title-hover .octicon-pencil:hover, +.project-comment-body-hover .octicon-pencil:hover{color:#0366d6}.project-comment-body-reaction .timeline-comment-action{padding:4px 8px}.project-comment-reactions .reaction-summary-item{padding:8px}.project-comment-reactions .reaction-summary-item g-emoji{margin:0!important}.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:first-child{padding-top:16px!important;border-top:1px solid #eaecef!important}.vcard-detail:last-child{padding-bottom:16px!important}.vcard-detail .octicon{float:left;width:16px;margin-top:3px;margin-left:-24px;color:#6a737d;text-align:center}.member-badge{padding-left:24px;font-size:14px;color:#0366d6}.member-badge .octicon{float:left;width:16px;margin-left:-24px;color:#6a737d;text-align:center}.member-badge + .member-badge{padding-top:0;margin-top:-3px;border-top:0}.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:#6a737d}.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:#86181d}.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;transition:0.2s}.user-profile-sticky-bar::after{position:fixed;top:0;right:0;left:0;z-index:100;display:none;height:54px;content:"";background-color:#fff;border-bottom:solid 1px #d1d5da;box-shadow:0 1px 2px rgba(0,0,0,0.075);opacity:0;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:54px}.user-profile-mini-avatar{width:32px}.mini-follow-button{padding:0 8px;line-height:1.5;opacity:0;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{pointer-events:none}.vcard-names-container.is-stuck .vcard-names{opacity:0}.vcard-names-container.is-stuck::after{opacity:1}.blocked-user-notice{width:100%;padding:8px 16px;color:#cb2431;text-align:center;border:solid 1px #d73a49;border-radius:3px}.user-profile-nav{background-color:#fff;border-bottom:solid 1px #d1d5da}.user-profile-nav.is-stuck{z-index:90}.pinned-repos-list{display:flex;list-style:none;flex-wrap:wrap;justify-content:space-between}.pinned-repo-item{display:flex;width:359px}.pinned-repo-item .pinned-repository-handle{padding-top:1px;color:#586069}.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:#f1f8ff}.pinned-repo-item.sortable-ghost{background-color:#f1f8ff;opacity:0}.pinned-repo-item.empty{border-style:dashed;border-width:1px;align-items:center;justify-content:center}.pinned-repo-item-content{display:flex;width:100%;flex-direction:column}.pinned-repo-desc{flex:1 0 auto}.pinned-repo-meta{display:inline-block}.pinned-repo-meta + .pinned-repo-meta{margin-left:16px}.user-repo-search-results-summary{white-space:normal}.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:#eaecef}.profile-timeline.discussion-timeline::before{left:15px;background-color:#eaecef}.profile-timeline.discussion-timeline .contribution-joined-github, +.profile-timeline.discussion-timeline .contribution-first-pull-request, +.profile-timeline.discussion-timeline .contribution-first-repository, +.profile-timeline.discussion-timeline .contribution-first-issue{margin-top:-16px}.profile-break-word{-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;word-break:break-word}.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 .progress-bar{width:40px}.profile-timeline-card .issue-meta-section .octicon{color:#6a737d;vertical-align:middle}.profile-rollup-wrapper .css-truncate-target{max-width:85%}.profile-rollup-wrapper .progress-bar{height:8px;border-radius:2px}.profile-rollup-wrapper + .profile-rollup-wrapper{border-top:1px solid #eaecef}.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-summarized + .profile-rollup-summarized{border-top:1px solid #eaecef}.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}.vertical-text-bottom{vertical-align:text-bottom}.profile-rollup-summarized.open > .profile-rollup-content, +.profile-rollup-summarized.open .profile-rollup-toggle-closed, +.profile-rollup-wrapper.open > .profile-rollup-content, +.profile-rollup-wrapper.open .profile-rollup-toggle-closed{display:block}.profile-rollup-summarized.open .profile-rollup-toggle-open, +.profile-rollup-wrapper.open .profile-rollup-toggle-open{display:none}.profile-rollup-toggle-closed{display:none}.profile-rollup-toggle{color:#6a737d;cursor:pointer}.profile-rollup-toggle:hover{color:#0366d6}.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}.stale-files-tab{margin-bottom:10px}.files-bucket{margin-bottom:15px}.full-width .diffbar .container, +.split-diff .diffbar .container{padding-right:0;padding-left:0}.pr-toolbar{position:-webkit-sticky;position:sticky;top:0;z-index:29;height:60px;padding:0 20px;margin:-20px -20px 0;background-color:#fff}.pr-toolbar .stale-files-tab{float:left;padding:5px 10px;margin-top:-5px;margin-bottom:-5px;color:#a04100;background-color:#fff8f2;border-radius:3px}.pr-toolbar .subset-files-tab{float:left;padding:5px 10px;margin-top:-5px;margin-bottom:-5px;font-size:13px;color:#0366d6;background-color:#e6f1f6;border-radius:3px}.pr-toolbar .stale-files-tab-link{font-weight:600;color:inherit}.pr-toolbar.is-stuck + .pr-toolbar-shadow{position:fixed;top:60px;right:0;left:0;z-index:28;display:block;height:5px;content:"";background:linear-gradient(rgba(0,0,0,0.075),rgba(0,0,0,0.001)) repeat-x 0 0;border-top:1px solid rgba(0,0,0,0.15)}.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}.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 [aria-selected="true"] .text-emphasized, +.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-range-menu .in-range:not([aria-selected="true"]):not(.is-range-selected), +.diffbar-range-menu .in-range:not(.navigation-focus):not(.is-range-selected){background-color:#f1f8ff;border-bottom-color:rgba(27,31,35,0.15)}.diffbar-range-menu .is-range-selected{color:#735c0f;cursor:default;background-color:#fffbdd;border-bottom-color:rgba(38,44,49,0.15);outline:none}.diffbar-range-menu .is-range-selected .text-emphasized{color:#776521}.diffbar-range-menu .is-range-selected .description{color:inherit}.diffbar-range-menu .is-last-in-range{cursor:pointer;background-color:#fff5b1}.diffbar-item{float:left;margin-right:20px;font-size:13px;line-height:20px;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-loader, +.conflict-resolver.loading .resolve-file-form{display:none}.conflict-resolver .resolve-file-form, +.conflict-resolver.loading .conflict-loader{display:block}.conflict-resolver.loading{position:relative;height:calc(100vh + 51px);padding-top:50px;border:1px #e1e4e8 solid}.conflict-resolver .file-header{padding:9px 10px}.conflicts-nav{height:100vh;-ms-overflow-style:-ms-autohiding-scrollbar;border-width:0 0 1px}.conflict-nav-item .discussion-item-icon{display:none}.conflict-nav-item.resolved .discussion-item-icon{display:block;margin-left:-5px}.conflict-nav-item.resolved .octicon-file-code{display:none}.conflict-nav-item.selected::before{border-radius:0}.conflict-nav-item .octicon{width:22px}.conflict-nav-item .css-truncate-target{max-width:100%}.is-resolved .file-actions{display:none}.is-resolved .resolved-notice{display:block}.resolved-notice{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-with-count{display:block}.review-title-with-count{display:none}.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;left:initial;z-index:99;width:700px;margin:0;border:1px solid rgba(27,31,35,0.15);transform:initial}.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 .preview-content{max-height:365px}.pull-request-review-menu .comment-body{border-bottom:0!important}.review-thread{border:1px #e1e4e8 solid;border-radius:3px}.review-thread:not(:last-child){margin-bottom:16px}.last-review-thread{padding:10px 10px 0;margin:10px -10px 0;border-top:1px solid #e1e4e8}.review-comment-contents{margin-left:44px}.review-comment-contents .timestamp{color:inherit;white-space:nowrap}.review-comment::after, +.review-comment-loader::after, +.review-comment.is-comment-editing::after{position:absolute;top:31px;left:29px;z-index:-1;width:3px;height:100%;content:"";background-color:#f6f8fa}.review-comment{position:relative;padding:8px 16px}.review-comment:first-child{padding-top:16px}.review-comment:last-child{padding-bottom:16px}.review-comment .comment-body, +.review-comment .comment-reactions{padding:0}.review-comment .comment-body{padding-top:4px}.review-comment .comment-body .suggested-change-form-container:nth-last-of-type(2){margin-bottom:0!important}.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, +.review-comment .show-more-popover.dropdown-menu-sw{right:-5px;margin-top:5px}.review-comment .add-reaction-popover.dropdown-menu-ne{left:9px}.review-comment .reaction-summary-item:not(.add-reaction-btn){padding:0 8px;font-size:12px;line-height:26px;border:1px solid #d2dff0;border-radius:3px}.review-comment .reaction-summary-item:not(.add-reaction-btn) .emoji{font-size:16px;vertical-align:sub}.review-comment .reaction-summary-item:not(.add-reaction-btn) + .reaction-summary-item{margin-left:8px}.review-comment:last-child::after, +.review-comment:last-child .review-comment-contents::after{display:none}.review-comment .timeline-comment-actions{opacity:0}.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 .timeline-comment-label{float:none;margin-top:0}.review-comment .is-comment-editing{position:relative;background-color:#fff;border:1px #e1e4e8 solid;border-radius:3px}.review-comment .is-comment-editing::after{top:100%;bottom:0;left:19px;height:20px}.review-comment .is-comment-editing .timeline-comment-actions, +.review-comment .is-comment-editing .edit-comment-hide{display:none}.review-comment .is-comment-editing .previewable-comment-form{display:block}.review-comment.is-comment-loading .previewable-comment-form{opacity:0.5}.review-comment.is-comment-stale .comment-form-stale{display:block}.timeline-comment.is-comment-editing .discussion-item-header{display:none}.discussion-item-body .outdated-comment .hide-outdated-button{display:none}.discussion-item-body .outdated-comment.file{margin:4px 0}.discussion-item-body .outdated-comment .file-header{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.discussion-item-body .outdated-comment[open] .hide-outdated-button{display:block}.discussion-item-body .outdated-comment[open] .show-outdated-button{display:none}.discussion-item-body .outdated-comment[open] .file-header{border-bottom:1px #e1e4e8 solid;border-bottom-right-radius:0;border-bottom-left-radius:0}.discussion-item-body .outdated-comment .blob-code{position:static}.discussion-item-body .outdated-comment-label{height:26px;margin-top:3px;line-height:25px}.discussion-item-body .outdated-comment-label .octicon{top:1px}.review-thread-reply{padding:8px 16px;background-color:#f6f8fa;border-top:1px #e1e4e8 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:-8px -16px;background-color:#fff;border:0}.review-thread-reply-button{display:inline-block;min-height:28px;padding:3px 8px;margin-left:8px;cursor:text}.review-summary-form-wrapper{display:none;margin-bottom:24px;margin-left:-20px;background-color:#fff;border:1px #e1e4e8 solid;border-radius:3px}.is-pending .review-summary-form-wrapper, +.is-comment-editing .review-summary-form-wrapper{display:block}.is-pending .review-summary-form-wrapper{border-color:#d9d0a5}.tooltipped-left::after{right:auto;left:0}.tooltipped-left::before{right:auto;left:0}.discussion-item-review .edit-review{opacity:0;transition:opacity 0.15s ease 0s}.discussion-item-review:hover .edit-review{opacity:1}.diffstat-summary{padding:0 20px 0 0;font-size:16px;line-height:1.8;color:#586069;text-align:left;vertical-align:middle;border-radius:3px}.diffstat-summary a{color:#555}.diffstat-summary strong{color:#333}.authors-and-code .insertions{color:#28a745}.authors-and-code .deletions{color:#cb2431}.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:#f66a0a;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:#586069;text-align:center;border-left:1px solid #e1e4e8}.summary-stats li a{display:block;padding-bottom:10px;color:#586069;text-decoration:none}.summary-stats li a:hover{background:#fafafa}.summary-stats li .octicon-git-pull-request{color:#6f42c1}.summary-stats li .octicon-git-branch{color:#28a745}.summary-stats li .octicon-issue-closed{color:#cb2431}.summary-stats li .octicon-issue-opened{color:#28a745}.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:600;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}.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}.release-timeline-tags .tag-timeline-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:#e1e4e8;border:2px solid #fff;border-radius:6px}.release-timeline-tags.is-collapsed .expander{display:block!important}.release-timeline-tags.is-collapsed > .collapsable{display:none}.Label--draft{color:#cb2431;border-color:#d73a49}.Label--prerelease{color:#f66a0a;border-color:#f66a0a}.uploaded-files{border-top-left-radius:3px;border-top-right-radius:3px}.uploaded-files.not-populated + .drop-target p{border-top:1px #c3c8cf;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.delete{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!important}.uploaded-files > li.delete .live{display:none!important}.uploaded-files > li:nth-child(2){border-top:0!important}.uploaded-files .remove:hover{color:#cb2431!important}.upload-progress{height:3px;margin-top:3px;border-radius:30px;box-shadow:0 1px 1px #fff,inset 0 1px 1px hsla(0,0%,100%,0.5)}.upload-progress .upload-meter{background-image:linear-gradient(#8dd2f7,#58b8f4);border-radius:30px}.release-entry{border-bottom:1px #e1e4e8 solid}.release-entry:last-child{border-bottom:0}@media (min-width: 768px){.release-tag-field{width:130px!important}.release-main-section{border-left:2px solid #e1e4e8}.release-entry{border-bottom:0}}.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;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:600}.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:radial-gradient(ellipse at center,#fff 0%,hsla(0,0%,100%,0.85) 65%,hsla(0,0%,100%,0.85) 100%);opacity:0;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;transform:translateX(4px)}.dragover .repo-file-upload-tree-target .files-lg > .file-zip{opacity:1;transform:translateX(9px)}.dragover .repo-file-upload-tree-target .files-lg > .file-generic{opacity:1;transform:translateX(-4px)}.dragover .repo-file-upload-tree-target .files-lg > .file-acrobat{opacity:1;transform:translateX(-9px)}.repo-file-upload-slate{position:absolute;top:50%;width:100%;text-align:center;transform:translateY(-50%)}.repo-file-upload-slate h2{margin-top:5px}.repo-file-upload-slate .file-graph{opacity:0;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);transform:translateX(50px)}.repo-file-upload-slate .file-zip{opacity:0;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);transform:translateX(90px)}.repo-file-upload-slate .file-generic{opacity:0;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);transform:translateX(-50px)}.repo-file-upload-slate .file-acrobat{opacity:0;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);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}.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%}.label-description{padding:8px 16px}.label-delete-confirmation{line-height:34px}.labels-list-action{display:block;float:left;padding:8px 10px;color:#586069}.labels-list-action .octicon{margin-right:2px}.labels-list-action .octicon-pencil{font-size:14px}.sidebar-labels .sidebar-labels-style{margin-top:3px}.label-select-menu-item .g-emoji{font-size:12px;line-height:1;vertical-align:baseline}.new-label{padding:10px;margin-bottom:15px;background-color:#fafbfc;border:1px solid #e5e5e5;border-radius:3px}.new-label .label-edit::before{display:table;content:""}.new-label .label-edit::after{display:table;clear:both;content:""}.label-edit::before{display:table;content:""}.label-edit::after{display:table;clear:both;content:""}.label-edit label{display:block;margin-bottom:8px}.label-edit .error{float:left;margin-top:8px;margin-left:10px;color:red}.label-edit.is-valid .octicon-check{display:block}.label-edit.loading{display:block}.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}.label-characters-remaining{color:#586069}.emoji-size-boost .IssueLabel .g-emoji{top:0;font-size:1.15em;line-height:1.1}.repo-list{position:relative}.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}.mini-repo-list-item{position:relative;display:block;padding:6px 64px 6px 30px;font-size:14px;border-top:1px solid #d1d5da}.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:#6a737d}.mini-repo-list-item .repo-description{display:block;max-width:100%;font-size:12px;line-height:21px;color:#586069}.private .mini-repo-list-item{background-color:#fffdef}.private .mini-repo-list-item .repo-icon{color:rgba(27,31,35,0.7)}.filter-bar{padding:10px;background-color:#fafbfc;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}.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-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:600;line-height:26px;color:#333;text-decoration:none;white-space:nowrap;cursor:pointer;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: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 hsla(0,0%,100%,0.6);background-color:#ccc;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}.repository-import .repository-import-label{display:block;margin-bottom:8px;font-size:18px;font-weight:400}.repository-import .state-header{font-size:16px}.text-yellow{color:rgba(115,92,15,0.5)}.timeout{width:auto;height:300px;padding:0;margin:20px 0;background-color:transparent;border:0}.timeout h3{padding-top:100px;color:#586069}.overall-summary{position:relative;margin-bottom:10px;border:1px solid #dfe2e5;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:#586069;text-decoration:none}.numbers-summary .octicon{color:#6a737d}.numbers-summary a:hover{color:#0366d6}.numbers-summary a:hover .num{color:inherit}.repo-language-color{position:relative;top:1px;display:inline-block;width:12px;height:12px;border-radius:50%}.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 .get-repo-modal .get-repo-modal-options{display:block}.file-navigation .get-repo-modal.is-downloading .get-repo-modal-options{display:none}.file-navigation .get-repo-modal .animated-ellipsis-container{width:16px;height:16px}.file-navigation .get-repo-modal .animated-ellipsis-container > .animated-ellipsis{animation:ellipsis 1s infinite}@keyframes ellipsis{from{width:2px}to{width:16px}}.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 #e1e4e8;border-radius:0}.file-navigation .get-repo-btn:first-child{border-right:1px solid #e1e4e8;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:8px 16px 16px}.file-wrap{margin-bottom:10px;border:1px solid #dfe2e5;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[aria-selected="true"] td, +table.files tr.navigation-focus td{background:#f6f8fa}table.files td{padding:6px 3px;line-height:20px;border-top:1px solid #eaecef}table.files td.icon{width:17px;padding-right:2px;padding-left:10px;color:rgba(3,47,98,0.55)}table.files td.icon .octicon-file-directory{color:rgba(3,47,98,0.5)}table.files td.icon .spinner{position:relative;top:3px;display:none;margin-top:-3px;margin-left:-2px}table.files td .simplified-path{color:#6a737d}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:#6a737d}table.files td.message .emoji{vertical-align:top}table.files td.message a{color:#6a737d}table.files td.message a:hover{color:#0366d6}table.files td.age{width:125px;padding-right:10px;color:#6a737d;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 #eaecef;border-bottom:1px solid #eaecef}table.files tr.up-tree a{padding:3px 6px;margin-left:-3px;font-weight:600;border-radius:2px}table.files tr.up-tree a:hover{background-color:#dfe2e5}table.files tbody tr:first-child td{border-top:0}.branch-infobar{padding:8px;color:#586069;background-color:#fafbfc;border:solid #dfe2e5;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:#959da5}.branch-infobar .muted-link:hover .octicon{color:inherit}.spinner-forking{display:block;margin:20px auto 40px}.prereceive-feedback{padding:15px;margin-bottom:15px;border:1px solid #dfe2e5;border-left:3px solid #caa21a;border-radius:3px}.prereceive-feedback-heading{margin-top:0;margin-bottom:10px;color:#b08800}.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-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{width:200px}.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;height:34px;padding:0;cursor:pointer}.button-change-avatar{overflow:hidden}.profile-picture-spinner{background-image:url("/images/spinners/octocat-spinner-128.gif");background-repeat:no-repeat;background-position:center;background-size:64px 64px}.avatar-upload .flash{width:100%;padding:30px 15px;border:dashed 1px #d73a49;box-shadow:none}.avatar-upload .upload-state{display:none;padding:10px 0}.avatar-upload .upload-state p{margin:0;font-size:12px;color:#586069}.avatar-upload .avatar-upload .octicon{display:inline-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}.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:#586069}.email-actions .octicon-alert{color:#ca5633}.boxed-group .fork-flag{margin-left:16px;font-size:12px;color:#586069}.selected-user-key{background-color:#fffdef}.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}.recent-user-key{color:#28a745}.recent-user-key-access{color:#1e7e34}.unverified-user-key, +.unverified-user-key-notice{color:#cb2431}.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:600;color:#586069}.oauth-app-info-container dl.keys dd{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;color:#333}.oauth-app-info-container .user-count{font-size:30px;font-weight:300;color:#586069}.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:#cb2431}.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:#586069}.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:#586069;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:#28a745}.access-token .token-description{max-width:450px;color:#24292e}.access-token .token{font-size:14px}.access-token .sso-ready-badge{display:inline-block;padding:1px 4px;font-size:10px;line-height:16px;color:#767676;vertical-align:middle;background:none;border:1px solid #e5e5e5;border-radius:2px}.access-token .sso-ready-badge:focus{outline:none}.access-token .sso-ready-badge:hover{border-color:#ccc}.access-token .sso-ready-badge.ready{color:#55a532}.access-token .sso-ready-badge.ready:hover{border-color:#55a532}.access-token .credential-authorization-statuses{position:relative;display:inline-block}.access-token .credential-authorization-statuses.active .dropdown-menu-content{display:block}.access-token .credential-authorization-statuses .dropdown-menu{top:-4px;min-width:400px;max-width:500px;padding-top:0;padding-bottom:0}.access-token .credential-authorization-menu{padding:15px;font-size:13px;line-height:1.4}.access-token .credential-authorization-menu .status-heading{color:#24292e}.access-token .credential-authorization-status-list{max-height:235px;padding:0;margin:15px -15px -15px;overflow:scroll;border-top:1px solid #eee;transition:max-height 0.25s ease-in-out}.access-token .credential-authorization-status-item{position:relative;padding:10px 15px 10px 12px;background-color:#fafbfc;border-bottom:1px solid #eee}.access-token .credential-authorization-status-item:last-child{border-bottom:0;border-radius:0 0 2px 2px}.access-token .credential-authorization-status-icon{width:30px;margin-right:10px}.access-token .credential-authorization-status-avatar{position:relative;top:5px}.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:400}.personal-access-tokens .child-scopes{margin-left:20px;list-style:none}.personal-access-tokens .child-scopes .token-scope{width:180px;font-weight:400}.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:#24292e}.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}.post-recovery-token .octospinner, +.post-recovery-token .create-recovery-token-error{display:none}.post-recovery-token.loading .octospinner{display:block}.post-recovery-token.failed .create-recovery-token-error{display:block}.security-history .security-history-timestamp{float:right;color:#586069}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:#cb2431;cursor:pointer}.settings-email .email-actions .settings-remove-email.settings-disabled-remove-email{display:block;color:#6a737d}.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.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{margin:30px 0;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:21px}.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:48%;line-height:1.6;text-align:center}.two-factor-recovery-code::before{position:relative;top:-3px;margin-right:10px;font-size:10px;color:#d8d8d8;content:"\25CF"}.recovery-codes-saving-options{margin-left:35px}.recovery-codes-saving-options .recovery-code-save-button{width:115px;margin-right:15px;text-align:center}.recovery-codes-warning{margin:0 -15px}.recovery-codes-warning .recovery-codes-warning-octicon{height:40px;margin-right:15px}@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/2fa_guide@2x.png");background-size:675px 135px}}.btn-two-factor-state{min-width:70px}.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-wrapper{width:500px;margin:40px auto}.two-factor-lead{font-size:16px}.two-factor-qr-code{text-align:center}.two-factor-steps{padding:15px 15px 0;margin:30px 0;border:1px solid #eee;border-radius:3px}.two-factor-steps .error-icon{position:relative;top:2px;left:5px;color:#cb2431}.two-factor-steps .sent-message{position:relative;top:2px;left:5px;color:#28a745}.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:#586069;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:#28a745;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:#cb2431}.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:600}.u2f-registration-icon{position:absolute;left:-24px;color:rgba(47,38,6,0.5)}.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:#cb2431}.error-icon, +.spinner, +.sent-message, +.sms-error-message{display:none}.sms-error-message{margin-top:15px}.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}.qr-code-table{display:inline-block;padding:20px;margin:30px auto;border:1px solid #eee;border-radius:3px;box-shadow:0 2px 2px 0 rgba(0,0,0,0.04)}.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}.confirmation-phrase{font-style:italic;font-weight:400}.do-not-copy-me{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.session-device{position:relative;padding:15px;line-height:18px;color:#586069}.session-device .btn{float:right;margin-top:4px}.session-device .session-state-indicator{float:left;width:8px;height:8px;margin-top:10px;border-radius:5px}.session-device .session-state-indicator.recent{background-color:#28a745;box-shadow:0 0 10px rgba(108,198,68,0.5)}.session-device .session-state-indicator.not-recent{background-image:linear-gradient(#aaa,#ccc);box-shadow:0 1px 0 #fff}.session-device .session-icon{float:left;width:32px;margin-top:1px;margin-left:15px;color:#bbb;text-align:center}.session-device .sessions-more-info{margin-top:10px}.session-device.session-current{margin-top:0;background-color:#fff}.session-device.session-current .sessions-more-info{color:#586069}.session-device.session-current .sessions-more-info::after{border-top-color:#fff}.session-device.session-current .octicon{color:#586069}.session-details{margin-left:70px}.session-details:hover .octicon{color:#0366d6;cursor:pointer}.session-details.open .sessions-more-info{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:#586069}.collaborators .collab-remove .remove-link:hover{color:#cb2431}.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{width:352px}.collaborators .cancel-invite-cell{width:113px;padding-left:0}.access-sub-heading{float:right;font-weight:400;line-height:1.4;color:#586069}.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-pending-deletion-list-item{background-color:#fafbfc;box-shadow:inset 0 0 8px #eee}.oauth-pending-deletion-list-item:hover{background-color:#fafbfc}.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:#586069}.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:#586069}.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:600}.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, +.repo-data-options{margin-left:20px;opacity:0.5}.protected-branch-options.active, +.repo-data-options.active{opacity:1}.protected-branch-reviews.on .require-code-owner-review, +.protected-branch-reviews.on .reviews-dismiss-on-push, +.protected-branch-reviews.on .reviews-include-dismiss, +.protected-branch-reviews.on .require-approving-reviews{display:block}.protected-branch-reviews .require-code-owner-review, +.protected-branch-reviews .reviews-dismiss-on-push, +.protected-branch-reviews .reviews-include-dismiss, +.protected-branch-reviews .require-approving-reviews{display:none}.protected-branch-orgs-and-repo-admins{padding:10px;background-color:#fafbfc}.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:#d15704;border-radius:3px}.protected-branch-admin-permission{float:left;padding:3px;margin:-2px 0 -2px -4px;line-height:normal;border:1px solid transparent;border-radius:3px}.protected-branch-admin-permission.active{animation:toggle-color 1s ease-in-out 0s}@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}.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:#cb2431;background:transparent;border:0}.repository-merge-features .form-group.errored .error::before, .repository-merge-features .form-group.errored .error::after{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;border-bottom:1px solid #ddd}.setup-header h1{margin-top:0;margin-bottom:0;font-size:45px;font-weight:400;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:#586069}.setup-header .lead a:hover{color:#0366d6;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:#586069;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:600;color:#586069}.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-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}.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:#cb2431}.setup-form .octicon-check{color:#28a745}.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{border-collapse:separate;border:1px solid #d1d5da}.setup-form .setup-plans tr.selected{background-color:#f1f8ff}.setup-form .setup-plans .name{font-weight:600}.setup-form .setup-plans .choose-plan input[type="radio"]{display:none}.setup-form .new-business-initial-admins td{padding:5px 10px;border:1px solid #f5f5f5}.setup-creditcard-form .cc-extras{margin-bottom:15px}.setup-creditcard-form .expiration-form select{width:80px}.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:80px}.setup-creditcard-form .form-group select.select-country{width:182px;margin-right:5px}.setup-creditcard-form .form-group select:invalid{color:#6a737d}.setup-creditcard-form .form-group select.select-state{width:113px}.setup-creditcard-form .form-group .card-select-number-field{width:100%}.setup-creditcard-form .form-group .input-vat{width:288px}.setup-creditcard-form .form-group .card-select-number-field-icons{top:1px;right:2px}.setup-creditcard-form .form-group .card-select-number-field-icons > .placeholder{top:8px;right:10px}.setup-creditcard-form .form-group .card-select-number-field-icons > .card{height:20px;margin-top:6px;margin-right:5px;margin-bottom:6px}.setup-creditcard-form .form-group .card-select-number-field-icons > .card.enabled{display:block}.setup-creditcard-form .form-group input.input-postal-code{width:180px}.setup-creditcard-form.is-vat-country .vat-field{display:block}.setup-creditcard-form.is-international .form-group select.select-country{width:300px}.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-icons, +.setup-creditcard-form.has-credit-card .card-select-number-field, +.setup-creditcard-form.has-credit-card .cancel-enter-new-card{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:400;color:#586069}.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:400;color:#767676}.org-creation-questions .response-group label, +.user-identification-questions .response-group label{font-weight:400}.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}.shelf{padding-top:20px;margin-bottom:20px;background-color:#fefefe;border-bottom:1px solid #eff1f3}.shelf .container{position:relative}.shelf-title{margin:0;font-size:30px;font-weight:400}.shelf-content{width:800px;margin:50px auto;text-align:center}.shelf-lead{margin-top:10px;margin-bottom:30px;font-size:18px;color:#586069}.shelf-dismiss{position:absolute;top:0;right:20px;font-size:12px;color:#959da5}.shelf-dismiss:hover{color:#0366d6;text-decoration:none}.shelf-dismiss .close-button{width:28px;height:28px;padding:3px 5px;color:rgba(27,31,35,0.7);border:1px solid rgba(27,31,35,0.15);border-radius:28px}.shelf-dismiss .close-button:hover{color:#24292e;border-color:rgba(27,31,35,0.3)}.shelf-cta{padding:10px 50px;font-size:16px}.intro-shelf{margin-top:0;color:rgba(27,31,35,0.85);background-image:linear-gradient(180deg,hsla(0,0%,100%,0) 60%,#fff),linear-gradient(70deg,#dbedff 32%,#ebfff0);border-bottom:#fff}.intro-shelf .shelf-lead{color:rgba(27,31,35,0.7)}.orgs-help-shelf{padding-top:20px;padding-bottom:20px;margin-top:-20px;margin-bottom:20px;border-bottom:1px solid #eff1f3}.orgs-help-shelf .orgs-help-title{font-size:30px;font-weight:400}.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 #d1d5da}.orgs-help-lead{margin-top:10px;margin-bottom:30px;color:#586069}.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 #e1e4e8;border-radius:50px}.orgs-help-item-octicon .octicon{margin-top:20px;color:#0366d6}.orgs-help-item-title{margin-bottom:10px;font-weight:400}.orgs-help-item-content{margin-top:0;font-size:14px;color:#586069}.orgs-help-dismiss{float:right;margin-top:5px;margin-right:10px;font-size:12px;color:#586069}.orgs-help-dismiss:hover{color:#0366d6;text-decoration:none}.orgs-help-dismiss .octicon{position:relative;top:1px}.orgs-help-title{margin-top:0;margin-bottom:0}.collection-page .column.main{margin-right:260px!important}.collection-page .column.sidebar{width:240px}.collection-search-results em{padding:0.1em;background-color:#faffa6}.draft-tag{padding:5px 10px;font-weight:600;color:#eee;background-color:#404040}.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:linear-gradient(180deg,hsla(0,0%,100%,0.85),#fff)}.showcase-page-repo-list{border-top:1px solid #eee}.repo-health .repo-health-loading{display:none;font-style:italic}.repo-health.is-loading .repo-health-loading{display:block}.repo-health.is-loading .repo-health-results{display:none}.sortable-button-item:first-of-type .sortable-button[data-direction="up"], +.sortable-button-item:last-of-type .sortable-button[data-direction="down"]{display:none}.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 #e1e4e8 solid;border-radius:5px}.org-sso .sso-recovery-callout{padding:15px 10px;text-align:center;border:1px solid #d1d5da;border-radius:5px}.sso-modal{padding:16px}.sso-modal .org-sso{width:auto}.sso-modal .org-sso .org-sso-panel{border:0}.sso-modal .sso-prompt-success, +.sso-modal .sso-prompt-error{display:none}.sso-modal.success .sso-prompt-default{display:none}.sso-modal.success .sso-prompt-success{display:block}.sso-modal.error .sso-prompt-default{display:none}.sso-modal.error .sso-prompt-error{display:block}.sso-modal.error .flash-error{margin-right:-35px;margin-left:-35px;border-right:0;border-left:0;border-radius:0}.tab-size[data-tab-size="1"]{-moz-tab-size:1;tab-size:1}.tab-size[data-tab-size="2"]{-moz-tab-size:2;tab-size:2}.tab-size[data-tab-size="3"]{-moz-tab-size:3;tab-size:3}.tab-size[data-tab-size="4"]{-moz-tab-size:4;tab-size:4}.tab-size[data-tab-size="5"]{-moz-tab-size:5;tab-size:5}.tab-size[data-tab-size="6"]{-moz-tab-size:6;tab-size:6}.tab-size[data-tab-size="7"]{-moz-tab-size:7;tab-size:7}.tab-size[data-tab-size="8"]{-moz-tab-size:8;tab-size:8}.tab-size[data-tab-size="9"]{-moz-tab-size:9;tab-size:9}.tab-size[data-tab-size="10"]{-moz-tab-size:10;tab-size:10}.tab-size[data-tab-size="11"]{-moz-tab-size:11;tab-size:11}.tab-size[data-tab-size="12"]{-moz-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 input{float:left;padding-left:2px;margin:0;background:none;border:0;box-shadow:none}.tag-input input:focus{box-shadow:none}.tag-input .tag-input-tag{float:left;margin-right:5px}.tag-input .tag-input-tag:hover{background-color:#eee}.tag-input-tag{position:relative;padding:5px 30px 5px 10px;background:#eee;border-radius:3px}.tag-input-tag:hover{background-color:#ddd}.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:400}.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 > .handle{opacity:1}.reorderable-task-lists .markdown-body .task-list-item.is-dragging{opacity:0}.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}.task-run .icon-for-success, +.task-run .icon-for-failure, +.task-run .icon-for-pending, +.task-run .icon-for-inactive{display:none}.task-run.success .icon-for-success{display:inline-block;color:#28a745}.task-run.failure .icon-for-failure{display:inline-block;color:#cb2431}.task-run.pending .icon-for-pending{display:inline-block;color:#6a737d}.task-run.inactive .icon-for-inactive{display:inline-block;color:#6a737d}.task-run .task-run-name{display:inline-block;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.team-label-ldap{display:inline-block;padding:0 9px;line-height:25px;color:#586069;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{width:25px;height:25px;line-height:24px;color:#586069}.team-member-ellipsis:hover{color:#0366d6;background:#f6f8fa}.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 .nested-teams-checkbox{padding-left:3px}.team-listing .nested-teams-checkbox.show{padding-right:11px}.team-listing .nested-teams-checkbox.indent-1{padding-left:30px}.team-listing .nested-teams-checkbox.indent-2{padding-left:54px}.team-listing .nested-teams-checkbox.indent-3{padding-left:78px}.team-listing .nested-teams-checkbox.indent-4{padding-left:102px}.team-listing .nested-teams-checkbox.indent-5{padding-left:126px}.team-listing .nested-teams-checkbox.indent-6{padding-left:150px}.team-listing .nested-teams-checkbox.indent-7{padding-left:174px}.team-listing .nested-teams-checkbox.indent-8{padding-left:198px}.team-listing .nested-teams-checkbox.indent-9{padding-left:222px}.team-listing .nested-teams-checkbox.indent-10{padding-left:246px}.team-listing .nested-teams-checkbox.indent-11{padding-left:270px}.team-listing .nested-teams-checkbox.indent-12{padding-left:294px}.team-listing .nested-teams-checkbox.indent-13{padding-left:318px}.team-listing .nested-teams-checkbox.indent-14{padding-left:342px}.team-listing .nested-teams-checkbox.indent-15{padding-left:366px}.team-listing .team-info{width:280px}.team-listing .nested-team-info{width:650px}.team-listing .nested-team-name{max-width:268px}.team-listing .team-name{line-height:1.3;color:#0366d6}.team-listing .description{display:block}.team-listing .shortened-teams-avatars{margin-left:auto}.team-listing .shortened-teams-avatars.width-0{width:300px}.team-listing .shortened-teams-avatars.width-1{width:233px}.team-listing .shortened-teams-avatars.width-2{width:167px}.team-listing .shortened-teams-avatars.width-3{width:99px}.team-listing .team-meta{font-size:14px}.team-listing .team-members-count{width:124px;text-align:right}.team-listing .team-show-more-cell{display:block;width:980px}.team-listing .team-show-more{display:block;width:110px;height:30px;padding-top:6px;margin:auto;color:#0366d6;text-align:center;text-decoration:none;cursor:pointer}.team-listing .team-buttons{width:130px;text-align:right}.team-listing .octicon-chevron-up{display:none}.team-listing .octicon-wrapper{display:inline-block;width:10px}.team-listing .is-open.root-team{background-color:#fafbfc}.team-listing .is-open .expand-nested-team{font-weight:bold;color:#24292e}.team-listing .is-open .octicon-chevron-down{transform:rotate(180deg)}.team-listing .expand-nested-team{color:#6a737d;cursor:pointer}.team-listing .expand-nested-team:hover{color:#0366d6}.team-listing .team-menu{padding-right:15px}.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:#28a745}.traffic-graph path.unique{stroke:#005cc5}.traffic-graph .axis .tick:first-of-type line{stroke:#28a745;stroke-width:2px}.traffic-graph .y line{stroke:#28a745}.traffic-graph .y.unique line{stroke:#005cc5}.traffic-graph .overlay{fill-opacity:0}.uniques-graph .axis .tick:last-child line{stroke:#005cc5;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:#f6f8fa;border-bottom:1px solid #dfe2e5}table.capped-list td{padding:8px;font-size:12px;border-bottom:1px solid #eaecef}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:#444d56;vertical-align:-1px}table.capped-list tr:nth-child(even){background-color:#fafbfc}.capped-list-label{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.traffic-graph-stats{border-top:1px solid #dfe2e5}.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:#28a745;stroke:#fff;stroke-width:2}.uniques circle{fill:#005cc5;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[aria-selected="true"] td, +.tree-browser tr.navigation-focus td{background-color:#fff}.tree-browser tr[aria-selected="true"] td .octicon-chevron-right, +.tree-browser tr.navigation-focus td .octicon-chevron-right{color:#0366d6}.tree-browser .octicon-file-directory{color:rgba(3,102,214,0.75)}.tree-browser .octicon-file-submodule{color:#3cbf5e}.tree-browser .octicon-file{color:#586069}.tree-browser .content{max-width:220px}.tree-browser .message{max-width:420px}.tree-browser .css-truncate-target{max-width:100%}.tree-browser-result .css-truncate-target{max-width:870px}.tree-browser-result mark{font-weight:600;color:#0366d6;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}.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:600;line-height:1em;background:none;border:0}.toolbar-commenting .dropdown-item:hover{color:#0366d6}.toolbar-commenting .dropdown-item:focus{color:#0366d6;outline:none}.toolbar-item{display:block;float:left;padding:4px 5px;color:#586069;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:#586069;background:none;border:0}.toolbar-item .menu-target:hover, .toolbar-item:hover{color:#0366d6}.toolbar-item .menu-target:focus, .toolbar-item:focus{color:#0366d6;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}.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[aria-selected="true"], .typeahead-result.navigation-focus{text-decoration:none}.typeahead-result[aria-selected="true"], .typeahead-result:hover, .typeahead-result.navigation-focus{color:#fff;background-color:#0366d6}.typeahead-result[aria-selected="true"] .octicon-plus, .typeahead-result:hover .octicon-plus, .typeahead-result.navigation-focus .octicon-plus{color:#fff}.typeahead-result.disabled{pointer-events:none;opacity:0.5}.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:#586069}.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:#586069}.member-suggestion .non-member-action{display:none}.member-suggestion[aria-selected="true"] .member-name, +.member-suggestion[aria-selected="true"] .non-member-note, +.member-suggestion[aria-selected="true"] .already-member-note, +.member-suggestion[aria-selected="true"] .non-member-action, +.member-suggestion[aria-selected="true"] .member-email, .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[aria-selected="true"] .non-member-note, .member-suggestion:hover .non-member-note, .member-suggestion.navigation-focus .non-member-note{display:none}.member-suggestion[aria-selected="true"] .non-member-action, .member-suggestion:hover .non-member-action, .member-suggestion.navigation-focus .non-member-action{display:block}.member-suggestion[aria-selected="true"] .octicon, .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}.non-member-result{padding-left:31px}.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:#586069}.team-suggestion[aria-selected="true"] .team-size, +.team-suggestion[aria-selected="true"] .team-description, .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:#959da5}.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:#586069}.repo-access-add-team[aria-selected="true"] .team-size, +.repo-access-add-team[aria-selected="true"] .team-description, .repo-access-add-team.navigation-focus .team-size, +.repo-access-add-team.navigation-focus .team-description{color:#fff}#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:600;list-style:none}#user-content-toc ul li{padding-left:0.2em}#user-content-toc ul ul{font-weight:400}#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:600;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:400;line-height:20px}.user-list-meta{overflow:hidden}.user-list-item + .user-list-item{border-top:1px solid #e1e4e8}.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:600;color:#fff;text-transform:uppercase;background-color:#cb2431;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.follow-list .follow-list-name{margin-bottom:1px;font-weight:400}.follow-list .follow-list-name a{color:inherit}.follow-list .follow-list-info{margin-bottom:0.6em;font-size:12px;color:#586069}.follow-list .css-truncate.css-truncate-target{max-width:190px}.wiki-list em{padding:3px;font-style:normal;font-weight:600;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:600;line-height:1.2}.wiki-list .title .updated-at{font-weight:400}.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{border-top:1px #e1e4e8 solid}@media (min-width: 768px){.wiki-rightbar{width:230px!important}}.wiki-rightbar .markdown-body .anchor{display:none}.wiki-rightbar .markdown-body h1{font-size:1.6em}.wiki-rightbar .markdown-body h2{font-size:1.4em}.wiki-rightbar p:last-child, +.wiki-rightbar ul:last-child, +.wiki-rightbar ol:last-child{margin-bottom:0}.wiki-footer .markdown-body, +.wiki-rightbar .markdown-body{font-size:13px}.wiki-footer .markdown-body.wiki-writable > :nth-child(2), +.wiki-rightbar .markdown-body.wiki-writable > :nth-child(2){margin-top:0!important}.wiki-footer .markdown-body img{background:none}.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} +/*# sourceMappingURL=github-cd23942841742563b985244658dbf4a1.css.map */ + @charset "UTF-8"; +/*! + * Primer-marketing + * http://primer.github.io + * + * Released under MIT license. Copyright (c) 2018 GitHub Inc. + */.alt-mono-font{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace}.alt-h0, +.alt-h1, +.alt-h2, +.alt-h3, +.alt-h4, +.alt-h5, +.alt-h6, +.alt-lead{-webkit-font-smoothing:antialiased;font-family:Roboto,-apple-system,BlinkMacSystemFont,"Helvetica Neue","Segoe UI","Oxygen","Ubuntu","Cantarell","Open Sans",sans-serif}.alt-h0{font-size:48px;font-weight:300}@media (min-width: 768px){.alt-h0{font-size:54px}}@media (min-width: 1012px){.alt-h0{font-size:72px}}.alt-h1{font-size:36px;font-weight:300}@media (min-width: 768px){.alt-h1{font-size:48px}}@media (min-width: 1012px){.alt-h1{font-size:54px}}.alt-h2{font-size:28px;font-weight:300}@media (min-width: 768px){.alt-h2{font-size:34px}}@media (min-width: 1012px){.alt-h2{font-size:38px}}.alt-h3{font-size:18px;font-weight:400}@media (min-width: 768px){.alt-h3{font-size:20px}}@media (min-width: 1012px){.alt-h3{font-size:22px}}.alt-h4{font-size:16px;font-weight:500}.alt-h5{font-size:14px;font-weight:500}.alt-h6{font-size:12px;font-weight:500}.alt-lead{-webkit-font-smoothing:antialiased;font-size:21px;font-weight:300}@media (min-width: 768px){.alt-lead{font-size:24px}}@media (min-width: 1012px){.alt-lead{font-size:26px}}.alt-text-small{font-size:14px!important}.pullquote{padding-top:0;padding-bottom:0;padding-left:8px;margin-bottom:24px;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:16px;line-height:1.4;color:#586069;border-left:3px solid #e1e4e8}@media (min-width: 768px){.pullquote{padding-left:12px;margin-bottom:32px;margin-left:-15px;font-size:18px;line-height:1.5}}.btn-orange{color:#fff;background-color:#d25a08;background-image:linear-gradient(-180deg,#f7802f 0%,#d25a08 90%)}.btn-orange:focus, .btn-orange.focus{box-shadow:0 0 0 0.2em rgba(247,128,47,0.4)}.btn-orange:hover, .btn-orange.hover{background-color:#c85607;background-image:linear-gradient(-180deg,#f77a25 0%,#c85607 90%);background-position:-0.5em;border-color:rgba(27,31,35,0.5)}.btn-orange:active, .btn-orange.selected, +[open] > .btn-orange{background-color:#c65e17;background-image:none;border-color:rgba(27,31,35,0.5);box-shadow:inset 0 0.15em 0.3em rgba(27,31,35,0.15)}.btn-orange:disabled, .btn-orange.disabled{color:hsla(0,0%,100%,0.75);background-color:#e9ad83;background-image:none;border-color:rgba(27,31,35,0.2);box-shadow:none}.btn-orange .Counter{color:#f46909;background-color:#fff}.btn-outline-purple{color:#6f42c1;background-color:#fff;background-image:none}.btn-outline-purple .Counter{background-color:rgba(27,31,35,0.07)}.btn-outline-purple:hover, .btn-outline-purple:active, .btn-outline-purple.selected, +[open] > .btn-outline-purple{color:#fff;background-color:#6f42c1;background-image:none;border-color:#6f42c1}.btn-outline-purple:hover .Counter, .btn-outline-purple:active .Counter, .btn-outline-purple.selected .Counter, +[open] > .btn-outline-purple .Counter{color:#6f42c1;background-color:#fff}.btn-outline-purple:focus{border-color:#6f42c1;box-shadow:0 0 0 0.2em rgba(111,66,193,0.4)}.btn-outline-purple:disabled, .btn-outline-purple.disabled{color:rgba(27,31,35,0.3);background-color:#fff;border-color:rgba(27,31,35,0.15);box-shadow:none}.btn-outline-orange{color:#f66a0a;background-color:#fff;background-image:none}.btn-outline-orange .Counter{background-color:rgba(27,31,35,0.07)}.btn-outline-orange:hover, .btn-outline-orange:active, .btn-outline-orange.selected, +[open] > .btn-outline-orange{color:#fff;background-color:#f66a0a;background-image:none;border-color:#f66a0a}.btn-outline-orange:hover .Counter, .btn-outline-orange:active .Counter, .btn-outline-orange.selected .Counter, +[open] > .btn-outline-orange .Counter{color:#f66a0a;background-color:#fff}.btn-outline-orange:focus{border-color:#f66a0a;box-shadow:0 0 0 0.2em rgba(246,106,10,0.4)}.btn-outline-orange:disabled, .btn-outline-orange.disabled{color:rgba(27,31,35,0.3);background-color:#fff;border-color:rgba(27,31,35,0.15);box-shadow:none}.btn-outline-green{color:#28a745;background-color:#fff;background-image:none}.btn-outline-green .Counter{background-color:rgba(27,31,35,0.07)}.btn-outline-green:hover, .btn-outline-green:active, .btn-outline-green.selected, +[open] > .btn-outline-green{color:#fff;background-color:#28a745;background-image:none;border-color:#28a745}.btn-outline-green:hover .Counter, .btn-outline-green:active .Counter, .btn-outline-green.selected .Counter, +[open] > .btn-outline-green .Counter{color:#28a745;background-color:#fff}.btn-outline-green:focus{border-color:#28a745;box-shadow:0 0 0 0.2em rgba(40,167,69,0.4)}.btn-outline-green:disabled, .btn-outline-green.disabled{color:rgba(27,31,35,0.3);background-color:#fff;border-color:rgba(27,31,35,0.15);box-shadow:none}.btn-transparent{color:#fff;background-color:transparent;background-image:none;border:1px solid hsla(0,0%,100%,0.5)}.btn-transparent:hover, .btn-transparent:active{color:#2f363d;background-color:#fff;background-image:none;border-color:#fff}.jumbotron{position:relative;padding-top:40px;padding-bottom:40px}@media (min-width: 544px){.jumbotron{padding-top:60px;padding-bottom:60px}}@media (min-width: 1280px){.jumbotron{padding-top:120px;padding-bottom:120px}}@media (min-width: 1012px){.jumbotron-supertron{height:45vw;min-height:590px;max-height:55vh;padding-top:80px;padding-bottom:80px}}.jumbotron-minitron{padding-top:24px;padding-bottom:24px}@media (min-width: 544px){.jumbotron-minitron{padding-top:32px;padding-bottom:32px}}.jumbotron-shadow::after{position:absolute;bottom:0;left:0;width:100%;height:30px;content:" ";background-color:transparent;background-image:linear-gradient(transparent,rgba(0,0,0,0.05));background-repeat:repeat-x;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.05)}.jumbotron-photo{position:relative;background-color:#24292e;background-size:cover}.jumbotron-photo::before{position:absolute;bottom:0;left:0;display:block;width:100%;height:100%;content:"";background-color:rgba(0,0,0,0.25)}.page-section{padding:32px 0;margin-top:0}@media (min-width: 768px){.page-section{padding:56px 0}}.page-section-jumplink:target{padding-top:112px}@media (min-width: 768px){.page-section-jumplink:target{padding-top:80px}}.data-table{width:100%;margin-top:16px;border-collapse:collapse;border:1px #e1e4e8 solid;box-shadow:0 1px 1px rgba(27,31,35,0.05)}.data-table th{font-weight:400;text-align:left}.data-table td, +.data-table th{padding:16px;border-right:1px #e1e4e8 solid;border-bottom:1px #e1e4e8 solid}.data-table tbody th{width:25%}.data-table tbody th, +.data-table tbody td{border-bottom-color:#e1e4e8}.data-table tbody tr:last-child th, +.data-table tbody tr:last-child td{border-bottom:1px #e1e4e8 solid}.grayscale{filter:grayscale(100%)}@media (min-width: 544px){.border-sm-top{border-top:1px #e1e4e8 solid!important}.border-sm-right{border-right:1px #e1e4e8 solid!important}.border-sm-bottom{border-bottom:1px #e1e4e8 solid!important}.border-sm-left{border-left:1px #e1e4e8 solid!important}.border-sm-top-0{border-top:0!important}.border-sm-right-0{border-right:0!important}.border-sm-bottom-0{border-bottom:0!important}.border-sm-left-0{border-left:0!important}}@media (min-width: 768px){.border-md-top{border-top:1px #e1e4e8 solid!important}.border-md-right{border-right:1px #e1e4e8 solid!important}.border-md-bottom{border-bottom:1px #e1e4e8 solid!important}.border-md-left{border-left:1px #e1e4e8 solid!important}.border-md-top-0{border-top:0!important}.border-md-right-0{border-right:0!important}.border-md-bottom-0{border-bottom:0!important}.border-md-left-0{border-left:0!important}}@media (min-width: 1012px){.border-lg-top{border-top:1px #e1e4e8 solid!important}.border-lg-right{border-right:1px #e1e4e8 solid!important}.border-lg-bottom{border-bottom:1px #e1e4e8 solid!important}.border-lg-left{border-left:1px #e1e4e8 solid!important}.border-lg-top-0{border-top:0!important}.border-lg-right-0{border-right:0!important}.border-lg-bottom-0{border-bottom:0!important}.border-lg-left-0{border-left:0!important}}@media (min-width: 1280px){.border-xl-top{border-top:1px #e1e4e8 solid!important}.border-xl-right{border-right:1px #e1e4e8 solid!important}.border-xl-bottom{border-bottom:1px #e1e4e8 solid!important}.border-xl-left{border-left:1px #e1e4e8 solid!important}.border-xl-top-0{border-top:0!important}.border-xl-right-0{border-right:0!important}.border-xl-bottom-0{border-bottom:0!important}.border-xl-left-0{border-left:0!important}}.border-white-fade{border-color:hsla(0,0%,100%,0.15)!important}@media (min-width: 544px){.position-sm-relative{position:relative!important}.position-sm-absolute{position:absolute!important}.position-sm-fixed{position:fixed!important}}@media (min-width: 768px){.position-md-relative{position:relative!important}.position-md-absolute{position:absolute!important}.position-md-fixed{position:fixed!important}}@media (min-width: 1012px){.position-lg-relative{position:relative!important}.position-lg-absolute{position:absolute!important}.position-lg-fixed{position:fixed!important}}@media (min-width: 1280px){.position-xl-relative{position:relative!important}.position-xl-absolute{position:absolute!important}.position-xl-fixed{position:fixed!important}}.mt-7{margin-top:48px!important}.mb-7{margin-bottom:48px!important}.my-7{margin-top:48px!important;margin-bottom:48px!important}.mt-8{margin-top:64px!important}.mb-8{margin-bottom:64px!important}.my-8{margin-top:64px!important;margin-bottom:64px!important}.mt-9{margin-top:80px!important}.mb-9{margin-bottom:80px!important}.my-9{margin-top:80px!important;margin-bottom:80px!important}.mt-10{margin-top:96px!important}.mb-10{margin-bottom:96px!important}.my-10{margin-top:96px!important;margin-bottom:96px!important}.mt-11{margin-top:112px!important}.mb-11{margin-bottom:112px!important}.my-11{margin-top:112px!important;margin-bottom:112px!important}.mt-12{margin-top:128px!important}.mb-12{margin-bottom:128px!important}.my-12{margin-top:128px!important;margin-bottom:128px!important}@media (min-width: 544px){.mt-sm-7{margin-top:48px!important}.mb-sm-7{margin-bottom:48px!important}.my-sm-7{margin-top:48px!important;margin-bottom:48px!important}}@media (min-width: 544px){.mt-sm-8{margin-top:64px!important}.mb-sm-8{margin-bottom:64px!important}.my-sm-8{margin-top:64px!important;margin-bottom:64px!important}}@media (min-width: 544px){.mt-sm-9{margin-top:80px!important}.mb-sm-9{margin-bottom:80px!important}.my-sm-9{margin-top:80px!important;margin-bottom:80px!important}}@media (min-width: 544px){.mt-sm-10{margin-top:96px!important}.mb-sm-10{margin-bottom:96px!important}.my-sm-10{margin-top:96px!important;margin-bottom:96px!important}}@media (min-width: 544px){.mt-sm-11{margin-top:112px!important}.mb-sm-11{margin-bottom:112px!important}.my-sm-11{margin-top:112px!important;margin-bottom:112px!important}}@media (min-width: 544px){.mt-sm-12{margin-top:128px!important}.mb-sm-12{margin-bottom:128px!important}.my-sm-12{margin-top:128px!important;margin-bottom:128px!important}}@media (min-width: 768px){.mt-md-7{margin-top:48px!important}.mb-md-7{margin-bottom:48px!important}.my-md-7{margin-top:48px!important;margin-bottom:48px!important}}@media (min-width: 768px){.mt-md-8{margin-top:64px!important}.mb-md-8{margin-bottom:64px!important}.my-md-8{margin-top:64px!important;margin-bottom:64px!important}}@media (min-width: 768px){.mt-md-9{margin-top:80px!important}.mb-md-9{margin-bottom:80px!important}.my-md-9{margin-top:80px!important;margin-bottom:80px!important}}@media (min-width: 768px){.mt-md-10{margin-top:96px!important}.mb-md-10{margin-bottom:96px!important}.my-md-10{margin-top:96px!important;margin-bottom:96px!important}}@media (min-width: 768px){.mt-md-11{margin-top:112px!important}.mb-md-11{margin-bottom:112px!important}.my-md-11{margin-top:112px!important;margin-bottom:112px!important}}@media (min-width: 768px){.mt-md-12{margin-top:128px!important}.mb-md-12{margin-bottom:128px!important}.my-md-12{margin-top:128px!important;margin-bottom:128px!important}}@media (min-width: 1012px){.mt-lg-7{margin-top:48px!important}.mb-lg-7{margin-bottom:48px!important}.my-lg-7{margin-top:48px!important;margin-bottom:48px!important}}@media (min-width: 1012px){.mt-lg-8{margin-top:64px!important}.mb-lg-8{margin-bottom:64px!important}.my-lg-8{margin-top:64px!important;margin-bottom:64px!important}}@media (min-width: 1012px){.mt-lg-9{margin-top:80px!important}.mb-lg-9{margin-bottom:80px!important}.my-lg-9{margin-top:80px!important;margin-bottom:80px!important}}@media (min-width: 1012px){.mt-lg-10{margin-top:96px!important}.mb-lg-10{margin-bottom:96px!important}.my-lg-10{margin-top:96px!important;margin-bottom:96px!important}}@media (min-width: 1012px){.mt-lg-11{margin-top:112px!important}.mb-lg-11{margin-bottom:112px!important}.my-lg-11{margin-top:112px!important;margin-bottom:112px!important}}@media (min-width: 1012px){.mt-lg-12{margin-top:128px!important}.mb-lg-12{margin-bottom:128px!important}.my-lg-12{margin-top:128px!important;margin-bottom:128px!important}}@media (min-width: 1280px){.mt-xl-7{margin-top:48px!important}.mb-xl-7{margin-bottom:48px!important}.my-xl-7{margin-top:48px!important;margin-bottom:48px!important}}@media (min-width: 1280px){.mt-xl-8{margin-top:64px!important}.mb-xl-8{margin-bottom:64px!important}.my-xl-8{margin-top:64px!important;margin-bottom:64px!important}}@media (min-width: 1280px){.mt-xl-9{margin-top:80px!important}.mb-xl-9{margin-bottom:80px!important}.my-xl-9{margin-top:80px!important;margin-bottom:80px!important}}@media (min-width: 1280px){.mt-xl-10{margin-top:96px!important}.mb-xl-10{margin-bottom:96px!important}.my-xl-10{margin-top:96px!important;margin-bottom:96px!important}}@media (min-width: 1280px){.mt-xl-11{margin-top:112px!important}.mb-xl-11{margin-bottom:112px!important}.my-xl-11{margin-top:112px!important;margin-bottom:112px!important}}@media (min-width: 1280px){.mt-xl-12{margin-top:128px!important}.mb-xl-12{margin-bottom:128px!important}.my-xl-12{margin-top:128px!important;margin-bottom:128px!important}}.pt-7{padding-top:48px!important}.pb-7{padding-bottom:48px!important}.py-7{padding-top:48px!important;padding-bottom:48px!important}.pt-8{padding-top:64px!important}.pb-8{padding-bottom:64px!important}.py-8{padding-top:64px!important;padding-bottom:64px!important}.pt-9{padding-top:80px!important}.pb-9{padding-bottom:80px!important}.py-9{padding-top:80px!important;padding-bottom:80px!important}.pt-10{padding-top:96px!important}.pb-10{padding-bottom:96px!important}.py-10{padding-top:96px!important;padding-bottom:96px!important}.pt-11{padding-top:112px!important}.pb-11{padding-bottom:112px!important}.py-11{padding-top:112px!important;padding-bottom:112px!important}.pt-12{padding-top:128px!important}.pb-12{padding-bottom:128px!important}.py-12{padding-top:128px!important;padding-bottom:128px!important}@media (min-width: 544px){.pt-sm-7{padding-top:48px!important}.pb-sm-7{padding-bottom:48px!important}.py-sm-7{padding-top:48px!important;padding-bottom:48px!important}}@media (min-width: 544px){.pt-sm-8{padding-top:64px!important}.pb-sm-8{padding-bottom:64px!important}.py-sm-8{padding-top:64px!important;padding-bottom:64px!important}}@media (min-width: 544px){.pt-sm-9{padding-top:80px!important}.pb-sm-9{padding-bottom:80px!important}.py-sm-9{padding-top:80px!important;padding-bottom:80px!important}}@media (min-width: 544px){.pt-sm-10{padding-top:96px!important}.pb-sm-10{padding-bottom:96px!important}.py-sm-10{padding-top:96px!important;padding-bottom:96px!important}}@media (min-width: 544px){.pt-sm-11{padding-top:112px!important}.pb-sm-11{padding-bottom:112px!important}.py-sm-11{padding-top:112px!important;padding-bottom:112px!important}}@media (min-width: 544px){.pt-sm-12{padding-top:128px!important}.pb-sm-12{padding-bottom:128px!important}.py-sm-12{padding-top:128px!important;padding-bottom:128px!important}}@media (min-width: 768px){.pt-md-7{padding-top:48px!important}.pb-md-7{padding-bottom:48px!important}.py-md-7{padding-top:48px!important;padding-bottom:48px!important}}@media (min-width: 768px){.pt-md-8{padding-top:64px!important}.pb-md-8{padding-bottom:64px!important}.py-md-8{padding-top:64px!important;padding-bottom:64px!important}}@media (min-width: 768px){.pt-md-9{padding-top:80px!important}.pb-md-9{padding-bottom:80px!important}.py-md-9{padding-top:80px!important;padding-bottom:80px!important}}@media (min-width: 768px){.pt-md-10{padding-top:96px!important}.pb-md-10{padding-bottom:96px!important}.py-md-10{padding-top:96px!important;padding-bottom:96px!important}}@media (min-width: 768px){.pt-md-11{padding-top:112px!important}.pb-md-11{padding-bottom:112px!important}.py-md-11{padding-top:112px!important;padding-bottom:112px!important}}@media (min-width: 768px){.pt-md-12{padding-top:128px!important}.pb-md-12{padding-bottom:128px!important}.py-md-12{padding-top:128px!important;padding-bottom:128px!important}}@media (min-width: 1012px){.pt-lg-7{padding-top:48px!important}.pb-lg-7{padding-bottom:48px!important}.py-lg-7{padding-top:48px!important;padding-bottom:48px!important}}@media (min-width: 1012px){.pt-lg-8{padding-top:64px!important}.pb-lg-8{padding-bottom:64px!important}.py-lg-8{padding-top:64px!important;padding-bottom:64px!important}}@media (min-width: 1012px){.pt-lg-9{padding-top:80px!important}.pb-lg-9{padding-bottom:80px!important}.py-lg-9{padding-top:80px!important;padding-bottom:80px!important}}@media (min-width: 1012px){.pt-lg-10{padding-top:96px!important}.pb-lg-10{padding-bottom:96px!important}.py-lg-10{padding-top:96px!important;padding-bottom:96px!important}}@media (min-width: 1012px){.pt-lg-11{padding-top:112px!important}.pb-lg-11{padding-bottom:112px!important}.py-lg-11{padding-top:112px!important;padding-bottom:112px!important}}@media (min-width: 1012px){.pt-lg-12{padding-top:128px!important}.pb-lg-12{padding-bottom:128px!important}.py-lg-12{padding-top:128px!important;padding-bottom:128px!important}}@media (min-width: 1280px){.pt-xl-7{padding-top:48px!important}.pb-xl-7{padding-bottom:48px!important}.py-xl-7{padding-top:48px!important;padding-bottom:48px!important}}@media (min-width: 1280px){.pt-xl-8{padding-top:64px!important}.pb-xl-8{padding-bottom:64px!important}.py-xl-8{padding-top:64px!important;padding-bottom:64px!important}}@media (min-width: 1280px){.pt-xl-9{padding-top:80px!important}.pb-xl-9{padding-bottom:80px!important}.py-xl-9{padding-top:80px!important;padding-bottom:80px!important}}@media (min-width: 1280px){.pt-xl-10{padding-top:96px!important}.pb-xl-10{padding-bottom:96px!important}.py-xl-10{padding-top:96px!important;padding-bottom:96px!important}}@media (min-width: 1280px){.pt-xl-11{padding-top:112px!important}.pb-xl-11{padding-bottom:112px!important}.py-xl-11{padding-top:112px!important;padding-bottom:112px!important}}@media (min-width: 1280px){.pt-xl-12{padding-top:128px!important}.pb-xl-12{padding-bottom:128px!important}.py-xl-12{padding-top:128px!important;padding-bottom:128px!important}}hr{border-bottom-color:#eee}.img-responsive{display:block;width:100%;max-width:100%;height:auto}@font-face{font-family:InterUI;font-style:normal;font-weight:400;src:local("InterUI"),local("InterUI-Regular"),url(data:font/woff;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("woff")}@font-face{font-family:InterUI;font-style:normal;font-weight:500;src:local("InterUI Medium"),local("InterUI-Medium"),url(data:font/woff;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("woff")}.bg-blue-dark{background-color:#032f62!important}.text-blue-mktg{color:#1277eb!important}.text-blue-light{color:#79b8ff!important}.text-white-fade{color:hsla(0,0%,100%,0.7)!important}.h000-mktg, +.h00-mktg, +.h0-mktg, +.h1-mktg, +.h2-mktg, +.h3-mktg, +.h4-mktg, +.h5-mktg, +.h6-mktg, +.lead-mktg{font-family:InterUI,-apple-system,BlinkMacSystemFont,"Helvetica Neue","Segoe UI",Oxygen,Ubuntu,Cantarell,"Open Sans",sans-serif;font-weight:500}.lead-mktg{font-size:21px!important;font-weight:normal!important}.h000-mktg, +.h000{font-size:48px!important}@media (min-width: 768px){.h000-mktg, + .h000{font-size:64px!important}}.h00-mktg{font-size:40px!important}@media (min-width: 768px){.h00-mktg{font-size:48px!important}}.h0-mktg{font-size:32px!important}@media (min-width: 768px){.h0-mktg{font-size:40px!important}}.h1-mktg{font-size:26px!important}@media (min-width: 768px){.h1-mktg{font-size:32px!important}}.h2-mktg{font-size:22px!important}@media (min-width: 768px){.h2-mktg{font-size:24px!important}}.h3-mktg{font-size:18px!important}@media (min-width: 768px){.h3-mktg{font-size:20px!important}}.h4-mktg{font-size:16px!important}.h5-mktg{font-size:14px!important}.h6-mktg{font-size:12px!important}.text-gray-light-ultra{font-style:normal;font-weight:400;color:#808891}.underline-dashed{display:inline;padding-bottom:4px;background-image:linear-gradient(to right,#d1d5da 50%,hsla(0,0%,100%,0) 0%);background-repeat:repeat-x;background-position:bottom;background-size:10px 2px}.link-mktg{color:#1277eb;text-decoration:none!important;box-shadow:0 1px 0 0 rgba(18,119,235,0.5);transition:0.2s}.link-mktg:hover{color:#0366d6;box-shadow:0 1px 0 0 #1277eb}.Tile{position:relative;display:block;min-height:250px;background-color:#f6f8fa;border-radius:3px;transition:0.4s}.Tile:hover{background-color:#fff;box-shadow:0 4px 14px rgba(0,0,0,0.1)}.Tile:active{box-shadow:0 2px 7px rgba(0,0,0,0.1)}.Tile--dots::before{position:absolute;top:0;left:0;z-index:-1;width:180px;height:180px;content:"";background:url("/images/modules/site/patterns/dots-small.svg");opacity:0;transition:0.4s}.Tile--dots::after{position:absolute;right:0;bottom:0;z-index:-1;width:180px;height:180px;content:"";background:url("/images/modules/site/patterns/dots-small.svg");opacity:0;transition:0.4s}.Tile--dots:hover::before{opacity:1;transform:translate3d(-18px,-18px,0)}.Tile--dots:hover::after{opacity:1;transform:translate3d(23px,23px,0)}.Tile--dots:active::before{opacity:0.5;transform:translate3d(-10px,-10px,0)}.Tile--dots:active::after{opacity:0.5;transform:translate3d(18px,18px,0)}.Tile--symbol::before{position:absolute;top:16px;right:24px;font-size:24px;content:"→";opacity:0;transition:0.4s,color 0s;transform:rotate(-45deg) translateX(-3px)}.Tile--symbol:hover::before{opacity:1;transform:rotate(-45deg) translateX(0)}.Tile--symbol:active::before{opacity:1;transition:0.2s;transform:rotate(-45deg) translateX(-5px)}.Tile-date{position:absolute;bottom:24px;left:24px;margin-bottom:0;line-height:1;color:#959da5}.bg-dots-gray{background:url("/images/modules/site/patterns/dots-small.svg")}.dots-4{position:relative}.dots-4::before{position:absolute;top:-31px;left:-31px;z-index:-1;width:75%;height:75%;content:"";background:url("/images/modules/site/patterns/dots-small.svg")}.dots-3{position:relative}.dots-3::before{position:absolute;top:-21px;left:-21px;z-index:-1;width:75%;height:75%;content:"";background:url("/images/modules/site/patterns/dots-small.svg")}.Point:hover .Point-symbol{transform:translateY(-5px)}.Point-symbol{transition:0.2s;transform:translateY(0)}.Bump-link-symbol{display:inline-block;transition:0.2s;transform:translateX(0)}.Bump-link:hover .Bump-link-symbol{transform:translateX(3px)}.Bump-link--hover .Bump-link-symbol{color:inherit;opacity:0;transition:0.2s;transform:translateX(0)}.Bump-link--hover:hover .Bump-link-symbol{opacity:1;transform:translateX(3px)}.btn-mktg{display:inline-block;padding:16px 24px;font-size:14px;font-weight:500;color:#fff;background-color:#1277eb;border:0;border-radius:3px;transition:0.2s}.btn-mktg:hover{text-decoration:none;background-color:#0366d6}.btn-primary-mktg{background-color:#2ebc4f}.btn-primary-mktg:hover{background-color:#28a745}.btn-large-mktg{padding:20px 32px;font-size:16px}.btn-outline-mktg{color:#1277eb!important;background-color:transparent!important;box-shadow:0 0 0 1px rgba(18,119,235,0.5) inset}.btn-outline-mktg:hover{color:#0366d6!important;text-decoration:none;box-shadow:0 0 0 1px #1277eb inset}.top-0{top:0!important}.right-0{right:0!important}.bottom-0{bottom:0!important}.left-0{left:0!important}.top-n0{top:-0!important}.right-n0{right:-0!important}.bottom-n0{bottom:-0!important}.left-n0{left:-0!important}.top-1{top:4px!important}.right-1{right:4px!important}.bottom-1{bottom:4px!important}.left-1{left:4px!important}.top-n1{top:-4px!important}.right-n1{right:-4px!important}.bottom-n1{bottom:-4px!important}.left-n1{left:-4px!important}.top-2{top:8px!important}.right-2{right:8px!important}.bottom-2{bottom:8px!important}.left-2{left:8px!important}.top-n2{top:-8px!important}.right-n2{right:-8px!important}.bottom-n2{bottom:-8px!important}.left-n2{left:-8px!important}.top-3{top:16px!important}.right-3{right:16px!important}.bottom-3{bottom:16px!important}.left-3{left:16px!important}.top-n3{top:-16px!important}.right-n3{right:-16px!important}.bottom-n3{bottom:-16px!important}.left-n3{left:-16px!important}.top-4{top:24px!important}.right-4{right:24px!important}.bottom-4{bottom:24px!important}.left-4{left:24px!important}.top-n4{top:-24px!important}.right-n4{right:-24px!important}.bottom-n4{bottom:-24px!important}.left-n4{left:-24px!important}.top-5{top:32px!important}.right-5{right:32px!important}.bottom-5{bottom:32px!important}.left-5{left:32px!important}.top-n5{top:-32px!important}.right-n5{right:-32px!important}.bottom-n5{bottom:-32px!important}.left-n5{left:-32px!important}.top-6{top:40px!important}.right-6{right:40px!important}.bottom-6{bottom:40px!important}.left-6{left:40px!important}.top-n6{top:-40px!important}.right-n6{right:-40px!important}.bottom-n6{bottom:-40px!important}.left-n6{left:-40px!important}.top-7{top:48px!important}.right-7{right:48px!important}.bottom-7{bottom:48px!important}.left-7{left:48px!important}.top-n7{top:-48px!important}.right-n7{right:-48px!important}.bottom-n7{bottom:-48px!important}.left-n7{left:-48px!important}.top-8{top:64px!important}.right-8{right:64px!important}.bottom-8{bottom:64px!important}.left-8{left:64px!important}.top-n8{top:-64px!important}.right-n8{right:-64px!important}.bottom-n8{bottom:-64px!important}.left-n8{left:-64px!important}.top-9{top:80px!important}.right-9{right:80px!important}.bottom-9{bottom:80px!important}.left-9{left:80px!important}.top-n9{top:-80px!important}.right-n9{right:-80px!important}.bottom-n9{bottom:-80px!important}.left-n9{left:-80px!important}.top-10{top:96px!important}.right-10{right:96px!important}.bottom-10{bottom:96px!important}.left-10{left:96px!important}.top-n10{top:-96px!important}.right-n10{right:-96px!important}.bottom-n10{bottom:-96px!important}.left-n10{left:-96px!important}.top-11{top:112px!important}.right-11{right:112px!important}.bottom-11{bottom:112px!important}.left-11{left:112px!important}.top-n11{top:-112px!important}.right-n11{right:-112px!important}.bottom-n11{bottom:-112px!important}.left-n11{left:-112px!important}.top-12{top:128px!important}.right-12{right:128px!important}.bottom-12{bottom:128px!important}.left-12{left:128px!important}.top-n12{top:-128px!important}.right-n12{right:-128px!important}.bottom-n12{bottom:-128px!important}.left-n12{left:-128px!important}@media (min-width: 544px){.top-sm-0{top:0!important}.right-sm-0{right:0!important}.bottom-sm-0{bottom:0!important}.left-sm-0{left:0!important}.top-sm-n0{top:-0!important}.right-sm-n0{right:-0!important}.bottom-sm-n0{bottom:-0!important}.left-sm-n0{left:-0!important}}@media (min-width: 544px){.top-sm-1{top:4px!important}.right-sm-1{right:4px!important}.bottom-sm-1{bottom:4px!important}.left-sm-1{left:4px!important}.top-sm-n1{top:-4px!important}.right-sm-n1{right:-4px!important}.bottom-sm-n1{bottom:-4px!important}.left-sm-n1{left:-4px!important}}@media (min-width: 544px){.top-sm-2{top:8px!important}.right-sm-2{right:8px!important}.bottom-sm-2{bottom:8px!important}.left-sm-2{left:8px!important}.top-sm-n2{top:-8px!important}.right-sm-n2{right:-8px!important}.bottom-sm-n2{bottom:-8px!important}.left-sm-n2{left:-8px!important}}@media (min-width: 544px){.top-sm-3{top:16px!important}.right-sm-3{right:16px!important}.bottom-sm-3{bottom:16px!important}.left-sm-3{left:16px!important}.top-sm-n3{top:-16px!important}.right-sm-n3{right:-16px!important}.bottom-sm-n3{bottom:-16px!important}.left-sm-n3{left:-16px!important}}@media (min-width: 544px){.top-sm-4{top:24px!important}.right-sm-4{right:24px!important}.bottom-sm-4{bottom:24px!important}.left-sm-4{left:24px!important}.top-sm-n4{top:-24px!important}.right-sm-n4{right:-24px!important}.bottom-sm-n4{bottom:-24px!important}.left-sm-n4{left:-24px!important}}@media (min-width: 544px){.top-sm-5{top:32px!important}.right-sm-5{right:32px!important}.bottom-sm-5{bottom:32px!important}.left-sm-5{left:32px!important}.top-sm-n5{top:-32px!important}.right-sm-n5{right:-32px!important}.bottom-sm-n5{bottom:-32px!important}.left-sm-n5{left:-32px!important}}@media (min-width: 544px){.top-sm-6{top:40px!important}.right-sm-6{right:40px!important}.bottom-sm-6{bottom:40px!important}.left-sm-6{left:40px!important}.top-sm-n6{top:-40px!important}.right-sm-n6{right:-40px!important}.bottom-sm-n6{bottom:-40px!important}.left-sm-n6{left:-40px!important}}@media (min-width: 544px){.top-sm-7{top:48px!important}.right-sm-7{right:48px!important}.bottom-sm-7{bottom:48px!important}.left-sm-7{left:48px!important}.top-sm-n7{top:-48px!important}.right-sm-n7{right:-48px!important}.bottom-sm-n7{bottom:-48px!important}.left-sm-n7{left:-48px!important}}@media (min-width: 544px){.top-sm-8{top:64px!important}.right-sm-8{right:64px!important}.bottom-sm-8{bottom:64px!important}.left-sm-8{left:64px!important}.top-sm-n8{top:-64px!important}.right-sm-n8{right:-64px!important}.bottom-sm-n8{bottom:-64px!important}.left-sm-n8{left:-64px!important}}@media (min-width: 544px){.top-sm-9{top:80px!important}.right-sm-9{right:80px!important}.bottom-sm-9{bottom:80px!important}.left-sm-9{left:80px!important}.top-sm-n9{top:-80px!important}.right-sm-n9{right:-80px!important}.bottom-sm-n9{bottom:-80px!important}.left-sm-n9{left:-80px!important}}@media (min-width: 544px){.top-sm-10{top:96px!important}.right-sm-10{right:96px!important}.bottom-sm-10{bottom:96px!important}.left-sm-10{left:96px!important}.top-sm-n10{top:-96px!important}.right-sm-n10{right:-96px!important}.bottom-sm-n10{bottom:-96px!important}.left-sm-n10{left:-96px!important}}@media (min-width: 544px){.top-sm-11{top:112px!important}.right-sm-11{right:112px!important}.bottom-sm-11{bottom:112px!important}.left-sm-11{left:112px!important}.top-sm-n11{top:-112px!important}.right-sm-n11{right:-112px!important}.bottom-sm-n11{bottom:-112px!important}.left-sm-n11{left:-112px!important}}@media (min-width: 544px){.top-sm-12{top:128px!important}.right-sm-12{right:128px!important}.bottom-sm-12{bottom:128px!important}.left-sm-12{left:128px!important}.top-sm-n12{top:-128px!important}.right-sm-n12{right:-128px!important}.bottom-sm-n12{bottom:-128px!important}.left-sm-n12{left:-128px!important}}@media (min-width: 768px){.top-md-0{top:0!important}.right-md-0{right:0!important}.bottom-md-0{bottom:0!important}.left-md-0{left:0!important}.top-md-n0{top:-0!important}.right-md-n0{right:-0!important}.bottom-md-n0{bottom:-0!important}.left-md-n0{left:-0!important}}@media (min-width: 768px){.top-md-1{top:4px!important}.right-md-1{right:4px!important}.bottom-md-1{bottom:4px!important}.left-md-1{left:4px!important}.top-md-n1{top:-4px!important}.right-md-n1{right:-4px!important}.bottom-md-n1{bottom:-4px!important}.left-md-n1{left:-4px!important}}@media (min-width: 768px){.top-md-2{top:8px!important}.right-md-2{right:8px!important}.bottom-md-2{bottom:8px!important}.left-md-2{left:8px!important}.top-md-n2{top:-8px!important}.right-md-n2{right:-8px!important}.bottom-md-n2{bottom:-8px!important}.left-md-n2{left:-8px!important}}@media (min-width: 768px){.top-md-3{top:16px!important}.right-md-3{right:16px!important}.bottom-md-3{bottom:16px!important}.left-md-3{left:16px!important}.top-md-n3{top:-16px!important}.right-md-n3{right:-16px!important}.bottom-md-n3{bottom:-16px!important}.left-md-n3{left:-16px!important}}@media (min-width: 768px){.top-md-4{top:24px!important}.right-md-4{right:24px!important}.bottom-md-4{bottom:24px!important}.left-md-4{left:24px!important}.top-md-n4{top:-24px!important}.right-md-n4{right:-24px!important}.bottom-md-n4{bottom:-24px!important}.left-md-n4{left:-24px!important}}@media (min-width: 768px){.top-md-5{top:32px!important}.right-md-5{right:32px!important}.bottom-md-5{bottom:32px!important}.left-md-5{left:32px!important}.top-md-n5{top:-32px!important}.right-md-n5{right:-32px!important}.bottom-md-n5{bottom:-32px!important}.left-md-n5{left:-32px!important}}@media (min-width: 768px){.top-md-6{top:40px!important}.right-md-6{right:40px!important}.bottom-md-6{bottom:40px!important}.left-md-6{left:40px!important}.top-md-n6{top:-40px!important}.right-md-n6{right:-40px!important}.bottom-md-n6{bottom:-40px!important}.left-md-n6{left:-40px!important}}@media (min-width: 768px){.top-md-7{top:48px!important}.right-md-7{right:48px!important}.bottom-md-7{bottom:48px!important}.left-md-7{left:48px!important}.top-md-n7{top:-48px!important}.right-md-n7{right:-48px!important}.bottom-md-n7{bottom:-48px!important}.left-md-n7{left:-48px!important}}@media (min-width: 768px){.top-md-8{top:64px!important}.right-md-8{right:64px!important}.bottom-md-8{bottom:64px!important}.left-md-8{left:64px!important}.top-md-n8{top:-64px!important}.right-md-n8{right:-64px!important}.bottom-md-n8{bottom:-64px!important}.left-md-n8{left:-64px!important}}@media (min-width: 768px){.top-md-9{top:80px!important}.right-md-9{right:80px!important}.bottom-md-9{bottom:80px!important}.left-md-9{left:80px!important}.top-md-n9{top:-80px!important}.right-md-n9{right:-80px!important}.bottom-md-n9{bottom:-80px!important}.left-md-n9{left:-80px!important}}@media (min-width: 768px){.top-md-10{top:96px!important}.right-md-10{right:96px!important}.bottom-md-10{bottom:96px!important}.left-md-10{left:96px!important}.top-md-n10{top:-96px!important}.right-md-n10{right:-96px!important}.bottom-md-n10{bottom:-96px!important}.left-md-n10{left:-96px!important}}@media (min-width: 768px){.top-md-11{top:112px!important}.right-md-11{right:112px!important}.bottom-md-11{bottom:112px!important}.left-md-11{left:112px!important}.top-md-n11{top:-112px!important}.right-md-n11{right:-112px!important}.bottom-md-n11{bottom:-112px!important}.left-md-n11{left:-112px!important}}@media (min-width: 768px){.top-md-12{top:128px!important}.right-md-12{right:128px!important}.bottom-md-12{bottom:128px!important}.left-md-12{left:128px!important}.top-md-n12{top:-128px!important}.right-md-n12{right:-128px!important}.bottom-md-n12{bottom:-128px!important}.left-md-n12{left:-128px!important}}@media (min-width: 1012px){.top-lg-0{top:0!important}.right-lg-0{right:0!important}.bottom-lg-0{bottom:0!important}.left-lg-0{left:0!important}.top-lg-n0{top:-0!important}.right-lg-n0{right:-0!important}.bottom-lg-n0{bottom:-0!important}.left-lg-n0{left:-0!important}}@media (min-width: 1012px){.top-lg-1{top:4px!important}.right-lg-1{right:4px!important}.bottom-lg-1{bottom:4px!important}.left-lg-1{left:4px!important}.top-lg-n1{top:-4px!important}.right-lg-n1{right:-4px!important}.bottom-lg-n1{bottom:-4px!important}.left-lg-n1{left:-4px!important}}@media (min-width: 1012px){.top-lg-2{top:8px!important}.right-lg-2{right:8px!important}.bottom-lg-2{bottom:8px!important}.left-lg-2{left:8px!important}.top-lg-n2{top:-8px!important}.right-lg-n2{right:-8px!important}.bottom-lg-n2{bottom:-8px!important}.left-lg-n2{left:-8px!important}}@media (min-width: 1012px){.top-lg-3{top:16px!important}.right-lg-3{right:16px!important}.bottom-lg-3{bottom:16px!important}.left-lg-3{left:16px!important}.top-lg-n3{top:-16px!important}.right-lg-n3{right:-16px!important}.bottom-lg-n3{bottom:-16px!important}.left-lg-n3{left:-16px!important}}@media (min-width: 1012px){.top-lg-4{top:24px!important}.right-lg-4{right:24px!important}.bottom-lg-4{bottom:24px!important}.left-lg-4{left:24px!important}.top-lg-n4{top:-24px!important}.right-lg-n4{right:-24px!important}.bottom-lg-n4{bottom:-24px!important}.left-lg-n4{left:-24px!important}}@media (min-width: 1012px){.top-lg-5{top:32px!important}.right-lg-5{right:32px!important}.bottom-lg-5{bottom:32px!important}.left-lg-5{left:32px!important}.top-lg-n5{top:-32px!important}.right-lg-n5{right:-32px!important}.bottom-lg-n5{bottom:-32px!important}.left-lg-n5{left:-32px!important}}@media (min-width: 1012px){.top-lg-6{top:40px!important}.right-lg-6{right:40px!important}.bottom-lg-6{bottom:40px!important}.left-lg-6{left:40px!important}.top-lg-n6{top:-40px!important}.right-lg-n6{right:-40px!important}.bottom-lg-n6{bottom:-40px!important}.left-lg-n6{left:-40px!important}}@media (min-width: 1012px){.top-lg-7{top:48px!important}.right-lg-7{right:48px!important}.bottom-lg-7{bottom:48px!important}.left-lg-7{left:48px!important}.top-lg-n7{top:-48px!important}.right-lg-n7{right:-48px!important}.bottom-lg-n7{bottom:-48px!important}.left-lg-n7{left:-48px!important}}@media (min-width: 1012px){.top-lg-8{top:64px!important}.right-lg-8{right:64px!important}.bottom-lg-8{bottom:64px!important}.left-lg-8{left:64px!important}.top-lg-n8{top:-64px!important}.right-lg-n8{right:-64px!important}.bottom-lg-n8{bottom:-64px!important}.left-lg-n8{left:-64px!important}}@media (min-width: 1012px){.top-lg-9{top:80px!important}.right-lg-9{right:80px!important}.bottom-lg-9{bottom:80px!important}.left-lg-9{left:80px!important}.top-lg-n9{top:-80px!important}.right-lg-n9{right:-80px!important}.bottom-lg-n9{bottom:-80px!important}.left-lg-n9{left:-80px!important}}@media (min-width: 1012px){.top-lg-10{top:96px!important}.right-lg-10{right:96px!important}.bottom-lg-10{bottom:96px!important}.left-lg-10{left:96px!important}.top-lg-n10{top:-96px!important}.right-lg-n10{right:-96px!important}.bottom-lg-n10{bottom:-96px!important}.left-lg-n10{left:-96px!important}}@media (min-width: 1012px){.top-lg-11{top:112px!important}.right-lg-11{right:112px!important}.bottom-lg-11{bottom:112px!important}.left-lg-11{left:112px!important}.top-lg-n11{top:-112px!important}.right-lg-n11{right:-112px!important}.bottom-lg-n11{bottom:-112px!important}.left-lg-n11{left:-112px!important}}@media (min-width: 1012px){.top-lg-12{top:128px!important}.right-lg-12{right:128px!important}.bottom-lg-12{bottom:128px!important}.left-lg-12{left:128px!important}.top-lg-n12{top:-128px!important}.right-lg-n12{right:-128px!important}.bottom-lg-n12{bottom:-128px!important}.left-lg-n12{left:-128px!important}}@media (min-width: 1280px){.top-xl-0{top:0!important}.right-xl-0{right:0!important}.bottom-xl-0{bottom:0!important}.left-xl-0{left:0!important}.top-xl-n0{top:-0!important}.right-xl-n0{right:-0!important}.bottom-xl-n0{bottom:-0!important}.left-xl-n0{left:-0!important}}@media (min-width: 1280px){.top-xl-1{top:4px!important}.right-xl-1{right:4px!important}.bottom-xl-1{bottom:4px!important}.left-xl-1{left:4px!important}.top-xl-n1{top:-4px!important}.right-xl-n1{right:-4px!important}.bottom-xl-n1{bottom:-4px!important}.left-xl-n1{left:-4px!important}}@media (min-width: 1280px){.top-xl-2{top:8px!important}.right-xl-2{right:8px!important}.bottom-xl-2{bottom:8px!important}.left-xl-2{left:8px!important}.top-xl-n2{top:-8px!important}.right-xl-n2{right:-8px!important}.bottom-xl-n2{bottom:-8px!important}.left-xl-n2{left:-8px!important}}@media (min-width: 1280px){.top-xl-3{top:16px!important}.right-xl-3{right:16px!important}.bottom-xl-3{bottom:16px!important}.left-xl-3{left:16px!important}.top-xl-n3{top:-16px!important}.right-xl-n3{right:-16px!important}.bottom-xl-n3{bottom:-16px!important}.left-xl-n3{left:-16px!important}}@media (min-width: 1280px){.top-xl-4{top:24px!important}.right-xl-4{right:24px!important}.bottom-xl-4{bottom:24px!important}.left-xl-4{left:24px!important}.top-xl-n4{top:-24px!important}.right-xl-n4{right:-24px!important}.bottom-xl-n4{bottom:-24px!important}.left-xl-n4{left:-24px!important}}@media (min-width: 1280px){.top-xl-5{top:32px!important}.right-xl-5{right:32px!important}.bottom-xl-5{bottom:32px!important}.left-xl-5{left:32px!important}.top-xl-n5{top:-32px!important}.right-xl-n5{right:-32px!important}.bottom-xl-n5{bottom:-32px!important}.left-xl-n5{left:-32px!important}}@media (min-width: 1280px){.top-xl-6{top:40px!important}.right-xl-6{right:40px!important}.bottom-xl-6{bottom:40px!important}.left-xl-6{left:40px!important}.top-xl-n6{top:-40px!important}.right-xl-n6{right:-40px!important}.bottom-xl-n6{bottom:-40px!important}.left-xl-n6{left:-40px!important}}@media (min-width: 1280px){.top-xl-7{top:48px!important}.right-xl-7{right:48px!important}.bottom-xl-7{bottom:48px!important}.left-xl-7{left:48px!important}.top-xl-n7{top:-48px!important}.right-xl-n7{right:-48px!important}.bottom-xl-n7{bottom:-48px!important}.left-xl-n7{left:-48px!important}}@media (min-width: 1280px){.top-xl-8{top:64px!important}.right-xl-8{right:64px!important}.bottom-xl-8{bottom:64px!important}.left-xl-8{left:64px!important}.top-xl-n8{top:-64px!important}.right-xl-n8{right:-64px!important}.bottom-xl-n8{bottom:-64px!important}.left-xl-n8{left:-64px!important}}@media (min-width: 1280px){.top-xl-9{top:80px!important}.right-xl-9{right:80px!important}.bottom-xl-9{bottom:80px!important}.left-xl-9{left:80px!important}.top-xl-n9{top:-80px!important}.right-xl-n9{right:-80px!important}.bottom-xl-n9{bottom:-80px!important}.left-xl-n9{left:-80px!important}}@media (min-width: 1280px){.top-xl-10{top:96px!important}.right-xl-10{right:96px!important}.bottom-xl-10{bottom:96px!important}.left-xl-10{left:96px!important}.top-xl-n10{top:-96px!important}.right-xl-n10{right:-96px!important}.bottom-xl-n10{bottom:-96px!important}.left-xl-n10{left:-96px!important}}@media (min-width: 1280px){.top-xl-11{top:112px!important}.right-xl-11{right:112px!important}.bottom-xl-11{bottom:112px!important}.left-xl-11{left:112px!important}.top-xl-n11{top:-112px!important}.right-xl-n11{right:-112px!important}.bottom-xl-n11{bottom:-112px!important}.left-xl-n11{left:-112px!important}}@media (min-width: 1280px){.top-xl-12{top:128px!important}.right-xl-12{right:128px!important}.bottom-xl-12{bottom:128px!important}.left-xl-12{left:128px!important}.top-xl-n12{top:-128px!important}.right-xl-n12{right:-128px!important}.bottom-xl-n12{bottom:-128px!important}.left-xl-n12{left:-128px!important}}.z-n1{z-index:-1}.z-n2{z-index:-2}.site-subheader{position:relative;z-index:2;padding-top:16px;padding-bottom:16px}.site-subheader-overlay{margin-bottom:-96px}@media (min-width: 1012px){.site-subheader-overlay{margin-bottom:-72px}}.site-subheader-sticky{position:-webkit-sticky;position:sticky;top:0;z-index:21}.site-subheader-sticky.is-stuck{background-color:#fff;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,0.1)}.site-subheader-sticky.is-stuck::after{position:absolute;right:0;bottom:-12px;left:0;z-index:-1;display:block;height:12px;content:"";background:linear-gradient(rgba(0,0,0,0.075),rgba(0,0,0,0.001)) repeat-x 0 0}.subheader-title{display:block;margin-bottom:10px;font-weight:400;text-align:center}@media (min-width: 1012px){.subheader-title{float:left;text-align:left}}.subheader-nav{font-size:14px}@media (min-width: 768px){.subheader-nav{font-size:16px}}.subheader-nav .btn-outline-purple{font-size:inherit}.subheader-nav .nav-item.selected{color:#24292e}.site-subheader-business{margin-bottom:0;border-bottom:1px solid rgba(0,0,0,0.1)}.site-subheader-pricing{background-color:#fafbfc}.subheader-nav-business .nav-item{color:#6a737d}.subheader-nav-business .nav-item:hover{color:#586069}.plans-cards{display:flex;flex:0 1 100%;flex-direction:column;align-items:center}@media (min-width: 768px){.plans-cards{align-items:stretch;flex-flow:row wrap;justify-content:center}}@media (min-width: 1012px){.plans-cards{flex-wrap:nowrap}}.plans-card{display:flex;margin-right:10px;margin-bottom:20px;margin-left:10px;font-size:14px;flex-direction:column}.plans-card-pricing-footnote{display:inline-block;margin-left:-0.5em}.plans-card-btn{padding:16px;border-color:#e1e4e8;border-width:1px 0 0;border-radius:0 0 2px 2px}.plans-card-btn:hover, .plans-card-btn:active, .plans-card-btn.selected{border-color:transparent}.plans-card-text{display:flex;flex-direction:column;flex:1 1 auto}.pricing-table{text-align:center}.pricing-table thead th{border-bottom:1px #e1e4e8 solid}.pricing-table .pricing-table-spacer{height:5px;border:0}.pricing-table td:first-child{font-weight:500;text-align:left}.pricing-table td, +.pricing-table th{width:18%;padding:8px 16px}.pricing-table td:first-child, +.pricing-table th:first-child{width:28%;padding-left:0}.pricing-table td{border-bottom:1px solid #eaecef}.pricing-table td + td{border-right:1px solid #eaecef;border-left:1px solid #eaecef}.pricing-table-responsive{display:block;width:100%;min-height:0.01%;overflow-x:auto}@media (min-width: 768px){.pricing-table-responsive{display:table}}.pricing-table-header .octicon-link{visibility:hidden}.pricing-table-header:hover .octicon-link{visibility:visible}.jumbotron-codelines{color:hsla(0,0%,100%,0.6);background:url("/images/modules/site/heroes/simple-codelines.svg"),#2b3137;background-position:center 10%;background-size:cover}.jumbotron-netneutrality{background:#24292e}@media (min-width: 768px){.jumbotron-netneutrality{background:url("/images/modules/site/netneutrality/netneutrality.png"),#24292e;background-position:center top;background-size:150% auto}}@media (min-width: 1012px){.jumbotron-netneutrality{background-size:130% auto}}@media (min-width: 1280px){.jumbotron-netneutrality{background-size:cover}}.jumbotron-integrations{background-image:url("/images/modules/site/heroes/features-hero-integrations.svg");background-repeat:no-repeat;background-position:top center;background-size:110% auto}.jumbotron-endpoints{background-image:url("/images/modules/site/heroes/features-hero-integrations-endpoints.svg");background-repeat:no-repeat;background-position:center;background-size:100%}.jumbotron-projects{background-image:url("/images/modules/site/heroes/features-hero-project-management.svg");background-position:top center,0 0;background-size:110% auto}.jumbotron-code-review{background-image:url("/images/modules/site/heroes/features-hero-code-review.svg");background-position:top center,0 0;background-size:110% auto}.jumbotron-link{font-weight:400;border-bottom:1px solid hsla(0,0%,100%,0.125)}.jumbotron-link:hover{text-decoration:none;border-bottom-color:hsla(0,0%,100%,0.75)}.jumbotron-video{position:relative;margin-top:24px;margin-bottom:-24px}@media (min-width: 544px){.jumbotron-video{margin-top:32px;margin-bottom:-32px}}@media (min-width: 1012px){.jumbotron-video{margin-top:48px;margin-bottom:-48px}}@media (min-width: 1280px){.jumbotron-video{margin-top:64px;margin-bottom:-64px}}.jumbotron-video-close{position:absolute;top:0;right:-40px}.jumbotron-link-followup{position:relative;z-index:1;display:inline-block;padding:4px;margin:0 auto;line-height:1;white-space:normal}.jumbotron-link-followup:hover{text-decoration:none}@media (min-width: 768px){.jumbotron-link-followup{display:block;margin:0}}.jumbotron-link-followup .jumbotron-link-followup-icon{position:relative;left:-4px;width:25px;height:25px;margin-left:-30px;vertical-align:middle}@media (min-width: 768px){.jumbotron-link-followup .jumbotron-link-followup-icon{width:30px;height:30px;margin-top:-2px;margin-left:-40px}}.featurette-heading{text-align:center}@media (min-width: 768px){.featurette-heading{text-align:inherit}}.featurette-benefit-img{width:50px;vertical-align:top}@media (min-width: 768px){.featurette-benefit-img{width:60px}}.featurette-icon{width:100%;height:auto}.featurette-illo{padding:0 5%}@media (min-width: 768px){.featurette-illo{padding:0}}.business-security-cta{padding-top:40px;padding-bottom:40px;border-top:1px solid #eee}.business-security-cta .container{width:500px;max-width:90%}@media (min-width: 1012px){.business-security-cta{height:690px;padding-top:290px;padding-bottom:0;background-image:url("/images/modules/site/business-security-billboard-bg.svg");background-repeat:no-repeat;background-position:center 20px;background-size:1850px 675px;border-top:0}}@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:#f5f0ff}.illflow-purple .selected::after{border-color:transparent transparent #f5f0ff}.illflow-purple .illflow-item .illflow-item-heading{color:#6f42c1}}@media (min-width: 768px){.illflow-blue .selected{background-color:#f1f8ff}.illflow-blue .selected::after{border-color:transparent transparent #f1f8ff}.illflow-blue .illflow-item .illflow-item-heading{color:#0366d6}}@media (min-width: 768px){.illflow-no-bg{background-image:none}}.illflow-no-bg .illflow-item::before{background-image:none}@media (min-width: 768px){.illflow-steps{margin-top:24px;margin-right:-24px;margin-left:-24px}.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:40px;text-align:center}.illflow-item::before{position:absolute;top:10%;left:-6%;z-index:-1;display:block;padding-top:200%;padding-left:110%;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:#444d56}@media (min-width: 768px){.illflow-item{float:left;width:33.333333%;padding:24px;margin-bottom:0;cursor:pointer;border-radius:6px}.illflow-item:not(.selected):hover{background-color:#fafbfc}.illflow-item.selected .illflow-item-heading{color:#24292e}.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}@media (min-width: 768px){.illflow-bizsecurity{height:auto;background-image:url("/images/modules/site/business-security-illflow-bg.png");background-size:1000px auto}}.illflow-bizsecurity .img-responsive{max-width:400px}.illflow-bizsecurity .illflow-item::before{display:none}.IconNav{font-size:12px;transition:transform ease 0.4s}@media (min-width: 1012px){.IconNav{font-size:14px}}.IconNav-item{border-bottom:3px solid transparent}.IconNav-item .IconNav-img{max-height:60px;transition:transform ease-in-out 0.25s}.IconNav-item:hover .IconNav-img{transform:translateY(-10px)}.IconNav-item.selected{border-color:#444d56}.IconNav.is-stuck{transform:translateY(-70px)}.IconNav.is-stuck .IconNav-img{opacity:0;transition:opacity ease-in-out 0.4s,transform ease-in-out 0.25s}.IconNav.is-stuck:hover{transform:translateY(0)}.IconNav.is-stuck:hover .IconNav-img{opacity:1}.home-hero-signup .form-label{display:block;margin-bottom:5px;font-size:16px;font-weight:inherit;text-align:left}.home-hero-signup .form-control-lg{width:100%;min-height:46px;padding:10px;font-size:16px;border-radius:5px}.home-hero-signup .form-control-lg:-ms-input-placeholder{color:#24292e}.home-hero-signup .form-control-lg::-ms-input-placeholder{color:#24292e}.home-hero-signup .form-control-lg::placeholder{color:#24292e}.home-hero-signup .form-control-lg:focus{box-shadow:0 0 0 0.2em hsla(0,0%,100%,0.3)}.home-hero-signup .form-control-note{margin-top:5px;margin-bottom:0;font-size:12px;color:#6a737d}.home-hero-signup .form-control-note .notice-highlight{color:#959da5}.casestudy-hero{background-position:center;background-size:cover}.casestudy-square::after, +.casestudy-rectangle::after{display:block;content:"";transition:padding-bottom 0.3s}.casestudy-square::after{padding-bottom:100%}.casestudy-rectangle::after{padding-bottom:50%}.casestudy-hero-btn{position:absolute;top:16px;right:16px;z-index:2;opacity:0;transform:translate3d(-5px,5px,0) scale(0.95)}.casestudy-hero-btn, +.casestudy-header, +.casestudy-facts{transition:0.4s}.casestudy-controls{transition:transform 0.4s}.casestudy-link{flex:1;background-position:center;background-size:cover;transition:transform 0.3s,box-shadow 0.3s}.casestudy-link .casestudy-facts{opacity:0}.casestudy-link:hover{text-decoration:none}@media (min-width: 544px){.casestudy-link:hover .casestudy-controls{transform:scale(1.08)}}.casestudy-link:hover .casestudy-title{color:#1277eb!important}@media (min-width: 544px){.casestudy-link:hover .casestudy-header{opacity:0}}@media (min-width: 544px){.casestudy-link:hover .casestudy-hero-btn, + .casestudy-link:hover .casestudy-facts{opacity:1!important;transform:translate3d(0,0,0) scale(1)}}.is-expanded .casestudy-link:hover{transform:scale(1)}.col-12 .casestudy-link .casestudy-square::after{padding-bottom:25%}.col-12 .casestudy-link .casestudy-facts{display:none!important}.col-12 .casestudy-link .casestudy-header{opacity:1!important}.MarketingBody{font-size:16px}.MarketingBody > p{margin-bottom:24px;color:#586069}.MarketingBody h2, +.MarketingBody h3{margin-bottom:8px;font-family:InterUI,-apple-system,BlinkMacSystemFont,"Helvetica Neue","Segoe UI",Oxygen,Ubuntu,Cantarell,"Open Sans",sans-serif;font-weight:400}.MarketingBody blockquote{padding-top:0;padding-bottom:0;padding-left:8px;margin-bottom:24px;font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:16px;line-height:1.4;color:#586069;border-left:3px solid #e1e4e8;padding:0;font-size:20px!important;color:#1277eb;border:0}@media (min-width: 768px){.MarketingBody blockquote{padding-left:12px;margin-bottom:32px;margin-left:-15px;font-size:18px;line-height:1.5}}.MarketingBody ul, +.MarketingBody ol{padding-left:1.25em;margin-bottom:24px;overflow:hidden;color:#586069}.MarketingBody p + ul{margin-top:-8px}.MarketingBody .video-responsive{margin-right:16px;margin-bottom:16px;margin-left:16px}.MarketingBody-lead{font-family:InterUI,-apple-system,BlinkMacSystemFont,"Helvetica Neue","Segoe UI",Oxygen,Ubuntu,Cantarell,"Open Sans",sans-serif}.MarketingBody-lead > p:first-child{-webkit-font-smoothing:antialiased;font-size:21px;font-weight:300;color:#24292e!important}@media (min-width: 768px){.MarketingBody-lead > p:first-child{font-size:24px}}@media (min-width: 1012px){.MarketingBody-lead > p:first-child{font-size:26px}}.MarketingBody-lead a{color:#1277eb;text-decoration:none!important;box-shadow:0 1px 0 0 rgba(18,119,235,0.5);transition:0.2s}.MarketingBody-lead a:hover{color:#0366d6;box-shadow:0 1px 0 0 #1277eb}.Story{min-width:280px}@media (min-width: 1012px){.Story--large{min-width:330px;max-width:400px}}.Story--stagger:nth-child(even){margin-top:-16px}.Story--stagger:nth-child(odd){margin-bottom:-16px}.Story-link{transition:transform 0.3s}.Story-link:hover{text-decoration:none;transform:scale(1.025)}.Story-link:hover .Story-title{color:#e36209!important;text-decoration:underline}.Story-link--customer:hover .Story-title{color:#6f42c1!important}.Story-title{transition:color 0.3s}.summarylink .summarylink-illustration{display:none;transition:opacity 0.7s}@media (min-width: 544px){.summarylink .summarylink-illustration{top:-50%;display:block;opacity:0}}.summarylink:hover, .summarylink:active{text-decoration:none}.summarylink:hover .circle, .summarylink:active .circle{text-decoration:none;transform:scale(1.05)}@media (min-width: 544px){.summarylink:hover .summarylink-illustration, .summarylink:active .summarylink-illustration{top:24px;opacity:1}}@media (min-width: 544px){.summarylink:hover .summarylink-btn, .summarylink:active .summarylink-btn{border-color:#d1d5da;box-shadow:0 1px 15px rgba(27,31,35,0.15)}}.summarylink:hover .summarylink-btn .octicon, .summarylink:active .summarylink-btn .octicon{filter:grayscale(0%)}.summarylink-btn{border:solid 1px transparent;transition:box-shadow 0.3s,border-color 0.3s}@media (min-width: 544px){.summarylink-btn .octicon{filter:grayscale(100%);transition:filter 0.3s}}@media (min-width: 544px){.summarylink-illustration{position:absolute;top:0;right:40px;width:25%}}@media (min-width: 1012px){.summarylink-illustration{top:16px;right:auto;left:40%;width:15%}}@media (min-width: 768px){.communitystats{padding-left:50%}}.communitystats .summarylink:nth-child(1) .circle{width:225px;height:225px}.communitystats .summarylink:nth-child(2) .circle{left:20%;width:175px;height:175px}@media (min-width: 1012px){.communitystats .summarylink:nth-child(2) .circle{top:40px;left:25%}}.communitystats .summarylink:nth-child(3) .circle{left:10%;width:140px;height:140px}@media (min-width: 1012px){.communitystats .summarylink:nth-child(3) .circle{left:16%}}.communitystats .circle{transition:transform 0.3s}.communitystats .circle.bg-orange{background-color:#fb8532!important}@media (min-width: 768px){.communitystats .circle{position:absolute;left:0}}@media (min-width: 768px){.communitystats .summarylink-btn{max-width:400px}}.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: 1012px){.logo-img{height:35px;margin:10px 20px}}.logo-img-sm{position:relative;display:inline-block;width:auto;height:20px;margin:10px;vertical-align:middle}@media (min-width: 768px){.logo-img-sm{width:auto;height:25px;margin:10px}}.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: 1012px){.logo-img-lg{height:50px;margin:10px 25px}}.tooltipped-logo{display:inline-block}.tooltipped-logo.tooltipped-s::after, .tooltipped-logo.tooltipped-se::after, .tooltipped-logo.tooltipped-sw::after{font-size:14px}.Slots{height:1.5em;margin-bottom:-0.15em}.Slots-item{height:2em;padding-top:5px}@keyframes RotateSlot{0%{margin-top:0}3%{margin-top:-2em}20%{margin-top:-2em}23%{margin-top:-4em}40%{margin-top:-4em}43%{margin-top:-6em}60%{margin-top:-6em}63%{margin-top:-8em}90%{margin-top:-8em}93%{margin-top:0}100%{margin-top:0}}.Slots-item:first-of-type{animation-name:RotateSlot;animation-duration:15s;animation-timing-function:ease-in;animation-delay:2.5s;animation-iteration-count:infinite}.apps-cluster .CircleBadge{margin:16px}@media (min-width: 1012px){.apps-cluster .CircleBadge{position:relative}}@media (min-width: 1012px){.apps-cluster .CircleBadge:nth-child(odd){margin-top:-24px;animation-delay:1.5s;animation-direction:reverse}}@media (min-width: 1012px){.apps-cluster .CircleBadge:nth-child(even){margin-top:24px;animation-duration:6s}}@media (min-width: 1012px){.apps-cluster .CircleBadge:nth-child(1){animation-delay:2.1s}}@media (min-width: 1012px){.apps-cluster .CircleBadge:nth-child(4){animation-delay:0.7s;animation-direction:reverse}}@media (min-width: 1012px){.apps-cluster .CircleBadge:nth-child(6){animation-delay:0.3s}}.apps-cluster .CircleBadge.tooltipped:hover{box-shadow:0 3px 8px 0 rgba(0,0,0,0.2)}@keyframes appsClusterFloat{0%{top:0}40%{top:8px}100%{top:0}}.apps-quadrangle{position:relative;width:280px;height:280px}.apps-quadrangle .CircleBadge{position:absolute}.apps-quadrangle .CircleBadge::after{position:absolute;top:50%;left:0;z-index:-1;display:inline-block;height:3px;content:"";background-color:#e1e4e8;animation:2s ease-in-out infinite alternate forwards connect_four}.apps-quadrangle .CircleBadge:nth-child(1){top:0;left:0}.apps-quadrangle .CircleBadge:nth-child(2){top:0;right:0}.apps-quadrangle .CircleBadge:nth-child(2)::after{margin-top:32px;margin-left:-40px;transform:rotate(-45deg) scale(-1,1);transform-origin:96px 96px;animation-delay:0.7s}.apps-quadrangle .CircleBadge:nth-child(3){top:auto;bottom:0;left:0}.apps-quadrangle .CircleBadge:nth-child(3)::after{animation-delay:1.7s}.apps-quadrangle .CircleBadge:nth-child(4){top:auto;right:0;bottom:0}.apps-quadrangle .CircleBadge:nth-child(4)::after{content:none}@keyframes connect_four{from{width:0}to{width:280px}}.video-responsive{position:relative;max-width:100%;height:0;padding-bottom:56.25%}.video-responsive iframe, +.video-responsive object, +.video-responsive embed{position:absolute;top:0;left:0;width:100%;height:100%}.togglevideo .togglevideo-hidewhencollapsed{display:none}.togglevideo.is-expanded .togglevideo-hidewhenexpanded{display:none}.togglevideo.is-expanded .togglevideo-showwhenexpanded{display:block}@media (min-width: 768px){.togglevideo.is-expanded .togglevideo-hidewhenexpanded-md{display:none}}.DeveloperVideo-data{right:0;bottom:0;left:0;z-index:0;background:#24292e}@media (min-width: 768px){.DeveloperVideo-data{padding-top:30%;background:none;background-image:linear-gradient(transparent,rgba(27,31,35,0.95))}}.DeveloperVideoData-play{top:calc(50% - 40px);left:calc(50% - 40px);z-index:1}@media (min-width: 768px){.DeveloperVideoData-play{top:20%}}@media (min-width: 1012px){.DeveloperVideoData-play{top:calc(50% - 40px)}}.TenYearNav{top:calc(50% - 175px);z-index:10}.TenYearNav-digits{opacity:0}.TenYearNav-year{display:block;border-left:8px solid #d1d5da;transition:border 0.3s ease-in-out}.TenYearNav-year.blue{color:#2188ff!important;border-color:#2188ff}.TenYearNav-year.purple{color:#8a63d2!important;border-color:#8a63d2}.TenYearNav-year.yellow{color:#ffd33d!important;border-color:#ffd33d}.TenYearNav-year.green{color:#34d058!important;border-color:#34d058}.TenYearNav-year.red{color:#ea4a5a!important;border-color:#ea4a5a}.TenYearNav-year.orange{color:#fb8532!important;border-color:#fb8532}.TenYearNav-year.selected, .TenYearNav-year:hover{border-left-width:16px}.TenYearNav-year.selected .TenYearNav-digits, .TenYearNav-year:hover .TenYearNav-digits{background:#fff;opacity:1}.TenYears-hero{margin-top:-15%}@media (min-height: 720px){.TenYears-hero{margin-top:0}}.TenYears-year{font-size:60px;font-weight:500;line-height:0.9}@media (min-width: 768px){.TenYears-year{font-size:80px}}.btn-tenyear{border:2px solid #0366d6;box-shadow:6px 6px 0 0 #0366d6;transition:box-shadow 0.15s,margin 0.15s}.btn-tenyear:hover{box-shadow:0 0 0 0 #0366d6}.tentpole-purple{border:2px solid #6f42c1;box-shadow:10px 10px 0 0 #6f42c1}.tentpole-blue{border:2px solid #0366d6;box-shadow:10px 10px 0 0 #0366d6}.tentpole-green{border:2px solid #28a745;box-shadow:10px 10px 0 0 #28a745}.tentpole-yellow{border:2px solid #dbab09;box-shadow:10px 10px 0 0 #dbab09}.tentpole-date{top:-20px}.TenYearsImg-lowerleft{bottom:0;left:4%}@media (min-width: 1280px){.TenYearsImg-lowerleft{left:-5%}}.TenYearsImg-lowerright{right:4%;bottom:0}@media (min-width: 1280px){.TenYearsImg-lowerright{right:-10%}}.TenYearsImg-midright{top:10%;right:0}@media (min-width: 1012px){.TenYearsImg-midright{right:-6%}}.alt-mono-font{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace!important}.text-yellow-700{color:#dbab09}.text-yellow-800{color:#b08800}.bg-yellow-700{background-color:#dbab09}.text-orange-600{color:#e36209}@media (min-width: 768px){.mt-md-n10{margin-top:-96px!important}}@media (min-width: 1012px){.mt-lg-n10{margin-top:-96px!important}}.z-n1{z-index:-1}.rotated{transform:rotate(15deg)}@media (min-width: 768px){.px-md-8{padding-right:64px!important;padding-left:64px!important}}@media (min-width: 768px){.mt-md-n80{margin-top:-80px!important}}@media (min-width: 1012px){.mt-lg-n120{margin-top:-120px!important}}.DateNav .selected{color:#586069}.DateContent{display:none}.DateContent.active{display:block}@media (min-width: 544px){.callout-permalink-stacked{height:560px}}.callout-permalink-stacked-image{width:220px;max-width:272px;height:220px;max-height:272px}@media (min-width: 1012px){.callout-permalink-stacked-image{width:20vw;height:20vw}}.callout-permalink-stacked-image .icon-webcasts, +.callout-permalink-stacked-image .icon-whitepapers, +.callout-permalink-stacked-image .icon-videos, +.callout-permalink-stacked-image .icon-case-studies, +.callout-permalink-stacked-image .icon-events{bottom:0;left:0;display:none}@media (min-width: 1012px){.callout-permalink-stacked-image .dot, + .callout-permalink-stacked-image .rainbow, + .callout-permalink-stacked-image .rect, + .callout-permalink-stacked-image .square{transform:scale(0.9)}}.callout-permalink-stacked-image.webcasts{background-color:#f6f8fa;border-radius:50%}.callout-permalink-stacked-image.webcasts .icon-webcasts{display:block}.callout-permalink-stacked-image.webcasts .square{display:none}.callout-permalink-stacked-image.webcasts .rect{top:28%;right:32px}.callout-permalink-stacked-image.webcasts .rect-path{fill:#fdaeb7}.callout-permalink-stacked-image.webcasts .rainbow{top:42%;left:80px}@media (min-width: 1012px){.callout-permalink-stacked-image.webcasts .rainbow{display:none}}@media (min-width: 1280px){.callout-permalink-stacked-image.webcasts .rainbow{display:inline-block}}.callout-permalink-stacked-image.webcasts .dot{right:32px;bottom:8px}.callout-permalink-stacked-image.whitepapers{overflow:hidden}.callout-permalink-stacked-image.whitepapers::after{position:absolute;z-index:-1;content:"";border-color:transparent transparent #f6f8fa transparent;border-style:solid;border-width:0 0 272px 272px}.callout-permalink-stacked-image.whitepapers .icon-whitepapers{display:block}.callout-permalink-stacked-image.whitepapers .rainbow, +.callout-permalink-stacked-image.whitepapers .square{display:none}.callout-permalink-stacked-image.whitepapers .dot{top:42%;left:45%}.callout-permalink-stacked-image.whitepapers .dot .dot-circle-element{fill:#f66a0a}.callout-permalink-stacked-image.whitepapers .rect{right:7%;bottom:7%}@media (min-width: 1012px){.callout-permalink-stacked-image.whitepapers .rect{display:none}}@media (min-width: 1280px){.callout-permalink-stacked-image.whitepapers .rect{display:inline-block}}.callout-permalink-stacked-image.case-studies{background-color:#f6f8fa}.callout-permalink-stacked-image.case-studies .icon-case-studies{display:block}.callout-permalink-stacked-image.case-studies .square{display:none}.callout-permalink-stacked-image.case-studies .rect{top:27px;right:5%;transform:rotate(90deg)}.callout-permalink-stacked-image.case-studies .rect-path{fill:#28a745}.callout-permalink-stacked-image.case-studies .rainbow{top:30%;left:20%}@media (min-width: 1012px){.callout-permalink-stacked-image.case-studies .rainbow{display:none}}@media (min-width: 1280px){.callout-permalink-stacked-image.case-studies .rainbow{display:inline-block}}.callout-permalink-stacked-image.case-studies .dot{right:20%;bottom:16%}.callout-permalink-stacked-image.videos{width:65%;background-color:#f6f8fa}@media (min-width: 1012px){.callout-permalink-stacked-image.videos{width:75%}}.callout-permalink-stacked-image.videos .icon-videos{display:block}.callout-permalink-stacked-image.videos .rect{display:none}.callout-permalink-stacked-image.videos .rainbow{top:24%;left:82%}.callout-permalink-stacked-image.videos .rainbow-path{stroke:#ffdf5d}.callout-permalink-stacked-image.videos .square{right:-26%;bottom:14%}.callout-permalink-stacked-image.videos .dot{top:10%;left:14%}@media (min-width: 1012px){.callout-permalink-stacked-image.videos .dot{display:none}}@media (min-width: 1280px){.callout-permalink-stacked-image.videos .dot{display:inline-block}}.callout-permalink-stacked-image.events::before{position:absolute;left:31px;width:100%;max-width:220px;height:100%;max-height:272px;content:"";background-color:#f6f8fa;transform:skewX(-10deg)}.callout-permalink-stacked-image.events .icon-events{display:block}.callout-permalink-stacked-image.events .square, +.callout-permalink-stacked-image.events .rainbow{display:none}.callout-permalink-stacked-image.events .dot{top:20%;left:10%}.callout-permalink-stacked-image.events .dot .dot-circle-element{fill:#0366d6}.callout-permalink-stacked-image.events .rect{top:55%;right:0}@media (min-width: 1012px){.callout-permalink-big{margin-bottom:-220px}}.callout-permalink-big-figcaption{bottom:48px;background-color:#fff}@media (min-width: 768px){.callout-permalink-big-figcaption{left:-40px}}@media (min-width: 1012px){.callout-permalink-big-figcaption{bottom:240px}}@media (min-width: 1280px){.callout-permalink-big-figcaption{bottom:300px}}.callout-permalink-big-figcaption .icon-webcasts, +.callout-permalink-big-figcaption .icon-whitepapers, +.callout-permalink-big-figcaption .icon-videos, +.callout-permalink-big-figcaption .icon-case-studies, +.callout-permalink-big-figcaption .icon-events{display:none}.callout-permalink-big-figcaption .icon-videos, +.callout-permalink-big-figcaption .icon-events, +.callout-permalink-big-figcaption .icon-case-studies{top:-120px}.callout-permalink-big-figcaption .icon-webcasts, +.callout-permalink-big-figcaption .icon-whitepapers{top:-150px}.webcasts .callout-permalink-big-figcaption .icon-webcasts{display:block}.whitepapers .callout-permalink-big-figcaption .icon-whitepapers{display:block}.videos .callout-permalink-big-figcaption .icon-videos{display:block}.case-studies .callout-permalink-big-figcaption .icon-case-studies{display:block}.events .callout-permalink-big-figcaption .icon-events{display:block}.callout-permalink-big-image{position:relative;z-index:-2;height:270px}@media (min-width: 768px){.callout-permalink-big-image{height:45vw;max-height:560px}}.callout-permalink-big-image .square{display:none}.callout-permalink-big-image .dot{right:10%;bottom:40%}.callout-permalink-big-image .rect{top:20%;right:20%}.callout-permalink-big-image .rainbow{left:17%}.webcasts .callout-permalink-big-image{max-width:560px;min-height:calc(100vw - 48px);max-height:560px;background-color:#f6f8fa;border-radius:50%}@media (min-width: 768px){.webcasts .callout-permalink-big-image{min-height:auto}}.webcasts .callout-permalink-big-image .rect-path{fill:#fdaeb7}.webcasts .callout-permalink-big-image .rainbow{display:none}@media (min-width: 544px){.webcasts .callout-permalink-big-image .rainbow{top:4%;left:20%;display:inline}}.events .callout-permalink-big-image{max-width:272px}.events .callout-permalink-big-image::before{position:absolute;left:31px;width:100%;max-width:calc(100vw - 100px);height:100%;max-height:560px;content:"";background-color:#f6f8fa;transform:skewX(-10deg)}@media (min-width: 768px){.events .callout-permalink-big-image::before{left:-10%;width:44vw;max-width:360px}}.events .callout-permalink-big-image .rainbow{display:none}.events .callout-permalink-big-image .dot-circle-element{fill:#0366d6}.events .callout-permalink-big-image .dot{top:6%;right:-44%}@media (min-width: 1012px){.events .callout-permalink-big-image .rainbow{top:-6%;left:27%;display:inline}}.whitepapers .callout-permalink-big-image{overflow:hidden}.whitepapers .callout-permalink-big-image::after{position:absolute;z-index:-1;content:"";border-color:transparent transparent #f6f8fa transparent;border-style:solid;border-width:0 0 calc(100vw - 48px) calc(100vw - 48px)}@media (min-width: 768px){.whitepapers .callout-permalink-big-image::after{border-width:0 0 360px 360px}}@media (min-width: 1012px){.whitepapers .callout-permalink-big-image::after{border-width:0 0 560px 560px}}.whitepapers .callout-permalink-big-image .icon-whitepapers{display:block}.whitepapers .callout-permalink-big-image .rainbow{display:none}.whitepapers .callout-permalink-big-image .dot-circle-element{fill:#f66a0a}.videos .callout-permalink-big-image{width:75%;background-color:#f6f8fa}.videos .callout-permalink-big-image .icon-videos{display:block}.videos .callout-permalink-big-image .rect{display:none}.videos .callout-permalink-big-image .rainbow{top:-10%;left:60%;transform:scaleX(-1)}@media (min-width: 768px){.videos .callout-permalink-big-image .rainbow{top:10%}}.videos .callout-permalink-big-image .rainbow-path{stroke:#ffdf5d}.videos .callout-permalink-big-image .dot{right:-20%}.case-studies .callout-permalink-big-image{background-color:#f6f8fa}.case-studies .callout-permalink-big-image .icon-case-studies{display:block}.case-studies .callout-permalink-big-image .rainbow{display:none}@media (min-width: 1012px){.case-studies .callout-permalink-big-image .rainbow{top:10%;left:27%;display:inline}.case-studies .callout-permalink-big-image .dot{bottom:30%}}.case-studies .callout-permalink-big-image .rect{transform:rotate(90deg)}.case-studies .callout-permalink-big-image .rect-path{fill:#28a745}@keyframes hvr-bob{0%{transform:translateY(-8px)}50%{transform:translateY(-4px)}100%{transform:translateY(-8px)}}@keyframes hvr-bob-float{100%{transform:translateY(-8px)}}.callout-permalink-stacked-link .callout-permalink-stacked-image, +.callout-permalink-stacked-link .callout-permalink-big-image, +.callout-permalink-big-link .callout-permalink-stacked-image, +.callout-permalink-big-link .callout-permalink-big-image{transition:0.3s;transform:translateY(0)}.callout-permalink-stacked-link .icon, +.callout-permalink-big-link .icon{transition:0.3s;transform:translateY(0)}.callout-permalink-stacked-link .dot, +.callout-permalink-stacked-link .square, +.callout-permalink-stacked-link .rect, +.callout-permalink-stacked-link .rainbow, +.callout-permalink-big-link .dot, +.callout-permalink-big-link .square, +.callout-permalink-big-link .rect, +.callout-permalink-big-link .rainbow{transform:perspective(1px) translateZ(0)}.callout-permalink-stacked-link:hover .callout-permalink-stacked-image, +.callout-permalink-stacked-link:hover .callout-permalink-big-image, +.callout-permalink-big-link:hover .callout-permalink-stacked-image, +.callout-permalink-big-link:hover .callout-permalink-big-image{transition:0.3s;transform:translateY(-8px)}.callout-permalink-stacked-link:hover .callout-permalink-stacked-image .icon, +.callout-permalink-stacked-link:hover .callout-permalink-big-image .icon, +.callout-permalink-big-link:hover .callout-permalink-stacked-image .icon, +.callout-permalink-big-link:hover .callout-permalink-big-image .icon{transform:scale(1.1)}.callout-permalink-stacked-link:hover .callout-permalink-stacked-image .dot, +.callout-permalink-stacked-link:hover .callout-permalink-stacked-image .square, +.callout-permalink-stacked-link:hover .callout-permalink-stacked-image .rect, +.callout-permalink-stacked-link:hover .callout-permalink-stacked-image .rainbow, +.callout-permalink-stacked-link:hover .callout-permalink-big-image .dot, +.callout-permalink-stacked-link:hover .callout-permalink-big-image .square, +.callout-permalink-stacked-link:hover .callout-permalink-big-image .rect, +.callout-permalink-stacked-link:hover .callout-permalink-big-image .rainbow, +.callout-permalink-big-link:hover .callout-permalink-stacked-image .dot, +.callout-permalink-big-link:hover .callout-permalink-stacked-image .square, +.callout-permalink-big-link:hover .callout-permalink-stacked-image .rect, +.callout-permalink-big-link:hover .callout-permalink-stacked-image .rainbow, +.callout-permalink-big-link:hover .callout-permalink-big-image .dot, +.callout-permalink-big-link:hover .callout-permalink-big-image .square, +.callout-permalink-big-link:hover .callout-permalink-big-image .rect, +.callout-permalink-big-link:hover .callout-permalink-big-image .rainbow{animation-name:hvr-bob-float,hvr-bob;animation-duration:0.3s,1.5s;animation-fill-mode:forwards;animation-timing-function:ease-out,ease-in-out;animation-delay:0s,0.3s;animation-iteration-count:1,infinite;animation-direction:normal,alternate}@font-face{font-family:oswald-medium;font-style:normal;font-weight:500;src:local("oswald-medium"),local("oswald-medium"),url(data:font/ttf;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("truetype")}@font-face{font-family:Track;src:url(data:font/eot;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=);src:url(data:font/eot?#iefix;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("embedded-opentype"),url(data:font/woff2;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("woff2"),url(data:font/woff;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("woff"),url(data:font/ttf;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("truetype");font-style:normal;font-weight:400}@font-face{font-family:Titillium;src:url(data:font/eot;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=);src:url(data:font/eot?#iefix;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("embedded-opentype"),url(data:font/woff2;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("woff2"),url(data:font/woff;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("woff"),url(data:font/ttf;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjxoMT5Ob3QgRm91bmQ8L2gxPgo8cD5UaGUgcmVxdWVzdGVkIFVSTCB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UgZW50ZXJlZCB0aGUgVVJMIG1hbnVhbGx5IHBsZWFzZSBjaGVjayB5b3VyIHNwZWxsaW5nIGFuZCB0cnkgYWdhaW4uPC9wPgo=) format("truetype");font-style:normal;font-weight:400}.btf-display-text{font-family:oswald-medium,sans-serif}.name-md-title{word-wrap:normal}@media (min-width: 768px){.name-md-title{font-size:40px}}.track-2{letter-spacing:2px}.lh-tall{line-height:1.7}.btf-gradient-purple{background-image:linear-gradient(to right,#9f67a8,#5174b6)}.btf-gradient-blue{background-image:linear-gradient(to right,#5174b6,#0b98ad)}.btf-gradient-teal{background-image:linear-gradient(to right,#0b98ad,#14b098)}.btf-gradient-green{background-image:linear-gradient(to right,#14b098,#6cb980)}@media (min-width: 768px){.p-md-7{padding:48px!important}}@media (min-width: 1012px){.p-lg-8{min-width:410px;padding:64px!important}}@media (min-width: 1012px){.mt-lg-n175{margin-top:-175px!important}}@media (min-width: 768px){.mt-md-n12{margin-top:-128px!important}}.mt-auto{margin-top:auto}@media (min-width: 768px){.left-md-475{left:475px!important}}.bottom-600-lg300{bottom:600px!important}@media (min-width: 1012px){.bottom-600-lg300{bottom:300px!important}}.btf-border{border-top:1px solid #2f363d}.btf-container{max-width:1400px}.z-2{z-index:2}.btf-play{top:calc(50% - 80px);left:calc(50% - 66px)}.signup-prompt{border:1px solid rgba(27,31,35,0.075)}@media (min-width: 768px){.signup-prompt{background:url("/images/modules/site/site-signup-prompt.png");background-position:center 10%;background-size:cover}}@media (min-width: 1012px){.signup-prompt{background-position:center 30%;background-size:100% auto}}.signup-prompt-bg{background-image:linear-gradient(180deg,hsla(0,0%,100%,0) 50%,#fff),linear-gradient(70deg,#eaf5ff 32%,#f6fff8)}@media (min-width: 1012px){.enterprise-prompt{background:url("/images/modules/site/patterns/dots-large.svg");background-position:center 10%}}@media (min-width: 768px){.banner-half{max-width:506px}}.server-stats .container{width:auto;max-width:1012px;padding-right:16px;padding-left:16px;margin-right:auto;margin-left:auto}@media (min-width: 544px){.server-stats .container{padding-right:40px;padding-left:40px}}@media (min-width: 1012px){.server-stats .container{padding-right:16px;padding-left:16px}}.icon-cta{padding-left:24px}.icon-cta > .octicon{float:left;width:16px;margin-top:0.1em;margin-left:-24px;color:#6a737d;text-align:center} +/*# sourceMappingURL=site-0be82e42e6ce84ef34fecbf8469a45aa.css.map */ + </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> + README.md + </h3> + + <article class="markdown-body entry-content" itemprop="text" id="grip-content"> + <h1> +<a id="user-content-naughtyattributes" class="anchor" href="#naughtyattributes" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>NaughtyAttributes</h1> +<p><a href="https://unity3d.com/get-unity/download" rel="nofollow"><img src="https://camo.githubusercontent.com/9e52c753ed2ea53a57c23d9daa3e09261135077b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f756e6974792d323031382e332532422d626c75652e737667" alt="Unity 2018.3+" data-canonical-src="https://img.shields.io/badge/unity-2018.3%2B-blue.svg" style="max-width:100%;"></a> +<a href="https://openupm.com/packages/com.dbrizov.naughtyattributes/" rel="nofollow"><img src="https://camo.githubusercontent.com/6c7d9a4d17a39962a7d14409953367813104e9dc/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f636f6d2e646272697a6f762e6e617567687479617474726962757465733f6c6162656c3d6f70656e75706d2672656769737472795f7572693d68747470733a2f2f7061636b6167652e6f70656e75706d2e636f6d" alt="openupm" data-canonical-src="https://img.shields.io/npm/v/com.dbrizov.naughtyattributes?label=openupm&registry_uri=https://package.openupm.com" style="max-width:100%;"></a> +<a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/LICENSE"><img src="https://camo.githubusercontent.com/a2753323735099059bdc88b724534a1a6bd134ee/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d627269676874677265656e2e737667" alt="License: MIT" data-canonical-src="https://img.shields.io/badge/License-MIT-brightgreen.svg" style="max-width:100%;"></a></p> +<p>NaughtyAttributes is an extension for the Unity Inspector.</p> +<p>It expands the range of attributes that Unity provides so that you can create powerful inspectors without the need of custom editors or property drawers. It also provides attributes that can be applied to non-serialized fields or functions.</p> +<p>Most of the attributes are implemented using Unity's <code>CustomPropertyDrawer</code>, so they will work in your custom editors. If you want all of the attributes to work in your custom editors, however, you must inherit from <code>NaughtyInspector</code> and use the <code>NaughtyEditorGUI.PropertyField_Layout</code> function instead of <code>EditorGUILayout.PropertyField</code>.</p> +<h2> +<a id="user-content-system-requirements" class="anchor" href="#system-requirements" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>System Requirements</h2> +<p>Unity 2018.3.0 or later versions. Feel free to try older version. Don't forget to include the NaughtyAttributes namespace.</p> +<h2> +<a id="user-content-installation" class="anchor" href="#installation" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Installation</h2> +<ol> +<li>The package is available on the <a href="https://openupm.com" rel="nofollow">openupm registry</a>. You can install it via <a href="https://github.com/openupm/openupm-cli">openupm-cli</a>.</li> +</ol> +<pre><code>openupm add com.dbrizov.naughtyattributes +</code></pre> +<ol start="2"> +<li>You can also install via git url by adding this entry in your <strong>manifest.json</strong> +</li> +</ol> +<pre><code>"com.dbrizov.naughtyattributes": "https://github.com/dbrizov/NaughtyAttributes.git#upm" +</code></pre> +<ol start="3"> +<li>You can also download it from the <a href="https://assetstore.unity.com/packages/tools/utilities/naughtyattributes-129996" rel="nofollow">Asset Store</a> +</li> +</ol> +<h2> +<a id="user-content-documentation" class="anchor" href="#documentation" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Documentation</h2> +<ul> +<li><a href="https://dbrizov.github.io/na-docs/" rel="nofollow">Documentation</a></li> +<li><a href="https://github.com/dbrizov/na-docs">Documentation Repo</a></li> +</ul> +<h2> +<a id="user-content-support" class="anchor" href="#support" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Support</h2> +<p>NaughtyAttributes is an open-source project that I am developing in my free time. If you like it you can support me by donating.</p> +<ul> +<li><a href="https://paypal.me/dbrizov" rel="nofollow">PayPal</a></li> +<li><a href="https://www.buymeacoffee.com/dbrizov" rel="nofollow">Buy Me A Coffee</a></li> +</ul> +<h1> +<a id="user-content-overview" class="anchor" href="#overview" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Overview</h1> +<h2> +<a id="user-content-drawer-attributes" class="anchor" href="#drawer-attributes" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Drawer Attributes</h2> +<p>Provide special draw options to serialized fields. +A field can have only one DrawerAttribute. If a field has more than one, only the bottom one will be used.</p> +<h3> +<a id="user-content-animatorparam" class="anchor" href="#animatorparam" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>AnimatorParam</h3> +<p>Select an Animator paramater via dropdown interface.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + <span class="pl-k">public</span> <span class="pl-en">Animator</span> <span class="pl-smi">someAnimator</span>; + + [<span class="pl-en">AnimatorParam</span>(<span class="pl-s"><span class="pl-pds">"</span>someAnimator<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">paramHash</span>; + + [<span class="pl-en">AnimatorParam</span>(<span class="pl-s"><span class="pl-pds">"</span>someAnimator<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">string</span> <span class="pl-smi">paramName</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/AnimatorParam_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/AnimatorParam_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-button" class="anchor" href="#button" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Button</h3> +<p>A method can be marked as a button. A button appears in the inspector and executes the method if clicked. +Works both with instance and static methods.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">Button</span>] + <span class="pl-k">private</span> <span class="pl-k">void</span> <span class="pl-en">MethodOne</span>() { } + + [<span class="pl-en">Button</span>(<span class="pl-s"><span class="pl-pds">"</span>Button Text<span class="pl-pds">"</span></span>)] + <span class="pl-k">private</span> <span class="pl-k">void</span> <span class="pl-en">MethodTwo</span>() { } +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/Button_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/Button_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-curverange" class="anchor" href="#curverange" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>CurveRange</h3> +<p>Set bounds and modify curve color for AnimationCurves</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">CurveRange</span>(<span class="pl-k">-</span><span class="pl-c1">1</span>, <span class="pl-k">-</span><span class="pl-c1">1</span>, <span class="pl-c1">1</span>, <span class="pl-c1">1</span>)] + <span class="pl-k">public</span> <span class="pl-en">AnimationCurve</span> <span class="pl-smi">curve</span>; + + [<span class="pl-en">CurveRange</span>(<span class="pl-smi">EColor</span>.<span class="pl-smi">Orange</span>)] + <span class="pl-k">public</span> <span class="pl-en">AnimationCurve</span> <span class="pl-smi">curve1</span>; + + [<span class="pl-en">CurveRange</span>(<span class="pl-c1">0</span>, <span class="pl-c1">0</span>, <span class="pl-c1">5</span>, <span class="pl-c1">5</span>, <span class="pl-smi">EColor</span>.<span class="pl-smi">Red</span>)] + <span class="pl-k">public</span> <span class="pl-en">AnimationCurve</span> <span class="pl-smi">curve2</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/CurveRange_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/CurveRange_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-dropdown" class="anchor" href="#dropdown" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Dropdown</h3> +<p>Provides an interface for dropdown value selection.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">Dropdown</span>(<span class="pl-s"><span class="pl-pds">"</span>intValues<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">intValue</span>; + + [<span class="pl-en">Dropdown</span>(<span class="pl-s"><span class="pl-pds">"</span>StringValues<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">string</span> <span class="pl-smi">stringValue</span>; + + [<span class="pl-en">Dropdown</span>(<span class="pl-s"><span class="pl-pds">"</span>GetVectorValues<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-en">Vector3</span> <span class="pl-smi">vectorValue</span>; + + <span class="pl-k">private</span> <span class="pl-k">int</span>[] <span class="pl-smi">intValues</span> <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-k">int</span>[] { <span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>, <span class="pl-c1">4</span>, <span class="pl-c1">5</span> }; + + <span class="pl-k">private</span> <span class="pl-en">List</span><<span class="pl-k">string</span>> <span class="pl-smi">StringValues</span> { <span class="pl-k">get</span> { <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-en">List</span><<span class="pl-k">string</span>>() { <span class="pl-s"><span class="pl-pds">"</span>A<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>B<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>C<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>D<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>E<span class="pl-pds">"</span></span> }; } } + + <span class="pl-k">private</span> <span class="pl-en">DropdownList</span><<span class="pl-en">Vector3</span>> <span class="pl-en">GetVectorValues</span>() + { + <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-en">DropdownList</span><<span class="pl-en">Vector3</span>>() + { + { <span class="pl-s"><span class="pl-pds">"</span>Right<span class="pl-pds">"</span></span>, <span class="pl-smi">Vector3</span>.<span class="pl-smi">right</span> }, + { <span class="pl-s"><span class="pl-pds">"</span>Left<span class="pl-pds">"</span></span>, <span class="pl-smi">Vector3</span>.<span class="pl-smi">left</span> }, + { <span class="pl-s"><span class="pl-pds">"</span>Up<span class="pl-pds">"</span></span>, <span class="pl-smi">Vector3</span>.<span class="pl-smi">up</span> }, + { <span class="pl-s"><span class="pl-pds">"</span>Down<span class="pl-pds">"</span></span>, <span class="pl-smi">Vector3</span>.<span class="pl-smi">down</span> }, + { <span class="pl-s"><span class="pl-pds">"</span>Forward<span class="pl-pds">"</span></span>, <span class="pl-smi">Vector3</span>.<span class="pl-smi">forward</span> }, + { <span class="pl-s"><span class="pl-pds">"</span>Back<span class="pl-pds">"</span></span>, <span class="pl-smi">Vector3</span>.<span class="pl-smi">back</span> } + }; + } +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/Dropdown_Inspector.gif" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/Dropdown_Inspector.gif" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-enumflags" class="anchor" href="#enumflags" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>EnumFlags</h3> +<p>Provides dropdown interface for setting enum flags.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">enum</span> <span class="pl-en">Direction</span> +{ + <span class="pl-en">None</span> <span class="pl-k">=</span> <span class="pl-c1">0</span>, + <span class="pl-en">Right</span> <span class="pl-k">=</span> <span class="pl-c1">1</span> <span class="pl-k"><<</span> <span class="pl-c1">0</span>, + <span class="pl-en">Left</span> <span class="pl-k">=</span> <span class="pl-c1">1</span> <span class="pl-k"><<</span> <span class="pl-c1">1</span>, + <span class="pl-en">Up</span> <span class="pl-k">=</span> <span class="pl-c1">1</span> <span class="pl-k"><<</span> <span class="pl-c1">2</span>, + <span class="pl-en">Down</span> <span class="pl-k">=</span> <span class="pl-c1">1</span> <span class="pl-k"><<</span> <span class="pl-c1">3</span> +} + +<span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">EnumFlags</span>] + <span class="pl-k">public</span> <span class="pl-en">Direction</span> <span class="pl-smi">flags</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/EnumFlags_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/EnumFlags_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-expandable" class="anchor" href="#expandable" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Expandable</h3> +<p>Make scriptable objects expandable.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">Expandable</span>] + <span class="pl-k">public</span> <span class="pl-en">ScriptableObject</span> <span class="pl-smi">scriptableObject</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/Expandable_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/Expandable_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-horizontalline" class="anchor" href="#horizontalline" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>HorizontalLine</h3> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">HorizontalLine</span>(<span class="pl-smi">color</span>: <span class="pl-smi">EColor</span>.<span class="pl-smi">Red</span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">red</span>; + + [<span class="pl-en">HorizontalLine</span>(<span class="pl-smi">color</span>: <span class="pl-smi">EColor</span>.<span class="pl-smi">Green</span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">green</span>; + + [<span class="pl-en">HorizontalLine</span>(<span class="pl-smi">color</span>: <span class="pl-smi">EColor</span>.<span class="pl-smi">Blue</span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">blue</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/HorizontalLine_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/HorizontalLine_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-infobox" class="anchor" href="#infobox" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>InfoBox</h3> +<p>Used for providing additional information.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">InfoBox</span>(<span class="pl-s"><span class="pl-pds">"</span>This is my int<span class="pl-pds">"</span></span>, <span class="pl-smi">EInfoBoxType</span>.<span class="pl-smi">Normal</span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">myInt</span>; + + [<span class="pl-en">InfoBox</span>(<span class="pl-s"><span class="pl-pds">"</span>This is my float<span class="pl-pds">"</span></span>, <span class="pl-smi">EInfoBoxType</span>.<span class="pl-smi">Warning</span>)] + <span class="pl-k">public</span> <span class="pl-k">float</span> <span class="pl-smi">myFloat</span>; + + [<span class="pl-en">InfoBox</span>(<span class="pl-s"><span class="pl-pds">"</span>This is my vector<span class="pl-pds">"</span></span>, <span class="pl-smi">EInfoBoxType</span>.<span class="pl-smi">Error</span>)] + <span class="pl-k">public</span> <span class="pl-en">Vector3</span> <span class="pl-smi">myVector</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/InfoBox_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/InfoBox_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-inputaxis" class="anchor" href="#inputaxis" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>InputAxis</h3> +<p>Select an input axis via dropdown interface.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">InputAxis</span>] + <span class="pl-k">public</span> <span class="pl-k">string</span> <span class="pl-smi">inputAxis</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/InputAxis_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/InputAxis_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-minmaxslider" class="anchor" href="#minmaxslider" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>MinMaxSlider</h3> +<p>A double slider. The <strong>min value</strong> is saved to the <strong>X</strong> property, and the <strong>max value</strong> is saved to the <strong>Y</strong> property of a <strong>Vector2</strong> field.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">MinMaxSlider</span>(<span class="pl-c1">0.0f</span>, <span class="pl-c1">100.0f</span>)] + <span class="pl-k">public</span> <span class="pl-en">Vector2</span> <span class="pl-smi">minMaxSlider</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/MinMaxSlider_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/MinMaxSlider_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-progressbar" class="anchor" href="#progressbar" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>ProgressBar</h3> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">ProgressBar</span>(<span class="pl-s"><span class="pl-pds">"</span>Health<span class="pl-pds">"</span></span>, <span class="pl-c1">300</span>, <span class="pl-smi">EColor</span>.<span class="pl-smi">Red</span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">health</span> <span class="pl-k">=</span> <span class="pl-c1">250</span>; + + [<span class="pl-en">ProgressBar</span>(<span class="pl-s"><span class="pl-pds">"</span>Mana<span class="pl-pds">"</span></span>, <span class="pl-c1">100</span>, <span class="pl-smi">EColor</span>.<span class="pl-smi">Blue</span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">mana</span> <span class="pl-k">=</span> <span class="pl-c1">25</span>; + + [<span class="pl-en">ProgressBar</span>(<span class="pl-s"><span class="pl-pds">"</span>Stamina<span class="pl-pds">"</span></span>, <span class="pl-c1">200</span>, <span class="pl-smi">EColor</span>.<span class="pl-smi">Green</span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">stamina</span> <span class="pl-k">=</span> <span class="pl-c1">150</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/ProgressBar_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/ProgressBar_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-reorderablelist" class="anchor" href="#reorderablelist" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>ReorderableList</h3> +<p>Provides array type fields with an interface for easy reordering of elements.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">ReorderableList</span>] + <span class="pl-k">public</span> <span class="pl-k">int</span>[] <span class="pl-smi">intArray</span>; + + [<span class="pl-en">ReorderableList</span>] + <span class="pl-k">public</span> <span class="pl-en">List</span><<span class="pl-k">float</span>> <span class="pl-smi">floatArray</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/ReorderableList_Inspector.gif" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/ReorderableList_Inspector.gif" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-readonly" class="anchor" href="#readonly" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>ReadOnly</h3> +<p>Makes a field read only.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">ReadOnly</span>] + <span class="pl-k">public</span> <span class="pl-en">Vector3</span> <span class="pl-smi">forwardVector</span> <span class="pl-k">=</span> <span class="pl-smi">Vector3</span>.<span class="pl-smi">forward</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/ReadOnly_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/ReadOnly_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-resizabletextarea" class="anchor" href="#resizabletextarea" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>ResizableTextArea</h3> +<p>A resizable text area where you can see the whole text. +Unlike Unity's <strong>Multiline</strong> and <strong>TextArea</strong> attributes where you can see only 3 rows of a given text, and in order to see it or modify it you have to manually scroll down to the desired row.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">ResizableTextArea</span>] + <span class="pl-k">public</span> <span class="pl-k">string</span> <span class="pl-smi">resizableTextArea</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/ResizableTextArea_Inspector.gif" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/ResizableTextArea_Inspector.gif" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-scene" class="anchor" href="#scene" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Scene</h3> +<p>Select a scene from the build settings via dropdown interface.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">Scene</span>] + <span class="pl-k">public</span> <span class="pl-k">string</span> <span class="pl-smi">bootScene</span>; <span class="pl-c"><span class="pl-c">//</span> scene name</span> + + [<span class="pl-en">Scene</span>] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">tutorialScene</span>; <span class="pl-c"><span class="pl-c">//</span> scene index</span> +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/Scene_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/Scene_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-showassetpreview" class="anchor" href="#showassetpreview" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>ShowAssetPreview</h3> +<p>Shows the texture preview of a given asset (Sprite, Prefab...).</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">ShowAssetPreview</span>] + <span class="pl-k">public</span> <span class="pl-en">Sprite</span> <span class="pl-smi">sprite</span>; + + [<span class="pl-en">ShowAssetPreview</span>(<span class="pl-c1">128</span>, <span class="pl-c1">128</span>)] + <span class="pl-k">public</span> <span class="pl-en">GameObject</span> <span class="pl-smi">prefab</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/ShowAssetPreview_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/ShowAssetPreview_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-shownativeproperty" class="anchor" href="#shownativeproperty" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>ShowNativeProperty</h3> +<p>Shows native C# properties in the inspector. +All native properties are displayed at the bottom of the inspector after the non-serialized fields and before the method buttons. +It supports only certain types <strong>(bool, int, long, float, double, string, Vector2, Vector3, Vector4, Color, Bounds, Rect, UnityEngine.Object)</strong>.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + <span class="pl-k">public</span> <span class="pl-en">List</span><<span class="pl-en">Transform</span>> <span class="pl-smi">transforms</span>; + + [<span class="pl-en">ShowNativeProperty</span>] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">TransformsCount</span> <span class="pl-k">=></span> <span class="pl-smi">transforms</span>.<span class="pl-smi">Count</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/ShowNativeProperty_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/ShowNativeProperty_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-shownonserializedfield" class="anchor" href="#shownonserializedfield" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>ShowNonSerializedField</h3> +<p>Shows non-serialized fields in the inspector. +All non-serialized fields are displayed at the bottom of the inspector before the method buttons. +Keep in mind that if you change a non-static non-serialized field in the code - the value in the inspector will be updated after you press <strong>Play</strong> in the editor. +There is no such issue with static non-serialized fields because their values are updated at compile time. +It supports only certain types <strong>(bool, int, long, float, double, string, Vector2, Vector3, Vector4, Color, Bounds, Rect, UnityEngine.Object)</strong>.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">ShowNonSerializedField</span>] + <span class="pl-k">private</span> <span class="pl-k">int</span> <span class="pl-smi">myInt</span> <span class="pl-k">=</span> <span class="pl-c1">10</span>; + + [<span class="pl-en">ShowNonSerializedField</span>] + <span class="pl-k">private</span> <span class="pl-k">const</span> <span class="pl-k">float</span> <span class="pl-smi">PI</span> <span class="pl-k">=</span> <span class="pl-c1">3.14159f</span>; + + [<span class="pl-en">ShowNonSerializedField</span>] + <span class="pl-k">private</span> <span class="pl-k">static</span> <span class="pl-k">readonly</span> <span class="pl-en">Vector3</span> <span class="pl-smi">CONST_VECTOR</span> <span class="pl-k">=</span> <span class="pl-smi">Vector3</span>.<span class="pl-smi">one</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/ShowNonSerializedField_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/ShowNonSerializedField_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-tag" class="anchor" href="#tag" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Tag</h3> +<p>Select a tag via dropdown interface.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">Tag</span>] + <span class="pl-k">public</span> <span class="pl-k">string</span> <span class="pl-smi">tagField</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/Tag_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/Tag_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h2> +<a id="user-content-meta-attributes" class="anchor" href="#meta-attributes" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Meta Attributes</h2> +<p>Give the fields meta data. A field can have more than one meta attributes.</p> +<h3> +<a id="user-content-boxgroup" class="anchor" href="#boxgroup" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>BoxGroup</h3> +<p>Surrounds grouped fields with a box.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">BoxGroup</span>(<span class="pl-s"><span class="pl-pds">"</span>Integers<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">firstInt</span>; + [<span class="pl-en">BoxGroup</span>(<span class="pl-s"><span class="pl-pds">"</span>Integers<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">secondInt</span>; + + [<span class="pl-en">BoxGroup</span>(<span class="pl-s"><span class="pl-pds">"</span>Floats<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">float</span> <span class="pl-smi">firstFloat</span>; + [<span class="pl-en">BoxGroup</span>(<span class="pl-s"><span class="pl-pds">"</span>Floats<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">float</span> <span class="pl-smi">secondFloat</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/BoxGroup_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/BoxGroup_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-foldout" class="anchor" href="#foldout" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Foldout</h3> +<p>Makes a foldout group.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">Foldout</span>(<span class="pl-s"><span class="pl-pds">"</span>Integers<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">firstInt</span>; + [<span class="pl-en">Foldout</span>(<span class="pl-s"><span class="pl-pds">"</span>Integers<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">secondInt</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/Foldout_Inspector.gif" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/Foldout_Inspector.gif" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-enableif--disableif" class="anchor" href="#enableif--disableif" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>EnableIf / DisableIf</h3> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + <span class="pl-k">public</span> <span class="pl-k">bool</span> <span class="pl-smi">enableMyInt</span>; + + [<span class="pl-en">EnableIf</span>(<span class="pl-s"><span class="pl-pds">"</span>enableMyInt<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">myInt</span>; + + [<span class="pl-en">EnableIf</span>(<span class="pl-s"><span class="pl-pds">"</span>Enabled<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">float</span> <span class="pl-smi">myFloat</span>; + + [<span class="pl-en">EnableIf</span>(<span class="pl-s"><span class="pl-pds">"</span>NotEnabled<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-en">Vector3</span> <span class="pl-smi">myVector</span>; + + <span class="pl-k">public</span> <span class="pl-k">bool</span> <span class="pl-en">Enabled</span>() { <span class="pl-k">return</span> <span class="pl-c1">true</span>; } + + <span class="pl-k">public</span> <span class="pl-k">bool</span> <span class="pl-smi">NotEnabled</span> <span class="pl-k">=></span> <span class="pl-c1">false</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/EnableIf_Inspector.gif" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/EnableIf_Inspector.gif" alt="inspector" style="max-width:100%;"></a></p> +<p>You can have more than one condition.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + <span class="pl-k">public</span> <span class="pl-k">bool</span> <span class="pl-smi">flag0</span>; + <span class="pl-k">public</span> <span class="pl-k">bool</span> <span class="pl-smi">flag1</span>; + + [<span class="pl-en">EnableIf</span>(<span class="pl-smi">EConditionOperator</span>.<span class="pl-smi">And</span>, <span class="pl-s"><span class="pl-pds">"</span>flag0<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>flag1<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">enabledIfAll</span>; + + [<span class="pl-en">EnableIf</span>(<span class="pl-smi">EConditionOperator</span>.<span class="pl-smi">Or</span>, <span class="pl-s"><span class="pl-pds">"</span>flag0<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>flag1<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">enabledIfAny</span>; +}</pre></div> +<h3> +<a id="user-content-showif--hideif" class="anchor" href="#showif--hideif" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>ShowIf / HideIf</h3> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + <span class="pl-k">public</span> <span class="pl-k">bool</span> <span class="pl-smi">showInt</span>; + + [<span class="pl-en">ShowIf</span>(<span class="pl-s"><span class="pl-pds">"</span>showInt<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">myInt</span>; + + [<span class="pl-en">ShowIf</span>(<span class="pl-s"><span class="pl-pds">"</span>AlwaysShow<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">float</span> <span class="pl-smi">myFloat</span>; + + [<span class="pl-en">ShowIf</span>(<span class="pl-s"><span class="pl-pds">"</span>NeverShow<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-en">Vector3</span> <span class="pl-smi">myVector</span>; + + <span class="pl-k">public</span> <span class="pl-k">bool</span> <span class="pl-en">AlwaysShow</span>() { <span class="pl-k">return</span> <span class="pl-c1">true</span>; } + + <span class="pl-k">public</span> <span class="pl-k">bool</span> <span class="pl-smi">NeverShow</span> <span class="pl-k">=></span> <span class="pl-c1">false</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/ShowIf_Inspector.gif" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/ShowIf_Inspector.gif" alt="inspector" style="max-width:100%;"></a></p> +<p>You can have more than one condition.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + <span class="pl-k">public</span> <span class="pl-k">bool</span> <span class="pl-smi">flag0</span>; + <span class="pl-k">public</span> <span class="pl-k">bool</span> <span class="pl-smi">flag1</span>; + + [<span class="pl-en">ShowIf</span>(<span class="pl-smi">EConditionOperator</span>.<span class="pl-smi">And</span>, <span class="pl-s"><span class="pl-pds">"</span>flag0<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>flag1<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">showIfAll</span>; + + [<span class="pl-en">ShowIf</span>(<span class="pl-smi">EConditionOperator</span>.<span class="pl-smi">Or</span>, <span class="pl-s"><span class="pl-pds">"</span>flag0<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>flag1<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">showIfAny</span>; +}</pre></div> +<h3> +<a id="user-content-label" class="anchor" href="#label" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Label</h3> +<p>Override default field label.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">Label</span>(<span class="pl-s"><span class="pl-pds">"</span>Short Name<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">string</span> <span class="pl-smi">veryVeryLongName</span>; + + [<span class="pl-en">Label</span>(<span class="pl-s"><span class="pl-pds">"</span>RGB<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-en">Vector3</span> <span class="pl-smi">vectorXYZ</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/Label_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/Label_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-onvaluechanged" class="anchor" href="#onvaluechanged" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>OnValueChanged</h3> +<p>Detects a value change and executes a callback. +Keep in mind that the event is detected only when the value is changed from the inspector. +If you want a runtime event, you should probably use an event/delegate and subscribe to it.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">OnValueChanged</span>(<span class="pl-s"><span class="pl-pds">"</span>OnValueChangedCallback<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">myInt</span>; + + <span class="pl-k">private</span> <span class="pl-k">void</span> <span class="pl-en">OnValueChangedCallback</span>() + { + <span class="pl-smi">Debug</span>.<span class="pl-en">Log</span>(<span class="pl-smi">myInt</span>); + } +}</pre></div> +<h2> +<a id="user-content-validator-attributes" class="anchor" href="#validator-attributes" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Validator Attributes</h2> +<p>Used for validating the fields. A field can have infinite number of validator attributes.</p> +<h3> +<a id="user-content-minvalue--maxvalue" class="anchor" href="#minvalue--maxvalue" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>MinValue / MaxValue</h3> +<p>Clamps integer and float fields.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">MinValue</span>(<span class="pl-c1">0</span>), <span class="pl-en">MaxValue</span>(<span class="pl-c1">10</span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">myInt</span>; + + [<span class="pl-en">MinValue</span>(<span class="pl-c1">0.0f</span>)] + <span class="pl-k">public</span> <span class="pl-k">float</span> <span class="pl-smi">myFloat</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/MinValueMaxValue_Inspector.gif" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/MinValueMaxValue_Inspector.gif" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-required" class="anchor" href="#required" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Required</h3> +<p>Used to remind the developer that a given reference type field is required.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">Required</span>] + <span class="pl-k">public</span> <span class="pl-en">Transform</span> <span class="pl-smi">myTransform</span>; + + [<span class="pl-en">Required</span>(<span class="pl-s"><span class="pl-pds">"</span>Custom required text<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-en">GameObject</span> <span class="pl-smi">myGameObject</span>; +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/Required_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/Required_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> +<h3> +<a id="user-content-validateinput" class="anchor" href="#validateinput" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>ValidateInput</h3> +<p>The most powerful ValidatorAttribute.</p> +<div class="highlight highlight-source-cs"><pre><span class="pl-k">public</span> <span class="pl-k">class</span> <span class="pl-en">_NaughtyComponent</span> : <span class="pl-en">MonoBehaviour</span> +{ + [<span class="pl-en">ValidateInput</span>(<span class="pl-s"><span class="pl-pds">"</span>IsNotNull<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-en">Transform</span> <span class="pl-smi">myTransform</span>; + + [<span class="pl-en">ValidateInput</span>(<span class="pl-s"><span class="pl-pds">"</span>IsGreaterThanZero<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>myInteger must be greater than zero<span class="pl-pds">"</span></span>)] + <span class="pl-k">public</span> <span class="pl-k">int</span> <span class="pl-smi">myInt</span>; + + <span class="pl-k">private</span> <span class="pl-k">bool</span> <span class="pl-en">IsNotNull</span>(<span class="pl-en">Transform</span> <span class="pl-smi">tr</span>) + { + <span class="pl-k">return</span> <span class="pl-smi">tr</span> <span class="pl-k">!=</span> <span class="pl-c1">null</span>; + } + + <span class="pl-k">private</span> <span class="pl-k">bool</span> <span class="pl-en">IsGreaterThanZero</span>(<span class="pl-k">int</span> <span class="pl-smi">value</span>) + { + <span class="pl-k">return</span> <span class="pl-smi">value</span> <span class="pl-k">></span> <span class="pl-c1">0</span>; + } +}</pre></div> +<p><a href="https://github.com/dbrizov/NaughtyAttributes/blob/master/Assets/NaughtyAttributes/Documentation~/ValidateInput_Inspector.png" target="_blank" rel="noopener noreferrer"><img src="https://github.com/dbrizov/NaughtyAttributes/raw/master/Assets/NaughtyAttributes/Documentation~/ValidateInput_Inspector.png" alt="inspector" style="max-width:100%;"></a></p> + + </article> + </div> + </div> + </div> + </div> + + + + </div> + <div> </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/Assets/NaughtyAttributes-2.1.4/README.html.meta b/Assets/NaughtyAttributes-2.1.4/README.html.meta new file mode 100644 index 0000000000000000000000000000000000000000..42c42d4a086ff1501b3cc277e2700fdd77ca2190 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/README.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f1c5c604e6d27cc4d86e81f45c704e11 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Samples.meta b/Assets/NaughtyAttributes-2.1.4/Samples.meta new file mode 100644 index 0000000000000000000000000000000000000000..db0978e450d63c5fba135515e3ae6c4090f07e18 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b1e9ff0668650a54da2c458e80a90032 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene.meta b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene.meta new file mode 100644 index 0000000000000000000000000000000000000000..91002d880a7c0bb8af9db5e393b62f60825bb9e0 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: afb4c815411c28b449e61fbaa1a8bfa3 +folderAsset: yes +timeCreated: 1507995550 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/DemoScene.unity b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/DemoScene.unity new file mode 100644 index 0000000000000000000000000000000000000000..3c134139b5a8e8d1c506e966acfc3466f01db3ab --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/DemoScene.unity @@ -0,0 +1,2415 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641258, b: 0.5748172, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 4890085278179872738, guid: 98ee975b74776234986f4d35f14c4ccc, + type: 2} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &106181862 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 106181863} + m_Layer: 0 + m_Name: ===== Drawer Attributes ===== + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &106181863 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 106181862} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &114650323 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 114650324} + - component: {fileID: 114650325} + - component: {fileID: 114650326} + m_Layer: 0 + m_Name: EnableIf_DisableIf + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &114650324 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 114650323} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 24 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &114650325 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 114650323} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bed506d8be3a10f45bec4bf2237bec87, type: 3} + m_Name: + m_EditorClassIdentifier: + enable1: 0 + enable2: 0 + enum1: 0 + enum2: 0 + enableIfAll: + enableIfAny: + enableIfEnum: + enableIfEnumFlag: + enableIfEnumFlagMulti: + nest1: + enable1: 1 + enable2: 0 + enum1: 0 + enum2: 0 + enableIfAll: 1 + enableIfAny: 2 + enableIfEnum: 0 + enableIfEnumFlag: 0 + enableIfEnumFlagMulti: 0 + nest2: + enable1: 1 + enable2: 1 + enum1: 0 + enum2: 0 + enableIfAll: {x: 0.25, y: 0.75} + enableIfAny: {x: 0.25, y: 0.75} + enableIfEnum: {x: 0.25, y: 0.75} + enableIfEnumFlag: {x: 0, y: 0} + enableIfEnumFlagMulti: {x: 0, y: 0} +--- !u!114 &114650326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 114650323} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0e48a088cb96287448c3be58932bfcb7, type: 3} + m_Name: + m_EditorClassIdentifier: + disable1: 0 + disable2: 0 + enum1: 0 + enum2: 0 + disableIfAll: + disableIfAny: + disableIfEnum: + disableIfEnumFlag: + disableIfEnumFlagMulti: + nest1: + disable1: 1 + disable2: 0 + enum1: 0 + enum2: 0 + disableIfAll: 1 + disableIfAny: 2 + disableIfEnum: 3 + disableIfEnumFlag: 0 + disableIfEnumFlagMulti: 0 + nest2: + disable1: 1 + disable2: 1 + enum1: 0 + enum2: 0 + enableIfAll: {x: 0.25, y: 0.75} + enableIfAny: {x: 0.25, y: 0.75} + enableIfEnum: {x: 0.25, y: 0.75} + disableIfEnumFlag: {x: 0, y: 0} + disableIfEnumFlagMulti: {x: 0, y: 0} +--- !u!1 &155697335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 155697336} + - component: {fileID: 155697337} + m_Layer: 0 + m_Name: InputAxis + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &155697336 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155697335} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &155697337 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155697335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e0cc8a31c22090847b75538c0ed2d2fc, type: 3} + m_Name: + m_EditorClassIdentifier: + inputAxis0: + nest1: + inputAxis1: Horizontal + nest2: + inputAxis2: Vertical +--- !u!1 &237121640 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 237121641} + - component: {fileID: 237121642} + m_Layer: 0 + m_Name: ReadOnly + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &237121641 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 237121640} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 28 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &237121642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 237121640} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5443d37a05e188846bda9b05b067184e, type: 3} + m_Name: + m_EditorClassIdentifier: + readOnlyInt: 5 + nest1: + readOnlyFloat: 3.14 + nest2: + readOnlyString: +--- !u!1 &369789276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 369789277} + - component: {fileID: 369789278} + m_Layer: 0 + m_Name: Required + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &369789277 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 369789276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 31 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &369789278 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 369789276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c8c10b2234650d42b2a8efad6b413db, type: 3} + m_Name: + m_EditorClassIdentifier: + trans0: {fileID: 0} + nest1: + trans1: {fileID: 0} + nest2: + trans2: {fileID: 0} +--- !u!1 &572382748 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 572382749} + - component: {fileID: 572382751} + m_Layer: 0 + m_Name: Foldout + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &572382749 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572382748} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 23 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &572382751 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 572382748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3b437215d92efa74ea85ff726ca0dd09, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + int1: 0 + float0: 0 + float1: 0 + slider0: {x: 0.25, y: 0.75} + slider1: {x: 0.25, y: 0.75} + str0: + str1: + trans0: {fileID: 0} + trans1: {fileID: 0} +--- !u!1 &607441873 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 607441874} + - component: {fileID: 607441875} + m_Layer: 0 + m_Name: MinMaxSlider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &607441874 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 607441873} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 11 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &607441875 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 607441873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fd67fbde6acdd6a44944f12e507067c5, type: 3} + m_Name: + m_EditorClassIdentifier: + minMaxSlider0: {x: 0, y: 0.5} + nest1: + minMaxSlider1: {x: 0.25, y: 0.75} + nest2: + minMaxSlider2: {x: 6, y: 11} +--- !u!1 &706445688 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 706445689} + - component: {fileID: 706445690} + m_Layer: 0 + m_Name: NaughtyComponent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &706445689 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 706445688} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &706445690 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 706445688} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c928ea15ae74a44089beb2e534c1a35, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &732714203 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 732714204} + m_Layer: 0 + m_Name: ===== Meta Attributes ===== + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &732714204 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 732714203} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 21 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &779670086 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 779670087} + - component: {fileID: 779670088} + m_Layer: 0 + m_Name: Dropdown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &779670087 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779670086} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &779670088 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779670086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3855e37cd6b01194e8166573c7c4b37d, type: 3} + m_Name: + m_EditorClassIdentifier: + intValue: 1 + nest1: + stringValue: A + nest2: + vectorValue: {x: 1, y: 0, z: 0} +--- !u!1 &892661554 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 892661555} + - component: {fileID: 892661556} + m_Layer: 0 + m_Name: Scene + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &892661555 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 892661554} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 15 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &892661556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 892661554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 281a85803caf74a459439020a0840fa4, type: 3} + m_Name: + m_EditorClassIdentifier: + scene0: DemoScene + nest1: + scene1: DemoScene + nest2: + scene2: 0 +--- !u!1 &933563384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 933563385} + - component: {fileID: 933563386} + m_Layer: 0 + m_Name: ShowAssetPreview + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &933563385 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933563384} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 16 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &933563386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933563384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 705c14aa9ecaa274289972381f471367, type: 3} + m_Name: + m_EditorClassIdentifier: + sprite0: {fileID: 21300000, guid: 005888ede18a58e4db8d069cfa3007cb, type: 3} + prefab0: {fileID: 1981131855061102, guid: 7ec354ef3daae7641b7a3fa5e1fe0c81, type: 3} + nest1: + sprite1: {fileID: 21300000, guid: 005888ede18a58e4db8d069cfa3007cb, type: 3} + prefab1: {fileID: 1981131855061102, guid: 7ec354ef3daae7641b7a3fa5e1fe0c81, type: 3} + nest2: + sprite2: {fileID: 21300000, guid: 005888ede18a58e4db8d069cfa3007cb, type: 3} + prefab2: {fileID: 1981131855061102, guid: 7ec354ef3daae7641b7a3fa5e1fe0c81, + type: 3} +--- !u!1 &948946033 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 948946034} + - component: {fileID: 948946035} + m_Layer: 0 + m_Name: ProgressBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &948946034 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 948946033} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 12 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &948946035 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 948946033} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 96ca4c27fc649764b9d1625f1740cb9e, type: 3} + m_Name: + m_EditorClassIdentifier: + health: 50 + nest1: + mana: 25 + nest2: + stamina: 75 + elixir: 50 + maxElixir: 100 +--- !u!1 &993534225 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 993534226} + - component: {fileID: 993534227} + m_Layer: 0 + m_Name: Layer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &993534226 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 993534225} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &993534227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 993534225} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 460459d6ac76acd4d872f94cf444e6fa, type: 3} + m_Name: + m_EditorClassIdentifier: + layerNumber0: 5 + layerName0: UI + nest1: + layerNumber1: 0 + layerName1: Default + nest2: + layerNumber2: 4 + layerName2: Water +--- !u!1 &1139446979 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1139446980} + - component: {fileID: 1139446981} + m_Layer: 0 + m_Name: HorizontalLine + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1139446980 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1139446979} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1139446981 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1139446979} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5cc6d3f8d4a53374887b3d620a6972e3, type: 3} + m_Name: + m_EditorClassIdentifier: + line0: 0 + nest1: + line1: 0 + nest2: + line2: 0 +--- !u!1 &1148579783 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1148579784} + m_Layer: 0 + m_Name: Tests + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1148579784 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1148579783} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 106181863} + - {fileID: 1178133860} + - {fileID: 2043059161} + - {fileID: 2082563173} + - {fileID: 779670087} + - {fileID: 2015414598} + - {fileID: 1622801696} + - {fileID: 1139446980} + - {fileID: 1552114400} + - {fileID: 155697336} + - {fileID: 993534226} + - {fileID: 607441874} + - {fileID: 948946034} + - {fileID: 1747151588} + - {fileID: 1202167595} + - {fileID: 892661555} + - {fileID: 933563385} + - {fileID: 1989156459} + - {fileID: 1194502638} + - {fileID: 1609261820} + - {fileID: 1380469385} + - {fileID: 732714204} + - {fileID: 1784643785} + - {fileID: 572382749} + - {fileID: 114650324} + - {fileID: 1524906391} + - {fileID: 1293624596} + - {fileID: 1871127830} + - {fileID: 237121641} + - {fileID: 1641427334} + - {fileID: 1706612702} + - {fileID: 369789277} + - {fileID: 1463483878} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1178133859 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1178133860} + - component: {fileID: 1178133862} + - component: {fileID: 1178133861} + m_Layer: 0 + m_Name: AnimatorParam + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1178133860 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178133859} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1178133861 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178133859} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9bff20ccdde00fc49a62bad6a4ef9982, type: 3} + m_Name: + m_EditorClassIdentifier: + animator0: {fileID: 1178133862} + hash0: 1943738498 + name0: Float0 + nest1: + animator1: {fileID: 1178133862} + hash1: 726565755 + name1: Float0 + nest2: + animator2: {fileID: 1178133862} + hash1: -392453409 + name1: Trigger0 +--- !u!95 &1178133862 +Animator: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178133859} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 63ee86efd213bf34285c95f33e79dc6c, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 +--- !u!1 &1194502637 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1194502638} + - component: {fileID: 1194502639} + m_Layer: 0 + m_Name: ShowNonSerializedField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1194502638 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1194502637} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1194502639 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1194502637} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 913d67a695253f744bdc776625b9b948, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1202167594 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1202167595} + - component: {fileID: 1202167596} + m_Layer: 0 + m_Name: ResizableTextArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1202167595 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202167594} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 14 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1202167596 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202167594} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fb4f4bb2e3e063340a24f4bb24528bb5, type: 3} + m_Name: + m_EditorClassIdentifier: + text0: '1 + + 2 + + 3' + nest1: + text1: '1 + + 2 + + 3 + + 4 + + 5' + nest2: + text2: '1 + + 2 + + 3 + + 4 + + 5 + + 6 + + 7' +--- !u!1 &1293624595 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1293624596} + - component: {fileID: 1293624597} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1293624596 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1293624595} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 26 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1293624597 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1293624595} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7488af014527ebf42af5c4fc4d5f4f5b, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + nest1: + int1: 0 + nest2: + vector2: {x: 0.25, y: 0.75} +--- !u!1 &1380469384 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1380469385} + - component: {fileID: 1380469386} + m_Layer: 0 + m_Name: Tag + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1380469385 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1380469384} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1380469386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1380469384} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8bcc0d5613b48fb43bd36c9d37e99900, type: 3} + m_Name: + m_EditorClassIdentifier: + tag0: + nest1: + tag1: MainCamera + nest2: + tag2: Player +--- !u!1 &1444377589 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1444377591} + - component: {fileID: 1444377590} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1444377590 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1444377589} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1444377591 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1444377589} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1463483877 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1463483878} + - component: {fileID: 1463483879} + m_Layer: 0 + m_Name: ValidateInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1463483878 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1463483877} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 32 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1463483879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1463483877} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 94adafcfe59aa344c9b5596b2cc6ecd0, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + nest1: + int1: 0 + nest2: + int2: 0 + inheritedNest: + int1: 0 + nest2: + int2: 0 +--- !u!1 &1524906390 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1524906391} + - component: {fileID: 1524906392} + - component: {fileID: 1524906393} + m_Layer: 0 + m_Name: ShowIf_HideIf + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1524906391 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1524906390} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 25 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1524906392 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1524906390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4fdbfcfbf5b056a4bac491fe21569572, type: 3} + m_Name: + m_EditorClassIdentifier: + show1: 0 + show2: 0 + enum1: 0 + enum2: 0 + showIfAll: + showIfAny: + showIfEnum: + showIfEnumFlag: + showIfEnumFlagMulti: + nest1: + show1: 1 + show2: 0 + enum1: 0 + enum2: 0 + showIfAll: 0 + showIfAny: 0 + showIfEnum: 0 + showIfEnumFlag: 0 + showIfEnumFlagMulti: 0 + nest2: + show1: 1 + show2: 1 + enum1: 0 + enum2: 0 + showIfAll: {x: 0.25, y: 0.75} + showIfAny: {x: 0.25, y: 0.75} + showIfEnum: {x: 0.25, y: 0.75} + showIfEnumFlag: {x: 0, y: 0} + showIfEnumFlagMulti: {x: 0, y: 0} +--- !u!114 &1524906393 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1524906390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3cf166cb519e666419bb79b0c50c5ee1, type: 3} + m_Name: + m_EditorClassIdentifier: + hide1: 0 + hide2: 0 + enum1: 0 + enum2: 0 + hideIfAll: + hideIfAny: + hideIfEnum: + hideIfEnumFlag: + hideIfEnumFlagMulti: + nest1: + hide1: 1 + hide2: 0 + enum1: 0 + enum2: 0 + hideIfAll: 0 + hideIfAny: 0 + hideIfEnum: 0 + hideIfEnumFlag: 0 + hideIfEnumFlagMulti: 0 + nest2: + hide1: 1 + hide2: 1 + enum1: 0 + enum2: 0 + hideIfAll: {x: 0.25, y: 0.75} + hideIfAny: {x: 0.25, y: 0.75} + hideIfEnum: {x: 0.25, y: 0.75} + hideIfEnumFlag: {x: 0, y: 0} + hideIfEnumFlagMulti: {x: 0, y: 0} +--- !u!1 &1552114399 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1552114400} + - component: {fileID: 1552114401} + m_Layer: 0 + m_Name: InfoBox + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1552114400 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1552114399} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1552114401 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1552114399} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0dcb08e489c17644e9eacaa1ec5fe781, type: 3} + m_Name: + m_EditorClassIdentifier: + normal: 0 + nest1: + warning: 0 + nest2: + error: 0 +--- !u!1 &1591883662 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1591883666} + - component: {fileID: 1591883665} + - component: {fileID: 1591883664} + - component: {fileID: 1591883663} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1591883663 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591883662} + m_Enabled: 1 +--- !u!124 &1591883664 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591883662} + m_Enabled: 1 +--- !u!20 &1591883665 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591883662} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1591883666 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1591883662} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1609261819 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1609261820} + - component: {fileID: 1609261821} + m_Layer: 0 + m_Name: 'SortingLayer ' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1609261820 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1609261819} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 19 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1609261821 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1609261819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8ed73e666d447964d93c4840f05423dc, type: 3} + m_Name: + m_EditorClassIdentifier: + layerNumber0: 0 + layerName0: Default + nest1: + layerNumber1: 0 + layerName1: Default + nest2: + layerNumber2: 0 + layerName2: Default +--- !u!1 &1622801695 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1622801696} + - component: {fileID: 1622801697} + m_Layer: 0 + m_Name: Expandable + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1622801696 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1622801695} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1622801697 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1622801695} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 64c4c9aee2b494d44be9bb0b7f12ed7c, type: 3} + m_Name: + m_EditorClassIdentifier: + precedingField: 5 + obj0: {fileID: 11400000, guid: 9cf80899b80517945a2d2390fb48877f, type: 2} + nest1: + obj1: {fileID: 11400000, guid: 9cf80899b80517945a2d2390fb48877f, type: 2} + nest2: + obj2: {fileID: 11400000, guid: 9cf80899b80517945a2d2390fb48877f, type: 2} +--- !u!1 &1641427333 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1641427334} + m_Layer: 0 + m_Name: ===== Validator Attributes ===== + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1641427334 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641427333} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 29 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1706612701 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1706612702} + - component: {fileID: 1706612703} + m_Layer: 0 + m_Name: MinValue_MaxValue + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1706612702 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706612701} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 30 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1706612703 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1706612701} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 450a05787c54e6b4fa88ffe223bcee87, type: 3} + m_Name: + m_EditorClassIdentifier: + min0Int: 0 + max0Int: 0 + range01Float: 0 + range01Vector2: {x: 0, y: 0} + range01Vector3: {x: 0, y: 0, z: 0} + range01Vector4: {x: 0, y: 0, z: 0, w: 0} + min0Vector2Int: {x: 0, y: 0} + max100Vector2Int: {x: 0, y: 0} + min0Vector3Int: {x: 0, y: 0, z: 0} + max100Vector3Int: {x: 0, y: 0, z: 0} + nest1: + min0Int: 0 + max0Int: 0 + range01Float: 0 + range01Vector2: {x: 0, y: 0} + range01Vector3: {x: 0, y: 0, z: 0} + range01Vector4: {x: 0, y: 0, z: 0, w: 0} + min0Vector2Int: {x: 0, y: 0} + max100Vector2Int: {x: 0, y: 0} + min0Vector3Int: {x: 0, y: 0, z: 0} + max100Vector3Int: {x: 0, y: 0, z: 0} + nest2: + min0Int: 0 + max0Int: 0 + range01Float: 0 + range01Vector2: {x: 0, y: 0} + range01Vector3: {x: 0, y: 0, z: 0} + range01Vector4: {x: 0, y: 0, z: 0, w: 0} + min0Vector2Int: {x: 0, y: 0} + max100Vector2Int: {x: 0, y: 0} + min0Vector3Int: {x: 0, y: 0, z: 0} + max100Vector3Int: {x: 0, y: 0, z: 0} +--- !u!1 &1747151587 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1747151588} + - component: {fileID: 1747151589} + m_Layer: 0 + m_Name: ReorderableList + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1747151588 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1747151587} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 13 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1747151589 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1747151587} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c93fde7cd79390148ac576c3a159a77b, type: 3} + m_Name: + m_EditorClassIdentifier: + intArray: 020000000300000001000000 + vectorList: + - {x: 2, y: 2, z: 2} + - {x: 3, y: 3, z: 3} + - {x: 1, y: 1, z: 1} + structList: + - Int: 2 + Float: 2 + Vector: {x: 2, y: 2, z: 2} + - Int: 3 + Float: 3 + Vector: {x: 3, y: 3, z: 3} + - Int: 1 + Float: 1 + Vector: {x: 1, y: 1, z: 1} + gameObjectsList: [] + transformsList: [] + monoBehavioursList: [] +--- !u!1 &1784643784 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1784643785} + - component: {fileID: 1784643786} + m_Layer: 0 + m_Name: BoxGroup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1784643785 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1784643784} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 22 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1784643786 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1784643784} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3920f5ea384951b4990e4d9e8032d12e, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + int1: 0 + float0: 0 + float1: 0 + slider0: {x: 0.25, y: 0.75} + slider1: {x: 0.25, y: 0.75} + str0: + str1: + trans0: {fileID: 0} + trans1: {fileID: 0} +--- !u!1 &1871127829 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1871127830} + - component: {fileID: 1871127831} + m_Layer: 0 + m_Name: OnValueChanged + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1871127830 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1871127829} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 27 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1871127831 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1871127829} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff1df679e5b32f64bb106752c63933fa, type: 3} + m_Name: + m_EditorClassIdentifier: + int0: 0 + nest1: + int1: 0 + nest2: + int2: 0 +--- !u!1 &1989156458 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1989156459} + - component: {fileID: 1989156460} + m_Layer: 0 + m_Name: ShowNativeProperty + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1989156459 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989156458} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 17 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1989156460 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989156458} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b5a73795d25dd334e90a5a347c6079d9, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &2015414597 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2015414598} + - component: {fileID: 2015414599} + m_Layer: 0 + m_Name: EnumFlags + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2015414598 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2015414597} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2015414599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2015414597} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7b7f6b84ce0d7674d8a386fde729279c, type: 3} + m_Name: + m_EditorClassIdentifier: + flags0: 0 + nest1: + flags1: 6 + nest2: + flags2: -1 +--- !u!1 &2043059160 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2043059161} + - component: {fileID: 2043059162} + m_Layer: 0 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2043059161 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2043059160} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2043059162 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2043059160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b592f12a9f69ac3408f6f870762232c7, type: 3} + m_Name: + m_EditorClassIdentifier: + myInt: 0 +--- !u!1 &2082563172 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2082563173} + - component: {fileID: 2082563174} + m_Layer: 0 + m_Name: CurveRange + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2082563173 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2082563172} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1148579784} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2082563174 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2082563172} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6587b100d001e7e46b9aaae7f1180b40, type: 3} + m_Name: + m_EditorClassIdentifier: + curves: + - serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + - serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + - serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + - serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + - serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: -1 + value: -1 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve1: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve2: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 10 + value: 10 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + nest1: + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + nest2: + curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 5 + value: 5 + inSlope: 1 + outSlope: 1 + tangentMode: 34 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/DemoScene.unity.meta b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/DemoScene.unity.meta new file mode 100644 index 0000000000000000000000000000000000000000..819f1ec628a236cff03699445e4da2006c9b8b11 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/DemoScene.unity.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 07845a5477be2b149a6f1cb32b5a3a5b +timeCreated: 1507998788 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/DemoSceneSettings.lighting b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/DemoSceneSettings.lighting new file mode 100644 index 0000000000000000000000000000000000000000..a88ae38665c179d23190ba72ffdf97028dda348f --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/DemoSceneSettings.lighting @@ -0,0 +1,63 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DemoSceneSettings + serializedVersion: 2 + m_GIWorkflowMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 0 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_TextureCompression: 1 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRRussianRouletteStartBounce: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/DemoSceneSettings.lighting.meta b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/DemoSceneSettings.lighting.meta new file mode 100644 index 0000000000000000000000000000000000000000..3af7b5e1126664c6086d5dc2bc635bdac4222bce --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/DemoSceneSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 98ee975b74776234986f4d35f14c4ccc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets.meta b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets.meta new file mode 100644 index 0000000000000000000000000000000000000000..931e8f8064685423c3adf4663ca6103d59383bba --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 53a462744f22ca549927c5e6ea797362 +folderAsset: yes +timeCreated: 1509089305 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/Cube.prefab b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/Cube.prefab new file mode 100644 index 0000000000000000000000000000000000000000..64055f678ac7b7f6c281a734c4018afa6785c732 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/Cube.prefab @@ -0,0 +1,93 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1981131855061102 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4344736110947706} + - component: {fileID: 33062901823624450} + - component: {fileID: 65233182844289960} + - component: {fileID: 23099360439063292} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4344736110947706 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981131855061102} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33062901823624450 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981131855061102} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!65 &65233182844289960 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981131855061102} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &23099360439063292 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1981131855061102} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/Cube.prefab.meta b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/Cube.prefab.meta new file mode 100644 index 0000000000000000000000000000000000000000..f493507877cb62031843864878d1490c13cc69fd --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/Cube.prefab.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7ec354ef3daae7641b7a3fa5e1fe0c81 +timeCreated: 1509089337 +licenseType: Free +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 100100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/DummyAnimation.anim b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/DummyAnimation.anim new file mode 100644 index 0000000000000000000000000000000000000000..9536161faad8db8f9f103b21141a121d40f46550 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/DummyAnimation.anim @@ -0,0 +1,169 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DummyAnimation + serializedVersion: 6 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + - serializedVersion: 3 + time: 1 + value: {x: 0, y: 0, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 1 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 1 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/DummyAnimation.anim.meta b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/DummyAnimation.anim.meta new file mode 100644 index 0000000000000000000000000000000000000000..d66e3b6c7088ba10d08729a41204a61431a43522 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/DummyAnimation.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 31fbd6c92d19aaa48910857627a54a25 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/DummyAnimatorController.controller b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/DummyAnimatorController.controller new file mode 100644 index 0000000000000000000000000000000000000000..bb64cae8272c29408adb0e2ed534aed98caf373f --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/DummyAnimatorController.controller @@ -0,0 +1,120 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1102 &-1567792821050049497 +AnimatorState: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DummyAnimation + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 31fbd6c92d19aaa48910857627a54a25, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DummyAnimatorController + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: Float0 + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Float1 + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Int0 + m_Type: 3 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Int1 + m_Type: 3 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Bool0 + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Bool1 + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Trigger0 + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Trigger1 + m_Type: 9 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Base Layer + m_StateMachine: {fileID: 945276690032550857} + m_Mask: {fileID: 0} + m_Motions: [] + m_Behaviours: [] + m_BlendingMode: 0 + m_SyncedLayerIndex: -1 + m_DefaultWeight: 0 + m_IKPass: 0 + m_SyncedLayerAffectsTiming: 0 + m_Controller: {fileID: 9100000} +--- !u!1107 &945276690032550857 +AnimatorStateMachine: + serializedVersion: 5 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Base Layer + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: -1567792821050049497} + m_Position: {x: 390, y: 80, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 50, y: 20, z: 0} + m_EntryPosition: {x: 50, y: 120, z: 0} + m_ExitPosition: {x: 800, y: 120, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: -1567792821050049497} diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/DummyAnimatorController.controller.meta b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/DummyAnimatorController.controller.meta new file mode 100644 index 0000000000000000000000000000000000000000..2ce8a9cc3785f5e367fceb4f49e02527ab32f9dc --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/DummyAnimatorController.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 63ee86efd213bf34285c95f33e79dc6c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset new file mode 100644 index 0000000000000000000000000000000000000000..353dc478667fbf4775855ee7d696e1cbbb88eff7 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 753bdb918c6038142acddbd7aae6958f, type: 3} + m_Name: NaughtyScriptableObject + m_EditorClassIdentifier: + listA: + - {fileID: 11400000, guid: 149474eb879a6a641b560ca17d48712f, type: 2} + - {fileID: 11400000, guid: 149474eb879a6a641b560ca17d48712f, type: 2} diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset.meta b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset.meta new file mode 100644 index 0000000000000000000000000000000000000000..dbcb7411f6755b9226e21f5f2c7db666093dd6d9 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/NaughtyScriptableObject.asset.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9cf80899b80517945a2d2390fb48877f +timeCreated: 1518639643 +licenseType: Free +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/TestScriptableObjectA.asset b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/TestScriptableObjectA.asset new file mode 100644 index 0000000000000000000000000000000000000000..3907d95e5e6c84f5bc5c77dbd46c004d2699fb54 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/TestScriptableObjectA.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 19472ac11eae27a4b804f354ca7d9c00, type: 3} + m_Name: TestScriptableObjectA + m_EditorClassIdentifier: + listB: + - {fileID: 11400000, guid: 05371aa7630d3ef44ac0106af06cd73c, type: 2} + - {fileID: 11400000, guid: 05371aa7630d3ef44ac0106af06cd73c, type: 2} diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/TestScriptableObjectA.asset.meta b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/TestScriptableObjectA.asset.meta new file mode 100644 index 0000000000000000000000000000000000000000..3143872e9c04873d3d32813d069269da2e829c89 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/TestScriptableObjectA.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 149474eb879a6a641b560ca17d48712f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/TestScriptableObjectB.asset b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/TestScriptableObjectB.asset new file mode 100644 index 0000000000000000000000000000000000000000..79f5b602598a8917986d52669092a4c2dc7ea25c --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/TestScriptableObjectB.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c2b396aeebc9d984da298eee313896bc, type: 3} + m_Name: TestScriptableObjectB + m_EditorClassIdentifier: + slider: {x: 3, y: 7} diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/TestScriptableObjectB.asset.meta b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/TestScriptableObjectB.asset.meta new file mode 100644 index 0000000000000000000000000000000000000000..7645ee1f954278484caa50f7a91aff8e3d5c5646 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/TestScriptableObjectB.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 05371aa7630d3ef44ac0106af06cd73c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/icon-github.png b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/icon-github.png new file mode 100644 index 0000000000000000000000000000000000000000..228b09acd4249ed0fa5d53891e819ae1be108358 Binary files /dev/null and b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/icon-github.png differ diff --git a/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/icon-github.png.meta b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/icon-github.png.meta new file mode 100644 index 0000000000000000000000000000000000000000..c92bc5d6247ad2ea8424804a0cf8ceee4734977b --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Samples/DemoScene/TestAssets/icon-github.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 005888ede18a58e4db8d069cfa3007cb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 10 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts.meta b/Assets/NaughtyAttributes-2.1.4/Scripts.meta new file mode 100644 index 0000000000000000000000000000000000000000..238d7e9d3382ccf805584f3793174603092ae052 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 66686847ee1fa044bb15dfe473666178 +folderAsset: yes +timeCreated: 1507995546 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core.meta new file mode 100644 index 0000000000000000000000000000000000000000..a0554509937182db1cd80250238a050d6163a470 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1f67e408a6d0adf4ab29d095ccd8b116 +folderAsset: yes +timeCreated: 1507998942 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes.meta new file mode 100644 index 0000000000000000000000000000000000000000..132a3c273d5b67e45489dc0be9ce001c9092a66f --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c76425e719cd4424d868674bcfb233f2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..b526d0ba9d82254e00b33340b08f5e6765d4df22 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class AllowNestingAttribute : DrawerAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..343dfeceb2b4f7f2b32fdecee31acb51c84a1a3c --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/AllowNestingAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95b49d3abe880c044adbe7faf6b7b4ec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..5bddc1d3c5e1f3433f4ca066e86b9607aeefcd7a --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs @@ -0,0 +1,24 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class AnimatorParamAttribute : DrawerAttribute + { + public string AnimatorName { get; private set; } + public AnimatorControllerParameterType? AnimatorParamType { get; private set; } + + public AnimatorParamAttribute(string animatorName) + { + AnimatorName = animatorName; + AnimatorParamType = null; + } + + public AnimatorParamAttribute(string animatorName, AnimatorControllerParameterType animatorParamType) + { + AnimatorName = animatorName; + AnimatorParamType = animatorParamType; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..db61addc97e83af6c4044a43fe859ec2b5fcbf32 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/AnimatorParamAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7373332cb77b42744a415d6b4add445d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..001ef2c4d0f699e2557db2ee0f03edf5b8161451 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs @@ -0,0 +1,30 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class CurveRangeAttribute : DrawerAttribute + { + public Vector2 Min { get; private set; } + public Vector2 Max { get; private set; } + public EColor Color { get; private set; } + + public CurveRangeAttribute(Vector2 min, Vector2 max, EColor color = EColor.Clear) + { + Min = min; + Max = max; + Color = color; + } + + public CurveRangeAttribute(EColor color) + : this(Vector2.zero, Vector2.one, color) + { + } + + public CurveRangeAttribute(float minX, float minY, float maxX, float maxY, EColor color = EColor.Clear) + : this(new Vector2(minX, minY), new Vector2(maxX, maxY), color) + { + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..93b60ab0fa6a81ce49f662fac55dc4210d9568f9 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/CurveRangeAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bbdf3fb8882c7514c9a01108122cda7e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/DrawerAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/DrawerAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..7c44a26fadc969d58ea01181ab6d2aba64518501 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/DrawerAttribute.cs @@ -0,0 +1,11 @@ +using UnityEngine; + +namespace NaughtyAttributes +{ + /// <summary> + /// Base class for all drawer attributes + /// </summary> + public class DrawerAttribute : PropertyAttribute, INaughtyAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..aa542159f4500cdaea738989c3ba2d8593385c99 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/DrawerAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9df37fdebccf65c4da5b0a14f6dad5f5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/DropdownAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/DropdownAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..41be9f41ee306e37a10e681a53f2526e404924b6 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/DropdownAttribute.cs @@ -0,0 +1,57 @@ +using System.Collections; +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class DropdownAttribute : DrawerAttribute + { + public string ValuesName { get; private set; } + + public DropdownAttribute(string valuesName) + { + ValuesName = valuesName; + } + } + + public interface IDropdownList : IEnumerable<KeyValuePair<string, object>> + { + } + + public class DropdownList<T> : IDropdownList + { + private List<KeyValuePair<string, object>> _values; + + public DropdownList() + { + _values = new List<KeyValuePair<string, object>>(); + } + + public void Add(string displayName, T value) + { + _values.Add(new KeyValuePair<string, object>(displayName, value)); + } + + public IEnumerator<KeyValuePair<string, object>> GetEnumerator() + { + return _values.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + public static explicit operator DropdownList<object>(DropdownList<T> target) + { + DropdownList<object> result = new DropdownList<object>(); + foreach (var kvp in target) + { + result.Add(kvp.Key, kvp.Value); + } + + return result; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..b25926d7a73c8515d5aadb4398f56dc65b8a1bc2 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/DropdownAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2cb864a1092cec04f8a4dbb556e8ed31 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..b48ad2416e2061083039e6eb1934532f08d4d4be --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class EnumFlagsAttribute : DrawerAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..25a52af44856550f86da0cdd9a3e59d8b37918fa --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/EnumFlagsAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8b31eb6d7299e54d89dcabc4cad0e6a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/Expandable.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/Expandable.cs new file mode 100644 index 0000000000000000000000000000000000000000..2aee71c29f04d27f05ece14c286319000c3c4a0a --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/Expandable.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ExpandableAttribute : DrawerAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/Expandable.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/Expandable.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..8fa04e4865bbe9f74807ffac3b432cdba05f9493 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/Expandable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 60926d6ca7f9ced469e9248ff1192da6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..d3c3fa165f3b1c0494c744274853590d98ee6e7e --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = true, Inherited = true)] + public class HorizontalLineAttribute : DrawerAttribute + { + public const float DefaultHeight = 2.0f; + public const EColor DefaultColor = EColor.Gray; + + public float Height { get; private set; } + public EColor Color { get; private set; } + + public HorizontalLineAttribute(float height = DefaultHeight, EColor color = DefaultColor) + { + Height = height; + Color = color; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..ecfd2587f7dbe7fa1fd7adf690d983334922660d --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/HorizontalLineAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2fdd6f99acca2fd42a4f3162d585ce95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..2b8fe12b5bde4179bf9829dff187ea3294f85732 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs @@ -0,0 +1,24 @@ +using System; + +namespace NaughtyAttributes +{ + public enum EInfoBoxType + { + Normal, + Warning, + Error + } + + [AttributeUsage(AttributeTargets.Field, AllowMultiple = true, Inherited = true)] + public class InfoBoxAttribute : DrawerAttribute + { + public string Text { get; private set; } + public EInfoBoxType Type { get; private set; } + + public InfoBoxAttribute(string text, EInfoBoxType type = EInfoBoxType.Normal) + { + Text = text; + Type = type; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..8748a6e04c442dcb0d6df2319339729f1052b66a --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/InfoBoxAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: afd1d6323740c734893fa8397c53113b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..dabb10834b4df2138e0f0841fb600e2962249da7 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class InputAxisAttribute : DrawerAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..da3b2c44b073efda01e5762db48e829951d44380 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/InputAxisAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 85033978c18810f46af271bbe94cf4aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/LayerAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/LayerAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..1cd186e2f4bf9e942dbec84f0a5093fde048ad78 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/LayerAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class LayerAttribute : DrawerAttribute + { + } +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/LayerAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/LayerAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..93d97f73bac4b01a5ef73fd48bb63e2ac32f86a4 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/LayerAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 668d19ebe071176448d1af816a9a0ce0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..c2b29ea197fa4e70710bf1c8f3154f0e6381b1c5 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs @@ -0,0 +1,17 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class MinMaxSliderAttribute : DrawerAttribute + { + public float MinValue { get; private set; } + public float MaxValue { get; private set; } + + public MinMaxSliderAttribute(float minValue, float maxValue) + { + MinValue = minValue; + MaxValue = maxValue; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..03e5dcffb1eff6e3ba5b6b3677d891090a96ad5c --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/MinMaxSliderAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4aaa73f574deaa54187cb54aae571b24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..5f768127396b043f547472bcd801ea67b49eed30 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs @@ -0,0 +1,37 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ProgressBarAttribute : DrawerAttribute + { + public string Name { get; private set; } + public float MaxValue { get; set; } + public string MaxValueName { get; private set; } + public EColor Color { get; private set; } + + public ProgressBarAttribute(string name, float maxValue, EColor color = EColor.Blue) + { + Name = name; + MaxValue = maxValue; + Color = color; + } + + public ProgressBarAttribute(string name, string maxValueName, EColor color = EColor.Blue) + { + Name = name; + MaxValueName = maxValueName; + Color = color; + } + + public ProgressBarAttribute(float maxValue, EColor color = EColor.Blue) + : this("", maxValue, color) + { + } + + public ProgressBarAttribute(string maxValueName, EColor color = EColor.Blue) + : this("", maxValueName, color) + { + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..11029f0e82b362696348ed6ab378e1227f554a54 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ProgressBarAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e19e4db6f4d08f849aa8ea8155cd2760 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..46c322491f3ce14d986bdc2d5bdf6797fc20f9b2 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ResizableTextAreaAttribute : DrawerAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..cc11d00a70919947aaae0f0f76d3cb7b68a571cb --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ResizableTextAreaAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 56d9a4b795ef4a94d86b94e55fb81240 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/SceneAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/SceneAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..016c14639be7a92a1935f50a392e6b24681a96e3 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/SceneAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class SceneAttribute : DrawerAttribute + { + } +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/SceneAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/SceneAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..f22649b754f36a5f7328667a422b3c768eb2bb7a --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/SceneAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e054de18423364f4688b72a0f2a472b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..4cbff93a072986d73476193e1bee3d6c9048ad31 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ShowAssetPreviewAttribute : DrawerAttribute + { + public const int DefaultWidth = 64; + public const int DefaultHeight = 64; + + public int Width { get; private set; } + public int Height { get; private set; } + + public ShowAssetPreviewAttribute(int width = DefaultWidth, int height = DefaultHeight) + { + Width = width; + Height = height; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..4893b92381db396838236057e56e96eb5689bf8b --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/ShowAssetPreviewAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4b7dd9b44abc0054cb5cd68d74be2c1a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/SortingLayerAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/SortingLayerAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..43143a74f65dbc7677822d79c9997515328c7101 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/SortingLayerAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class SortingLayerAttribute : DrawerAttribute + { + } +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/SortingLayerAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/SortingLayerAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..d4cfaf8bb477bfc055c8b1c73278e924ff4531f6 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/SortingLayerAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b7564ee02deb3974a85d8617eea098fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/TagAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/TagAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..70d87886df4625328018655564786dbd81cb5689 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/TagAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class TagAttribute : DrawerAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..618033c4cc7f6cd2be5da6108acd3bd0441cc32b --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes/TagAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8903399bbd7c9d745a7b9188ab6c8320 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase.meta new file mode 100644 index 0000000000000000000000000000000000000000..3096ac435a18606d2445c9331fbd471a8ac2371e --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5cf879ed72221e740a7aa02ef9c366a7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..4d8c48d23db59774991a7bed92c518dabd128f2f --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs @@ -0,0 +1,33 @@ +using System; + +namespace NaughtyAttributes +{ + public enum EButtonEnableMode + { + /// <summary> + /// Button should be active always + /// </summary> + Always, + /// <summary> + /// Button should be active only in editor + /// </summary> + Editor, + /// <summary> + /// Button should be active only in playmode + /// </summary> + Playmode + } + + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class ButtonAttribute : SpecialCaseDrawerAttribute + { + public string Text { get; private set; } + public EButtonEnableMode SelectedEnableMode { get; private set; } + + public ButtonAttribute(string text = null, EButtonEnableMode enabledMode = EButtonEnableMode.Always) + { + this.Text = text; + this.SelectedEnableMode = enabledMode; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..cc7be5c0c054945157754d079130486a0ef26376 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ButtonAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8fe363a25ec5e24a9dd510bb0b4a0d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..09faba331e44c5d0e6667cc71aa0a54cfdb28d9d --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ReorderableListAttribute : SpecialCaseDrawerAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..add3c4a44ea520e12fc12d2009850db4cd42b0b5 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ReorderableListAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6189b48f4055e6c47aa132632d898fa6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..e3940ec51040fbb0497a4a85ee47865fdc37c931 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)] + public class ShowNativePropertyAttribute : SpecialCaseDrawerAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..5aed9a27c6d63fddd50c78e5a3f6e10358eb6b32 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ShowNativePropertyAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a8e9b7b71c94a1f459336a24cfe04b1b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..c6c81f5bda4e06d0795c7390e112849a3a8a1437 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ShowNonSerializedFieldAttribute : SpecialCaseDrawerAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..84d56244e33b39b91f2d4d43c5b5504b7a3ae65a --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/ShowNonSerializedFieldAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ea09f60df536734184a8920ff8bda6f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..fc1480d724b4821496ef5c5dac361b331608cfd4 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs @@ -0,0 +1,8 @@ +using System; + +namespace NaughtyAttributes +{ + public class SpecialCaseDrawerAttribute : Attribute, INaughtyAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..3b4bd252a26b4ff13b83baa15f8dd44041ee2424 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/DrawerAttributes_SpecialCase/SpecialCaseDrawerAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95a59093f8ed1af48a8be75fa3050a3c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/INaughtyAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/INaughtyAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..ac612569be980328eef31134ab25ca6588241ba8 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/INaughtyAttribute.cs @@ -0,0 +1,8 @@ +using System; + +namespace NaughtyAttributes +{ + public interface INaughtyAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/INaughtyAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/INaughtyAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..e2dd9d9bb90f652c939895c5ca206c4e90687e4b --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/INaughtyAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: edda855906d15e541b46efd812fd70f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes.meta new file mode 100644 index 0000000000000000000000000000000000000000..547f24d6db4fa870bdee3e6a1ae8b9ce20b58cc6 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64c95d02a2004854585e8d923d6680d0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..5f49cd54db5de66a9a520003894b7f699f597856 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class BoxGroupAttribute : MetaAttribute, IGroupAttribute + { + public string Name { get; private set; } + + public BoxGroupAttribute(string name = "") + { + Name = name; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..d68d8de4baa264509ae28f39dd763f733b6a1ab1 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/BoxGroupAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07da8af1e3be52c4789678bf4138ae11 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/DisableIfAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/DisableIfAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..7363a2c3a6dac20600a7106b78b343797e1489d0 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/DisableIfAttribute.cs @@ -0,0 +1,26 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class DisableIfAttribute : EnableIfAttributeBase + { + public DisableIfAttribute(string condition) + : base(condition) + { + Inverted = true; + } + + public DisableIfAttribute(EConditionOperator conditionOperator, params string[] conditions) + : base(conditionOperator, conditions) + { + Inverted = true; + } + + public DisableIfAttribute(string enumName, object enumValue) + : base(enumName, enumValue as Enum) + { + Inverted = true; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/DisableIfAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/DisableIfAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..b91dc52815499da51d46a5707683b1abc1a64040 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/DisableIfAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 52a0d5c249ac8fd42a4fb4d61bc2f797 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/EnableIfAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/EnableIfAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..33b16467d589dc80596219d09aefef239f4c5dae --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/EnableIfAttribute.cs @@ -0,0 +1,26 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class EnableIfAttribute : EnableIfAttributeBase + { + public EnableIfAttribute(string condition) + : base(condition) + { + Inverted = false; + } + + public EnableIfAttribute(EConditionOperator conditionOperator, params string[] conditions) + : base(conditionOperator, conditions) + { + Inverted = false; + } + + public EnableIfAttribute(string enumName, object enumValue) + : base(enumName, enumValue as Enum) + { + Inverted = false; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/EnableIfAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/EnableIfAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..f3a696c406260c2a90d8f867298b854af7ae88db --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/EnableIfAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a616ae826c8ebae45a89d6a8cb68a843 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs new file mode 100644 index 0000000000000000000000000000000000000000..6f9fe0ee72d6b8d92903cfb2225ce86a3dd60f7f --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs @@ -0,0 +1,39 @@ +using System; + +namespace NaughtyAttributes +{ + public abstract class EnableIfAttributeBase : MetaAttribute + { + public string[] Conditions { get; private set; } + public EConditionOperator ConditionOperator { get; private set; } + public bool Inverted { get; protected set; } + + /// <summary> + /// If this not null, <see cref="Conditions"/>[0] is name of an enum variable. + /// </summary> + public Enum EnumValue { get; private set; } + + public EnableIfAttributeBase(string condition) + { + ConditionOperator = EConditionOperator.And; + Conditions = new string[1] { condition }; + } + + public EnableIfAttributeBase(EConditionOperator conditionOperator, params string[] conditions) + { + ConditionOperator = conditionOperator; + Conditions = conditions; + } + + public EnableIfAttributeBase(string enumName, Enum enumValue) + : this(enumName) + { + if (enumValue == null) + { + throw new ArgumentNullException(nameof(enumValue), "This parameter must be an enum value."); + } + + EnumValue = enumValue; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..45fd5eb346320e0958cebc3829ce644119b1bd3c --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/EnableIfAttributeBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ba6385cd022e164b89ead1937173ddc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/FoldoutAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/FoldoutAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..3999e3463e7a19208cec1370b97e9716ec2ba34a --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/FoldoutAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class FoldoutAttribute : MetaAttribute, IGroupAttribute + { + public string Name { get; private set; } + + public FoldoutAttribute(string name) + { + Name = name; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/FoldoutAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/FoldoutAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..e39736b2b641093e8e7bbfa9dffe7722541cd0f2 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/FoldoutAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95f184555d5079243b2d25b35a641a74 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/HideIfAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/HideIfAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..9f1c65743032ce6eddf9baf474b8c1d8f38fa1c2 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/HideIfAttribute.cs @@ -0,0 +1,26 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class HideIfAttribute : ShowIfAttributeBase + { + public HideIfAttribute(string condition) + : base(condition) + { + Inverted = true; + } + + public HideIfAttribute(EConditionOperator conditionOperator, params string[] conditions) + : base(conditionOperator, conditions) + { + Inverted = true; + } + + public HideIfAttribute(string enumName, object enumValue) + : base(enumName, enumValue as Enum) + { + Inverted = true; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/HideIfAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/HideIfAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..888cf89a2390440e5174e0f8c08e65923bc53759 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/HideIfAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9ab2d0fcfb13a214ea6ef7629c96a761 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/IGroupAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/IGroupAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..c7c20087b00993c6ce3dff929a2311bee5ddfa34 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/IGroupAttribute.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace NaughtyAttributes +{ + public interface IGroupAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/IGroupAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/IGroupAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..47db85d80610b04de2167c5922985c4a694130f2 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/IGroupAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7c437b9ac50575347a7b12520f37f9a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/LabelAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/LabelAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..c30930d1d4d39d06bbf02b11807b68dca24e65b3 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/LabelAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class LabelAttribute : MetaAttribute + { + public string Label { get; private set; } + + public LabelAttribute(string label) + { + Label = label; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/LabelAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/LabelAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..9488d54afe68482fb6ea3109a5af35417ad31ae2 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/LabelAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 79e0e0c0a7c25ea4fbe8eecaa4d559a0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/MetaAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/MetaAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..a7219975658b1d3430fbbda0d5911353c01e7ee3 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/MetaAttribute.cs @@ -0,0 +1,8 @@ +using System; + +namespace NaughtyAttributes +{ + public class MetaAttribute : Attribute, INaughtyAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..a7be132946f1a3740d7931bce23d38675134fc84 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/MetaAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a482b4e0fbf0f4547a5d522182a68d24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..c7c6dc69d94e5d48298138406aa62044fb3a07b2 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = true, Inherited = true)] + public class OnValueChangedAttribute : MetaAttribute + { + public string CallbackName { get; private set; } + + public OnValueChangedAttribute(string callbackName) + { + CallbackName = callbackName; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..4a92c4bf2195a30e2362c49741069b62348920f4 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/OnValueChangedAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e16a27c5576022b4bbe997c7db9051f0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..affbff4548e3a74959e5cadaadc7427b8ae88de5 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs @@ -0,0 +1,10 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ReadOnlyAttribute : MetaAttribute + { + + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..24ec84625890353efc8d804a298154a5c79da765 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ReadOnlyAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e57264747ba93b94fbff12733de29499 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ShowIfAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ShowIfAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..99813aa09b6d0ff649d213b2fa3e14c151c3c3c0 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ShowIfAttribute.cs @@ -0,0 +1,26 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] + public class ShowIfAttribute : ShowIfAttributeBase + { + public ShowIfAttribute(string condition) + : base(condition) + { + Inverted = false; + } + + public ShowIfAttribute(EConditionOperator conditionOperator, params string[] conditions) + : base(conditionOperator, conditions) + { + Inverted = false; + } + + public ShowIfAttribute(string enumName, object enumValue) + : base(enumName, enumValue as Enum) + { + Inverted = false; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ShowIfAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ShowIfAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..4556ac23711aefab8f1c1576e5dac1bdbc5a3326 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ShowIfAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ada427cfd2c9b04989d6d18dea27985 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs new file mode 100644 index 0000000000000000000000000000000000000000..e48d437e924d04f71530562251754a9edaabdc91 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs @@ -0,0 +1,39 @@ +using System; + +namespace NaughtyAttributes +{ + public class ShowIfAttributeBase : MetaAttribute + { + public string[] Conditions { get; private set; } + public EConditionOperator ConditionOperator { get; private set; } + public bool Inverted { get; protected set; } + + /// <summary> + /// If this not null, <see cref="Conditions"/>[0] is name of an enum variable. + /// </summary> + public Enum EnumValue { get; private set; } + + public ShowIfAttributeBase(string condition) + { + ConditionOperator = EConditionOperator.And; + Conditions = new string[1] { condition }; + } + + public ShowIfAttributeBase(EConditionOperator conditionOperator, params string[] conditions) + { + ConditionOperator = conditionOperator; + Conditions = conditions; + } + + public ShowIfAttributeBase(string enumName, Enum enumValue) + : this(enumName) + { + if (enumValue == null) + { + throw new ArgumentNullException(nameof(enumValue), "This parameter must be an enum value."); + } + + EnumValue = enumValue; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..e82a9ad340d04ab909bb06e3520b351d35b64441 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/MetaAttributes/ShowIfAttributeBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0532b1c4d8a9ccf4b9f98f0bbe4a6747 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/NaughtyAttributes.Core.asmdef b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/NaughtyAttributes.Core.asmdef new file mode 100644 index 0000000000000000000000000000000000000000..569e4e6640dacc4c00b99027bdef92a74a63b2b9 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/NaughtyAttributes.Core.asmdef @@ -0,0 +1,12 @@ +{ + "name": "NaughtyAttributes.Core", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [] +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/NaughtyAttributes.Core.asmdef.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/NaughtyAttributes.Core.asmdef.meta new file mode 100644 index 0000000000000000000000000000000000000000..731749cbea802529da9830e6b992946c33c64717 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/NaughtyAttributes.Core.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 776d03a35f1b52c4a9aed9f56d7b4229 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility.meta new file mode 100644 index 0000000000000000000000000000000000000000..80be4768891df1dbb1a4bc63d71e4d9e84d3fe7f --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6d61a3a977073c740ae13a3683ed22a1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility/EColor.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility/EColor.cs new file mode 100644 index 0000000000000000000000000000000000000000..1e02b2d284b5295bf9ca3654994c571b894d2e03 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility/EColor.cs @@ -0,0 +1,56 @@ +using UnityEngine; + +namespace NaughtyAttributes +{ + public enum EColor + { + Clear, + White, + Black, + Gray, + Red, + Pink, + Orange, + Yellow, + Green, + Blue, + Indigo, + Violet + } + + public static class EColorExtensions + { + public static Color GetColor(this EColor color) + { + switch (color) + { + case EColor.Clear: + return new Color32(0, 0, 0, 0); + case EColor.White: + return new Color32(255, 255, 255, 255); + case EColor.Black: + return new Color32(0, 0, 0, 255); + case EColor.Gray: + return new Color32(128, 128, 128, 255); + case EColor.Red: + return new Color32(255, 0, 63, 255); + case EColor.Pink: + return new Color32(255, 152, 203, 255); + case EColor.Orange: + return new Color32(255, 128, 0, 255); + case EColor.Yellow: + return new Color32(255, 211, 0, 255); + case EColor.Green: + return new Color32(98, 200, 79, 255); + case EColor.Blue: + return new Color32(0, 135, 189, 255); + case EColor.Indigo: + return new Color32(75, 0, 130, 255); + case EColor.Violet: + return new Color32(128, 0, 255, 255); + default: + return new Color32(0, 0, 0, 255); + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility/EColor.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility/EColor.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..0f32c5e079bca24328ea2859dd442110a53000dd --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility/EColor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 059f8674a8065924ea9c678298b5cd63 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility/EConditionOperator.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility/EConditionOperator.cs new file mode 100644 index 0000000000000000000000000000000000000000..f4ca4d22ac857396d9cbde6eea2f10da25b8955f --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility/EConditionOperator.cs @@ -0,0 +1,10 @@ +using System; + +namespace NaughtyAttributes +{ + public enum EConditionOperator + { + And, + Or + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility/EConditionOperator.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility/EConditionOperator.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..60e32647f22e907f8375a409199f0482f0a1e444 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/Utility/EConditionOperator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c227b6c19fc67b46ad294d95818f85a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes.meta new file mode 100644 index 0000000000000000000000000000000000000000..d5aba48fdc4e01357aec15317d3a6995e7455d21 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bf91d63e37bed3e4cbf75d576fc03a21 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..fe2f4f5dfd6c81015edd2fc167a56278c40fb748 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class MaxValueAttribute : ValidatorAttribute + { + public float MaxValue { get; private set; } + + public MaxValueAttribute(float maxValue) + { + MaxValue = maxValue; + } + + public MaxValueAttribute(int maxValue) + { + MaxValue = maxValue; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..b02fdbcf4b2ffb6acac5b33e7893ba33d218f14b --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/MaxValueAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a748250af5ccfd7499cfb444aafb8a03 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..368cc1302fabdff4fa979722d9cac80074d9e2af --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class MinValueAttribute : ValidatorAttribute + { + public float MinValue { get; private set; } + + public MinValueAttribute(float minValue) + { + MinValue = minValue; + } + + public MinValueAttribute(int minValue) + { + MinValue = minValue; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..9d90191289af9be0876c54b05fb755024192f986 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/MinValueAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 40133bac7c8d42b4d837138430a503e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..bfe8fffe49566c099d6ba955bed2cbb887e6061d --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class RequiredAttribute : ValidatorAttribute + { + public string Message { get; private set; } + + public RequiredAttribute(string message = null) + { + Message = message; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..7f87cfcb039cdac62854edc5c0a879726ffc7cae --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/RequiredAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0cdf49d1687849458b1a8d4786553d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..4be578d9e4005ba6f8ebe76bd7bfade3b951dd14 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs @@ -0,0 +1,17 @@ +using System; + +namespace NaughtyAttributes +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public class ValidateInputAttribute : ValidatorAttribute + { + public string CallbackName { get; private set; } + public string Message { get; private set; } + + public ValidateInputAttribute(string callbackName, string message = null) + { + CallbackName = callbackName; + Message = message; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..0addd1a920622fa78dd8893c8ff6786b9bdeca0c --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/ValidateInputAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c4171d68fb5bc0448d3ac298973e82c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs new file mode 100644 index 0000000000000000000000000000000000000000..7e2a19f6484c54febba110730b826ae1246a2509 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs @@ -0,0 +1,8 @@ +using System; + +namespace NaughtyAttributes +{ + public class ValidatorAttribute : Attribute, INaughtyAttribute + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..f5daea83dd1244edb6ed1526196b2f6f9b70bddb --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Core/ValidatorAttributes/ValidatorAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0f3c43bed2dbc5249b6c6ec7859c2020 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor.meta new file mode 100644 index 0000000000000000000000000000000000000000..8110aa808c6151e372f620b17d152a9bb9a1811b --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b76068e69df25a94ab378b0b6829c4f0 +folderAsset: yes +timeCreated: 1507995613 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers.meta new file mode 100644 index 0000000000000000000000000000000000000000..79b2c37137cc461d177495037f8508ea091add55 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d3041a2296f3b1749b3ef18e695adee4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..7db82aaaf0b761966e6dd0aa1c7c3625edea66bd --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(HorizontalLineAttribute))] + public class HorizontalLineDecoratorDrawer : DecoratorDrawer + { + public override float GetHeight() + { + HorizontalLineAttribute lineAttr = (HorizontalLineAttribute)attribute; + return EditorGUIUtility.singleLineHeight + lineAttr.Height; + } + + public override void OnGUI(Rect position) + { + Rect rect = EditorGUI.IndentedRect(position); + rect.y += EditorGUIUtility.singleLineHeight / 3.0f; + HorizontalLineAttribute lineAttr = (HorizontalLineAttribute)attribute; + NaughtyEditorGUI.HorizontalLine(rect, lineAttr.Height, lineAttr.Color.GetColor()); + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..719f6d80a84a3a85ec9b18f24f54fa36dbbee898 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers/HorizontalLineDecoratorDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ec99f3a124f20e40b8f5edfeb1ecced +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..18a979c297c702d65ed219411eab083cbcf6c98a --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs @@ -0,0 +1,59 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(InfoBoxAttribute))] + public class InfoBoxDecoratorDrawer : DecoratorDrawer + { + public override float GetHeight() + { + return GetHelpBoxHeight(); + } + + public override void OnGUI(Rect rect) + { + InfoBoxAttribute infoBoxAttribute = (InfoBoxAttribute)attribute; + + float indentLength = NaughtyEditorGUI.GetIndentLength(rect); + Rect infoBoxRect = new Rect( + rect.x + indentLength, + rect.y, + rect.width - indentLength, + GetHelpBoxHeight()); + + DrawInfoBox(infoBoxRect, infoBoxAttribute.Text, infoBoxAttribute.Type); + } + + private float GetHelpBoxHeight() + { + InfoBoxAttribute infoBoxAttribute = (InfoBoxAttribute)attribute; + float minHeight = EditorGUIUtility.singleLineHeight * 2.0f; + float desiredHeight = GUI.skin.box.CalcHeight(new GUIContent(infoBoxAttribute.Text), EditorGUIUtility.currentViewWidth); + float height = Mathf.Max(minHeight, desiredHeight); + + return height; + } + + private void DrawInfoBox(Rect rect, string infoText, EInfoBoxType infoBoxType) + { + MessageType messageType = MessageType.None; + switch (infoBoxType) + { + case EInfoBoxType.Normal: + messageType = MessageType.Info; + break; + + case EInfoBoxType.Warning: + messageType = MessageType.Warning; + break; + + case EInfoBoxType.Error: + messageType = MessageType.Error; + break; + } + + NaughtyEditorGUI.HelpBox(rect, infoText, messageType); + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..5f50aced94e7927dfac5c08bcbc1405aafa9b9ea --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/DecoratorDrawers/InfoBoxDecoratorDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e9c18b0e698717442b7631c5066d667f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/NaughtyAttributes.Editor.asmdef b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/NaughtyAttributes.Editor.asmdef new file mode 100644 index 0000000000000000000000000000000000000000..e1aafc26933bb153a84d1bd459dd2dfdd1e5dbee --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/NaughtyAttributes.Editor.asmdef @@ -0,0 +1,16 @@ +{ + "name": "NaughtyAttributes.Editor", + "references": [ + "NaughtyAttributes.Core" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta new file mode 100644 index 0000000000000000000000000000000000000000..70dc9f26ed46f3cb453a5390e2fc82d1ebce5c45 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/NaughtyAttributes.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f88fb04354076c646a4107a491394033 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/NaughtyInspector.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/NaughtyInspector.cs new file mode 100644 index 0000000000000000000000000000000000000000..cce935b43d1627283a7d920a37a609ee8a89e8da --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/NaughtyInspector.cs @@ -0,0 +1,221 @@ +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [CanEditMultipleObjects] + [CustomEditor(typeof(UnityEngine.Object), true)] + public class NaughtyInspector : UnityEditor.Editor + { + private List<SerializedProperty> _serializedProperties = new List<SerializedProperty>(); + private IEnumerable<FieldInfo> _nonSerializedFields; + private IEnumerable<PropertyInfo> _nativeProperties; + private IEnumerable<MethodInfo> _methods; + private Dictionary<string, SavedBool> _foldouts = new Dictionary<string, SavedBool>(); + + protected virtual void OnEnable() + { + _nonSerializedFields = ReflectionUtility.GetAllFields( + target, f => f.GetCustomAttributes(typeof(ShowNonSerializedFieldAttribute), true).Length > 0); + + _nativeProperties = ReflectionUtility.GetAllProperties( + target, p => p.GetCustomAttributes(typeof(ShowNativePropertyAttribute), true).Length > 0); + + _methods = ReflectionUtility.GetAllMethods( + target, m => m.GetCustomAttributes(typeof(ButtonAttribute), true).Length > 0); + } + + protected virtual void OnDisable() + { + ReorderableListPropertyDrawer.Instance.ClearCache(); + } + + public override void OnInspectorGUI() + { + GetSerializedProperties(ref _serializedProperties); + + bool anyNaughtyAttribute = _serializedProperties.Any(p => PropertyUtility.GetAttribute<INaughtyAttribute>(p) != null); + if (!anyNaughtyAttribute) + { + DrawDefaultInspector(); + } + else + { + DrawSerializedProperties(); + } + + DrawNonSerializedFields(); + DrawNativeProperties(); + DrawButtons(); + } + + protected void GetSerializedProperties(ref List<SerializedProperty> outSerializedProperties) + { + outSerializedProperties.Clear(); + using (var iterator = serializedObject.GetIterator()) + { + if (iterator.NextVisible(true)) + { + do + { + outSerializedProperties.Add(serializedObject.FindProperty(iterator.name)); + } + while (iterator.NextVisible(false)); + } + } + } + + protected void DrawSerializedProperties() + { + serializedObject.Update(); + + // Draw non-grouped serialized properties + foreach (var property in GetNonGroupedProperties(_serializedProperties)) + { + if (property.name.Equals("m_Script", System.StringComparison.Ordinal)) + { + using (new EditorGUI.DisabledScope(disabled: true)) + { + EditorGUILayout.PropertyField(property); + } + } + else + { + NaughtyEditorGUI.PropertyField_Layout(property, includeChildren: true); + } + } + + // Draw grouped serialized properties + foreach (var group in GetGroupedProperties(_serializedProperties)) + { + IEnumerable<SerializedProperty> visibleProperties = group.Where(p => PropertyUtility.IsVisible(p)); + if (!visibleProperties.Any()) + { + continue; + } + + NaughtyEditorGUI.BeginBoxGroup_Layout(group.Key); + foreach (var property in visibleProperties) + { + NaughtyEditorGUI.PropertyField_Layout(property, includeChildren: true); + } + + NaughtyEditorGUI.EndBoxGroup_Layout(); + } + + // Draw foldout serialized properties + foreach (var group in GetFoldoutProperties(_serializedProperties)) + { + IEnumerable<SerializedProperty> visibleProperties = group.Where(p => PropertyUtility.IsVisible(p)); + if (!visibleProperties.Any()) + { + continue; + } + + if (!_foldouts.ContainsKey(group.Key)) + { + _foldouts[group.Key] = new SavedBool($"{target.GetInstanceID()}.{group.Key}", false); + } + + _foldouts[group.Key].Value = EditorGUILayout.Foldout(_foldouts[group.Key].Value, group.Key, true); + if (_foldouts[group.Key].Value) + { + foreach (var property in visibleProperties) + { + NaughtyEditorGUI.PropertyField_Layout(property, true); + } + } + } + + serializedObject.ApplyModifiedProperties(); + } + + protected void DrawNonSerializedFields(bool drawHeader = false) + { + if (_nonSerializedFields.Any()) + { + if (drawHeader) + { + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Non-Serialized Fields", GetHeaderGUIStyle()); + NaughtyEditorGUI.HorizontalLine( + EditorGUILayout.GetControlRect(false), HorizontalLineAttribute.DefaultHeight, HorizontalLineAttribute.DefaultColor.GetColor()); + } + + foreach (var field in _nonSerializedFields) + { + NaughtyEditorGUI.NonSerializedField_Layout(serializedObject.targetObject, field); + } + } + } + + protected void DrawNativeProperties(bool drawHeader = false) + { + if (_nativeProperties.Any()) + { + if (drawHeader) + { + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Native Properties", GetHeaderGUIStyle()); + NaughtyEditorGUI.HorizontalLine( + EditorGUILayout.GetControlRect(false), HorizontalLineAttribute.DefaultHeight, HorizontalLineAttribute.DefaultColor.GetColor()); + } + + foreach (var property in _nativeProperties) + { + NaughtyEditorGUI.NativeProperty_Layout(serializedObject.targetObject, property); + } + } + } + + protected void DrawButtons(bool drawHeader = false) + { + if (_methods.Any()) + { + if (drawHeader) + { + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Buttons", GetHeaderGUIStyle()); + NaughtyEditorGUI.HorizontalLine( + EditorGUILayout.GetControlRect(false), HorizontalLineAttribute.DefaultHeight, HorizontalLineAttribute.DefaultColor.GetColor()); + } + + foreach (var method in _methods) + { + NaughtyEditorGUI.Button(serializedObject.targetObject, method); + } + } + } + + private static IEnumerable<SerializedProperty> GetNonGroupedProperties(IEnumerable<SerializedProperty> properties) + { + return properties.Where(p => PropertyUtility.GetAttribute<IGroupAttribute>(p) == null); + } + + private static IEnumerable<IGrouping<string, SerializedProperty>> GetGroupedProperties(IEnumerable<SerializedProperty> properties) + { + return properties + .Where(p => PropertyUtility.GetAttribute<BoxGroupAttribute>(p) != null) + .GroupBy(p => PropertyUtility.GetAttribute<BoxGroupAttribute>(p).Name); + } + + private static IEnumerable<IGrouping<string, SerializedProperty>> GetFoldoutProperties(IEnumerable<SerializedProperty> properties) + { + return properties + .Where(p => PropertyUtility.GetAttribute<FoldoutAttribute>(p) != null) + .GroupBy(p => PropertyUtility.GetAttribute<FoldoutAttribute>(p).Name); + } + + private static GUIStyle GetHeaderGUIStyle() + { + GUIStyle style = new GUIStyle(EditorStyles.centeredGreyMiniLabel); + style.fontStyle = FontStyle.Bold; + style.alignment = TextAnchor.UpperCenter; + + return style; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/NaughtyInspector.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/NaughtyInspector.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..b63e99f9fa5ac05deea37ee1cca17dd807c22276 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/NaughtyInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1b9b53879f7c93b42835c3ad9e0d0a66 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers.meta new file mode 100644 index 0000000000000000000000000000000000000000..7d7dbed8acc8462132b981ff27f12c7513a8d109 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4327d74fca5deaa4c83c483fe468d274 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..6dc498b8a6af43a4b9d7b476e68ce19daf799714 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs @@ -0,0 +1,16 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(AllowNestingAttribute))] + public class AllowNestingPropertyDrawer : PropertyDrawerBase + { + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + EditorGUI.PropertyField(rect, property, label, true); + EditorGUI.EndProperty(); + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..f2f2145468e028c281277ff45f05bdae3750b854 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/AllowNestingPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a3175e7041b8f4348bd652485a78e7b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..080b1bc857635996736e6a0c48eb65c44c1343cd --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs @@ -0,0 +1,173 @@ +using System.Collections.Generic; +using System.Reflection; +using UnityEditor; +using UnityEditor.Animations; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(AnimatorParamAttribute))] + public class AnimatorParamPropertyDrawer : PropertyDrawerBase + { + private const string InvalidAnimatorControllerWarningMessage = "Target animator controller is null"; + private const string InvalidTypeWarningMessage = "{0} must be an int or a string"; + + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + AnimatorParamAttribute animatorParamAttribute = PropertyUtility.GetAttribute<AnimatorParamAttribute>(property); + bool validAnimatorController = GetAnimatorController(property, animatorParamAttribute.AnimatorName) != null; + bool validPropertyType = property.propertyType == SerializedPropertyType.Integer || property.propertyType == SerializedPropertyType.String; + + return (validAnimatorController && validPropertyType) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + AnimatorParamAttribute animatorParamAttribute = PropertyUtility.GetAttribute<AnimatorParamAttribute>(property); + + AnimatorController animatorController = GetAnimatorController(property, animatorParamAttribute.AnimatorName); + if (animatorController == null) + { + DrawDefaultPropertyAndHelpBox(rect, property, InvalidAnimatorControllerWarningMessage, MessageType.Warning); + return; + } + + int parametersCount = animatorController.parameters.Length; + List<AnimatorControllerParameter> animatorParameters = new List<AnimatorControllerParameter>(parametersCount); + for (int i = 0; i < parametersCount; i++) + { + AnimatorControllerParameter parameter = animatorController.parameters[i]; + if (animatorParamAttribute.AnimatorParamType == null || parameter.type == animatorParamAttribute.AnimatorParamType) + { + animatorParameters.Add(parameter); + } + } + + switch (property.propertyType) + { + case SerializedPropertyType.Integer: + DrawPropertyForInt(rect, property, label, animatorParameters); + break; + case SerializedPropertyType.String: + DrawPropertyForString(rect, property, label, animatorParameters); + break; + default: + DrawDefaultPropertyAndHelpBox(rect, property, string.Format(InvalidTypeWarningMessage, property.name), MessageType.Warning); + break; + } + + EditorGUI.EndProperty(); + } + + private static void DrawPropertyForInt(Rect rect, SerializedProperty property, GUIContent label, List<AnimatorControllerParameter> animatorParameters) + { + int paramNameHash = property.intValue; + int index = 0; + + for (int i = 0; i < animatorParameters.Count; i++) + { + if (paramNameHash == animatorParameters[i].nameHash) + { + index = i + 1; // +1 because the first option is reserved for (None) + break; + } + } + + string[] displayOptions = GetDisplayOptions(animatorParameters); + + int newIndex = EditorGUI.Popup(rect, label.text, index, displayOptions); + int newValue = newIndex == 0 ? 0 : animatorParameters[newIndex - 1].nameHash; + + if (property.intValue != newValue) + { + property.intValue = newValue; + } + } + + private static void DrawPropertyForString(Rect rect, SerializedProperty property, GUIContent label, List<AnimatorControllerParameter> animatorParameters) + { + string paramName = property.stringValue; + int index = 0; + + for (int i = 0; i < animatorParameters.Count; i++) + { + if (paramName.Equals(animatorParameters[i].name, System.StringComparison.Ordinal)) + { + index = i + 1; // +1 because the first option is reserved for (None) + break; + } + } + + string[] displayOptions = GetDisplayOptions(animatorParameters); + + int newIndex = EditorGUI.Popup(rect, label.text, index, displayOptions); + string newValue = newIndex == 0 ? null : animatorParameters[newIndex - 1].name; + + if (!property.stringValue.Equals(newValue, System.StringComparison.Ordinal)) + { + property.stringValue = newValue; + } + } + + private static string[] GetDisplayOptions(List<AnimatorControllerParameter> animatorParams) + { + string[] displayOptions = new string[animatorParams.Count + 1]; + displayOptions[0] = "(None)"; + + for (int i = 0; i < animatorParams.Count; i++) + { + displayOptions[i + 1] = animatorParams[i].name; + } + + return displayOptions; + } + + private static AnimatorController GetAnimatorController(SerializedProperty property, string animatorName) + { + object target = PropertyUtility.GetTargetObjectWithProperty(property); + + FieldInfo animatorFieldInfo = ReflectionUtility.GetField(target, animatorName); + if (animatorFieldInfo != null && + animatorFieldInfo.FieldType == typeof(Animator)) + { + Animator animator = animatorFieldInfo.GetValue(target) as Animator; + if (animator != null) + { + AnimatorController animatorController = animator.runtimeAnimatorController as AnimatorController; + return animatorController; + } + } + + PropertyInfo animatorPropertyInfo = ReflectionUtility.GetProperty(target, animatorName); + if (animatorPropertyInfo != null && + animatorPropertyInfo.PropertyType == typeof(Animator)) + { + Animator animator = animatorPropertyInfo.GetValue(target) as Animator; + if (animator != null) + { + AnimatorController animatorController = animator.runtimeAnimatorController as AnimatorController; + return animatorController; + } + } + + MethodInfo animatorGetterMethodInfo = ReflectionUtility.GetMethod(target, animatorName); + if (animatorGetterMethodInfo != null && + animatorGetterMethodInfo.ReturnType == typeof(Animator) && + animatorGetterMethodInfo.GetParameters().Length == 0) + { + Animator animator = animatorGetterMethodInfo.Invoke(target, null) as Animator; + if (animator != null) + { + AnimatorController animatorController = animator.runtimeAnimatorController as AnimatorController; + return animatorController; + } + } + + return null; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..4c3a7e6496e8beddec03c3acf7f48ae4dceb5215 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/AnimatorParamPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98ff8cb1bcefae740a68d9a5c5ee3563 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..4e65759a63f47e7dac9cd7e50b225c0450ca4f6b --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs @@ -0,0 +1,47 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(CurveRangeAttribute))] + public class CurveRangePropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + float propertyHeight = property.propertyType == SerializedPropertyType.AnimationCurve + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + + return propertyHeight; + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + // Check user error + if (property.propertyType != SerializedPropertyType.AnimationCurve) + { + string message = string.Format("Field {0} is not an AnimationCurve", property.name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + return; + } + + var curveRangeAttribute = (CurveRangeAttribute)attribute; + var curveRanges = new Rect( + curveRangeAttribute.Min.x, + curveRangeAttribute.Min.y, + curveRangeAttribute.Max.x - curveRangeAttribute.Min.x, + curveRangeAttribute.Max.y - curveRangeAttribute.Min.y); + + EditorGUI.CurveField( + rect, + property, + curveRangeAttribute.Color == EColor.Clear ? Color.green : curveRangeAttribute.Color.GetColor(), + curveRanges, + label); + + EditorGUI.EndProperty(); + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..adea11ef669aa536dc94534d756671b521d843d4 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/CurveRangePropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 798b8c99fbc072a4b83ee387e472a2bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..09725c52fbf34691c66dce957c0c364fab0d0218 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs @@ -0,0 +1,177 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; +using System.Reflection; +using System; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(DropdownAttribute))] + public class DropdownPropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + DropdownAttribute dropdownAttribute = (DropdownAttribute)attribute; + object values = GetValues(property, dropdownAttribute.ValuesName); + FieldInfo fieldInfo = ReflectionUtility.GetField(PropertyUtility.GetTargetObjectWithProperty(property), property.name); + + float propertyHeight = AreValuesValid(values, fieldInfo) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + + return propertyHeight; + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + DropdownAttribute dropdownAttribute = (DropdownAttribute)attribute; + object target = PropertyUtility.GetTargetObjectWithProperty(property); + + object valuesObject = GetValues(property, dropdownAttribute.ValuesName); + FieldInfo dropdownField = ReflectionUtility.GetField(target, property.name); + + if (AreValuesValid(valuesObject, dropdownField)) + { + if (valuesObject is IList && dropdownField.FieldType == GetElementType(valuesObject)) + { + // Selected value + object selectedValue = dropdownField.GetValue(target); + + // Values and display options + IList valuesList = (IList)valuesObject; + object[] values = new object[valuesList.Count]; + string[] displayOptions = new string[valuesList.Count]; + + for (int i = 0; i < values.Length; i++) + { + object value = valuesList[i]; + values[i] = value; + displayOptions[i] = value == null ? "<null>" : value.ToString(); + } + + // Selected value index + int selectedValueIndex = Array.IndexOf(values, selectedValue); + if (selectedValueIndex < 0) + { + selectedValueIndex = 0; + } + + NaughtyEditorGUI.Dropdown( + rect, property.serializedObject, target, dropdownField, label.text, selectedValueIndex, values, displayOptions); + } + else if (valuesObject is IDropdownList) + { + // Current value + object selectedValue = dropdownField.GetValue(target); + + // Current value index, values and display options + int index = -1; + int selectedValueIndex = -1; + List<object> values = new List<object>(); + List<string> displayOptions = new List<string>(); + IDropdownList dropdown = (IDropdownList)valuesObject; + + using (IEnumerator<KeyValuePair<string, object>> dropdownEnumerator = dropdown.GetEnumerator()) + { + while (dropdownEnumerator.MoveNext()) + { + index++; + + KeyValuePair<string, object> current = dropdownEnumerator.Current; + if (current.Value?.Equals(selectedValue) == true) + { + selectedValueIndex = index; + } + + values.Add(current.Value); + + if (current.Key == null) + { + displayOptions.Add("<null>"); + } + else if (string.IsNullOrWhiteSpace(current.Key)) + { + displayOptions.Add("<empty>"); + } + else + { + displayOptions.Add(current.Key); + } + } + } + + if (selectedValueIndex < 0) + { + selectedValueIndex = 0; + } + + NaughtyEditorGUI.Dropdown( + rect, property.serializedObject, target, dropdownField, label.text, selectedValueIndex, values.ToArray(), displayOptions.ToArray()); + } + } + else + { + string message = string.Format("Invalid values with name '{0}' provided to '{1}'. Either the values name is incorrect or the types of the target field and the values field/property/method don't match", + dropdownAttribute.ValuesName, dropdownAttribute.GetType().Name); + + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + + private object GetValues(SerializedProperty property, string valuesName) + { + object target = PropertyUtility.GetTargetObjectWithProperty(property); + + FieldInfo valuesFieldInfo = ReflectionUtility.GetField(target, valuesName); + if (valuesFieldInfo != null) + { + return valuesFieldInfo.GetValue(target); + } + + PropertyInfo valuesPropertyInfo = ReflectionUtility.GetProperty(target, valuesName); + if (valuesPropertyInfo != null) + { + return valuesPropertyInfo.GetValue(target); + } + + MethodInfo methodValuesInfo = ReflectionUtility.GetMethod(target, valuesName); + if (methodValuesInfo != null && + methodValuesInfo.ReturnType != typeof(void) && + methodValuesInfo.GetParameters().Length == 0) + { + return methodValuesInfo.Invoke(target, null); + } + + return null; + } + + private bool AreValuesValid(object values, FieldInfo dropdownField) + { + if (values == null || dropdownField == null) + { + return false; + } + + if ((values is IList && dropdownField.FieldType == GetElementType(values)) || + (values is IDropdownList)) + { + return true; + } + + return false; + } + + private Type GetElementType(object values) + { + Type valuesType = values.GetType(); + Type elementType = ReflectionUtility.GetListElementType(valuesType); + + return elementType; + } + } +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..fecae2ce0b48b89eefce5d182b4f839ebc59d148 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/DropdownPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dd080b36769bcd94d909fc0431cf25e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..1499fcf2219db03e59f470ef3a40d5e8d69071f6 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs @@ -0,0 +1,38 @@ +using UnityEngine; +using UnityEditor; +using System; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(EnumFlagsAttribute))] + public class EnumFlagsPropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + Enum targetEnum = PropertyUtility.GetTargetObjectOfProperty(property) as Enum; + + return (targetEnum != null) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + Enum targetEnum = PropertyUtility.GetTargetObjectOfProperty(property) as Enum; + if (targetEnum != null) + { + Enum enumNew = EditorGUI.EnumFlagsField(rect, label.text, targetEnum); + property.intValue = (int)Convert.ChangeType(enumNew, targetEnum.GetType()); + } + else + { + string message = attribute.GetType().Name + " can be used only on enums"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..c0081d298a64d932eb943801a9b62fc94dc96adb --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/EnumFlagsPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b750e1461c1126d4399459b90b31e75e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..627c97ee10a5dd24f596838a824e700ebc6bb9d3 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs @@ -0,0 +1,195 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(ExpandableAttribute))] + public class ExpandablePropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + if (property.objectReferenceValue == null) + { + return GetPropertyHeight(property); + } + + System.Type propertyType = PropertyUtility.GetPropertyType(property); + if (typeof(ScriptableObject).IsAssignableFrom(propertyType)) + { + ScriptableObject scriptableObject = property.objectReferenceValue as ScriptableObject; + if (scriptableObject == null) + { + return GetPropertyHeight(property); + } + + if (property.isExpanded) + { + using (SerializedObject serializedObject = new SerializedObject(scriptableObject)) + { + float totalHeight = EditorGUIUtility.singleLineHeight; + + using (var iterator = serializedObject.GetIterator()) + { + if (iterator.NextVisible(true)) + { + do + { + SerializedProperty childProperty = serializedObject.FindProperty(iterator.name); + if (childProperty.name.Equals("m_Script", System.StringComparison.Ordinal)) + { + continue; + } + + bool visible = PropertyUtility.IsVisible(childProperty); + if (!visible) + { + continue; + } + + float height = GetPropertyHeight(childProperty); + totalHeight += height; + } + while (iterator.NextVisible(false)); + } + } + + totalHeight += EditorGUIUtility.standardVerticalSpacing; + return totalHeight; + } + } + else + { + return GetPropertyHeight(property); + } + } + else + { + return GetPropertyHeight(property) + GetHelpBoxHeight(); + } + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + if (property.objectReferenceValue == null) + { + EditorGUI.PropertyField(rect, property, label, false); + } + else + { + System.Type propertyType = PropertyUtility.GetPropertyType(property); + if (typeof(ScriptableObject).IsAssignableFrom(propertyType)) + { + ScriptableObject scriptableObject = property.objectReferenceValue as ScriptableObject; + if (scriptableObject == null) + { + EditorGUI.PropertyField(rect, property, label, false); + } + else + { + // Draw a foldout + Rect foldoutRect = new Rect() + { + x = rect.x, + y = rect.y, + width = EditorGUIUtility.labelWidth, + height = EditorGUIUtility.singleLineHeight + }; + + property.isExpanded = EditorGUI.Foldout(foldoutRect, property.isExpanded, label, toggleOnLabelClick: true); + + // Draw the scriptable object field + Rect propertyRect = new Rect() + { + x = rect.x, + y = rect.y, + width = rect.width, + height = EditorGUIUtility.singleLineHeight + }; + + EditorGUI.PropertyField(propertyRect, property, label, false); + + // Draw the child properties + if (property.isExpanded) + { + DrawChildProperties(rect, property); + } + } + } + else + { + string message = $"{typeof(ExpandableAttribute).Name} can only be used on scriptable objects"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + } + + property.serializedObject.ApplyModifiedProperties(); + EditorGUI.EndProperty(); + } + + private void DrawChildProperties(Rect rect, SerializedProperty property) + { + ScriptableObject scriptableObject = property.objectReferenceValue as ScriptableObject; + if (scriptableObject == null) + { + return; + } + + Rect boxRect = new Rect() + { + x = 0.0f, + y = rect.y + EditorGUIUtility.singleLineHeight, + width = rect.width * 2.0f, + height = rect.height - EditorGUIUtility.singleLineHeight + }; + + GUI.Box(boxRect, GUIContent.none); + + using (new EditorGUI.IndentLevelScope()) + { + SerializedObject serializedObject = new SerializedObject(scriptableObject); + serializedObject.Update(); + + using (var iterator = serializedObject.GetIterator()) + { + float yOffset = EditorGUIUtility.singleLineHeight; + + if (iterator.NextVisible(true)) + { + do + { + SerializedProperty childProperty = serializedObject.FindProperty(iterator.name); + if (childProperty.name.Equals("m_Script", System.StringComparison.Ordinal)) + { + continue; + } + + bool visible = PropertyUtility.IsVisible(childProperty); + if (!visible) + { + continue; + } + + float childHeight = GetPropertyHeight(childProperty); + Rect childRect = new Rect() + { + x = rect.x, + y = rect.y + yOffset, + width = rect.width, + height = childHeight + }; + + NaughtyEditorGUI.PropertyField(childRect, childProperty, true); + + yOffset += childHeight; + } + while (iterator.NextVisible(false)); + } + } + + serializedObject.ApplyModifiedProperties(); + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..d5925fe00c47629666dbe8a145b01d8b5ab7ccc9 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ExpandablePropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1ddb7194615bdc4e8b2088c8d165d8b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..b6e4bd581ad4e16bc04b891be3489aaca998497d --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs @@ -0,0 +1,77 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(InputAxisAttribute))] + public class InputAxisPropertyDrawer : PropertyDrawerBase + { + private static readonly string AssetPath = Path.Combine("ProjectSettings", "InputManager.asset"); + private const string AxesPropertyPath = "m_Axes"; + private const string NamePropertyPath = "m_Name"; + + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + return (property.propertyType == SerializedPropertyType.String) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + if (property.propertyType == SerializedPropertyType.String) + { + var inputManagerAsset = AssetDatabase.LoadAssetAtPath(AssetPath, typeof(object)); + var inputManager = new SerializedObject(inputManagerAsset); + + var axesProperty = inputManager.FindProperty(AxesPropertyPath); + var axesSet = new HashSet<string>(); + axesSet.Add("(None)"); + + for (var i = 0; i < axesProperty.arraySize; i++) + { + var axis = axesProperty.GetArrayElementAtIndex(i).FindPropertyRelative(NamePropertyPath).stringValue; + axesSet.Add(axis); + } + + var axes = axesSet.ToArray(); + + string propertyString = property.stringValue; + int index = 0; + // check if there is an entry that matches the entry and get the index + // we skip index 0 as that is a special custom case + for (int i = 1; i < axes.Length; i++) + { + if (axes[i].Equals(propertyString, System.StringComparison.Ordinal)) + { + index = i; + break; + } + } + + // Draw the popup box with the current selected index + int newIndex = EditorGUI.Popup(rect, label.text, index, axes); + + // Adjust the actual string value of the property based on the selection + string newValue = newIndex > 0 ? axes[newIndex] : string.Empty; + + if (!property.stringValue.Equals(newValue, System.StringComparison.Ordinal)) + { + property.stringValue = newValue; + } + } + else + { + string message = string.Format("{0} supports only string fields", typeof(InputAxisAttribute).Name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..08f8f4612646180de1104d72de1c0a7ff9ce24fa --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/InputAxisPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0de9d3dfe2d466a458be838edf361645 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..a78bc12955e0d6da7e07f3728425ea8dc793881b --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs @@ -0,0 +1,88 @@ +using UnityEngine; +using UnityEditor; +using System; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(LayerAttribute))] + public class LayerPropertyDrawer : PropertyDrawerBase + { + private const string TypeWarningMessage = "{0} must be an int or a string"; + + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + bool validPropertyType = property.propertyType == SerializedPropertyType.String || property.propertyType == SerializedPropertyType.Integer; + + return validPropertyType + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + switch (property.propertyType) + { + case SerializedPropertyType.String: + DrawPropertyForString(rect, property, label, GetLayers()); + break; + case SerializedPropertyType.Integer: + DrawPropertyForInt(rect, property, label, GetLayers()); + break; + default: + string message = string.Format(TypeWarningMessage, property.name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + break; + } + + EditorGUI.EndProperty(); + } + + private string[] GetLayers() + { + return UnityEditorInternal.InternalEditorUtility.layers; + } + + private static void DrawPropertyForString(Rect rect, SerializedProperty property, GUIContent label, string[] layers) + { + int index = IndexOf(layers, property.stringValue); + int newIndex = EditorGUI.Popup(rect, label.text, index, layers); + string newLayer = layers[newIndex]; + + if (!property.stringValue.Equals(newLayer, StringComparison.Ordinal)) + { + property.stringValue = layers[newIndex]; + } + } + + private static void DrawPropertyForInt(Rect rect, SerializedProperty property, GUIContent label, string[] layers) + { + int index = 0; + string layerName = LayerMask.LayerToName(property.intValue); + for (int i = 0; i < layers.Length; i++) + { + if (layerName.Equals(layers[i], StringComparison.Ordinal)) + { + index = i; + break; + } + } + + int newIndex = EditorGUI.Popup(rect, label.text, index, layers); + string newLayerName = layers[newIndex]; + int newLayerNumber = LayerMask.NameToLayer(newLayerName); + + if (property.intValue != newLayerNumber) + { + property.intValue = newLayerNumber; + } + } + + private static int IndexOf(string[] layers, string layer) + { + var index = Array.IndexOf(layers, layer); + return Mathf.Clamp(index, 0, layers.Length - 1); + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..4b2ac86c00fe7ff526221ca403e2ddbb7b4117ee --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7278ba0893ab7d940b5f944e5b1cf1a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..9b8ff1f0fa23af1903f46c19705ea4ebaaea5409 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs @@ -0,0 +1,108 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(MinMaxSliderAttribute))] + public class MinMaxSliderPropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + return (property.propertyType == SerializedPropertyType.Vector2 || property.propertyType == SerializedPropertyType.Vector2Int) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + MinMaxSliderAttribute minMaxSliderAttribute = (MinMaxSliderAttribute)attribute; + + if (property.propertyType == SerializedPropertyType.Vector2 || property.propertyType == SerializedPropertyType.Vector2Int) + { + EditorGUI.BeginProperty(rect, label, property); + + float indentLength = NaughtyEditorGUI.GetIndentLength(rect); + float labelWidth = EditorGUIUtility.labelWidth + NaughtyEditorGUI.HorizontalSpacing; + float floatFieldWidth = EditorGUIUtility.fieldWidth; + float sliderWidth = rect.width - labelWidth - 2.0f * floatFieldWidth; + float sliderPadding = 5.0f; + + Rect labelRect = new Rect( + rect.x, + rect.y, + labelWidth, + rect.height); + + Rect sliderRect = new Rect( + rect.x + labelWidth + floatFieldWidth + sliderPadding - indentLength, + rect.y, + sliderWidth - 2.0f * sliderPadding + indentLength, + rect.height); + + Rect minFloatFieldRect = new Rect( + rect.x + labelWidth - indentLength, + rect.y, + floatFieldWidth + indentLength, + rect.height); + + Rect maxFloatFieldRect = new Rect( + rect.x + labelWidth + floatFieldWidth + sliderWidth - indentLength, + rect.y, + floatFieldWidth + indentLength, + rect.height); + + // Draw the label + EditorGUI.LabelField(labelRect, label.text); + + // Draw the slider + EditorGUI.BeginChangeCheck(); + + if (property.propertyType == SerializedPropertyType.Vector2) + { + Vector2 sliderValue = property.vector2Value; + EditorGUI.MinMaxSlider(sliderRect, ref sliderValue.x, ref sliderValue.y, minMaxSliderAttribute.MinValue, minMaxSliderAttribute.MaxValue); + + sliderValue.x = EditorGUI.FloatField(minFloatFieldRect, sliderValue.x); + sliderValue.x = Mathf.Clamp(sliderValue.x, minMaxSliderAttribute.MinValue, Mathf.Min(minMaxSliderAttribute.MaxValue, sliderValue.y)); + + sliderValue.y = EditorGUI.FloatField(maxFloatFieldRect, sliderValue.y); + sliderValue.y = Mathf.Clamp(sliderValue.y, Mathf.Max(minMaxSliderAttribute.MinValue, sliderValue.x), minMaxSliderAttribute.MaxValue); + + if (EditorGUI.EndChangeCheck()) + { + property.vector2Value = sliderValue; + } + } + else if (property.propertyType == SerializedPropertyType.Vector2Int) + { + Vector2Int sliderValue = property.vector2IntValue; + float xValue = sliderValue.x; + float yValue = sliderValue.y; + EditorGUI.MinMaxSlider(sliderRect, ref xValue, ref yValue, minMaxSliderAttribute.MinValue, minMaxSliderAttribute.MaxValue); + + sliderValue.x = EditorGUI.IntField(minFloatFieldRect, (int)xValue); + sliderValue.x = (int)Mathf.Clamp(sliderValue.x, minMaxSliderAttribute.MinValue, Mathf.Min(minMaxSliderAttribute.MaxValue, sliderValue.y)); + + sliderValue.y = EditorGUI.IntField(maxFloatFieldRect, (int)yValue); + sliderValue.y = (int)Mathf.Clamp(sliderValue.y, Mathf.Max(minMaxSliderAttribute.MinValue, sliderValue.x), minMaxSliderAttribute.MaxValue); + + if (EditorGUI.EndChangeCheck()) + { + property.vector2IntValue = sliderValue; + } + } + + EditorGUI.EndProperty(); + } + else + { + string message = minMaxSliderAttribute.GetType().Name + " can be used only on Vector2 or Vector2Int fields"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + } +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..4613ffecba03e40c587f577b33b8b95d8287e5fd --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/MinMaxSliderPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27011af81554b5b4489b155f09275475 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..c05ffd470ea1eb67a6b72044d3f0e4e78a87ff6c --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs @@ -0,0 +1,154 @@ +using UnityEngine; +using UnityEditor; +using System.Reflection; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(ProgressBarAttribute))] + public class ProgressBarPropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + ProgressBarAttribute progressBarAttribute = PropertyUtility.GetAttribute<ProgressBarAttribute>(property); + var maxValue = GetMaxValue(property, progressBarAttribute); + + return IsNumber(property) && IsNumber(maxValue) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + if (!IsNumber(property)) + { + string message = string.Format("Field {0} is not a number", property.name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + return; + } + + ProgressBarAttribute progressBarAttribute = PropertyUtility.GetAttribute<ProgressBarAttribute>(property); + var value = property.propertyType == SerializedPropertyType.Integer ? property.intValue : property.floatValue; + var valueFormatted = property.propertyType == SerializedPropertyType.Integer ? value.ToString() : string.Format("{0:0.00}", value); + var maxValue = GetMaxValue(property, progressBarAttribute); + + if (maxValue != null && IsNumber(maxValue)) + { + var fillPercentage = value / CastToFloat(maxValue); + var barLabel = (!string.IsNullOrEmpty(progressBarAttribute.Name) ? "[" + progressBarAttribute.Name + "] " : "") + valueFormatted + "/" + maxValue; + var barColor = progressBarAttribute.Color.GetColor(); + var labelColor = Color.white; + + var indentLength = NaughtyEditorGUI.GetIndentLength(rect); + Rect barRect = new Rect() + { + x = rect.x + indentLength, + y = rect.y, + width = rect.width - indentLength, + height = EditorGUIUtility.singleLineHeight + }; + + DrawBar(barRect, Mathf.Clamp01(fillPercentage), barLabel, barColor, labelColor); + } + else + { + string message = string.Format( + "The provided dynamic max value for the progress bar is not correct. Please check if the '{0}' is correct, or the return type is float/int", + nameof(progressBarAttribute.MaxValueName)); + + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + + private object GetMaxValue(SerializedProperty property, ProgressBarAttribute progressBarAttribute) + { + if (string.IsNullOrEmpty(progressBarAttribute.MaxValueName)) + { + return progressBarAttribute.MaxValue; + } + else + { + object target = PropertyUtility.GetTargetObjectWithProperty(property); + + FieldInfo valuesFieldInfo = ReflectionUtility.GetField(target, progressBarAttribute.MaxValueName); + if (valuesFieldInfo != null) + { + return valuesFieldInfo.GetValue(target); + } + + PropertyInfo valuesPropertyInfo = ReflectionUtility.GetProperty(target, progressBarAttribute.MaxValueName); + if (valuesPropertyInfo != null) + { + return valuesPropertyInfo.GetValue(target); + } + + MethodInfo methodValuesInfo = ReflectionUtility.GetMethod(target, progressBarAttribute.MaxValueName); + if (methodValuesInfo != null && + (methodValuesInfo.ReturnType == typeof(float) || methodValuesInfo.ReturnType == typeof(int)) && + methodValuesInfo.GetParameters().Length == 0) + { + return methodValuesInfo.Invoke(target, null); + } + + return null; + } + } + + private void DrawBar(Rect rect, float fillPercent, string label, Color barColor, Color labelColor) + { + if (Event.current.type != EventType.Repaint) + { + return; + } + + var fillRect = new Rect(rect.x, rect.y, rect.width * fillPercent, rect.height); + + EditorGUI.DrawRect(rect, new Color(0.13f, 0.13f, 0.13f)); + EditorGUI.DrawRect(fillRect, barColor); + + // set alignment and cache the default + var align = GUI.skin.label.alignment; + GUI.skin.label.alignment = TextAnchor.UpperCenter; + + // set the color and cache the default + var c = GUI.contentColor; + GUI.contentColor = labelColor; + + // calculate the position + var labelRect = new Rect(rect.x, rect.y - 2, rect.width, rect.height); + + // draw~ + EditorGUI.DropShadowLabel(labelRect, label); + + // reset color and alignment + GUI.contentColor = c; + GUI.skin.label.alignment = align; + } + + private bool IsNumber(SerializedProperty property) + { + bool isNumber = property.propertyType == SerializedPropertyType.Float || property.propertyType == SerializedPropertyType.Integer; + return isNumber; + } + + private bool IsNumber(object obj) + { + return (obj is float) || (obj is int); + } + + private float CastToFloat(object obj) + { + if (obj is int) + { + return (int)obj; + } + else + { + return (float)obj; + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..dfb90f1a474e906f8657cf4f8209b13585ac9ed2 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ProgressBarPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0bcbc424b10864b4eb6e3bcfb276cdf9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs new file mode 100644 index 0000000000000000000000000000000000000000..883d1ffaed202f466a44167e795a5bf8fd7b72b0 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs @@ -0,0 +1,94 @@ +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + public abstract class PropertyDrawerBase : PropertyDrawer + { + public sealed override void OnGUI(Rect rect, SerializedProperty property, GUIContent label) + { + // Check if visible + bool visible = PropertyUtility.IsVisible(property); + if (!visible) + { + return; + } + + // Validate + ValidatorAttribute[] validatorAttributes = PropertyUtility.GetAttributes<ValidatorAttribute>(property); + foreach (var validatorAttribute in validatorAttributes) + { + validatorAttribute.GetValidator().ValidateProperty(property); + } + + // Check if enabled and draw + EditorGUI.BeginChangeCheck(); + bool enabled = PropertyUtility.IsEnabled(property); + + using (new EditorGUI.DisabledScope(disabled: !enabled)) + { + OnGUI_Internal(rect, property, PropertyUtility.GetLabel(property)); + } + + // Call OnValueChanged callbacks + if (EditorGUI.EndChangeCheck()) + { + PropertyUtility.CallOnValueChangedCallbacks(property); + } + } + + protected abstract void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label); + + sealed override public float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + bool visible = PropertyUtility.IsVisible(property); + if (!visible) + { + return 0.0f; + } + + return GetPropertyHeight_Internal(property, label); + } + + protected virtual float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + return EditorGUI.GetPropertyHeight(property, includeChildren: true); + } + + protected float GetPropertyHeight(SerializedProperty property) + { + SpecialCaseDrawerAttribute specialCaseAttribute = PropertyUtility.GetAttribute<SpecialCaseDrawerAttribute>(property); + if (specialCaseAttribute != null) + { + return specialCaseAttribute.GetDrawer().GetPropertyHeight(property); + } + + return EditorGUI.GetPropertyHeight(property, includeChildren: true); + } + + public virtual float GetHelpBoxHeight() + { + return EditorGUIUtility.singleLineHeight * 2.0f; + } + + public void DrawDefaultPropertyAndHelpBox(Rect rect, SerializedProperty property, string message, MessageType messageType) + { + float indentLength = NaughtyEditorGUI.GetIndentLength(rect); + Rect helpBoxRect = new Rect( + rect.x + indentLength, + rect.y, + rect.width - indentLength, + GetHelpBoxHeight()); + + NaughtyEditorGUI.HelpBox(helpBoxRect, message, MessageType.Warning, context: property.serializedObject.targetObject); + + Rect propertyRect = new Rect( + rect.x, + rect.y + GetHelpBoxHeight(), + rect.width, + GetPropertyHeight(property)); + + EditorGUI.PropertyField(propertyRect, property, true); + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..71a80b6ab1714b8ded2e5aa9b8d47b4ec0c2aa89 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/PropertyDrawerBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 574f5fa6033f26342816a8a5f39749e5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..1c6a5ea0b4cc841e1001b4e73588ce1f303b476f --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs @@ -0,0 +1,80 @@ +using UnityEngine; +using UnityEditor; +using System.Text.RegularExpressions; +using System; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(ResizableTextAreaAttribute))] + public class ResizableTextAreaPropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + if (property.propertyType == SerializedPropertyType.String) + { + float labelHeight = EditorGUIUtility.singleLineHeight; + float textAreaHeight = GetTextAreaHeight(property.stringValue); + return labelHeight + textAreaHeight; + } + else + { + return GetPropertyHeight(property) + GetHelpBoxHeight(); + } + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + if (property.propertyType == SerializedPropertyType.String) + { + Rect labelRect = new Rect() + { + x = rect.x, + y = rect.y, + width = rect.width, + height = EditorGUIUtility.singleLineHeight + }; + + EditorGUI.LabelField(labelRect, label.text); + + EditorGUI.BeginChangeCheck(); + + Rect textAreaRect = new Rect() + { + x = labelRect.x, + y = labelRect.y + EditorGUIUtility.singleLineHeight, + width = labelRect.width, + height = GetTextAreaHeight(property.stringValue) + }; + + string textAreaValue = EditorGUI.TextArea(textAreaRect, property.stringValue); + + if (EditorGUI.EndChangeCheck()) + { + property.stringValue = textAreaValue; + } + } + else + { + string message = typeof(ResizableTextAreaAttribute).Name + " can only be used on string fields"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + + private int GetNumberOfLines(string text) + { + string content = Regex.Replace(text, @"\r\n|\n\r|\r|\n", Environment.NewLine); + string[] lines = content.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); + return lines.Length; + } + + private float GetTextAreaHeight(string text) + { + float height = (EditorGUIUtility.singleLineHeight - 3.0f) * GetNumberOfLines(text) + 3.0f; + return height; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..4b1e4a57075cc0895ef3ac56f2d34cc09aaa2d08 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ResizableTextAreaPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6e27ffd9a96b58c46bb74cc93de3e06f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..2de9255c7039b47c6c93bf753265cc7e4ff83a58 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs @@ -0,0 +1,99 @@ +using UnityEngine; +using UnityEditor; +using System.Linq; +using System.Text.RegularExpressions; +using System; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(SceneAttribute))] + public class ScenePropertyDrawer : PropertyDrawerBase + { + private const string SceneListItem = "{0} ({1})"; + private const string ScenePattern = @".+\/(.+)\.unity"; + private const string TypeWarningMessage = "{0} must be an int or a string"; + private const string BuildSettingsWarningMessage = "No scenes in the build settings"; + + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + bool validPropertyType = property.propertyType == SerializedPropertyType.String || property.propertyType == SerializedPropertyType.Integer; + bool anySceneInBuildSettings = GetScenes().Length > 0; + + return (validPropertyType && anySceneInBuildSettings) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + string[] scenes = GetScenes(); + bool anySceneInBuildSettings = scenes.Length > 0; + if (!anySceneInBuildSettings) + { + DrawDefaultPropertyAndHelpBox(rect, property, BuildSettingsWarningMessage, MessageType.Warning); + return; + } + + string[] sceneOptions = GetSceneOptions(scenes); + switch (property.propertyType) + { + case SerializedPropertyType.String: + DrawPropertyForString(rect, property, label, scenes, sceneOptions); + break; + case SerializedPropertyType.Integer: + DrawPropertyForInt(rect, property, label, sceneOptions); + break; + default: + string message = string.Format(TypeWarningMessage, property.name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + break; + } + + EditorGUI.EndProperty(); + } + + private string[] GetScenes() + { + return EditorBuildSettings.scenes + .Where(scene => scene.enabled) + .Select(scene => Regex.Match(scene.path, ScenePattern).Groups[1].Value) + .ToArray(); + } + + private string[] GetSceneOptions(string[] scenes) + { + return scenes.Select((s, i) => string.Format(SceneListItem, s, i)).ToArray(); + } + + private static void DrawPropertyForString(Rect rect, SerializedProperty property, GUIContent label, string[] scenes, string[] sceneOptions) + { + int index = IndexOf(scenes, property.stringValue); + int newIndex = EditorGUI.Popup(rect, label.text, index, sceneOptions); + string newScene = scenes[newIndex]; + + if (!property.stringValue.Equals(newScene, StringComparison.Ordinal)) + { + property.stringValue = scenes[newIndex]; + } + } + + private static void DrawPropertyForInt(Rect rect, SerializedProperty property, GUIContent label, string[] sceneOptions) + { + int index = property.intValue; + int newIndex = EditorGUI.Popup(rect, label.text, index, sceneOptions); + + if (property.intValue != newIndex) + { + property.intValue = newIndex; + } + } + + private static int IndexOf(string[] scenes, string scene) + { + var index = Array.IndexOf(scenes, scene); + return Mathf.Clamp(index, 0, scenes.Length - 1); + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..a4165442b4097a1e8d0b166aa277abbe91a99d31 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ScenePropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f5ed440d4f429e42a5da7bc5df48fd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..12c27c4657f40bfa49e78813ffa204fb72939f47 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs @@ -0,0 +1,110 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(ShowAssetPreviewAttribute))] + public class ShowAssetPreviewPropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + if (property.propertyType == SerializedPropertyType.ObjectReference) + { + Texture2D previewTexture = GetAssetPreview(property); + if (previewTexture != null) + { + return GetPropertyHeight(property) + GetAssetPreviewSize(property).y; + } + else + { + return GetPropertyHeight(property); + } + } + else + { + return GetPropertyHeight(property) + GetHelpBoxHeight(); + } + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + if (property.propertyType == SerializedPropertyType.ObjectReference) + { + Rect propertyRect = new Rect() + { + x = rect.x, + y = rect.y, + width = rect.width, + height = EditorGUIUtility.singleLineHeight + }; + + EditorGUI.PropertyField(propertyRect, property, label); + + Texture2D previewTexture = GetAssetPreview(property); + if (previewTexture != null) + { + Rect previewRect = new Rect() + { + x = rect.x + NaughtyEditorGUI.GetIndentLength(rect), + y = rect.y + EditorGUIUtility.singleLineHeight, + width = rect.width, + height = GetAssetPreviewSize(property).y + }; + + GUI.Label(previewRect, previewTexture); + } + } + else + { + string message = property.name + " doesn't have an asset preview"; + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + + private Texture2D GetAssetPreview(SerializedProperty property) + { + if (property.propertyType == SerializedPropertyType.ObjectReference) + { + if (property.objectReferenceValue != null) + { + Texture2D previewTexture = AssetPreview.GetAssetPreview(property.objectReferenceValue); + return previewTexture; + } + + return null; + } + + return null; + } + + private Vector2 GetAssetPreviewSize(SerializedProperty property) + { + Texture2D previewTexture = GetAssetPreview(property); + if (previewTexture == null) + { + return Vector2.zero; + } + else + { + int targetWidth = ShowAssetPreviewAttribute.DefaultWidth; + int targetHeight = ShowAssetPreviewAttribute.DefaultHeight; + + ShowAssetPreviewAttribute showAssetPreviewAttribute = PropertyUtility.GetAttribute<ShowAssetPreviewAttribute>(property); + if (showAssetPreviewAttribute != null) + { + targetWidth = showAssetPreviewAttribute.Width; + targetHeight = showAssetPreviewAttribute.Height; + } + + int width = Mathf.Clamp(targetWidth, 0, previewTexture.width); + int height = Mathf.Clamp(targetHeight, 0, previewTexture.height); + + return new Vector2(width, height); + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..5a4d16d20dc3de76c7d9efee433fcca7c0105c86 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/ShowAssetPreviewPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24dee3fc91cfe94438de1e3c158f187f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/SortingLayerPropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/SortingLayerPropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..cb4ea591fe49764eea0653b041c88ecf4cabd4d5 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/SortingLayerPropertyDrawer.cs @@ -0,0 +1,91 @@ +using UnityEngine; +using UnityEditor; +using System; +using System.Reflection; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(SortingLayerAttribute))] + public class SortingLayerPropertyDrawer : PropertyDrawerBase + { + private const string TypeWarningMessage = "{0} must be an int or a string"; + + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + bool validPropertyType = property.propertyType == SerializedPropertyType.String || property.propertyType == SerializedPropertyType.Integer; + + return validPropertyType + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + switch (property.propertyType) + { + case SerializedPropertyType.String: + DrawPropertyForString(rect, property, label, GetLayers()); + break; + case SerializedPropertyType.Integer: + DrawPropertyForInt(rect, property, label, GetLayers()); + break; + default: + string message = string.Format(TypeWarningMessage, property.name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + break; + } + + EditorGUI.EndProperty(); + } + + private string[] GetLayers() + { + Type internalEditorUtilityType = typeof(UnityEditorInternal.InternalEditorUtility); + PropertyInfo sortingLayersProperty = internalEditorUtilityType.GetProperty("sortingLayerNames", BindingFlags.Static | BindingFlags.NonPublic); + return (string[])sortingLayersProperty.GetValue(null, new object[0]); + } + + private static void DrawPropertyForString(Rect rect, SerializedProperty property, GUIContent label, string[] layers) + { + int index = IndexOf(layers, property.stringValue); + int newIndex = EditorGUI.Popup(rect, label.text, index, layers); + string newLayer = layers[newIndex]; + + if (!property.stringValue.Equals(newLayer, StringComparison.Ordinal)) + { + property.stringValue = layers[newIndex]; + } + } + + private static void DrawPropertyForInt(Rect rect, SerializedProperty property, GUIContent label, string[] layers) + { + int index = 0; + string layerName = SortingLayer.IDToName(property.intValue); + for (int i = 0; i < layers.Length; i++) + { + if (layerName.Equals(layers[i], StringComparison.Ordinal)) + { + index = i; + break; + } + } + + int newIndex = EditorGUI.Popup(rect, label.text, index, layers); + string newLayerName = layers[newIndex]; + int newLayerNumber = SortingLayer.NameToID(newLayerName); + + if (property.intValue != newLayerNumber) + { + property.intValue = newLayerNumber; + } + } + + private static int IndexOf(string[] layers, string layer) + { + var index = Array.IndexOf(layers, layer); + return Mathf.Clamp(index, 0, layers.Length - 1); + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/SortingLayerPropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/SortingLayerPropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..d99bdf93c3a286c9a76c723bb77bd80a6a0cea8c --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/SortingLayerPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0ed20ed34d732246a98cde96351fccb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..7176d9ea40e1bd0f120b783a454ab56809d11d46 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + [CustomPropertyDrawer(typeof(TagAttribute))] + public class TagPropertyDrawer : PropertyDrawerBase + { + protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) + { + return (property.propertyType == SerializedPropertyType.String) + ? GetPropertyHeight(property) + : GetPropertyHeight(property) + GetHelpBoxHeight(); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(rect, label, property); + + if (property.propertyType == SerializedPropertyType.String) + { + // generate the taglist + custom tags + List<string> tagList = new List<string>(); + tagList.Add("(None)"); + tagList.Add("Untagged"); + tagList.AddRange(UnityEditorInternal.InternalEditorUtility.tags); + + string propertyString = property.stringValue; + int index = 0; + // check if there is an entry that matches the entry and get the index + // we skip index 0 as that is a special custom case + for (int i = 1; i < tagList.Count; i++) + { + if (tagList[i].Equals(propertyString, System.StringComparison.Ordinal)) + { + index = i; + break; + } + } + + // Draw the popup box with the current selected index + int newIndex = EditorGUI.Popup(rect, label.text, index, tagList.ToArray()); + + // Adjust the actual string value of the property based on the selection + string newValue = newIndex > 0 ? tagList[newIndex] : string.Empty; + + if (!property.stringValue.Equals(newValue, System.StringComparison.Ordinal)) + { + property.stringValue = newValue; + } + } + else + { + string message = string.Format("{0} supports only string fields", typeof(TagAttribute).Name); + DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); + } + + EditorGUI.EndProperty(); + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..75f76c59864d035e9807bf7cacba02be93f1df6c --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers/TagPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3df4c068c970ab6498df7a60efbde311 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase.meta new file mode 100644 index 0000000000000000000000000000000000000000..88cd4587de26c0df7cbaaf46252987b9a782a02a --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 750a102004a7e4f46a2046a3d74cae19 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs new file mode 100644 index 0000000000000000000000000000000000000000..3790442bced66f1e220c51b0945fa7b20ab78538 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs @@ -0,0 +1,205 @@ +using UnityEngine; +using UnityEditor; +using UnityEditorInternal; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public class ReorderableListPropertyDrawer : SpecialCasePropertyDrawerBase + { + public static readonly ReorderableListPropertyDrawer Instance = new ReorderableListPropertyDrawer(); + + private readonly Dictionary<string, ReorderableList> _reorderableListsByPropertyName = new Dictionary<string, ReorderableList>(); + + private GUIStyle _labelStyle; + + private GUIStyle GetLabelStyle() + { + if (_labelStyle == null) + { + _labelStyle = new GUIStyle(EditorStyles.boldLabel); + _labelStyle.richText = true; + } + + return _labelStyle; + } + + private string GetPropertyKeyName(SerializedProperty property) + { + return property.serializedObject.targetObject.GetInstanceID() + "." + property.name; + } + + protected override float GetPropertyHeight_Internal(SerializedProperty property) + { + if (property.isArray) + { + string key = GetPropertyKeyName(property); + + if (_reorderableListsByPropertyName.TryGetValue(key, out ReorderableList reorderableList) == false) + { + return 0; + } + + return reorderableList.GetHeight(); + } + + return EditorGUI.GetPropertyHeight(property, true); + } + + protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) + { + if (property.isArray) + { + string key = GetPropertyKeyName(property); + + ReorderableList reorderableList = null; + if (!_reorderableListsByPropertyName.ContainsKey(key)) + { + reorderableList = new ReorderableList(property.serializedObject, property, true, true, true, true) + { + drawHeaderCallback = (Rect r) => + { + EditorGUI.LabelField(r, string.Format("{0}: {1}", label.text, property.arraySize), GetLabelStyle()); + HandleDragAndDrop(r, reorderableList); + }, + + drawElementCallback = (Rect r, int index, bool isActive, bool isFocused) => + { + SerializedProperty element = property.GetArrayElementAtIndex(index); + r.y += 1.0f; + r.x += 10.0f; + r.width -= 10.0f; + + EditorGUI.PropertyField(new Rect(r.x, r.y, r.width, EditorGUIUtility.singleLineHeight), element, true); + }, + + elementHeightCallback = (int index) => + { + return EditorGUI.GetPropertyHeight(property.GetArrayElementAtIndex(index)) + 4.0f; + } + }; + + _reorderableListsByPropertyName[key] = reorderableList; + } + + reorderableList = _reorderableListsByPropertyName[key]; + + if (rect == default) + { + reorderableList.DoLayoutList(); + } + else + { + reorderableList.DoList(rect); + } + } + else + { + string message = typeof(ReorderableListAttribute).Name + " can be used only on arrays or lists"; + NaughtyEditorGUI.HelpBox_Layout(message, MessageType.Warning, context: property.serializedObject.targetObject); + EditorGUILayout.PropertyField(property, true); + } + } + + public void ClearCache() + { + _reorderableListsByPropertyName.Clear(); + } + + private Object GetAssignableObject(Object obj, ReorderableList list) + { + System.Type listType = PropertyUtility.GetPropertyType(list.serializedProperty); + System.Type elementType = ReflectionUtility.GetListElementType(listType); + + if (elementType == null) + { + return null; + } + + System.Type objType = obj.GetType(); + + if (elementType.IsAssignableFrom(objType)) + { + return obj; + } + + if (objType == typeof(GameObject)) + { + if (typeof(Transform).IsAssignableFrom(elementType)) + { + Transform transform = ((GameObject)obj).transform; + if (elementType == typeof(RectTransform)) + { + RectTransform rectTransform = transform as RectTransform; + return rectTransform; + } + else + { + return transform; + } + } + else if (typeof(MonoBehaviour).IsAssignableFrom(elementType)) + { + return ((GameObject)obj).GetComponent(elementType); + } + } + + return null; + } + + private void HandleDragAndDrop(Rect rect, ReorderableList list) + { + var currentEvent = Event.current; + var usedEvent = false; + + switch (currentEvent.type) + { + case EventType.DragExited: + if (GUI.enabled) + { + HandleUtility.Repaint(); + } + + break; + + case EventType.DragUpdated: + case EventType.DragPerform: + if (rect.Contains(currentEvent.mousePosition) && GUI.enabled) + { + // Check each single object, so we can add multiple objects in a single drag. + bool didAcceptDrag = false; + Object[] references = DragAndDrop.objectReferences; + foreach (Object obj in references) + { + Object assignableObject = GetAssignableObject(obj, list); + if (assignableObject != null) + { + DragAndDrop.visualMode = DragAndDropVisualMode.Copy; + if (currentEvent.type == EventType.DragPerform) + { + list.serializedProperty.arraySize++; + int arrayEnd = list.serializedProperty.arraySize - 1; + list.serializedProperty.GetArrayElementAtIndex(arrayEnd).objectReferenceValue = assignableObject; + didAcceptDrag = true; + } + } + } + + if (didAcceptDrag) + { + GUI.changed = true; + DragAndDrop.AcceptDrag(); + usedEvent = true; + } + } + + break; + } + + if (usedEvent) + { + currentEvent.Use(); + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..4ff1a6612f38e1cf1ab3a53b95a8b3234d112237 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase/ReorderableListPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bf36691a6d456564db2fcbfa8726b3f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs new file mode 100644 index 0000000000000000000000000000000000000000..1f29d162cc7998c32226bc76dfd3ed8bfc17e3ab --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + public abstract class SpecialCasePropertyDrawerBase + { + public void OnGUI(Rect rect, SerializedProperty property) + { + // Check if visible + bool visible = PropertyUtility.IsVisible(property); + if (!visible) + { + return; + } + + // Validate + ValidatorAttribute[] validatorAttributes = PropertyUtility.GetAttributes<ValidatorAttribute>(property); + foreach (var validatorAttribute in validatorAttributes) + { + validatorAttribute.GetValidator().ValidateProperty(property); + } + + // Check if enabled and draw + EditorGUI.BeginChangeCheck(); + bool enabled = PropertyUtility.IsEnabled(property); + + using (new EditorGUI.DisabledScope(disabled: !enabled)) + { + OnGUI_Internal(rect, property, PropertyUtility.GetLabel(property)); + } + + // Call OnValueChanged callbacks + if (EditorGUI.EndChangeCheck()) + { + PropertyUtility.CallOnValueChangedCallbacks(property); + } + } + + public float GetPropertyHeight(SerializedProperty property) + { + return GetPropertyHeight_Internal(property); + } + + protected abstract void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label); + protected abstract float GetPropertyHeight_Internal(SerializedProperty property); + } + + public static class SpecialCaseDrawerAttributeExtensions + { + private static Dictionary<Type, SpecialCasePropertyDrawerBase> _drawersByAttributeType; + + static SpecialCaseDrawerAttributeExtensions() + { + _drawersByAttributeType = new Dictionary<Type, SpecialCasePropertyDrawerBase>(); + _drawersByAttributeType[typeof(ReorderableListAttribute)] = ReorderableListPropertyDrawer.Instance; + } + + public static SpecialCasePropertyDrawerBase GetDrawer(this SpecialCaseDrawerAttribute attr) + { + SpecialCasePropertyDrawerBase drawer; + if (_drawersByAttributeType.TryGetValue(attr.GetType(), out drawer)) + { + return drawer; + } + else + { + return null; + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..c60287c70d37a739b42033d361dea2b4728b7e53 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyDrawers_SpecialCase/SpecialCasePropertyDrawerBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 771776453ad34b045a41dea54856fa12 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators.meta new file mode 100644 index 0000000000000000000000000000000000000000..949d96db08b0a1f54ca34ba7d4791d779d69027f --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 41caedece93df91439d624dc9d124424 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs new file mode 100644 index 0000000000000000000000000000000000000000..2cfa0ed8c0857a8b2776dd6a68561d0c9bc234fe --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs @@ -0,0 +1,53 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + public class MaxValuePropertyValidator : PropertyValidatorBase + { + public override void ValidateProperty(SerializedProperty property) + { + MaxValueAttribute maxValueAttribute = PropertyUtility.GetAttribute<MaxValueAttribute>(property); + + if (property.propertyType == SerializedPropertyType.Integer) + { + if (property.intValue > maxValueAttribute.MaxValue) + { + property.intValue = (int)maxValueAttribute.MaxValue; + } + } + else if (property.propertyType == SerializedPropertyType.Float) + { + if (property.floatValue > maxValueAttribute.MaxValue) + { + property.floatValue = maxValueAttribute.MaxValue; + } + } + else if (property.propertyType == SerializedPropertyType.Vector2) + { + property.vector2Value = Vector2.Min(property.vector2Value, new Vector2(maxValueAttribute.MaxValue, maxValueAttribute.MaxValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector3) + { + property.vector3Value = Vector3.Min(property.vector3Value, new Vector3(maxValueAttribute.MaxValue, maxValueAttribute.MaxValue, maxValueAttribute.MaxValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector4) + { + property.vector4Value = Vector4.Min(property.vector4Value, new Vector4(maxValueAttribute.MaxValue, maxValueAttribute.MaxValue, maxValueAttribute.MaxValue, maxValueAttribute.MaxValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector2Int) + { + property.vector2IntValue = Vector2Int.Min(property.vector2IntValue, new Vector2Int((int)maxValueAttribute.MaxValue, (int)maxValueAttribute.MaxValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector3Int) + { + property.vector3IntValue = Vector3Int.Min(property.vector3IntValue, new Vector3Int((int)maxValueAttribute.MaxValue, (int)maxValueAttribute.MaxValue, (int)maxValueAttribute.MaxValue)); + } + else + { + string warning = maxValueAttribute.GetType().Name + " can be used only on int, float, Vector or VectorInt fields"; + Debug.LogWarning(warning, property.serializedObject.targetObject); + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..3e809ac2067bfd363051e98cad7d08757ee4bb6e --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/MaxValuePropertyValidator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 627b8e9e7bda6fa408c6f47fb8285665 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs new file mode 100644 index 0000000000000000000000000000000000000000..a50a6d27f48f2df14452aeb604ad45763d95db34 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs @@ -0,0 +1,53 @@ +using UnityEngine; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + public class MinValuePropertyValidator : PropertyValidatorBase + { + public override void ValidateProperty(SerializedProperty property) + { + MinValueAttribute minValueAttribute = PropertyUtility.GetAttribute<MinValueAttribute>(property); + + if (property.propertyType == SerializedPropertyType.Integer) + { + if (property.intValue < minValueAttribute.MinValue) + { + property.intValue = (int)minValueAttribute.MinValue; + } + } + else if (property.propertyType == SerializedPropertyType.Float) + { + if (property.floatValue < minValueAttribute.MinValue) + { + property.floatValue = minValueAttribute.MinValue; + } + } + else if (property.propertyType == SerializedPropertyType.Vector2) + { + property.vector2Value = Vector2.Max(property.vector2Value, new Vector2(minValueAttribute.MinValue, minValueAttribute.MinValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector3) + { + property.vector3Value = Vector3.Max(property.vector3Value, new Vector3(minValueAttribute.MinValue, minValueAttribute.MinValue, minValueAttribute.MinValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector4) + { + property.vector4Value = Vector4.Max(property.vector4Value, new Vector4(minValueAttribute.MinValue, minValueAttribute.MinValue, minValueAttribute.MinValue, minValueAttribute.MinValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector2Int) + { + property.vector2IntValue = Vector2Int.Max(property.vector2IntValue, new Vector2Int((int)minValueAttribute.MinValue, (int)minValueAttribute.MinValue)); + } + else if (property.propertyType == SerializedPropertyType.Vector3Int) + { + property.vector3IntValue = Vector3Int.Max(property.vector3IntValue, new Vector3Int((int)minValueAttribute.MinValue, (int)minValueAttribute.MinValue, (int)minValueAttribute.MinValue)); + } + else + { + string warning = minValueAttribute.GetType().Name + " can be used only on int, float, Vector or VectorInt fields"; + Debug.LogWarning(warning, property.serializedObject.targetObject); + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..b3bb871bfdc51ccfe873f9d1a5855f384e36cc7b --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/MinValuePropertyValidator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03dd23f6c0598074fb1b721dcd8fe023 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs new file mode 100644 index 0000000000000000000000000000000000000000..240cdb27497ab7b3b0e32a95a3f8fea933ae49be --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + public abstract class PropertyValidatorBase + { + public abstract void ValidateProperty(SerializedProperty property); + } + + public static class ValidatorAttributeExtensions + { + private static Dictionary<Type, PropertyValidatorBase> _validatorsByAttributeType; + + static ValidatorAttributeExtensions() + { + _validatorsByAttributeType = new Dictionary<Type, PropertyValidatorBase>(); + _validatorsByAttributeType[typeof(MinValueAttribute)] = new MinValuePropertyValidator(); + _validatorsByAttributeType[typeof(MaxValueAttribute)] = new MaxValuePropertyValidator(); + _validatorsByAttributeType[typeof(RequiredAttribute)] = new RequiredPropertyValidator(); + _validatorsByAttributeType[typeof(ValidateInputAttribute)] = new ValidateInputPropertyValidator(); + } + + public static PropertyValidatorBase GetValidator(this ValidatorAttribute attr) + { + PropertyValidatorBase validator; + if (_validatorsByAttributeType.TryGetValue(attr.GetType(), out validator)) + { + return validator; + } + else + { + return null; + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..97fe581270b881d21c05d7ee2573f4f746c80b7f --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/PropertyValidatorBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f332c8e1c3627d742aa9158af7b02ccc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs new file mode 100644 index 0000000000000000000000000000000000000000..491b4fabe61ff435d29db28ecca68ae4a01124c5 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs @@ -0,0 +1,31 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + public class RequiredPropertyValidator : PropertyValidatorBase + { + public override void ValidateProperty(SerializedProperty property) + { + RequiredAttribute requiredAttribute = PropertyUtility.GetAttribute<RequiredAttribute>(property); + + if (property.propertyType == SerializedPropertyType.ObjectReference) + { + if (property.objectReferenceValue == null) + { + string errorMessage = property.name + " is required"; + if (!string.IsNullOrEmpty(requiredAttribute.Message)) + { + errorMessage = requiredAttribute.Message; + } + + NaughtyEditorGUI.HelpBox_Layout(errorMessage, MessageType.Error, context: property.serializedObject.targetObject); + } + } + else + { + string warning = requiredAttribute.GetType().Name + " works only on reference types"; + NaughtyEditorGUI.HelpBox_Layout(warning, MessageType.Warning, context: property.serializedObject.targetObject); + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..d24143ac4a621681cee72d512f1d90a7705e1de9 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/RequiredPropertyValidator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a7e657ea45f6414682b5f41be9541b4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs new file mode 100644 index 0000000000000000000000000000000000000000..10bf22f296eb1970ad970bda764adb867fd52b40 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs @@ -0,0 +1,76 @@ +using UnityEditor; +using System.Reflection; +using System; + +namespace NaughtyAttributes.Editor +{ + public class ValidateInputPropertyValidator : PropertyValidatorBase + { + public override void ValidateProperty(SerializedProperty property) + { + ValidateInputAttribute validateInputAttribute = PropertyUtility.GetAttribute<ValidateInputAttribute>(property); + object target = PropertyUtility.GetTargetObjectWithProperty(property); + + MethodInfo validationCallback = ReflectionUtility.GetMethod(target, validateInputAttribute.CallbackName); + + if (validationCallback != null && + validationCallback.ReturnType == typeof(bool)) + { + ParameterInfo[] callbackParameters = validationCallback.GetParameters(); + + if (callbackParameters.Length == 0) + { + if (!(bool)validationCallback.Invoke(target, null)) + { + if (string.IsNullOrEmpty(validateInputAttribute.Message)) + { + NaughtyEditorGUI.HelpBox_Layout( + property.name + " is not valid", MessageType.Error, context: property.serializedObject.targetObject); + } + else + { + NaughtyEditorGUI.HelpBox_Layout( + validateInputAttribute.Message, MessageType.Error, context: property.serializedObject.targetObject); + } + } + } + else if (callbackParameters.Length == 1) + { + FieldInfo fieldInfo = ReflectionUtility.GetField(target, property.name); + Type fieldType = fieldInfo.FieldType; + Type parameterType = callbackParameters[0].ParameterType; + + if (fieldType == parameterType) + { + if (!(bool)validationCallback.Invoke(target, new object[] { fieldInfo.GetValue(target) })) + { + if (string.IsNullOrEmpty(validateInputAttribute.Message)) + { + NaughtyEditorGUI.HelpBox_Layout( + property.name + " is not valid", MessageType.Error, context: property.serializedObject.targetObject); + } + else + { + NaughtyEditorGUI.HelpBox_Layout( + validateInputAttribute.Message, MessageType.Error, context: property.serializedObject.targetObject); + } + } + } + else + { + string warning = "The field type is not the same as the callback's parameter type"; + NaughtyEditorGUI.HelpBox_Layout(warning, MessageType.Warning, context: property.serializedObject.targetObject); + } + } + else + { + string warning = + validateInputAttribute.GetType().Name + + " needs a callback with boolean return type and an optional single parameter of the same type as the field"; + + NaughtyEditorGUI.HelpBox_Layout(warning, MessageType.Warning, context: property.serializedObject.targetObject); + } + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..3f6e5393977870977de924e6cc33c562c1bf2191 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/PropertyValidators/ValidateInputPropertyValidator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f6adf84ed53a7840a456e8b4dce38d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility.meta new file mode 100644 index 0000000000000000000000000000000000000000..ed16eddd14c2087be9d560a986abe41606a2111f --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: acb4475c71a3fe947a81ced84ab89c6d +folderAsset: yes +timeCreated: 1508062761 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/ButtonUtility.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/ButtonUtility.cs new file mode 100644 index 0000000000000000000000000000000000000000..65a2e261cf57a0da8d50ba68dcb4bccdcf8a8e74 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/ButtonUtility.cs @@ -0,0 +1,55 @@ +using UnityEngine; +using System.Reflection; +using System.Collections.Generic; + +namespace NaughtyAttributes.Editor +{ + public static class ButtonUtility + { + public static bool IsEnabled(Object target, MethodInfo method) + { + EnableIfAttributeBase enableIfAttribute = method.GetCustomAttribute<EnableIfAttributeBase>(); + if (enableIfAttribute == null) + { + return true; + } + + List<bool> conditionValues = PropertyUtility.GetConditionValues(target, enableIfAttribute.Conditions); + if (conditionValues.Count > 0) + { + bool enabled = PropertyUtility.GetConditionsFlag(conditionValues, enableIfAttribute.ConditionOperator, enableIfAttribute.Inverted); + return enabled; + } + else + { + string message = enableIfAttribute.GetType().Name + " needs a valid boolean condition field, property or method name to work"; + Debug.LogWarning(message, target); + + return false; + } + } + + public static bool IsVisible(Object target, MethodInfo method) + { + ShowIfAttributeBase showIfAttribute = method.GetCustomAttribute<ShowIfAttributeBase>(); + if (showIfAttribute == null) + { + return true; + } + + List<bool> conditionValues = PropertyUtility.GetConditionValues(target, showIfAttribute.Conditions); + if (conditionValues.Count > 0) + { + bool enabled = PropertyUtility.GetConditionsFlag(conditionValues, showIfAttribute.ConditionOperator, showIfAttribute.Inverted); + return enabled; + } + else + { + string message = showIfAttribute.GetType().Name + " needs a valid boolean condition field, property or method name to work"; + Debug.LogWarning(message, target); + + return false; + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/ButtonUtility.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/ButtonUtility.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..cf4dacee1e916e7956a3150bf1170c1212aa6c4a --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/ButtonUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a273f81125ec52d4cb5dec2228afda0e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/NaughtyEditorGUI.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/NaughtyEditorGUI.cs new file mode 100644 index 0000000000000000000000000000000000000000..78d8c6797ee5b9f912e1c90150dc207a170625c5 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/NaughtyEditorGUI.cs @@ -0,0 +1,380 @@ +using System; +using System.Collections; +using System.Linq; +using System.Reflection; +using UnityEditor; +using UnityEditor.Experimental.SceneManagement; +using UnityEditor.SceneManagement; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + public static class NaughtyEditorGUI + { + public const float IndentLength = 15.0f; + public const float HorizontalSpacing = 2.0f; + + private static GUIStyle _buttonStyle = new GUIStyle(GUI.skin.button) { richText = true }; + + private delegate void PropertyFieldFunction(Rect rect, SerializedProperty property, GUIContent label, bool includeChildren); + + public static void PropertyField(Rect rect, SerializedProperty property, bool includeChildren) + { + PropertyField_Implementation(rect, property, includeChildren, DrawPropertyField); + } + + public static void PropertyField_Layout(SerializedProperty property, bool includeChildren) + { + Rect dummyRect = new Rect(); + PropertyField_Implementation(dummyRect, property, includeChildren, DrawPropertyField_Layout); + } + + private static void DrawPropertyField(Rect rect, SerializedProperty property, GUIContent label, bool includeChildren) + { + EditorGUI.PropertyField(rect, property, label, includeChildren); + } + + private static void DrawPropertyField_Layout(Rect rect, SerializedProperty property, GUIContent label, bool includeChildren) + { + EditorGUILayout.PropertyField(property, label, includeChildren); + } + + private static void PropertyField_Implementation(Rect rect, SerializedProperty property, bool includeChildren, PropertyFieldFunction propertyFieldFunction) + { + SpecialCaseDrawerAttribute specialCaseAttribute = PropertyUtility.GetAttribute<SpecialCaseDrawerAttribute>(property); + if (specialCaseAttribute != null) + { + specialCaseAttribute.GetDrawer().OnGUI(rect, property); + } + else + { + // Check if visible + bool visible = PropertyUtility.IsVisible(property); + if (!visible) + { + return; + } + + // Validate + ValidatorAttribute[] validatorAttributes = PropertyUtility.GetAttributes<ValidatorAttribute>(property); + foreach (var validatorAttribute in validatorAttributes) + { + validatorAttribute.GetValidator().ValidateProperty(property); + } + + // Check if enabled and draw + EditorGUI.BeginChangeCheck(); + bool enabled = PropertyUtility.IsEnabled(property); + + using (new EditorGUI.DisabledScope(disabled: !enabled)) + { + propertyFieldFunction.Invoke(rect, property, PropertyUtility.GetLabel(property), includeChildren); + } + + // Call OnValueChanged callbacks + if (EditorGUI.EndChangeCheck()) + { + PropertyUtility.CallOnValueChangedCallbacks(property); + } + } + } + + public static float GetIndentLength(Rect sourceRect) + { + Rect indentRect = EditorGUI.IndentedRect(sourceRect); + float indentLength = indentRect.x - sourceRect.x; + + return indentLength; + } + + public static void BeginBoxGroup_Layout(string label = "") + { + EditorGUILayout.BeginVertical(GUI.skin.box); + if (!string.IsNullOrEmpty(label)) + { + EditorGUILayout.LabelField(label, EditorStyles.boldLabel); + } + } + + public static void EndBoxGroup_Layout() + { + EditorGUILayout.EndVertical(); + } + + /// <summary> + /// Creates a dropdown + /// </summary> + /// <param name="rect">The rect the defines the position and size of the dropdown in the inspector</param> + /// <param name="serializedObject">The serialized object that is being updated</param> + /// <param name="target">The target object that contains the dropdown</param> + /// <param name="dropdownField">The field of the target object that holds the currently selected dropdown value</param> + /// <param name="label">The label of the dropdown</param> + /// <param name="selectedValueIndex">The index of the value from the values array</param> + /// <param name="values">The values of the dropdown</param> + /// <param name="displayOptions">The display options for the values</param> + public static void Dropdown( + Rect rect, SerializedObject serializedObject, object target, FieldInfo dropdownField, + string label, int selectedValueIndex, object[] values, string[] displayOptions) + { + EditorGUI.BeginChangeCheck(); + + int newIndex = EditorGUI.Popup(rect, label, selectedValueIndex, displayOptions); + object newValue = values[newIndex]; + + object dropdownValue = dropdownField.GetValue(target); + if (dropdownValue == null || !dropdownValue.Equals(newValue)) + { + Undo.RecordObject(serializedObject.targetObject, "Dropdown"); + + // TODO: Problem with structs, because they are value type. + // The solution is to make boxing/unboxing but unfortunately I don't know the compile time type of the target object + dropdownField.SetValue(target, newValue); + } + } + + public static void Button(UnityEngine.Object target, MethodInfo methodInfo) + { + bool visible = ButtonUtility.IsVisible(target, methodInfo); + if (!visible) + { + return; + } + + if (methodInfo.GetParameters().All(p => p.IsOptional)) + { + ButtonAttribute buttonAttribute = (ButtonAttribute)methodInfo.GetCustomAttributes(typeof(ButtonAttribute), true)[0]; + string buttonText = string.IsNullOrEmpty(buttonAttribute.Text) ? ObjectNames.NicifyVariableName(methodInfo.Name) : buttonAttribute.Text; + + bool buttonEnabled = ButtonUtility.IsEnabled(target, methodInfo); + + EButtonEnableMode mode = buttonAttribute.SelectedEnableMode; + buttonEnabled &= + mode == EButtonEnableMode.Always || + mode == EButtonEnableMode.Editor && !Application.isPlaying || + mode == EButtonEnableMode.Playmode && Application.isPlaying; + + bool methodIsCoroutine = methodInfo.ReturnType == typeof(IEnumerator); + if (methodIsCoroutine) + { + buttonEnabled &= (Application.isPlaying ? true : false); + } + + EditorGUI.BeginDisabledGroup(!buttonEnabled); + + if (GUILayout.Button(buttonText, _buttonStyle)) + { + object[] defaultParams = methodInfo.GetParameters().Select(p => p.DefaultValue).ToArray(); + IEnumerator methodResult = methodInfo.Invoke(target, defaultParams) as IEnumerator; + + if (!Application.isPlaying) + { + // Set target object and scene dirty to serialize changes to disk + EditorUtility.SetDirty(target); + + PrefabStage stage = PrefabStageUtility.GetCurrentPrefabStage(); + if (stage != null) + { + // Prefab mode + EditorSceneManager.MarkSceneDirty(stage.scene); + } + else + { + // Normal scene + EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); + } + } + else if (methodResult != null && target is MonoBehaviour behaviour) + { + behaviour.StartCoroutine(methodResult); + } + } + + EditorGUI.EndDisabledGroup(); + } + else + { + string warning = typeof(ButtonAttribute).Name + " works only on methods with no parameters"; + HelpBox_Layout(warning, MessageType.Warning, context: target, logToConsole: true); + } + } + + public static void NativeProperty_Layout(UnityEngine.Object target, PropertyInfo property) + { + object value = property.GetValue(target, null); + + if (value == null) + { + string warning = string.Format("{0} is null. {1} doesn't support reference types with null value", ObjectNames.NicifyVariableName(property.Name), typeof(ShowNativePropertyAttribute).Name); + HelpBox_Layout(warning, MessageType.Warning, context: target); + } + else if (!Field_Layout(value, ObjectNames.NicifyVariableName(property.Name))) + { + string warning = string.Format("{0} doesn't support {1} types", typeof(ShowNativePropertyAttribute).Name, property.PropertyType.Name); + HelpBox_Layout(warning, MessageType.Warning, context: target); + } + } + + public static void NonSerializedField_Layout(UnityEngine.Object target, FieldInfo field) + { + object value = field.GetValue(target); + + if (value == null) + { + string warning = string.Format("{0} is null. {1} doesn't support reference types with null value", ObjectNames.NicifyVariableName(field.Name), typeof(ShowNonSerializedFieldAttribute).Name); + HelpBox_Layout(warning, MessageType.Warning, context: target); + } + else if (!Field_Layout(value, ObjectNames.NicifyVariableName(field.Name))) + { + string warning = string.Format("{0} doesn't support {1} types", typeof(ShowNonSerializedFieldAttribute).Name, field.FieldType.Name); + HelpBox_Layout(warning, MessageType.Warning, context: target); + } + } + + public static void HorizontalLine(Rect rect, float height, Color color) + { + rect.height = height; + EditorGUI.DrawRect(rect, color); + } + + public static void HelpBox(Rect rect, string message, MessageType type, UnityEngine.Object context = null, bool logToConsole = false) + { + EditorGUI.HelpBox(rect, message, type); + + if (logToConsole) + { + DebugLogMessage(message, type, context); + } + } + + public static void HelpBox_Layout(string message, MessageType type, UnityEngine.Object context = null, bool logToConsole = false) + { + EditorGUILayout.HelpBox(message, type); + + if (logToConsole) + { + DebugLogMessage(message, type, context); + } + } + + public static bool Field_Layout(object value, string label) + { + using (new EditorGUI.DisabledScope(disabled: true)) + { + bool isDrawn = true; + Type valueType = value.GetType(); + + if (valueType == typeof(bool)) + { + EditorGUILayout.Toggle(label, (bool)value); + } + else if (valueType == typeof(short)) + { + EditorGUILayout.IntField(label, (short)value); + } + else if (valueType == typeof(ushort)) + { + EditorGUILayout.IntField(label, (ushort)value); + } + else if (valueType == typeof(int)) + { + EditorGUILayout.IntField(label, (int)value); + } + else if (valueType == typeof(uint)) + { + EditorGUILayout.LongField(label, (uint)value); + } + else if (valueType == typeof(long)) + { + EditorGUILayout.LongField(label, (long)value); + } + else if (valueType == typeof(ulong)) + { + EditorGUILayout.TextField(label, ((ulong)value).ToString()); + } + else if (valueType == typeof(float)) + { + EditorGUILayout.FloatField(label, (float)value); + } + else if (valueType == typeof(double)) + { + EditorGUILayout.DoubleField(label, (double)value); + } + else if (valueType == typeof(string)) + { + EditorGUILayout.TextField(label, (string)value); + } + else if (valueType == typeof(Vector2)) + { + EditorGUILayout.Vector2Field(label, (Vector2)value); + } + else if (valueType == typeof(Vector3)) + { + EditorGUILayout.Vector3Field(label, (Vector3)value); + } + else if (valueType == typeof(Vector4)) + { + EditorGUILayout.Vector4Field(label, (Vector4)value); + } + else if (valueType == typeof(Vector2Int)) + { + EditorGUILayout.Vector2IntField(label, (Vector2Int)value); + } + else if (valueType == typeof(Vector3Int)) + { + EditorGUILayout.Vector3IntField(label, (Vector3Int)value); + } + else if (valueType == typeof(Color)) + { + EditorGUILayout.ColorField(label, (Color)value); + } + else if (valueType == typeof(Bounds)) + { + EditorGUILayout.BoundsField(label, (Bounds)value); + } + else if (valueType == typeof(Rect)) + { + EditorGUILayout.RectField(label, (Rect)value); + } + else if (valueType == typeof(RectInt)) + { + EditorGUILayout.RectIntField(label, (RectInt)value); + } + else if (typeof(UnityEngine.Object).IsAssignableFrom(valueType)) + { + EditorGUILayout.ObjectField(label, (UnityEngine.Object)value, valueType, true); + } + else if (valueType.BaseType == typeof(Enum)) + { + EditorGUILayout.EnumPopup(label, (Enum)value); + } + else if (valueType.BaseType == typeof(System.Reflection.TypeInfo)) + { + EditorGUILayout.TextField(label, value.ToString()); + } + else + { + isDrawn = false; + } + + return isDrawn; + } + } + + private static void DebugLogMessage(string message, MessageType type, UnityEngine.Object context) + { + switch (type) + { + case MessageType.None: + case MessageType.Info: + Debug.Log(message, context); + break; + case MessageType.Warning: + Debug.LogWarning(message, context); + break; + case MessageType.Error: + Debug.LogError(message, context); + break; + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/NaughtyEditorGUI.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/NaughtyEditorGUI.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..704d3e5e6b662511ca9a3578d94947d55a804bde --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/NaughtyEditorGUI.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 6ff27ff7705d6064e935bb2159a1b453 +timeCreated: 1510926159 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/PropertyUtility.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/PropertyUtility.cs new file mode 100644 index 0000000000000000000000000000000000000000..2336eb66c7b3f3f4b1d215460c75f6e4659046ff --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/PropertyUtility.cs @@ -0,0 +1,374 @@ +using UnityEditor; +using System.Reflection; +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + public static class PropertyUtility + { + public static T GetAttribute<T>(SerializedProperty property) where T : class + { + T[] attributes = GetAttributes<T>(property); + return (attributes.Length > 0) ? attributes[0] : null; + } + + public static T[] GetAttributes<T>(SerializedProperty property) where T : class + { + FieldInfo fieldInfo = ReflectionUtility.GetField(GetTargetObjectWithProperty(property), property.name); + if (fieldInfo == null) + { + return new T[] { }; + } + + return (T[])fieldInfo.GetCustomAttributes(typeof(T), true); + } + + public static GUIContent GetLabel(SerializedProperty property) + { + LabelAttribute labelAttribute = GetAttribute<LabelAttribute>(property); + string labelText = (labelAttribute == null) + ? property.displayName + : labelAttribute.Label; + + GUIContent label = new GUIContent(labelText); + return label; + } + + public static void CallOnValueChangedCallbacks(SerializedProperty property) + { + OnValueChangedAttribute[] onValueChangedAttributes = GetAttributes<OnValueChangedAttribute>(property); + if (onValueChangedAttributes.Length == 0) + { + return; + } + + object target = GetTargetObjectWithProperty(property); + property.serializedObject.ApplyModifiedProperties(); // We must apply modifications so that the new value is updated in the serialized object + + foreach (var onValueChangedAttribute in onValueChangedAttributes) + { + MethodInfo callbackMethod = ReflectionUtility.GetMethod(target, onValueChangedAttribute.CallbackName); + if (callbackMethod != null && + callbackMethod.ReturnType == typeof(void) && + callbackMethod.GetParameters().Length == 0) + { + callbackMethod.Invoke(target, new object[] { }); + } + else + { + string warning = string.Format( + "{0} can invoke only methods with 'void' return type and 0 parameters", + onValueChangedAttribute.GetType().Name); + + Debug.LogWarning(warning, property.serializedObject.targetObject); + } + } + } + + public static bool IsEnabled(SerializedProperty property) + { + ReadOnlyAttribute readOnlyAttribute = GetAttribute<ReadOnlyAttribute>(property); + if (readOnlyAttribute != null) + { + return false; + } + + EnableIfAttributeBase enableIfAttribute = GetAttribute<EnableIfAttributeBase>(property); + if (enableIfAttribute == null) + { + return true; + } + + object target = GetTargetObjectWithProperty(property); + + // deal with enum conditions + if (enableIfAttribute.EnumValue != null) + { + Enum value = GetEnumValue(target, enableIfAttribute.Conditions[0]); + if (value != null) + { + bool matched = value.GetType().GetCustomAttribute<FlagsAttribute>() == null + ? enableIfAttribute.EnumValue.Equals(value) + : value.HasFlag(enableIfAttribute.EnumValue); + + return matched != enableIfAttribute.Inverted; + } + + string message = enableIfAttribute.GetType().Name + " needs a valid enum field, property or method name to work"; + Debug.LogWarning(message, property.serializedObject.targetObject); + + return false; + } + + // deal with normal conditions + List<bool> conditionValues = GetConditionValues(target, enableIfAttribute.Conditions); + if (conditionValues.Count > 0) + { + bool enabled = GetConditionsFlag(conditionValues, enableIfAttribute.ConditionOperator, enableIfAttribute.Inverted); + return enabled; + } + else + { + string message = enableIfAttribute.GetType().Name + " needs a valid boolean condition field, property or method name to work"; + Debug.LogWarning(message, property.serializedObject.targetObject); + + return false; + } + } + + public static bool IsVisible(SerializedProperty property) + { + ShowIfAttributeBase showIfAttribute = GetAttribute<ShowIfAttributeBase>(property); + if (showIfAttribute == null) + { + return true; + } + + object target = GetTargetObjectWithProperty(property); + + // deal with enum conditions + if (showIfAttribute.EnumValue != null) + { + Enum value = GetEnumValue(target, showIfAttribute.Conditions[0]); + if (value != null) + { + bool matched = value.GetType().GetCustomAttribute<FlagsAttribute>() == null + ? showIfAttribute.EnumValue.Equals(value) + : value.HasFlag(showIfAttribute.EnumValue); + + return matched != showIfAttribute.Inverted; + } + + string message = showIfAttribute.GetType().Name + " needs a valid enum field, property or method name to work"; + Debug.LogWarning(message, property.serializedObject.targetObject); + + return false; + } + + // deal with normal conditions + List<bool> conditionValues = GetConditionValues(target, showIfAttribute.Conditions); + if (conditionValues.Count > 0) + { + bool enabled = GetConditionsFlag(conditionValues, showIfAttribute.ConditionOperator, showIfAttribute.Inverted); + return enabled; + } + else + { + string message = showIfAttribute.GetType().Name + " needs a valid boolean condition field, property or method name to work"; + Debug.LogWarning(message, property.serializedObject.targetObject); + + return false; + } + } + + /// <summary> + /// Gets an enum value from reflection. + /// </summary> + /// <param name="target">The target object.</param> + /// <param name="enumName">Name of a field, property, or method that returns an enum.</param> + /// <returns>Null if can't find an enum value.</returns> + internal static Enum GetEnumValue(object target, string enumName) + { + FieldInfo enumField = ReflectionUtility.GetField(target, enumName); + if (enumField != null && enumField.FieldType.IsSubclassOf(typeof(Enum))) + { + return (Enum)enumField.GetValue(target); + } + + PropertyInfo enumProperty = ReflectionUtility.GetProperty(target, enumName); + if (enumProperty != null && enumProperty.PropertyType.IsSubclassOf(typeof(Enum))) + { + return (Enum)enumProperty.GetValue(target); + } + + MethodInfo enumMethod = ReflectionUtility.GetMethod(target, enumName); + if (enumMethod != null && enumMethod.ReturnType.IsSubclassOf(typeof(Enum))) + { + return (Enum)enumMethod.Invoke(target, null); + } + + return null; + } + + internal static List<bool> GetConditionValues(object target, string[] conditions) + { + List<bool> conditionValues = new List<bool>(); + foreach (var condition in conditions) + { + FieldInfo conditionField = ReflectionUtility.GetField(target, condition); + if (conditionField != null && + conditionField.FieldType == typeof(bool)) + { + conditionValues.Add((bool)conditionField.GetValue(target)); + } + + PropertyInfo conditionProperty = ReflectionUtility.GetProperty(target, condition); + if (conditionProperty != null && + conditionProperty.PropertyType == typeof(bool)) + { + conditionValues.Add((bool)conditionProperty.GetValue(target)); + } + + MethodInfo conditionMethod = ReflectionUtility.GetMethod(target, condition); + if (conditionMethod != null && + conditionMethod.ReturnType == typeof(bool) && + conditionMethod.GetParameters().Length == 0) + { + conditionValues.Add((bool)conditionMethod.Invoke(target, null)); + } + } + + return conditionValues; + } + + internal static bool GetConditionsFlag(List<bool> conditionValues, EConditionOperator conditionOperator, bool invert) + { + bool flag; + if (conditionOperator == EConditionOperator.And) + { + flag = true; + foreach (var value in conditionValues) + { + flag = flag && value; + } + } + else + { + flag = false; + foreach (var value in conditionValues) + { + flag = flag || value; + } + } + + if (invert) + { + flag = !flag; + } + + return flag; + } + + public static Type GetPropertyType(SerializedProperty property) + { + object obj = GetTargetObjectOfProperty(property); + Type objType = obj.GetType(); + + return objType; + } + + /// <summary> + /// Gets the object the property represents. + /// </summary> + /// <param name="property"></param> + /// <returns></returns> + public static object GetTargetObjectOfProperty(SerializedProperty property) + { + if (property == null) + { + return null; + } + + string path = property.propertyPath.Replace(".Array.data[", "["); + object obj = property.serializedObject.targetObject; + string[] elements = path.Split('.'); + + foreach (var element in elements) + { + if (element.Contains("[")) + { + string elementName = element.Substring(0, element.IndexOf("[")); + int index = Convert.ToInt32(element.Substring(element.IndexOf("[")).Replace("[", "").Replace("]", "")); + obj = GetValue_Imp(obj, elementName, index); + } + else + { + obj = GetValue_Imp(obj, element); + } + } + + return obj; + } + + /// <summary> + /// Gets the object that the property is a member of + /// </summary> + /// <param name="property"></param> + /// <returns></returns> + public static object GetTargetObjectWithProperty(SerializedProperty property) + { + string path = property.propertyPath.Replace(".Array.data[", "["); + object obj = property.serializedObject.targetObject; + string[] elements = path.Split('.'); + + for (int i = 0; i < elements.Length - 1; i++) + { + string element = elements[i]; + if (element.Contains("[")) + { + string elementName = element.Substring(0, element.IndexOf("[")); + int index = Convert.ToInt32(element.Substring(element.IndexOf("[")).Replace("[", "").Replace("]", "")); + obj = GetValue_Imp(obj, elementName, index); + } + else + { + obj = GetValue_Imp(obj, element); + } + } + + return obj; + } + + private static object GetValue_Imp(object source, string name) + { + if (source == null) + { + return null; + } + + Type type = source.GetType(); + + while (type != null) + { + FieldInfo field = type.GetField(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); + if (field != null) + { + return field.GetValue(source); + } + + PropertyInfo property = type.GetProperty(name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase); + if (property != null) + { + return property.GetValue(source, null); + } + + type = type.BaseType; + } + + return null; + } + + private static object GetValue_Imp(object source, string name, int index) + { + IEnumerable enumerable = GetValue_Imp(source, name) as IEnumerable; + if (enumerable == null) + { + return null; + } + + IEnumerator enumerator = enumerable.GetEnumerator(); + for (int i = 0; i <= index; i++) + { + if (!enumerator.MoveNext()) + { + return null; + } + } + + return enumerator.Current; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/PropertyUtility.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/PropertyUtility.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..dce67c6359b0637c50afd920ffdf0f679d72fa8e --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/PropertyUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 312eedcb79c7a5542b87c0b848e3e2fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/ReflectionUtility.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/ReflectionUtility.cs new file mode 100644 index 0000000000000000000000000000000000000000..baf55b98d5b8b96bd44b7391b24bfaa222082b41 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/ReflectionUtility.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEngine; + +namespace NaughtyAttributes.Editor +{ + public static class ReflectionUtility + { + public static IEnumerable<FieldInfo> GetAllFields(object target, Func<FieldInfo, bool> predicate) + { + if (target == null) + { + Debug.LogError("The target object is null. Check for missing scripts."); + yield break; + } + + List<Type> types = GetSelfAndBaseTypes(target); + + for (int i = types.Count - 1; i >= 0; i--) + { + IEnumerable<FieldInfo> fieldInfos = types[i] + .GetFields(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly) + .Where(predicate); + + foreach (var fieldInfo in fieldInfos) + { + yield return fieldInfo; + } + } + } + + public static IEnumerable<PropertyInfo> GetAllProperties(object target, Func<PropertyInfo, bool> predicate) + { + if (target == null) + { + Debug.LogError("The target object is null. Check for missing scripts."); + yield break; + } + + List<Type> types = GetSelfAndBaseTypes(target); + + for (int i = types.Count - 1; i >= 0; i--) + { + IEnumerable<PropertyInfo> propertyInfos = types[i] + .GetProperties(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly) + .Where(predicate); + + foreach (var propertyInfo in propertyInfos) + { + yield return propertyInfo; + } + } + } + + public static IEnumerable<MethodInfo> GetAllMethods(object target, Func<MethodInfo, bool> predicate) + { + if (target == null) + { + Debug.LogError("The target object is null. Check for missing scripts."); + yield break; + } + + List<Type> types = GetSelfAndBaseTypes(target); + + for (int i = types.Count - 1; i >= 0; i--) + { + IEnumerable<MethodInfo> methodInfos = types[i] + .GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly) + .Where(predicate); + + foreach (var methodInfo in methodInfos) + { + yield return methodInfo; + } + } + } + + public static FieldInfo GetField(object target, string fieldName) + { + return GetAllFields(target, f => f.Name.Equals(fieldName, StringComparison.Ordinal)).FirstOrDefault(); + } + + public static PropertyInfo GetProperty(object target, string propertyName) + { + return GetAllProperties(target, p => p.Name.Equals(propertyName, StringComparison.Ordinal)).FirstOrDefault(); + } + + public static MethodInfo GetMethod(object target, string methodName) + { + return GetAllMethods(target, m => m.Name.Equals(methodName, StringComparison.Ordinal)).FirstOrDefault(); + } + + public static Type GetListElementType(Type listType) + { + if (listType.IsGenericType) + { + return listType.GetGenericArguments()[0]; + } + else + { + return listType.GetElementType(); + } + } + + /// <summary> + /// Get type and all base types of target, sorted as following: + /// <para />[target's type, base type, base's base type, ...] + /// </summary> + /// <param name="target"></param> + /// <returns></returns> + private static List<Type> GetSelfAndBaseTypes(object target) + { + List<Type> types = new List<Type>() + { + target.GetType() + }; + + while (types.Last().BaseType != null) + { + types.Add(types.Last().BaseType); + } + + return types; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/ReflectionUtility.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/ReflectionUtility.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..73b6ea9f1024beb1acb0b9ed7a64de6f95abd657 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/ReflectionUtility.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 1d86c581f02a55f458e36bf7e81e3084 +timeCreated: 1520258793 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/SavedBool.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/SavedBool.cs new file mode 100644 index 0000000000000000000000000000000000000000..46ebe7a538d8c336a4a49a67a64e777b1eb80102 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/SavedBool.cs @@ -0,0 +1,34 @@ +using UnityEditor; + +namespace NaughtyAttributes.Editor +{ + internal class SavedBool + { + private bool _value; + private string _name; + + public bool Value + { + get + { + return _value; + } + set + { + if (_value == value) + { + return; + } + + _value = value; + EditorPrefs.SetBool(_name, value); + } + } + + public SavedBool(string name, bool value) + { + _name = name; + _value = EditorPrefs.GetBool(name, value); + } + } +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/SavedBool.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/SavedBool.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..aebf00754fd2812e1b675ff4e5c268fb221c0df2 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Editor/Utility/SavedBool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18613afe66b0c0344a2be5f430bf965a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test.meta new file mode 100644 index 0000000000000000000000000000000000000000..6eca4f65c17df4024a732c06e817f2044f540d79 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce2bd76b5676a434bb8a84254f67f1dc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/AnimatorParamTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/AnimatorParamTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..e43aa7bdc4d2b6f08aa9cdbf1b76f5c7f7f6164f --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/AnimatorParamTest.cs @@ -0,0 +1,53 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class AnimatorParamTest : MonoBehaviour + { + public Animator animator0; + + [AnimatorParam("animator0")] + public int hash0; + + [AnimatorParam("animator0")] + public string name0; + + public AnimatorParamNest1 nest1; + + [Button("Log 'hash0' and 'name0'")] + private void TestLog() + { + Debug.Log($"hash0 = {hash0}"); + Debug.Log($"name0 = {name0}"); + Debug.Log($"Animator.StringToHash(name0) = {Animator.StringToHash(name0)}"); + } + } + + [System.Serializable] + public class AnimatorParamNest1 + { + public Animator animator1; + private Animator Animator1 => animator1; + + [AnimatorParam("Animator1", AnimatorControllerParameterType.Bool)] + public int hash1; + + [AnimatorParam("Animator1", AnimatorControllerParameterType.Float)] + public string name1; + + public AnimatorParamNest2 nest2; + } + + [System.Serializable] + public class AnimatorParamNest2 + { + public Animator animator2; + private Animator GetAnimator2() => animator2; + + [AnimatorParam("GetAnimator2", AnimatorControllerParameterType.Int)] + public int hash1; + + [AnimatorParam("GetAnimator2", AnimatorControllerParameterType.Trigger)] + public string name1; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/AnimatorParamTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/AnimatorParamTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..a8daa631bdfe2c25229c2941808713f156e139df --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/AnimatorParamTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9bff20ccdde00fc49a62bad6a4ef9982 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/BoxGroupTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/BoxGroupTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..8af9b5337aee6698e87e0951e8b87677994a86ac --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/BoxGroupTest.cs @@ -0,0 +1,32 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class BoxGroupTest : MonoBehaviour + { + [BoxGroup("Integers")] + public int int0; + [BoxGroup("Integers")] + public int int1; + + [BoxGroup("Floats")] + public float float0; + [BoxGroup("Floats")] + public float float1; + + [BoxGroup("Sliders")] + [MinMaxSlider(0, 1)] + public Vector2 slider0; + [BoxGroup("Sliders")] + [MinMaxSlider(0, 1)] + public Vector2 slider1; + + public string str0; + public string str1; + + [BoxGroup] + public Transform trans0; + [BoxGroup] + public Transform trans1; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/BoxGroupTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/BoxGroupTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..0c5ee54f8ea74c169cb69f6dc01eb61464a8c112 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/BoxGroupTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3920f5ea384951b4990e4d9e8032d12e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ButtonTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ButtonTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..bd9b69fbf7a8304fd0003622e4f07cac4ca2336a --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ButtonTest.cs @@ -0,0 +1,39 @@ +using System.Collections; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ButtonTest : MonoBehaviour + { + public int myInt; + + [Button(enabledMode: EButtonEnableMode.Always)] + private void IncrementMyInt() + { + myInt++; + } + + [Button("Decrement My Int", EButtonEnableMode.Editor)] + private void DecrementMyInt() + { + myInt--; + } + + [Button(enabledMode: EButtonEnableMode.Playmode)] + private void LogMyInt(string prefix = "MyInt = ") + { + Debug.Log(prefix + myInt); + } + + [Button("StartCoroutine")] + private IEnumerator IncrementMyIntCoroutine() + { + int seconds = 5; + for (int i = 0; i < seconds; i++) + { + myInt++; + yield return new WaitForSeconds(1.0f); + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ButtonTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ButtonTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..1d7d58f6c2f3364567571dbb8e21ef4e146ab218 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ButtonTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b592f12a9f69ac3408f6f870762232c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/CurveRangeTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/CurveRangeTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..d568a8fe074d31f8464d4aae192bb5eca406b290 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/CurveRangeTest.cs @@ -0,0 +1,37 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class CurveRangeTest : MonoBehaviour + { + [CurveRange(0f, 0f, 1f, 1f, EColor.Yellow)] + public AnimationCurve[] curves; + + [CurveRange(-1, -1, 1, 1, EColor.Red)] + public AnimationCurve curve; + + [CurveRange(EColor.Orange)] + public AnimationCurve curve1; + + [CurveRange(0, 0, 10, 10)] + public AnimationCurve curve2; + + public CurveRangeNest1 nest1; + + [System.Serializable] + public class CurveRangeNest1 + { + [CurveRange(0, 0, 1, 1, EColor.Green)] + public AnimationCurve curve; + + public CurveRangeNest2 nest2; + } + + [System.Serializable] + public class CurveRangeNest2 + { + [CurveRange(0, 0, 5, 5, EColor.Blue)] + public AnimationCurve curve; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/CurveRangeTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/CurveRangeTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..e43f8f032ada783dd1c658aed9dc83e5b8bc3677 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/CurveRangeTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6587b100d001e7e46b9aaae7f1180b40 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/DisableIfTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/DisableIfTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..5b89e80f66d425e8b752615d0e243c7e293b9229 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/DisableIfTest.cs @@ -0,0 +1,120 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class DisableIfTest : MonoBehaviour + { + public bool disable1; + public bool disable2; + public DisableIfEnum enum1; + [EnumFlags] public DisableIfEnumFlag enum2; + + [DisableIf(EConditionOperator.And, "disable1", "disable2")] + [ReorderableList] + public int[] disableIfAll; + + [DisableIf(EConditionOperator.Or, "disable1", "disable2")] + [ReorderableList] + public int[] disableIfAny; + + [DisableIf("enum1", DisableIfEnum.Case0)] + [ReorderableList] + public int[] disableIfEnum; + + [DisableIf("enum2", DisableIfEnumFlag.Flag0)] + [ReorderableList] + public int[] disableIfEnumFlag; + + [DisableIf("enum2", DisableIfEnumFlag.Flag0 | DisableIfEnumFlag.Flag1)] + [ReorderableList] + public int[] disableIfEnumFlagMulti; + + public DisableIfNest1 nest1; + } + + [System.Serializable] + public class DisableIfNest1 + { + public bool disable1; + public bool disable2; + public DisableIfEnum enum1; + [EnumFlags] public DisableIfEnumFlag enum2; + public bool Disable1 { get { return disable1; } } + public bool Disable2 { get { return disable2; } } + public DisableIfEnum Enum1 { get { return enum1; } } + public DisableIfEnumFlag Enum2 { get { return enum2; } } + + [DisableIf(EConditionOperator.And, "Disable1", "Disable2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int disableIfAll = 1; + + [DisableIf(EConditionOperator.Or, "Disable1", "Disable2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int disableIfAny = 2; + + [DisableIf("Enum1", DisableIfEnum.Case1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int disableIfEnum = 3; + + [DisableIf("Enum2", DisableIfEnumFlag.Flag0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int disableIfEnumFlag; + + [DisableIf("Enum2", DisableIfEnumFlag.Flag0 | DisableIfEnumFlag.Flag1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int disableIfEnumFlagMulti; + + public DisableIfNest2 nest2; + } + + [System.Serializable] + public class DisableIfNest2 + { + public bool disable1; + public bool disable2; + public DisableIfEnum enum1; + [EnumFlags] public DisableIfEnumFlag enum2; + public bool GetDisable1() { return disable1; } + public bool GetDisable2() { return disable2; } + public DisableIfEnum GetEnum1() { return enum1; } + public DisableIfEnumFlag GetEnum2() { return enum2; } + + [DisableIf(EConditionOperator.And, "GetDisable1", "GetDisable2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfAll = new Vector2(0.25f, 0.75f); + + [DisableIf(EConditionOperator.Or, "GetDisable1", "GetDisable2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfAny = new Vector2(0.25f, 0.75f); + + [DisableIf("GetEnum1", DisableIfEnum.Case2)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfEnum = new Vector2(0.25f, 0.75f); + + [DisableIf("GetEnum2", DisableIfEnumFlag.Flag0)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 disableIfEnumFlag; + + [DisableIf("GetEnum2", DisableIfEnumFlag.Flag0 | DisableIfEnumFlag.Flag1)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 disableIfEnumFlagMulti; + } + + [System.Serializable] + public enum DisableIfEnum + { + Case0, + Case1, + Case2 + } + + [Flags] + public enum DisableIfEnumFlag + { + Flag0 = 1, + Flag1 = 2, + Flag2 = 4, + Flag3 = 8 + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/DisableIfTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/DisableIfTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..c3a1e7afb31a953e3e85b11069277896d22ed937 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/DisableIfTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0e48a088cb96287448c3be58932bfcb7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/DropdownTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/DropdownTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..f686f2071cffe81598a01b31215bb965f30d3e06 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/DropdownTest.cs @@ -0,0 +1,45 @@ +using UnityEngine; +using System.Collections.Generic; + +namespace NaughtyAttributes.Test +{ + public class DropdownTest : MonoBehaviour + { + [Dropdown("intValues")] + public int intValue; + +#pragma warning disable 414 + private int[] intValues = new int[] { 1, 2, 3 }; +#pragma warning restore 414 + + public DropdownNest1 nest1; + } + + [System.Serializable] + public class DropdownNest1 + { + [Dropdown("StringValues")] + public string stringValue; + + private List<string> StringValues { get { return new List<string>() { "A", "B", "C" }; } } + + public DropdownNest2 nest2; + } + + [System.Serializable] + public class DropdownNest2 + { + [Dropdown("GetVectorValues")] + public Vector3 vectorValue; + + private DropdownList<Vector3> GetVectorValues() + { + return new DropdownList<Vector3>() + { + { "Right", Vector3.right }, + { "Up", Vector3.up }, + { "Forward", Vector3.forward } + }; + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/DropdownTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/DropdownTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..ec7fa2412512e55af5bfb4b40cb9f0d1dd81cc01 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/DropdownTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3855e37cd6b01194e8166573c7c4b37d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/EnableIfTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/EnableIfTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..09a97afbdc1e01c4b501deca96c0f5697af1788b --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/EnableIfTest.cs @@ -0,0 +1,120 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class EnableIfTest : MonoBehaviour + { + public bool enable1; + public bool enable2; + public EnableIfEnum enum1; + [EnumFlags] public EnableIfEnumFlag enum2; + + [EnableIf(EConditionOperator.And, "enable1", "enable2")] + [ReorderableList] + public int[] enableIfAll; + + [EnableIf(EConditionOperator.Or, "enable1", "enable2")] + [ReorderableList] + public int[] enableIfAny; + + [EnableIf("enum1", EnableIfEnum.Case0)] + [ReorderableList] + public int[] enableIfEnum; + + [EnableIf("enum2", EnableIfEnumFlag.Flag0)] + [ReorderableList] + public int[] enableIfEnumFlag; + + [EnableIf("enum2", EnableIfEnumFlag.Flag0 | EnableIfEnumFlag.Flag1)] + [ReorderableList] + public int[] enableIfEnumFlagMulti; + + public EnableIfNest1 nest1; + } + + [System.Serializable] + public class EnableIfNest1 + { + public bool enable1; + public bool enable2; + public EnableIfEnum enum1; + [EnumFlags] public EnableIfEnumFlag enum2; + public bool Enable1 { get { return enable1; } } + public bool Enable2 { get { return enable2; } } + public EnableIfEnum Enum1 { get { return enum1; } } + public EnableIfEnumFlag Enum2 { get { return enum2; } } + + [EnableIf(EConditionOperator.And, "Enable1", "Enable2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int enableIfAll; + + [EnableIf(EConditionOperator.Or, "Enable1", "Enable2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int enableIfAny; + + [EnableIf("Enum1", EnableIfEnum.Case1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int enableIfEnum; + + [EnableIf("Enum2", EnableIfEnumFlag.Flag0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int enableIfEnumFlag; + + [EnableIf("Enum2", EnableIfEnumFlag.Flag0 | EnableIfEnumFlag.Flag1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int enableIfEnumFlagMulti; + + public EnableIfNest2 nest2; + } + + [System.Serializable] + public class EnableIfNest2 + { + public bool enable1; + public bool enable2; + public EnableIfEnum enum1; + [EnumFlags] public EnableIfEnumFlag enum2; + public bool GetEnable1() { return enable1; } + public bool GetEnable2() { return enable2; } + public EnableIfEnum GetEnum1() { return enum1; } + public EnableIfEnumFlag GetEnum2() { return enum2; } + + [EnableIf(EConditionOperator.And, "GetEnable1", "GetEnable2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfAll = new Vector2(0.25f, 0.75f); + + [EnableIf(EConditionOperator.Or, "GetEnable1", "GetEnable2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfAny = new Vector2(0.25f, 0.75f); + + [EnableIf("GetEnum1", EnableIfEnum.Case2)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfEnum = new Vector2(0.25f, 0.75f); + + [EnableIf("GetEnum2", EnableIfEnumFlag.Flag0)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfEnumFlag; + + [EnableIf("GetEnum2", EnableIfEnumFlag.Flag0 | EnableIfEnumFlag.Flag1)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 enableIfEnumFlagMulti; + } + + [System.Serializable] + public enum EnableIfEnum + { + Case0, + Case1, + Case2 + } + + [Flags] + public enum EnableIfEnumFlag + { + Flag0 = 1, + Flag1 = 2, + Flag2 = 4, + Flag3 = 8 + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/EnableIfTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/EnableIfTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..c22fe7b77d3d4efed803bbed5af24dbc0869511c --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/EnableIfTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bed506d8be3a10f45bec4bf2237bec87 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/EnumFlagsTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/EnumFlagsTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..e1841ed34587814cdd4fea0210fb9075c802b753 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/EnumFlagsTest.cs @@ -0,0 +1,39 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public enum TestEnum + { + None = 0, + B = 1 << 0, + C = 1 << 1, + D = 1 << 2, + E = 1 << 3, + F = 1 << 4, + All = ~0 + } + + public class EnumFlagsTest : MonoBehaviour + { + [EnumFlags] + public TestEnum flags0; + + public EnumFlagsNest1 nest1; + } + + [System.Serializable] + public class EnumFlagsNest1 + { + [EnumFlags] + public TestEnum flags1; + + public EnumFlagsNest2 nest2; + } + + [System.Serializable] + public class EnumFlagsNest2 + { + [EnumFlags] + public TestEnum flags2; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/EnumFlagsTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/EnumFlagsTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..b5486752aeeb9266bbad734ec09a9949ef960103 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/EnumFlagsTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b7f6b84ce0d7674d8a386fde729279c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ExpandableTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ExpandableTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..1f0dba95d6f3ec60f2218f2a9ed2d2a2c1746a4b --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ExpandableTest.cs @@ -0,0 +1,31 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ExpandableTest : MonoBehaviour + { + // See #294 + public int precedingField = 5; + + [Expandable] + public ScriptableObject obj0; + + public ExpandableScriptableObjectNest1 nest1; + } + + [System.Serializable] + public class ExpandableScriptableObjectNest1 + { + [Expandable] + public ScriptableObject obj1; + + public ExpandableScriptableObjectNest2 nest2; + } + + [System.Serializable] + public class ExpandableScriptableObjectNest2 + { + [Expandable] + public ScriptableObject obj2; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ExpandableTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ExpandableTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..ffa82d1a78f3ce49457e6bd2d179caa58b193929 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ExpandableTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 64c4c9aee2b494d44be9bb0b7f12ed7c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/FoldoutTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/FoldoutTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..d87e330a6999b55b09f70896c67778147372dad1 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/FoldoutTest.cs @@ -0,0 +1,32 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class FoldoutTest : MonoBehaviour + { + [Foldout("Integers")] + public int int0; + [Foldout("Integers")] + public int int1; + + [Foldout("Floats")] + public float float0; + [Foldout("Floats")] + public float float1; + + [Foldout("Sliders")] + [MinMaxSlider(0, 1)] + public Vector2 slider0; + [Foldout("Sliders")] + [MinMaxSlider(0, 1)] + public Vector2 slider1; + + public string str0; + public string str1; + + [Foldout("Transforms")] + public Transform trans0; + [Foldout("Transforms")] + public Transform trans1; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/FoldoutTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/FoldoutTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..8c72e06b551b494a74042b525867175eb4ac033d --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/FoldoutTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b437215d92efa74ea85ff726ca0dd09 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/HideIfTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/HideIfTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..1feb6009637e83654e695bb98fc874fd310d6711 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/HideIfTest.cs @@ -0,0 +1,119 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class HideIfTest : MonoBehaviour + { + public bool hide1; + public bool hide2; + public HideIfEnum enum1; + [EnumFlags] public HideIfEnumFlag enum2; + + [HideIf(EConditionOperator.And, "hide1", "hide2")] + [ReorderableList] + public int[] hideIfAll; + + [HideIf(EConditionOperator.Or, "hide1", "hide2")] + [ReorderableList] + public int[] hideIfAny; + + [HideIf("enum1", HideIfEnum.Case0)] + [ReorderableList] + public int[] hideIfEnum; + + [HideIf("enum2", HideIfEnumFlag.Flag0)] + [ReorderableList] + public int[] hideIfEnumFlag; + + [HideIf("enum2", HideIfEnumFlag.Flag0 | HideIfEnumFlag.Flag1)] + [ReorderableList] + public int[] hideIfEnumFlagMulti; + + public HideIfNest1 nest1; + } + + [System.Serializable] + public class HideIfNest1 + { + public bool hide1; + public bool hide2; + public HideIfEnum enum1; + [EnumFlags] public HideIfEnumFlag enum2; + public bool Hide1 { get { return hide1; } } + public bool Hide2 { get { return hide2; } } + public HideIfEnum Enum1 { get { return enum1; } } + public HideIfEnumFlag Enum2 { get { return enum2; } } + + [HideIf(EConditionOperator.And, "Hide1", "Hide2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int hideIfAll; + + [HideIf(EConditionOperator.Or, "Hide1", "Hide2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int hideIfAny; + + [HideIf("Enum1", HideIfEnum.Case1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int hideIfEnum; + + [HideIf("Enum2", HideIfEnumFlag.Flag0)] + [AllowNesting] + public int hideIfEnumFlag; + + [HideIf("Enum2", HideIfEnumFlag.Flag0 | HideIfEnumFlag.Flag1)] + [AllowNesting] + public int hideIfEnumFlagMulti; + + public HideIfNest2 nest2; + } + + [System.Serializable] + public class HideIfNest2 + { + public bool hide1; + public bool hide2; + public HideIfEnum enum1; + [EnumFlags] public HideIfEnumFlag enum2; + public bool GetHide1() { return hide1; } + public bool GetHide2() { return hide2; } + public HideIfEnum GetEnum1() { return enum1; } + public HideIfEnumFlag GetEnum2() { return enum2; } + + [HideIf(EConditionOperator.And, "GetHide1", "GetHide2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 hideIfAll = new Vector2(0.25f, 0.75f); + + [HideIf(EConditionOperator.Or, "GetHide1", "GetHide2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 hideIfAny = new Vector2(0.25f, 0.75f); + + [HideIf("GetEnum1", HideIfEnum.Case2)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 hideIfEnum = new Vector2(0.25f, 0.75f); + + [HideIf("GetEnum2", HideIfEnumFlag.Flag0)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 hideIfEnumFlag; + + [HideIf("GetEnum2", HideIfEnumFlag.Flag0 | HideIfEnumFlag.Flag1)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 hideIfEnumFlagMulti; + } + + public enum HideIfEnum + { + Case0, + Case1, + Case2 + } + + [Flags] + public enum HideIfEnumFlag + { + Flag0 = 1, + Flag1 = 2, + Flag2 = 4, + Flag3 = 8 + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/HideIfTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/HideIfTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..6115ad28657959ac4bc863cee71ad8e64adf82f9 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/HideIfTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3cf166cb519e666419bb79b0c50c5ee1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/HorizontalLineTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/HorizontalLineTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..41651c619f0f472de4d1bd5e708415a2a439b778 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/HorizontalLineTest.cs @@ -0,0 +1,51 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class HorizontalLineTest : MonoBehaviour + { + [HorizontalLine(color: EColor.Black)] + [Header("Black")] + [HorizontalLine(color: EColor.Blue)] + [Header("Blue")] + [HorizontalLine(color: EColor.Gray)] + [Header("Gray")] + [HorizontalLine(color: EColor.Green)] + [Header("Green")] + [HorizontalLine(color: EColor.Indigo)] + [Header("Indigo")] + [HorizontalLine(color: EColor.Orange)] + [Header("Orange")] + [HorizontalLine(color: EColor.Pink)] + [Header("Pink")] + [HorizontalLine(color: EColor.Red)] + [Header("Red")] + [HorizontalLine(color: EColor.Violet)] + [Header("Violet")] + [HorizontalLine(color: EColor.White)] + [Header("White")] + [HorizontalLine(color: EColor.Yellow)] + [Header("Yellow")] + [HorizontalLine(10.0f)] + [Header("Thick")] + public int line0; + + public HorizontalLineNest1 nest1; + } + + [System.Serializable] + public class HorizontalLineNest1 + { + [HorizontalLine] + public int line1; + + public HorizontalLineNest2 nest2; + } + + [System.Serializable] + public class HorizontalLineNest2 + { + [HorizontalLine] + public int line2; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/HorizontalLineTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/HorizontalLineTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..4d7ff377032cdd09230d7e1038c64c3b38e95340 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/HorizontalLineTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5cc6d3f8d4a53374887b3d620a6972e3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/InfoBoxTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/InfoBoxTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..1880c3aa3adcf255c46bf8f4e1d2990d33926a86 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/InfoBoxTest.cs @@ -0,0 +1,28 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class InfoBoxTest : MonoBehaviour + { + [InfoBox("Normal", EInfoBoxType.Normal)] + public int normal; + + public InfoBoxNest1 nest1; + } + + [System.Serializable] + public class InfoBoxNest1 + { + [InfoBox("Warning", EInfoBoxType.Warning)] + public int warning; + + public InfoBoxNest2 nest2; + } + + [System.Serializable] + public class InfoBoxNest2 + { + [InfoBox("Error", EInfoBoxType.Error)] + public int error; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/InfoBoxTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/InfoBoxTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..68dc824f98692ec9164c2f54a6a6c0c21db811e8 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/InfoBoxTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0dcb08e489c17644e9eacaa1ec5fe781 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/InputAxisTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/InputAxisTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..75ba2310f9dd1001bc1ce04ba0f8566cce27278e --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/InputAxisTest.cs @@ -0,0 +1,34 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class InputAxisTest : MonoBehaviour + { + [InputAxis] + public string inputAxis0; + + public InputAxisNest1 nest1; + + [Button] + private void LogInputAxis0() + { + Debug.Log(inputAxis0); + } + } + + [System.Serializable] + public class InputAxisNest1 + { + [InputAxis] + public string inputAxis1; + + public InputAxisNest2 nest2; + } + + [System.Serializable] + public struct InputAxisNest2 + { + [InputAxis] + public string inputAxis2; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/InputAxisTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/InputAxisTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..b44a86281a354a5256c5327c7ea04911d72b2660 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/InputAxisTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e0cc8a31c22090847b75538c0ed2d2fc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/LabelTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/LabelTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..28c45fce7a6d3c639a4a77dce200decaccb8d133 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/LabelTest.cs @@ -0,0 +1,30 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class LabelTest : MonoBehaviour + { + [Label("Label 0")] + public int int0; + + public LabelNest1 nest1; + } + + [System.Serializable] + public class LabelNest1 + { + [Label("Label 1")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int int1; + + public LabelNest2 nest2; + } + + [System.Serializable] + public class LabelNest2 + { + [Label("Label 2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 vector2; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/LabelTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/LabelTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..114af72a012ecf82eb48c62ec7139e77c58b935a --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/LabelTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7488af014527ebf42af5c4fc4d5f4f5b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/LayerTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/LayerTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..6db4aa98672c0f74de7a0ef35fc159ed1b7acb3e --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/LayerTest.cs @@ -0,0 +1,46 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class LayerTest : MonoBehaviour + { + [Layer] + public int layerNumber0; + + [Layer] + public string layerName0; + + public LayerNest1 nest1; + + [Button] + public void DebugLog() + { + Debug.LogFormat("{0} = {1}", nameof(layerNumber0), layerNumber0); + Debug.LogFormat("{0} = {1}", nameof(layerName0), layerName0); + Debug.LogFormat("LayerToName({0}) = {1}", layerNumber0, LayerMask.LayerToName(layerNumber0)); + Debug.LogFormat("NameToLayer({0}) = {1}", layerName0, LayerMask.NameToLayer(layerName0)); + } + } + + [System.Serializable] + public class LayerNest1 + { + [Layer] + public int layerNumber1; + + [Layer] + public string layerName1; + + public LayerNest2 nest2; + } + + [System.Serializable] + public struct LayerNest2 + { + [Layer] + public int layerNumber2; + + [Layer] + public string layerName2; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/LayerTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/LayerTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..d66d32c6d700f60fb3eff9e3c79cc6350bc8149b --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/LayerTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 460459d6ac76acd4d872f94cf444e6fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/MinMaxSliderTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/MinMaxSliderTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..c961440fe35667b406e9ebadcf38c22f2735c835 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/MinMaxSliderTest.cs @@ -0,0 +1,28 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class MinMaxSliderTest : MonoBehaviour + { + [MinMaxSlider(0.0f, 1.0f)] + public Vector2 minMaxSlider0 = new Vector2(0.25f, 0.75f); + + public MinMaxSliderNest1 nest1; + } + + [System.Serializable] + public class MinMaxSliderNest1 + { + [MinMaxSlider(0.0f, 1.0f)] + public Vector2 minMaxSlider1 = new Vector2(0.25f, 0.75f); + + public MinMaxSliderNest2 nest2; + } + + [System.Serializable] + public class MinMaxSliderNest2 + { + [MinMaxSlider(1, 11)] + public Vector2Int minMaxSlider2 = new Vector2Int(6, 11); + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/MinMaxSliderTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/MinMaxSliderTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..7580a81bd580b90aa5bd34850266aa94430353d5 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/MinMaxSliderTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fd67fbde6acdd6a44944f12e507067c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/MinMaxValueTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/MinMaxValueTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..ca8e7ad16200752cb1fa09055798d75f48769661 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/MinMaxValueTest.cs @@ -0,0 +1,129 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class MinMaxValueTest : MonoBehaviour + { + [MinValue(0)] + public int min0Int; + + [MaxValue(0)] + public int max0Int; + + [MinValue(0), MaxValue(1)] + public float range01Float; + + [MinValue(0), MaxValue(1)] + public Vector2 range01Vector2; + + [MinValue(0), MaxValue(1)] + public Vector3 range01Vector3; + + [MinValue(0), MaxValue(1)] + public Vector4 range01Vector4; + + [MinValue(0)] + public Vector2Int min0Vector2Int; + + [MaxValue(100)] + public Vector2Int max100Vector2Int; + + [MinValue(0)] + public Vector3Int min0Vector3Int; + + [MaxValue(100)] + public Vector3Int max100Vector3Int; + + public MinMaxValueNest1 nest1; + } + + [System.Serializable] + public class MinMaxValueNest1 + { + [MinValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int min0Int; + + [MaxValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int max0Int; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public float range01Float; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector2 range01Vector2; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector3 range01Vector3; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector4 range01Vector4; + + [MinValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector2Int min0Vector2Int; + + [MaxValue(100)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector2Int max100Vector2Int; + + [MinValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector3Int min0Vector3Int; + + [MaxValue(100)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector3Int max100Vector3Int; + + public MinMaxValueNest2 nest2; + } + + [System.Serializable] + public class MinMaxValueNest2 + { + [MinValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int min0Int; + + [MaxValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int max0Int; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public float range01Float; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector2 range01Vector2; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector3 range01Vector3; + + [MinValue(0), MaxValue(1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector4 range01Vector4; + + [MinValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector2Int min0Vector2Int; + + [MaxValue(100)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector2Int max100Vector2Int; + + [MinValue(0)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector3Int min0Vector3Int; + + [MaxValue(100)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Vector3Int max100Vector3Int; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/MinMaxValueTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/MinMaxValueTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..328dee363cff5601e2710a0869550241272b6143 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/MinMaxValueTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 450a05787c54e6b4fa88ffe223bcee87 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/NaughtyAttributes.Test.asmdef b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/NaughtyAttributes.Test.asmdef new file mode 100644 index 0000000000000000000000000000000000000000..910f548309061f87eadca24017e2261e62f8431f --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/NaughtyAttributes.Test.asmdef @@ -0,0 +1,14 @@ +{ + "name": "NaughtyAttributes.Test", + "references": [ + "NaughtyAttributes.Core" + ], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/NaughtyAttributes.Test.asmdef.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/NaughtyAttributes.Test.asmdef.meta new file mode 100644 index 0000000000000000000000000000000000000000..c3d49e73e6736f39f99069475e294f12efb149c7 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/NaughtyAttributes.Test.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: df1dea26b8503004d92d621e88aa9421 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/OnValueChangedTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/OnValueChangedTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..4406c4b9607c6ca93b5727e81f7271130c878b33 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/OnValueChangedTest.cs @@ -0,0 +1,51 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class OnValueChangedTest : MonoBehaviour + { + [OnValueChanged("OnValueChangedMethod1")] + [OnValueChanged("OnValueChangedMethod2")] + public int int0; + + private void OnValueChangedMethod1() + { + Debug.LogFormat("int0: {0}", int0); + } + + private void OnValueChangedMethod2() + { + Debug.LogFormat("int0: {0}", int0); + } + + public OnValueChangedNest1 nest1; + } + + [System.Serializable] + public class OnValueChangedNest1 + { + [OnValueChanged("OnValueChangedMethod")] + [AllowNesting] + public int int1; + + private void OnValueChangedMethod() + { + Debug.LogFormat("int1: {0}", int1); + } + + public OnValueChangedNest2 nest2; + } + + [System.Serializable] + public class OnValueChangedNest2 + { + [OnValueChanged("OnValueChangedMethod")] + [AllowNesting] + public int int2; + + private void OnValueChangedMethod() + { + Debug.LogFormat("int2: {0}", int2); + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/OnValueChangedTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/OnValueChangedTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..bfd1ab25e5a4f94f7f2e46957c7f3265bc1ec704 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/OnValueChangedTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff1df679e5b32f64bb106752c63933fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ProgressBarTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ProgressBarTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..b21220af02d54a6e3b4c14ecdf9edf55d2cdae66 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ProgressBarTest.cs @@ -0,0 +1,35 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ProgressBarTest : MonoBehaviour + { + [Header("Constant ProgressBar")] + [ProgressBar("Health", 100, EColor.Red)] + public float health = 50.0f; + + [Header("Nested ProgressBar")] + public ProgressBarNest1 nest1; + + [Header("Dynamic ProgressBar")] + [ProgressBar("Elixir", "maxElixir", color: EColor.Violet)] + public int elixir = 50; + public int maxElixir = 100; + } + + [System.Serializable] + public class ProgressBarNest1 + { + [ProgressBar("Mana", 100, EColor.Blue)] + public float mana = 25.0f; + + public ProgressBarNest2 nest2; + } + + [System.Serializable] + public class ProgressBarNest2 + { + [ProgressBar("Stamina", 100, EColor.Green)] + public float stamina = 75.0f; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ProgressBarTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ProgressBarTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..db88429807604620e748e3544619892136fb7c17 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ProgressBarTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 96ca4c27fc649764b9d1625f1740cb9e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ReadOnlyTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ReadOnlyTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..2081e212e1772526f87bdcb9107aceb52fb7b16c --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ReadOnlyTest.cs @@ -0,0 +1,30 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ReadOnlyTest : MonoBehaviour + { + [ReadOnly] + public int readOnlyInt = 5; + + public ReadOnlyNest1 nest1; + } + + [System.Serializable] + public class ReadOnlyNest1 + { + [ReadOnly] + [AllowNesting] + public float readOnlyFloat = 3.14f; + + public ReadOnlyNest2 nest2; + } + + [System.Serializable] + public struct ReadOnlyNest2 + { + [ReadOnly] + [AllowNesting] + public string readOnlyString; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ReadOnlyTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ReadOnlyTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..d65c60ce82a2d6979474317bdce92b924af71e96 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ReadOnlyTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5443d37a05e188846bda9b05b067184e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ReorderableListTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ReorderableListTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..bc952d1366bd3a0d8c442a7d747f52b589fcf5c2 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ReorderableListTest.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ReorderableListTest : MonoBehaviour + { + [ReorderableList] + public int[] intArray; + + [ReorderableList] + public List<Vector3> vectorList; + + [ReorderableList] + public List<SomeStruct> structList; + + [ReorderableList] + public GameObject[] gameObjectsList; + + [ReorderableList] + public List<Transform> transformsList; + + [ReorderableList] + public List<MonoBehaviour> monoBehavioursList; + } + + [System.Serializable] + public struct SomeStruct + { + public int Int; + public float Float; + public Vector3 Vector; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ReorderableListTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ReorderableListTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..b993018cffecf54f89be196f7c50f21660d4532a --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ReorderableListTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c93fde7cd79390148ac576c3a159a77b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/RequiredTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/RequiredTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..d7391d9bae26543ed5ad98a87721dd55a4265e8d --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/RequiredTest.cs @@ -0,0 +1,30 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class RequiredTest : MonoBehaviour + { + [Required] + public Transform trans0; + + public RequiredNest1 nest1; + } + + [System.Serializable] + public class RequiredNest1 + { + [Required] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Transform trans1; + + public RequiredNest2 nest2; + } + + [System.Serializable] + public class RequiredNest2 + { + [Required("trans2 is invalid custom message - hohoho")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public Transform trans2; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/RequiredTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/RequiredTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..bc512606962046cfe84a9e72991ceb92b7ff7f01 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/RequiredTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9c8c10b2234650d42b2a8efad6b413db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ResizableTextAreaTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ResizableTextAreaTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..fbb5e2e08b8f30bae2a5b8a76fdc4fac94a94465 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ResizableTextAreaTest.cs @@ -0,0 +1,28 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ResizableTextAreaTest : MonoBehaviour + { + [ResizableTextArea] + public string text0; + + public ResizableTextAreaNest1 nest1; + } + + [System.Serializable] + public class ResizableTextAreaNest1 + { + [ResizableTextArea] + public string text1; + + public ResizableTextAreaNest2 nest2; + } + + [System.Serializable] + public class ResizableTextAreaNest2 + { + [ResizableTextArea] + public string text2; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ResizableTextAreaTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ResizableTextAreaTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..380566d511e2dcb2ff0935df0de064e6d52bbcd3 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ResizableTextAreaTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fb4f4bb2e3e063340a24f4bb24528bb5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/SceneTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/SceneTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..f0bc947b90380a6b33fd9d0ece937a69fccfca26 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/SceneTest.cs @@ -0,0 +1,28 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class SceneTest : MonoBehaviour + { + [Scene] + public string scene0; + + public SceneNest1 nest1; + } + + [System.Serializable] + public class SceneNest1 + { + [Scene] + public string scene1; + + public SceneNest2 nest2; + } + + [System.Serializable] + public struct SceneNest2 + { + [Scene] + public int scene2; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/SceneTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/SceneTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..3ceca2fe2e3d579390b9e7db6dff02be1061e845 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/SceneTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 281a85803caf74a459439020a0840fa4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowAssetPreviewTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowAssetPreviewTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..c4d27ae05e79b76440943fb446c17bdec4e1d129 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowAssetPreviewTest.cs @@ -0,0 +1,37 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ShowAssetPreviewTest : MonoBehaviour + { + [ShowAssetPreview] + public Sprite sprite0; + + [ShowAssetPreview(96, 96)] + public GameObject prefab0; + + public ShowAssetPreviewNest1 nest1; + } + + [System.Serializable] + public class ShowAssetPreviewNest1 + { + [ShowAssetPreview] + public Sprite sprite1; + + [ShowAssetPreview(96, 96)] + public GameObject prefab1; + + public ShowAssetPreviewNest2 nest2; + } + + [System.Serializable] + public class ShowAssetPreviewNest2 + { + [ShowAssetPreview] + public Sprite sprite2; + + [ShowAssetPreview(96, 96)] + public GameObject prefab2; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowAssetPreviewTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowAssetPreviewTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..b636853b7848317851dc1bd0b8c2e56e1d862010 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowAssetPreviewTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 705c14aa9ecaa274289972381f471367 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowIfTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowIfTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..087b3d8b5d176dbeae4ec8e33cc3379f7ceecf51 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowIfTest.cs @@ -0,0 +1,119 @@ +using System; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ShowIfTest : MonoBehaviour + { + public bool show1; + public bool show2; + public ShowIfEnum enum1; + [EnumFlags] public ShowIfEnumFlag enum2; + + [ShowIf(EConditionOperator.And, "show1", "show2")] + [ReorderableList] + public int[] showIfAll; + + [ShowIf(EConditionOperator.Or, "show1", "show2")] + [ReorderableList] + public int[] showIfAny; + + [ShowIf("enum1", ShowIfEnum.Case0)] + [ReorderableList] + public int[] showIfEnum; + + [ShowIf("enum2", ShowIfEnumFlag.Flag0)] + [ReorderableList] + public int[] showIfEnumFlag; + + [ShowIf("enum2", ShowIfEnumFlag.Flag0 | ShowIfEnumFlag.Flag1)] + [ReorderableList] + public int[] showIfEnumFlagMulti; + + public ShowIfNest1 nest1; + } + + [System.Serializable] + public class ShowIfNest1 + { + public bool show1; + public bool show2; + public ShowIfEnum enum1; + [EnumFlags] public ShowIfEnumFlag enum2; + public bool Show1 { get { return show1; } } + public bool Show2 { get { return show2; } } + public ShowIfEnum Enum1 { get { return enum1; } } + public ShowIfEnumFlag Enum2 { get { return enum2; } } + + [ShowIf(EConditionOperator.And, "Show1", "Show2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int showIfAll; + + [ShowIf(EConditionOperator.Or, "Show1", "Show2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int showIfAny; + + [ShowIf("Enum1", ShowIfEnum.Case1)] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int showIfEnum; + + [ShowIf("Enum2", ShowIfEnumFlag.Flag0)] + [AllowNesting] + public int showIfEnumFlag; + + [ShowIf("Enum2", ShowIfEnumFlag.Flag0 | ShowIfEnumFlag.Flag1)] + [AllowNesting] + public int showIfEnumFlagMulti; + + public ShowIfNest2 nest2; + } + + [System.Serializable] + public class ShowIfNest2 + { + public bool show1; + public bool show2; + public ShowIfEnum enum1; + [EnumFlags] public ShowIfEnumFlag enum2; + public bool GetShow1() { return show1; } + public bool GetShow2() { return show2; } + public ShowIfEnum GetEnum1() { return enum1; } + public ShowIfEnumFlag GetEnum2() { return enum2; } + + [ShowIf(EConditionOperator.And, "GetShow1", "GetShow2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 showIfAll = new Vector2(0.25f, 0.75f); + + [ShowIf(EConditionOperator.Or, "GetShow1", "GetShow2")] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 showIfAny = new Vector2(0.25f, 0.75f); + + [ShowIf("GetEnum1", ShowIfEnum.Case2)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 showIfEnum = new Vector2(0.25f, 0.75f); + + [ShowIf("GetEnum2", ShowIfEnumFlag.Flag0)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 showIfEnumFlag; + + [ShowIf("GetEnum2", ShowIfEnumFlag.Flag0 | ShowIfEnumFlag.Flag1)] + [MinMaxSlider(0.0f, 1.0f)] // AllowNesting attribute is not needed, because the field is already marked with a custom naughty property drawer + public Vector2 showIfEnumFlagMulti; + } + + public enum ShowIfEnum + { + Case0, + Case1, + Case2 + } + + [Flags] + public enum ShowIfEnumFlag + { + Flag0 = 1, + Flag1 = 2, + Flag2 = 4, + Flag3 = 8 + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowIfTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowIfTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..749d05ce6a40a7127cae31b2f9680128b48e31e7 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowIfTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4fdbfcfbf5b056a4bac491fe21569572 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowNativePropertyTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowNativePropertyTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..b3a41b08b48704161fbdc02138fc036b5ac36660 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowNativePropertyTest.cs @@ -0,0 +1,79 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ShowNativePropertyTest : MonoBehaviour + { + [ShowNativeProperty] + private Transform Transform + { + get + { + return transform; + } + } + + [ShowNativeProperty] + private Transform ParentTransform + { + get + { + return transform.parent; + } + } + + [ShowNativeProperty] + private ushort MyUShort + { + get + { + return ushort.MaxValue; + } + } + + [ShowNativeProperty] + private short MyShort + { + get + { + return short.MaxValue; + } + } + + [ShowNativeProperty] + private ulong MyULong + { + get + { + return ulong.MaxValue; + } + } + + [ShowNativeProperty] + private long MyLong + { + get + { + return long.MaxValue; + } + } + + [ShowNativeProperty] + private uint MyUInt + { + get + { + return uint.MaxValue; + } + } + + [ShowNativeProperty] + private int MyInt + { + get + { + return int.MaxValue; + } + } + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowNativePropertyTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowNativePropertyTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..19f9e31f4fb24ddce2e686bf49aa3fb730d0bf96 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowNativePropertyTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b5a73795d25dd334e90a5a347c6079d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowNonSerializedFieldTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowNonSerializedFieldTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..8236d4064dd15085a89f50ac1b557288beeea9c0 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowNonSerializedFieldTest.cs @@ -0,0 +1,33 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ShowNonSerializedFieldTest : MonoBehaviour + { +#pragma warning disable 414 + [ShowNonSerializedField] + private ushort myUShort = ushort.MaxValue; + + [ShowNonSerializedField] + private short myShort = short.MaxValue; + + [ShowNonSerializedField] + private uint myUInt = uint.MaxValue; + + [ShowNonSerializedField] + private int myInt = 10; + + [ShowNonSerializedField] + private ulong myULong = ulong.MaxValue; + + [ShowNonSerializedField] + private long myLong = long.MaxValue; + + [ShowNonSerializedField] + private const float PI = 3.14159f; + + [ShowNonSerializedField] + private static readonly Vector3 CONST_VECTOR = Vector3.one; +#pragma warning restore 414 + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowNonSerializedFieldTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowNonSerializedFieldTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..404ff1bba19d87ae1a8b0e095ea884b1bad10c48 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ShowNonSerializedFieldTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 913d67a695253f744bdc776625b9b948 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/SortingLayerTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/SortingLayerTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..ca5271408a15da9140fc8769a5599380431e73dc --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/SortingLayerTest.cs @@ -0,0 +1,46 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class SortingLayerTest : MonoBehaviour + { + [SortingLayer] + public int layerNumber0; + + [SortingLayer] + public string layerName0; + + public SortingLayerNest1 nest1; + + [Button] + public void DebugLog() + { + Debug.LogFormat("{0} = {1}", nameof(layerNumber0), layerNumber0); + Debug.LogFormat("{0} = {1}", nameof(layerName0), layerName0); + Debug.LogFormat("LayerToName({0}) = {1}", layerNumber0, SortingLayer.IDToName(layerNumber0)); + Debug.LogFormat("NameToLayer({0}) = {1}", layerName0, SortingLayer.NameToID(layerName0)); + } + } + + [System.Serializable] + public class SortingLayerNest1 + { + [SortingLayer] + public int layerNumber1; + + [SortingLayer] + public string layerName1; + + public SortingLayerNest2 nest2; + } + + [System.Serializable] + public struct SortingLayerNest2 + { + [SortingLayer] + public int layerNumber2; + + [SortingLayer] + public string layerName2; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/SortingLayerTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/SortingLayerTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..e8cd99c1a59f9111447ae6af3c8dc3055235faa7 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/SortingLayerTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ed73e666d447964d93c4840f05423dc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/TagTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/TagTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..861725a9bb0d60c7f91acc04445a34e353d0953e --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/TagTest.cs @@ -0,0 +1,34 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class TagTest : MonoBehaviour + { + [Tag] + public string tag0; + + public TagNest1 nest1; + + [Button] + private void LogTag0() + { + Debug.Log(tag0); + } + } + + [System.Serializable] + public class TagNest1 + { + [Tag] + public string tag1; + + public TagNest2 nest2; + } + + [System.Serializable] + public struct TagNest2 + { + [Tag] + public string tag2; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/TagTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/TagTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..88ea5af3b8a322e027ae86c5288a21b6b8849cfc --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/TagTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8bcc0d5613b48fb43bd36c9d37e99900 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ValidateInputTest.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ValidateInputTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..949bb66d2269914198e8f9568faee7a0b6381142 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ValidateInputTest.cs @@ -0,0 +1,52 @@ +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class ValidateInputTest : MonoBehaviour + { + [ValidateInput("NotZero0", "int0 must not be zero")] + public int int0; + + private bool NotZero0(int value) + { + return value != 0; + } + + public ValidateInputNest1 nest1; + + public ValidateInputInheritedNest inheritedNest; + } + + [System.Serializable] + public class ValidateInputNest1 + { + [ValidateInput("NotZero1")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int int1; + + private bool NotZero1(int value) + { + return value != 0; + } + + public ValidateInputNest2 nest2; + } + + [System.Serializable] + public class ValidateInputNest2 + { + [ValidateInput("NotZero2")] + [AllowNesting] // Because it's nested we need to explicitly allow nesting + public int int2; + + private bool NotZero2(int value) + { + return value != 0; + } + } + + [System.Serializable] + public class ValidateInputInheritedNest : ValidateInputNest1 + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ValidateInputTest.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ValidateInputTest.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..f57070a2c627fea45e795e5118d9196118a1c185 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/ValidateInputTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 94adafcfe59aa344c9b5596b2cc6ecd0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_NaughtyComponent.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_NaughtyComponent.cs new file mode 100644 index 0000000000000000000000000000000000000000..638ea66bee0227548f4179908af4b02b365bdaff --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_NaughtyComponent.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + public class _NaughtyComponent : MonoBehaviour + { + } + + [System.Serializable] + public class MyClass + { + } + + [System.Serializable] + public struct MyStruct + { + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_NaughtyComponent.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_NaughtyComponent.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..5702f19489ad310eef1ead6e93dd9a06dbc74c21 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_NaughtyComponent.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 9c928ea15ae74a44089beb2e534c1a35 +timeCreated: 1507996629 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_NaughtyScriptableObject.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_NaughtyScriptableObject.cs new file mode 100644 index 0000000000000000000000000000000000000000..c4d3f0d5c703e81096c3284e6e7b845eb22f3f07 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_NaughtyScriptableObject.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace NaughtyAttributes.Test +{ + //[CreateAssetMenu(fileName = "NaughtyScriptableObject", menuName = "NaughtyAttributes/_NaughtyScriptableObject")] + public class _NaughtyScriptableObject : ScriptableObject + { + [Expandable] + public List<_TestScriptableObjectA> listA; + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_NaughtyScriptableObject.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_NaughtyScriptableObject.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..eb5d253e8faa8df1edc6574b3b50644ba0b64548 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_NaughtyScriptableObject.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 753bdb918c6038142acddbd7aae6958f +timeCreated: 1518639587 +licenseType: Free +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_TestScriptableObjectA.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_TestScriptableObjectA.cs new file mode 100644 index 0000000000000000000000000000000000000000..5f65e097ff0f9c54958802190875e16a4ebd76d7 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_TestScriptableObjectA.cs @@ -0,0 +1,12 @@ +using UnityEngine; +using System.Collections.Generic; + +namespace NaughtyAttributes.Test +{ + //[CreateAssetMenu(fileName = "TestScriptableObjectA", menuName = "NaughtyAttributes/TestScriptableObjectA")] + public class _TestScriptableObjectA : ScriptableObject + { + [Expandable] + public List<_TestScriptableObjectB> listB; + } +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_TestScriptableObjectA.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_TestScriptableObjectA.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..5037e5c2ee75d43e2ebf4062a03b5d77e0bbd532 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_TestScriptableObjectA.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 19472ac11eae27a4b804f354ca7d9c00 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_TestScriptableObjectB.cs b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_TestScriptableObjectB.cs new file mode 100644 index 0000000000000000000000000000000000000000..74494837f11d38465f6d663c83bbf7f29efdd462 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_TestScriptableObjectB.cs @@ -0,0 +1,12 @@ +using UnityEngine; +using System.Collections.Generic; + +namespace NaughtyAttributes.Test +{ + //[CreateAssetMenu(fileName = "TestScriptableObjectB", menuName = "NaughtyAttributes/TestScriptableObjectB")] + public class _TestScriptableObjectB : ScriptableObject + { + [MinMaxSlider(0, 10)] + public Vector2Int slider; + } +} \ No newline at end of file diff --git a/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_TestScriptableObjectB.cs.meta b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_TestScriptableObjectB.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..0562e579f864bf5739334247e1d4830a9cb521ee --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/Scripts/Test/_TestScriptableObjectB.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c2b396aeebc9d984da298eee313896bc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NaughtyAttributes-2.1.4/package.json b/Assets/NaughtyAttributes-2.1.4/package.json new file mode 100644 index 0000000000000000000000000000000000000000..960db0578e3778b14573407daf9265e1fb80f930 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/package.json @@ -0,0 +1,21 @@ +{ + "name": "com.dbrizov.naughtyattributes", + "displayName": "NaughtyAttributes", + "version": "2.1.4", + "unity": "2018.4", + "description": "NaughtyAttributes is an extension for the Unity Inspector.", + "keywords": [ "attribute", "inspector", "editor" ], + "category": "editor extensions", + "dependencies": {}, + "samples": [ + { + "displayName": "Demo Scene", + "description": "Demo Scene", + "path": "Samples/DemoScene" + } + ], + "author": { + "name": "Denis Rizov", + "url": "https://github.com/dbrizov" + } +} diff --git a/Assets/NaughtyAttributes-2.1.4/package.json.meta b/Assets/NaughtyAttributes-2.1.4/package.json.meta new file mode 100644 index 0000000000000000000000000000000000000000..6f1fa8257294af40600fae9d34f27fa7a2a3cdc4 --- /dev/null +++ b/Assets/NaughtyAttributes-2.1.4/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: db9a5ca20403b0344ae64015de8f8c86 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: