diff --git a/assets/css/_darkmode.scss b/assets/css/_darkmode.scss index aea3fde3f..dbbb5a70e 100644 --- a/assets/css/_darkmode.scss +++ b/assets/css/_darkmode.scss @@ -313,7 +313,13 @@ $tooltip-shadow: #333; .reverted-edit { background: #4e4c40 !important; + } + + .pending-edit:not(.reverted-edit) { + background: #333127 !important; + } + .reverted-edit, .pending-edit { .text-info { color: #74cefa; } diff --git a/assets/css/application.scss b/assets/css/application.scss index fe2546220..4325fb169 100644 --- a/assets/css/application.scss +++ b/assets/css/application.scss @@ -731,6 +731,10 @@ a.help-icon { background: #fcf8e3 !important; } +.pending-edit:not(.reverted-edit) { + background:#fffdf2 !important; +} + .side-to-side > div { display: inline-block; margin: 0 10px 15px 0; diff --git a/config/packages/nelmio_api_doc.yaml b/config/packages/nelmio_api_doc.yaml index bf443245c..0bfc13fbf 100644 --- a/config/packages/nelmio_api_doc.yaml +++ b/config/packages/nelmio_api_doc.yaml @@ -264,9 +264,17 @@ nelmio_api_doc: type: boolean description: Whether the edit has definitively been reverted. - A `false` value or commission of the `reverted` property does not + A `false` value or ommission of the `reverted` property does not necessarily mean it wasn't reverted. example: true + pending: + type: boolean + description: + Whether the edit is pending review. + (From the FlaggedRevs extension.) + A `false` value or omission of the property does not + necessarily mean it isn't pending. + example: true EditWithProject: allOf: - properties: diff --git a/i18n/en.json b/i18n/en.json index 80a045073..6c3c5100f 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -340,6 +340,7 @@ "pattern-input-desc": "A pattern can be any text where $1 is a wildcard.", "pc-accept": "Pending change accept", "pc-reject": "Pending change unaccept", + "pending": "Pending", "percent-of-edit-count": "% of edit count", "percent-of-tools": "% of tools", "percentage": "Percentage", diff --git a/i18n/qqq.json b/i18n/qqq.json index 3317c016b..91842d313 100644 --- a/i18n/qqq.json +++ b/i18n/qqq.json @@ -359,6 +359,7 @@ "pattern-input-desc": "Description of the syntax that should be used for the 'Inclusion pattern' and 'Exclusion pattern' fields in the Largest Pages tool. $1 is the character that should be used for a wildcard.", "pc-accept": "Name of MediaWiki action to accept a pending change. On some wikis this may be referred to as 'flagged revision'. When in doubt, use a direct translation of 'accept'.\n{{Identical|Accept}}", "pc-reject": "Name of MediaWiki action to reject a pending change. On some wikis this may be referred to as 'flagged revision'. When in doubt, use a direct translation of 'reject'.\n{{Identical|Reject}}", + "pending": "Label for pending edits (from the FlaggedRevs extension). Try to keep this label short", "percent-of-edit-count": "In the AutoEdits tool, this is the heading for the column that shows the percentage that a tool was used compared to the user's total edit count.", "percent-of-tools": "In the AutoEdits tool, this is the heading for the column that shows the percentage that a tool was used compared to all other tools that were used.", "percentage": "Label for the a percentage value.\n{{Identical|Percentage}}", diff --git a/public/build/app.7692d209.css b/public/build/app.6998a4d8.css similarity index 61% rename from public/build/app.7692d209.css rename to public/build/app.6998a4d8.css index 7f9ddb33b..419ed9ab1 100644 --- a/public/build/app.7692d209.css +++ b/public/build/app.6998a4d8.css @@ -1 +1 @@ -@charset "UTF-8";.contributions-nav{margin-bottom:10px}.contributions-nav:last-child{margin-bottom:0}.contributions-limit--wrapper{-webkit-transform:translateY(-5px);-moz-transform:translateY(-5px);-ms-transform:translateY(-5px);-o-transform:translateY(-5px);transform:translateY(-5px)}.contributions-limit--wrapper label{font-weight:400}.contributions-loading{display:none;float:left}.contributions-container--loading{opacity:.3}.contributions-container--loading .contributions-nav{visibility:hidden}.contributions-container--loading .contributions-loading{display:block}html{height:100%}body{background:url(/build/images/gradient.bc9a6010.png);min-height:100%;position:relative}body:after{content:"";display:block;min-height:148px}body.rtl{direction:rtl}body.rtl .tool-links{float:right;padding-right:0!important}body.rtl .tool-links .nav{padding-right:0}body.rtl .tool-links .nav li{float:right}body.rtl .lang-group ul{left:0;right:auto;text-align:right}body.rtl .nav-buttons{float:left!important;margin-left:8px;margin-right:0}body.rtl .navbar-toggle{float:right!important}body.rtl .back-to-search{left:auto;right:0}body.rtl .back-to-search .glyphicon-chevron-left{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}@media (max-width:767px){body.rtl .tool-links li{float:none!important}}body.rtl .form-row:first-child>:first-child{border-top-left-radius:0;border-top-right-radius:4px}body.rtl .form-row:first-child>:last-child{border-top-left-radius:4px;border-top-right-radius:0}body.rtl .input-group-addon:first-child{border-left:0;border-right:1px solid #ccc}body.rtl .form-row:last-child>:first-child{border-bottom-left-radius:0;border-bottom-right-radius:4px}body.rtl .form-row:last-child>:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:0}body.rtl .input-group-addon:last-child{border-left:1px solid #ccc;border-right:0}body.rtl .form-label{text-align:right}body.rtl .form-label .tooltipcss{float:left!important}body.rtl .tooltip-body{margin-left:0;margin-right:28px;text-align:right}body.rtl .tooltip-body:after,body.rtl .tooltip-body:before{left:100%;right:auto}body.rtl .tooltip-body:before{border-color:transparent transparent transparent #dca}body.rtl .tooltip-body:after{border-color:transparent transparent transparent #fffaf0}body.rtl .typeahead{text-align:right}body.rtl .app-footer .footer-about{padding-right:15px}body.rtl .app-footer .footer-branding{float:left!important}body.rtl .table td,body.rtl .table th{text-align:right}@media (min-width:1200px){body.rtl .stat-list{float:right!important}}body.rtl .stat-list>.table td:first-child,body.rtl .stat-list>.table th:first-child{text-align:left}body.rtl .stat-list>.table td:last-child,body.rtl .stat-list>.table th:last-child{text-align:right}@media (max-width:767px){body.rtl .stat-list>.table td:first-child{text-align:right}}body.rtl .panel{text-align:right}body.rtl .toggle-table{float:right}body.rtl .toggle-table--chart{float:right;margin-left:0!important;margin-right:100px!important}body.rtl .chart-legend{margin-left:0;margin-right:15px}body.rtl .chart-legend .color-icon{margin-left:5px;margin-right:0}body.rtl .chart-wrapper{float:right;margin-left:50px;margin-right:0}body.rtl .xt-panel-description{float:left!important}body.rtl .dropdown-menu-right{left:0;right:auto;text-align:right}body.rtl .times-in-utc{float:right}body.rtl.pageinfo .legend-body{text-align:right}body.rtl.pageinfo .sort-entry--assessment,body.rtl.pageinfo .sort-entry--importance{text-align:center}body.rtl.pageinfo .date-range{left:30px;right:auto}body.rtl .rm-inline-margin{margin-left:-4px;margin-right:0}body.rtl .diff-pos:before{display:none}body.rtl .diff-pos:after{color:#006400;content:"+"}body.rtl .side-to-side>div{margin:0 0 15px 10px}.strong{font-weight:700}#wrapper{background:#fff;border-radius:5px;margin:15px}.site-notice{margin:0 15px}.navbar-top{border-top:0;min-height:51px;padding:0}.navbar-top li:last-child{padding-right:0}.tool-links{float:left;padding:0}.tool-links.in{position:relative;top:8px}.tool-links .nav{margin:0}.nav-buttons{left:1px;margin-right:8px;position:relative;top:8px}.nav-buttons li{padding:0 2px}.navbar-nav>li>a{height:50px;line-height:50px;padding:0 10px}.home-link{bottom:1px;padding:0 12px;position:relative}.home-link:after{background:#e7e7e7;bottom:0;content:"";display:inline-block;height:80%;left:100%;margin:auto;position:absolute;top:3px;width:1px}.home-link img{height:32px}.navbar-toggle{left:5px;margin:0;position:relative;top:9px}.lang-group .dropdown-menu{max-height:194px;overflow-y:scroll}.lang-group .btn{padding-left:30px}.lang-group svg{height:17px;left:8px;position:absolute;top:8px;width:17px}.login-btn .glyphicon-user{padding-right:2px;top:2px}.xt-page-title>small:before{content:"•";margin-right:10px}.tooltipcss{position:static;text-decoration:none}.tooltipcss .tooltip-body{background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:5px 5px 8px #ccc;color:#111;display:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:16px;margin-left:28px;max-width:350px;min-width:200px;padding:14px 20px;text-align:left;white-space:normal;z-index:10}.tooltip-body:after,.tooltip-body:before,.tooltipcss .tooltip-body{position:absolute;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.tooltip-body:after,.tooltip-body:before{border-style:solid;color:transparent;content:"";display:block;height:0;right:100%;width:0}.tooltip-body:before{border-color:transparent #ddd transparent transparent;border-width:11px}.tooltip-body:after{border-color:transparent #fff transparent transparent;border-width:10px}.tooltipcss:hover .tooltip-body{display:block}.callout{border:0;left:-12px;position:absolute;top:30px;z-index:20}.form-label{min-width:15em;text-align:left;white-space:normal}.xt-heading-top{font-size:1.8em;margin-bottom:0;padding-bottom:0;position:relative}.xt-heading-subtitle{margin-top:3px}.back-to-search{font-size:16px;left:0;position:absolute;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.back-to-search:hover{text-decoration:none}.date-range{font-size:70%;position:absolute;right:30px;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}@media (max-width:767px){.date-range{display:block;left:0;position:relative;top:0;transform:none}}.xt-toc{background:#fff;font-size:110%;margin-top:20px;padding:10px;width:100%;z-index:100}.xt-toc span:after{content:" • "}.xt-toc span:last-child:after{content:""}.xt-toc .bold{font-weight:700}.xt-toc.fixed{box-shadow:5px 5px 8px #ccc;left:50%;margin:0;position:fixed;top:0;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%);white-space:nowrap;width:auto}.table-sticky-header{position:relative}.table-sticky-header .sticky-heading{background:#fff;left:0;position:absolute;top:0}.xt-alert{margin:0;padding:10px;text-align:center}.xt-alert:not(:first-child){margin-top:10px}.xt-alert .close{opacity:.8;right:0;top:0}.xt-error-alert{margin-top:20px}.xt-error-alert:only-child{margin:0}.panel-primary>.panel-heading a{color:#fff}section>.panel-body{overflow-x:auto}.panel-body .alert:last-child,.panel-body .table:only-child{margin-bottom:0}.xt-panel-body table{clear:both;white-space:nowrap}.xt-panel-body .panel-body{width:100%}.xt-table>tbody>tr>td{padding-bottom:1px;padding-top:1px;vertical-align:top}.xt-table>tbody>tr>th{font-weight:400;padding:5px 2px;white-space:nowrap}.xt-show{display:none}.xt-hide,.xt-show{bottom:2px;cursor:pointer;position:relative}.xt-hide:hover,.xt-show:hover{text-decoration:underline}.xt-panel-description{font-size:80%;font-weight:400;line-height:normal;margin-left:8px}.inline-block{display:inline-block}.table .show-more-row td{border:0}.xt-pagination{margin:0}.panel-danger,.panel-default,.panel-primary{margin-bottom:0}.panel-default{margin-top:20px;text-align:left}.panel-default>.panel-heading{padding:5px 10px}.login{background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTIiIGhlaWdodD0iMTMuODM3Ij48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImUiPjxzdG9wIG9mZnNldD0iMCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1vcGFjaXR5PSIwIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImIiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzNiNzRiYyIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzJkNTk5MCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJjIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNjOWM5YzkiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYSI+PHN0b3Agb2Zmc2V0PSIwIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLW9wYWNpdHk9IjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZCI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZjRkOWIxIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZGY5NzI1Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgeDE9IjMwLjkzNiIgeTE9IjI5LjU1MyIgeDI9IjMwLjkzNiIgeTI9IjM1LjgwMyIgaWQ9ImgiIHhsaW5rOmhyZWY9IiNjIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIvPjxsaW5lYXJHcmFkaWVudCB4MT0iMjAuNjYyIiB5MT0iMzUuODE4IiB4Mj0iMjIuNjI3IiB5Mj0iMzYuMjE4IiBpZD0iayIgeGxpbms6aHJlZj0iI2UiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0icm90YXRlKDEwLjQ5IDE3LjU2MSAzMi42MykiLz48bGluZWFyR3JhZGllbnQgeDE9IjIyLjY4NyIgeTE9IjM2LjM5IiB4Mj0iMjEuNDA4IiB5Mj0iMzUuNzQiIGlkPSJsIiB4bGluazpocmVmPSIjZSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLS45NzggLjIxIC4yMSAuOTc4IDU1LjExIC0zLjk0NSkiLz48cmFkaWFsR3JhZGllbnQgY3g9IjMxLjExMyIgY3k9IjE5LjAwOSIgcj0iOC42NjIiIGZ4PSIzMS4xMTMiIGZ5PSIxOS4wMDkiIGlkPSJmIiB4bGluazpocmVmPSIjYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiLz48cmFkaWFsR3JhZGllbnQgY3g9IjI4LjA5IiBjeT0iMjcuMjAzIiByPSIxMy41NjUiIGZ4PSIyOC4wOSIgZnk9IjI3LjIwMyIgaWQ9ImciIHhsaW5rOmhyZWY9IiNiIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjI5OCAwIDAgLjg4NSAtOC4zNTkgNC45NCkiLz48cmFkaWFsR3JhZGllbnQgY3g9IjMxLjExMyIgY3k9IjE5LjAwOSIgcj0iOC42NjIiIGZ4PSIzMS4xMTMiIGZ5PSIxOS4wMDkiIGlkPSJpIiB4bGluazpocmVmPSIjYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiLz48cmFkaWFsR3JhZGllbnQgY3g9IjI5LjM0NSIgY3k9IjE3LjA2NCIgcj0iOS4xNjIiIGZ4PSIyOS4zNDUiIGZ5PSIxNy4wNjQiIGlkPSJqIiB4bGluazpocmVmPSIjZCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjc4OCAwIDAgLjc4OCA2LjIyMSAzLjYxOCkiLz48L2RlZnM+PGcgY29sb3I9IiMwMDAiPjxwYXRoIGQ9Ik0zOS43NzUgMTkuMDA5YTguNjYyIDguNjYyIDAgMSAxLTE3LjMyNCAwIDguNjYyIDguNjYyIDAgMSAxIDE3LjMyNCAweiIgdHJhbnNmb3JtPSJtYXRyaXgoLjY5MyAwIDAgLjM3NCAtMTUuNTQ4IDMuNDgxKSIgZmlsbD0idXJsKCNmKSIgZmlsbC1ydWxlPSJldmVub2RkIiBvdmVyZmxvdz0idmlzaWJsZSIvPjxwYXRoIGQ9Ik00LjA0NiAxMi4zOThoNC4xMzdjMS4xNzIgMCAyLjMzMi0uNDMgMi43NTgtMS42NTUuNDA0LTEuMTYzLjA2OS0zLjM3OC0yLjU1MS01LjE3MUgzLjQ5NUMuODc1IDcuMjI3LjU0OCA5LjQ4OSAxLjE1MSAxMC44MTJjLjYxNCAxLjM0NyAxLjY1NSAxLjU4NiAyLjg5NiAxLjU4NnoiIGZpbGw9InVybCgjZykiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMjA0YTg3IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIG92ZXJmbG93PSJ2aXNpYmxlIiBzdHJva2Utd2lkdGg9Ii4zOSIvPjxwYXRoIGQ9Ik00LjMyMSA2LjE5M2MxLjI0MSAxLjEwMyAxLjc5MyA1LjEwMiAxLjc5MyA1LjEwMnMuNTUyLTMuOTk5IDEuNTE3LTUuMTcxbC0zLjMwOS4wNjl6IiBmaWxsPSJ1cmwoI2gpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PHBhdGggZD0iTTUuMjEgNi42MDdzLS44MzkuNjQ4LS43NjcgMS40MjhjLS43OTYtLjcwMi0uODE5LTIuMDQ4LS44MTktMi4wNDhsMS41ODYuNjJ6IiBmaWxsPSIjNzI5ZmNmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PHBhdGggZD0ibTQuMDE4IDExLjk5MiA0LjA5Mi0uMDA5YzEuMDI5IDAgMi4wNDktLjM3NyAyLjQyMi0xLjQ1My4zNTUtMS4wMjItLjAzNy0yLjk2Ny0yLjMzOC00LjU0MmwtNC40OTUtLjA5NUMxLjM5OCA3LjM0Ni45NTIgOS4zMzQgMS40OTEgMTAuNTljLjUzOCAxLjI1NiAxLjMyNCAxLjM5MyAyLjUyNiAxLjQwMXoiIG9wYWNpdHk9Ii4yMTUiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBvdmVyZmxvdz0idmlzaWJsZSIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIuMzkiLz48cGF0aCBkPSJNNi45NDEgNi42MDdzLjgzOS42NDguNzY3IDEuNDI4Yy43OTYtLjcwMi44MTktMi4wNDguODE5LTIuMDQ4bC0xLjU4Ni42MnoiIGZpbGw9IiM3MjlmY2YiIGZpbGwtcnVsZT0iZXZlbm9kZCIgb3ZlcmZsb3c9InZpc2libGUiLz48cGF0aCBkPSJNMzkuNzc1IDE5LjAwOWE4LjY2MiA4LjY2MiAwIDEgMS0xNy4zMjQgMCA4LjY2MiA4LjY2MiAwIDEgMSAxNy4zMjQgMHoiIHRyYW5zZm9ybT0ibWF0cml4KC4zOSAwIDAgLjM5IC02LjEzOCAtMi40NzUpIiBmaWxsPSJ1cmwoI2kpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PHBhdGggZD0iTTM5Ljc3NSAxOS4wMDlhOC42NjIgOC42NjIgMCAxIDEtMTcuMzI0IDAgOC42NjIgOC42NjIgMCAxIDEgMTcuMzI0IDB6IiBmaWxsPSJ1cmwoI2opIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iI2MxN2QxMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBvdmVyZmxvdz0idmlzaWJsZSIgdHJhbnNmb3JtPSJtYXRyaXgoLjM5IDAgMCAuMzkgLTYuMDg5IC0zLjg0KSIvPjxwYXRoIGQ9Ik05LjAwNSAzLjU3MmEyLjk2MiAyLjk2MiAwIDEgMS01LjkyNSAwIDIuOTYyIDIuOTYyIDAgMSAxIDUuOTI1IDB6IiBvcGFjaXR5PSIuMTk2IiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iLjM4OTg4IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIG92ZXJmbG93PSJ2aXNpYmxlIiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTIuNDMzIDEyLjA2MmMtLjQ4Ny0uMjEzLS43MDQtLjcyNS0uNzA0LS43MjVDMi4wNTcgOS43NSAzLjE4IDguNTg5IDMuMTggOC41ODlzLS44ODkgMi41LS43NDYgMy40NzN6IiBvcGFjaXR5PSIuMjI4IiBmaWxsPSJ1cmwoI2spIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PHBhdGggZD0iTTkuODA2IDExLjcyOGMuNDgtLjIyNy43MDQtLjc4MS43MDQtLjc4MS0uMzc0LTEuNTc3LTEuNTUxLTIuNjY5LTEuNTUxLTIuNjY5cy45NjEgMi40NzQuODQ3IDMuNDV6IiBvcGFjaXR5PSIuMjI4IiBmaWxsPSJ1cmwoI2wpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9nPjwvc3ZnPg==);background-position:0;background-repeat:no-repeat;line-height:1.125em;margin-top:.5em;padding-left:15px!important;white-space:nowrap}.app-footer{bottom:0;left:0;margin-top:30px;min-height:148px;padding:15px;position:absolute;width:100%}.app-footer hr{margin-bottom:0}.footer-content{padding-top:20px}.footer-about{display:inline;max-width:calc(100% - 200px)}.footer-branding,.footer-quote{white-space:nowrap}.footer-quote{display:inline-block;font-style:italic;max-width:100%;overflow-x:hidden;position:relative;text-overflow:ellipsis;top:8px}.lang-dropdown .dropdown-menu{height:194px;overflow-y:scroll}.navbar-default{background:transparent}.form-fieldset{margin-bottom:15px}.form-fieldset .checkbox{margin-bottom:0}.form-fieldset:nth-child(2){margin-top:-15px}.form-submit{margin-bottom:20px}.form-row>*{border-radius:0}.form-row .input-group-addon label{font-weight:400;margin:0}.form-row:first-child>:first-child{border-top-left-radius:4px}.form-row:first-child>:last-child{border-top-right-radius:4px}.form-row:last-child>:first-child{border-bottom-left-radius:4px}.form-row:last-child>.form-control:last-of-type{border-bottom-right-radius:4px}.form-control[disabled],.form-control[readonly]{background-color:transparent;cursor:not-allowed;opacity:.8}.stat-list{margin-bottom:20px}.stat-list caption{text-align:center}.panel-body .stat-list:only-child{margin-bottom:0}.stat-list>.table td,.stat-list>.table th{border:0;padding-bottom:0;padding-top:0;white-space:normal}.stat-list>.table td:first-child:not(.non-label,.stat-list--footer),.stat-list>.table th:first-child:not(.non-label,.stat-list--footer){font-weight:700;text-align:right}.stat-list>.table td:first-child:not(.non-label,.stat-list--footer):after,.stat-list>.table th:first-child:not(.non-label,.stat-list--footer):after{content:":"}.stat-list--new-group{padding-top:10px!important}.stat-list tr:first-child>td.stat-list--new-group{padding-top:0!important}.stat-list--group{border-top:0!important}.stat-list--group>tr:first-child>td{border-bottom:1px solid #eee!important;padding-top:15px!important;text-align:center!important}.stat-list--group>tr:nth-child(2)>td{padding-top:5px!important}.color-icon{border-radius:100%;display:inline-block;height:15px;vertical-align:-2px;width:15px}.diff-pos{color:#006400}.diff-pos:before{color:#006400;content:"+"}.diff-neg{color:#8b0000}.diff-zero{color:#a2a9b1}.sort-link{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.sort-link .glyphicon{top:2px;visibility:hidden}.sort-link .glyphicon-sort-by-alphabet,.sort-link .glyphicon-sort-by-alphabet-alt,.sort-link:hover .glyphicon-sort{visibility:visible}.assessment-badge{height:20px;width:20px}.rm-inline-margin{margin-right:-4px}.rm-inline-margin-left{margin-left:-4px}.toggle-table{float:left}.toggle-table .toggle-table--toggle{cursor:pointer;margin-right:4px;position:relative}.toggle-table tr:hover .toggle-table--toggle .color-icon{visibility:hidden}.toggle-table tr:hover .toggle-table--toggle .glyphicon{display:block}.toggle-table tr.excluded td.linked a,.toggle-table tr.excluded td:not(.linked){opacity:.5;text-decoration:line-through}.toggle-table tr.excluded .color-icon{opacity:.5}.toggle-table td .glyphicon{display:none;left:1px;position:absolute}.toggle-table--chart{float:left;margin-left:100px;margin-top:20px;max-width:500px}.toggle-table--chart canvas{height:400px;width:400px}.basic-info-charts{clear:both;display:block;padding-top:20px;position:relative}.basic-info-charts canvas:not(#sizechart-canvas){max-width:150px}.basic-info-charts .sizechart-container{height:200px;min-width:650px;position:relative}.basic-info-charts .chart-wrapper{display:flex;float:left;margin-right:50px}.basic-info-charts .chart-legend{align-self:center;margin-left:15px}.basic-info-charts .chart-legend .color-icon{vertical-align:-4px}.display-title *{font-size:inherit!important}.error-wrapper{font-size:18px}.error-wrapper p{margin-bottom:30px}.error-mascot{margin-right:30px;max-width:100%;width:300px}.times-in-utc{margin-top:15px}.download-dropdown{bottom:5px}.download-dropdown .glyphicon-download-alt{top:2px}.multi-select{height:auto}.multi-select .checkbox{display:inline-block;float:left;margin-top:3px;width:33.3333333333%}.user-group-icon{height:18px}a.help-icon{font-size:25px;position:relative;text-decoration:none;top:5px}.help-text{cursor:help;text-decoration:underline dotted}.reverted-edit{background:#fcf8e3!important}.side-to-side>div{display:inline-block;margin:0 10px 15px 0;vertical-align:top}.side-to-side{clear:both}.link-loading{font-style:italic;pointer-events:none}.pageinfo .top-editors-charts{display:block;margin-bottom:25px;position:relative}.pageinfo .top-editors-charts canvas{max-height:250px;max-width:250px}.pageinfo .year-count-charts{clear:both;display:block;margin-bottom:25px;position:relative}.pageinfo .year-count-charts canvas{max-width:800px}.pageinfo .chart-wrapper{display:flex;flex-wrap:wrap;float:left;margin-right:50px}.pageinfo #textshares_chart{display:none;height:auto;width:auto}.pageinfo .chart-title{font-weight:700;text-align:center}.pageinfo .chart-legend{align-self:center;margin-left:15px}.pageinfo .chart-legend .color-icon{vertical-align:-4px}.pageinfo .legend-label{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:middle}.pageinfo .legend-value{vertical-align:bottom}.pageinfo .top-editors-table{margin-bottom:0}.pageinfo .footnotes{margin-bottom:20px;margin-top:5px}.pageinfo .month-counts-table .stripes-column{height:30px;padding:0}.pageinfo .month-counts-table .stripes{height:33.3333333333%}.pageinfo .sort-entry--assessment,.pageinfo .sort-entry--importance{font-weight:700;text-align:center}.pageinfo .sort-entry--assessment a,.pageinfo .sort-entry--importance a{color:#4365cc}.pageinfo .bugs-table .sort-entry--explanation{min-width:400px;white-space:pre-wrap}@media (max-width:767px){.pageinfo #year_count_legend{margin:0}.pageinfo #year_count_legend .legend-body>div{display:inline;margin-right:10px}}.autoedits #summary .chart-wrapper,.autoedits #summary .chart-wrapper canvas{max-width:300px}.autoedits #summary .chart-wrapper .chart-legend{display:none}.autoedits #tool_chart{display:none;height:auto;width:auto}.autoedits .autoedits-stat-list{margin-bottom:0;padding-bottom:0}.autoedits .tool-selector-form{margin-bottom:20px}.autoedits .tool-selector-form .btn-primary{vertical-align:bottom}.autoedits .tool-selector-form .form-submit{margin-bottom:0}.autoedits .contributions-container--loading .tool-selector-form{visibility:hidden}.autoedits #toolSelector{display:inline-block;width:auto}.autoedits .tooltipcss--tool-counts{cursor:help;position:relative;vertical-align:-1px}.autoedits .tooltipcss--tool-counts .tooltip-body{min-width:300px}.autoedits .footnotes{margin:20px 0 0}.blame .diff{border:0;border-collapse:initial;border-spacing:4px;margin:0;width:100%}.blame .diff td{padding:.33em .5em}.blame .diff td div{word-wrap:break-word}.blame .diff-lineno{font-weight:700}.blame .diff-marker{font-size:1.25em;padding:.25em;text-align:right}.blame .diff-context{background:#f8f9fa;border-color:#eaecf0;color:#222}.blame .diff-deletedline{border-color:#ffe49c}.blame .diff-deletedline .diffchange{background:#feeec8}.blame .diff-addedline{border-color:#a3d3ff}.blame .diff-addedline .diffchange{background:#d8ecff}.blame .diff-addedline,.blame .diff-context,.blame .diff-deletedline{border-radius:.33em;border-style:solid;border-width:1px 1px 1px 4px;line-height:1.6;vertical-align:top;white-space:pre-wrap}.blame .diff-addedline .diffchange,.blame .diff-deletedline .diffchange{border-radius:.33em;padding:.25em 0}.blame .diffchange{text-decoration:none}.categoryedits .toggle-table--chart{margin-left:50px}.categoryedits #category_chart{display:none;height:auto;width:auto}.categoryedits .select2-selection--multiple{border-color:#ccc!important;border-radius:0}.categoryedits .select2-results__option,.categoryedits .select2-selection__rendered{padding-left:12px!important}.categoryedits .select2-results__message{display:none}.categoryedits .select2-results__option--highlighted{background:#3379b7!important}.categoryedits .loading-results{display:none}.editcounter .stat-list .table{margin:0 auto}.editcounter .stat-list .table.rights-changes-summary{margin:0}.editcounter .stat-list--empty-group{font-weight:400!important}.editcounter .stat-list--empty-group:after{content:""!important}.editcounter #timecard-bubble-chart{max-width:1100px}.editcounter #monthcounts-canvas,.editcounter #yearcounts-canvas{max-width:1000px}.editcounter .yearmonth-container{display:flex;flex-direction:row;flex-wrap:wrap;width:100%}.editcounter .yearmonth-chart-container{flex-grow:1}.editcounter #namespace-canvas{height:auto;width:auto}.editcounter .top-project-edit-counts td{white-space:nowrap}.editcounter .footnotes{clear:both;padding-top:20px}.editcounter .tooltipcss--pages-created{position:relative;vertical-align:-1px}.editcounter .tooltipcss--pages-created:hover{text-decoration:none}.editcounter .tooltipcss--pages-created .tooltip-body{min-width:300px}.editcounter .pending{opacity:.5}.home #wrapper{background:transparent}.home .splash-logo{margin-top:30px;max-width:320px;width:100%}.home .tool-list{padding-top:10px;text-align:left}.home .tool-list .btn{display:block;margin-top:15px;position:relative;text-align:left;white-space:normal;width:100%}.home .tool-name{font-weight:700}@media (max-width:767px){.home .splash-logo{max-width:450px;width:90%}}.meta #api_usage_chart,.meta #usage_chart{max-width:1000px}.pages .panel-body h3{clear:both}.pages .panel-body h4:not(:first-child){padding-top:10px}.pages .deleted-page{cursor:help;position:relative}.pages .deleted-page .tooltip-body{left:67%;width:300px}.pages .sort-entry--page-title{white-space:normal}.topedits .color-icon{margin-right:3px}.topedits .footnotes{margin:20px 0}@media (max-width:767px){.basic-info-charts{display:none;margin-bottom:0}}@media (prefers-color-scheme:dark){:root{scrollbar-color:#aaa transparent}#wrapper,.panel-body,.xt-toc,body{background:#181818;color:#aaa}.xt-toc.fixed{box-shadow:5px 5px 8px #333}.home-link:after,[role=separator]{display:none}.dropdown-menu,.dropdown.open,.form-label{background:#222}.dropdown-menu{box-shadow:0 6px 12px #333}.dropdown-menu>.active>a,.dropdown-menu>li>a{background:#222;color:#999}.dropdown-menu>.active>a:hover,.dropdown-menu>li>a:hover{background:#333;color:#999}.navbar-default{border:0}.navbar-default .navbar-nav>li>a{color:#999}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#aaa}header{background:#212121!important}.stat-list--group>tr:first-child>td{border-color:#606060!important}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-color:#606060}.table-striped>tbody>tr:hover,.table-striped>tbody>tr:nth-of-type(odd){background-color:transparent}.table-sticky-header .sticky-heading{background:#111}a,a:hover{color:#09f}.panel-primary,.panel-primary .panel-heading{border-color:#606060}.help-icon,.help-icon:hover,.panel-primary>.panel-heading,.panel-primary>.panel-heading a,.panel-primary>.panel-heading a:hover,h4{color:#aaa}.panel{background-color:transparent}.form-control,.form-label,.panel-default,.panel-default>.panel-heading,hr{border-color:#333}.form-control:focus{border-color:#606060;box-shadow:inset 0 1px 1px #333,0 0 8px #333}.form-control,.form-label,label{color:#999}.form-control{background:#111;color:#999}.blame .diff-context{background:transparent;color:#aaa}.diffchange-inline{color:#333}.btn-default{background:#222;border-color:#222;color:#999}.btn-default svg{fill:#999}.btn-default:hover svg,.open .btn-default svg{fill:#333}.select2-container--default .select2-selection--multiple,.select2-container--default .select2-selection--multiple .select2-selection__choice{background:transparent}.select2-dropdown{background-color:#222}.categoryedits .select2-selection--multiple{border-color:#333!important}.categoryedits .select2-results__option--highlighted,.select2-container--default .select2-results__option[aria-selected=true]{background-color:#333!important}.alert .close{opacity:.8;text-shadow:none}.alert-info{background:#012;border:0;color:#999}.alert-warning{background-color:#8a6d3b;color:#fcf8e3}.alert-danger{background-color:#a94442;border-color:#ff6b6b;color:#1b1818}.color-icon,canvas{background:transparent}.tooltipcss .tooltip-body{background:#333;border-color:#606060;box-shadow:5px 5px 8px #333;color:#aaa}.tooltipcss .tooltip-body:before{border-color:transparent #606060 transparent transparent}.tooltipcss .tooltip-body:after{border-color:transparent #333 transparent transparent}body.rtl .tooltipcss .tooltip-body:before{border-color:transparent transparent transparent #606060}body.rtl .tooltipcss .tooltip-body:after{border-color:transparent transparent transparent #333}.diff-pos,.diff-pos:before{color:#00b400}.diff-neg{color:#f73d3d}.pagination>li>a{background-color:transparent;border-color:#606060;color:#aaa}.pagination>li>a:focus,.pagination>li>a:hover{background-color:#333;border-color:#606060;color:#aaa}.pagination>li.disabled>span{background-color:inherit;border-color:inherit;opacity:.5}.pagination>li.active>a,.pagination>li.active>a:focus,.pagination>li.active>a:hover{background-color:#333;border-color:#606060;color:#aaa}.reverted-edit{background:#4e4c40!important}.reverted-edit .text-info{color:#74cefa}.reverted-edit .text-muted{color:#909090}.footer-branding,.home-link,.splash-logo{filter:invert(1) hue-rotate(180deg)}}@media (min-width:1200px){.xt-panel-body table{width:auto}}@media (max-width:1200px){.stat-list>.table td:first-child,.stat-list>.table th:first-child{width:300px}}@media (max-width:992px){.error-mascot{width:200px}}@media (max-width:767px){.basic-info-charts .chart-wrapper{display:block!important}.basic-info-charts .chart-wrapper .chart-legend{margin-bottom:15px}.app-footer{position:relative}.footer-branding{float:left!important;margin-bottom:10px}.footer-about{clear:both;display:block;max-width:100%}.footer-quote{overflow-x:initial;text-overflow:clip;white-space:normal}.xt-panel-description{display:block}.stat-list{padding:0}.stat-list>.table td:first-child,.stat-list>.table th:first-child{display:block;padding-top:5px;text-align:left!important}.stat-list>.table td:first-child.stat-list--new-group,.stat-list>.table th:first-child.stat-list--new-group{padding-top:15px!important}.stat-list>.table td .stat-list--new-group,.stat-list>.table td:last-child,.stat-list>.table th .stat-list--new-group,.stat-list>.table th:last-child{display:block;padding-top:0!important}.stat-list--group{padding-top:15px!important}.stat-list--group tr>td{padding-top:5px!important}.stat-list--group>tr:first-child>td{text-align:left!important}.back-to-search{font-size:0}.back-to-search .glyphicon{font-size:medium}.tool-links{clear:both;width:100%}.xt-panel-body{padding:15px 0}.panel-default{border-radius:0}#wrapper{margin:15px 5px}.xt-toc{display:none}.toggle-table--chart{margin:0;max-width:100%}.xt-page-title>small{display:block;padding:3px 0 10px}.xt-page-title>small:before{display:none}.input-group{margin-bottom:15px;width:100%}.input-group .tooltipcss{display:none}.input-group input[type=text]{border-radius:0!important}.input-group-addon{background:transparent;border:0;display:block;padding:0}.input-group-addon:first-child{font-weight:700}.input-group-addon:last-child{clear:both;padding-top:5px}.error-wrapper{padding:10px}.error-mascot--wrapper{margin-bottom:20px;text-align:center;width:100%}.times-in-utc{padding:0 15px}} \ No newline at end of file +@charset "UTF-8";.contributions-nav{margin-bottom:10px}.contributions-nav:last-child{margin-bottom:0}.contributions-limit--wrapper{-webkit-transform:translateY(-5px);-moz-transform:translateY(-5px);-ms-transform:translateY(-5px);-o-transform:translateY(-5px);transform:translateY(-5px)}.contributions-limit--wrapper label{font-weight:400}.contributions-loading{display:none;float:left}.contributions-container--loading{opacity:.3}.contributions-container--loading .contributions-nav{visibility:hidden}.contributions-container--loading .contributions-loading{display:block}html{height:100%}body{background:url(/build/images/gradient.bc9a6010.png);min-height:100%;position:relative}body:after{content:"";display:block;min-height:148px}body.rtl{direction:rtl}body.rtl .tool-links{float:right;padding-right:0!important}body.rtl .tool-links .nav{padding-right:0}body.rtl .tool-links .nav li{float:right}body.rtl .lang-group ul{left:0;right:auto;text-align:right}body.rtl .nav-buttons{float:left!important;margin-left:8px;margin-right:0}body.rtl .navbar-toggle{float:right!important}body.rtl .back-to-search{left:auto;right:0}body.rtl .back-to-search .glyphicon-chevron-left{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}@media (max-width:767px){body.rtl .tool-links li{float:none!important}}body.rtl .form-row:first-child>:first-child{border-top-left-radius:0;border-top-right-radius:4px}body.rtl .form-row:first-child>:last-child{border-top-left-radius:4px;border-top-right-radius:0}body.rtl .input-group-addon:first-child{border-left:0;border-right:1px solid #ccc}body.rtl .form-row:last-child>:first-child{border-bottom-left-radius:0;border-bottom-right-radius:4px}body.rtl .form-row:last-child>:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:0}body.rtl .input-group-addon:last-child{border-left:1px solid #ccc;border-right:0}body.rtl .form-label{text-align:right}body.rtl .form-label .tooltipcss{float:left!important}body.rtl .tooltip-body{margin-left:0;margin-right:28px;text-align:right}body.rtl .tooltip-body:after,body.rtl .tooltip-body:before{left:100%;right:auto}body.rtl .tooltip-body:before{border-color:transparent transparent transparent #dca}body.rtl .tooltip-body:after{border-color:transparent transparent transparent #fffaf0}body.rtl .typeahead{text-align:right}body.rtl .app-footer .footer-about{padding-right:15px}body.rtl .app-footer .footer-branding{float:left!important}body.rtl .table td,body.rtl .table th{text-align:right}@media (min-width:1200px){body.rtl .stat-list{float:right!important}}body.rtl .stat-list>.table td:first-child,body.rtl .stat-list>.table th:first-child{text-align:left}body.rtl .stat-list>.table td:last-child,body.rtl .stat-list>.table th:last-child{text-align:right}@media (max-width:767px){body.rtl .stat-list>.table td:first-child{text-align:right}}body.rtl .panel{text-align:right}body.rtl .toggle-table{float:right}body.rtl .toggle-table--chart{float:right;margin-left:0!important;margin-right:100px!important}body.rtl .chart-legend{margin-left:0;margin-right:15px}body.rtl .chart-legend .color-icon{margin-left:5px;margin-right:0}body.rtl .chart-wrapper{float:right;margin-left:50px;margin-right:0}body.rtl .xt-panel-description{float:left!important}body.rtl .dropdown-menu-right{left:0;right:auto;text-align:right}body.rtl .times-in-utc{float:right}body.rtl.pageinfo .legend-body{text-align:right}body.rtl.pageinfo .sort-entry--assessment,body.rtl.pageinfo .sort-entry--importance{text-align:center}body.rtl.pageinfo .date-range{left:30px;right:auto}body.rtl .rm-inline-margin{margin-left:-4px;margin-right:0}body.rtl .diff-pos:before{display:none}body.rtl .diff-pos:after{color:#006400;content:"+"}body.rtl .side-to-side>div{margin:0 0 15px 10px}.strong{font-weight:700}#wrapper{background:#fff;border-radius:5px;margin:15px}.site-notice{margin:0 15px}.navbar-top{border-top:0;min-height:51px;padding:0}.navbar-top li:last-child{padding-right:0}.tool-links{float:left;padding:0}.tool-links.in{position:relative;top:8px}.tool-links .nav{margin:0}.nav-buttons{left:1px;margin-right:8px;position:relative;top:8px}.nav-buttons li{padding:0 2px}.navbar-nav>li>a{height:50px;line-height:50px;padding:0 10px}.home-link{bottom:1px;padding:0 12px;position:relative}.home-link:after{background:#e7e7e7;bottom:0;content:"";display:inline-block;height:80%;left:100%;margin:auto;position:absolute;top:3px;width:1px}.home-link img{height:32px}.navbar-toggle{left:5px;margin:0;position:relative;top:9px}.lang-group .dropdown-menu{max-height:194px;overflow-y:scroll}.lang-group .btn{padding-left:30px}.lang-group svg{height:17px;left:8px;position:absolute;top:8px;width:17px}.login-btn .glyphicon-user{padding-right:2px;top:2px}.xt-page-title>small:before{content:"•";margin-right:10px}.tooltipcss{position:static;text-decoration:none}.tooltipcss .tooltip-body{background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:5px 5px 8px #ccc;color:#111;display:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;line-height:16px;margin-left:28px;max-width:350px;min-width:200px;padding:14px 20px;text-align:left;white-space:normal;z-index:10}.tooltip-body:after,.tooltip-body:before,.tooltipcss .tooltip-body{position:absolute;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.tooltip-body:after,.tooltip-body:before{border-style:solid;color:transparent;content:"";display:block;height:0;right:100%;width:0}.tooltip-body:before{border-color:transparent #ddd transparent transparent;border-width:11px}.tooltip-body:after{border-color:transparent #fff transparent transparent;border-width:10px}.tooltipcss:hover .tooltip-body{display:block}.callout{border:0;left:-12px;position:absolute;top:30px;z-index:20}.form-label{min-width:15em;text-align:left;white-space:normal}.xt-heading-top{font-size:1.8em;margin-bottom:0;padding-bottom:0;position:relative}.xt-heading-subtitle{margin-top:3px}.back-to-search{font-size:16px;left:0;position:absolute;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.back-to-search:hover{text-decoration:none}.date-range{font-size:70%;position:absolute;right:30px;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}@media (max-width:767px){.date-range{display:block;left:0;position:relative;top:0;transform:none}}.xt-toc{background:#fff;font-size:110%;margin-top:20px;padding:10px;width:100%;z-index:100}.xt-toc span:after{content:" • "}.xt-toc span:last-child:after{content:""}.xt-toc .bold{font-weight:700}.xt-toc.fixed{box-shadow:5px 5px 8px #ccc;left:50%;margin:0;position:fixed;top:0;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%);white-space:nowrap;width:auto}.table-sticky-header{position:relative}.table-sticky-header .sticky-heading{background:#fff;left:0;position:absolute;top:0}.xt-alert{margin:0;padding:10px;text-align:center}.xt-alert:not(:first-child){margin-top:10px}.xt-alert .close{opacity:.8;right:0;top:0}.xt-error-alert{margin-top:20px}.xt-error-alert:only-child{margin:0}.panel-primary>.panel-heading a{color:#fff}section>.panel-body{overflow-x:auto}.panel-body .alert:last-child,.panel-body .table:only-child{margin-bottom:0}.xt-panel-body table{clear:both;white-space:nowrap}.xt-panel-body .panel-body{width:100%}.xt-table>tbody>tr>td{padding-bottom:1px;padding-top:1px;vertical-align:top}.xt-table>tbody>tr>th{font-weight:400;padding:5px 2px;white-space:nowrap}.xt-show{display:none}.xt-hide,.xt-show{bottom:2px;cursor:pointer;position:relative}.xt-hide:hover,.xt-show:hover{text-decoration:underline}.xt-panel-description{font-size:80%;font-weight:400;line-height:normal;margin-left:8px}.inline-block{display:inline-block}.table .show-more-row td{border:0}.xt-pagination{margin:0}.panel-danger,.panel-default,.panel-primary{margin-bottom:0}.panel-default{margin-top:20px;text-align:left}.panel-default>.panel-heading{padding:5px 10px}.login{background-image:linear-gradient(transparent,transparent),url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTIiIGhlaWdodD0iMTMuODM3Ij48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImUiPjxzdG9wIG9mZnNldD0iMCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1vcGFjaXR5PSIwIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImIiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzNiNzRiYyIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzJkNTk5MCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJjIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNjOWM5YzkiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYSI+PHN0b3Agb2Zmc2V0PSIwIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLW9wYWNpdHk9IjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZCI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZjRkOWIxIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZGY5NzI1Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgeDE9IjMwLjkzNiIgeTE9IjI5LjU1MyIgeDI9IjMwLjkzNiIgeTI9IjM1LjgwMyIgaWQ9ImgiIHhsaW5rOmhyZWY9IiNjIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIvPjxsaW5lYXJHcmFkaWVudCB4MT0iMjAuNjYyIiB5MT0iMzUuODE4IiB4Mj0iMjIuNjI3IiB5Mj0iMzYuMjE4IiBpZD0iayIgeGxpbms6aHJlZj0iI2UiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0icm90YXRlKDEwLjQ5IDE3LjU2MSAzMi42MykiLz48bGluZWFyR3JhZGllbnQgeDE9IjIyLjY4NyIgeTE9IjM2LjM5IiB4Mj0iMjEuNDA4IiB5Mj0iMzUuNzQiIGlkPSJsIiB4bGluazpocmVmPSIjZSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLS45NzggLjIxIC4yMSAuOTc4IDU1LjExIC0zLjk0NSkiLz48cmFkaWFsR3JhZGllbnQgY3g9IjMxLjExMyIgY3k9IjE5LjAwOSIgcj0iOC42NjIiIGZ4PSIzMS4xMTMiIGZ5PSIxOS4wMDkiIGlkPSJmIiB4bGluazpocmVmPSIjYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiLz48cmFkaWFsR3JhZGllbnQgY3g9IjI4LjA5IiBjeT0iMjcuMjAzIiByPSIxMy41NjUiIGZ4PSIyOC4wOSIgZnk9IjI3LjIwMyIgaWQ9ImciIHhsaW5rOmhyZWY9IiNiIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjI5OCAwIDAgLjg4NSAtOC4zNTkgNC45NCkiLz48cmFkaWFsR3JhZGllbnQgY3g9IjMxLjExMyIgY3k9IjE5LjAwOSIgcj0iOC42NjIiIGZ4PSIzMS4xMTMiIGZ5PSIxOS4wMDkiIGlkPSJpIiB4bGluazpocmVmPSIjYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiLz48cmFkaWFsR3JhZGllbnQgY3g9IjI5LjM0NSIgY3k9IjE3LjA2NCIgcj0iOS4xNjIiIGZ4PSIyOS4zNDUiIGZ5PSIxNy4wNjQiIGlkPSJqIiB4bGluazpocmVmPSIjZCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjc4OCAwIDAgLjc4OCA2LjIyMSAzLjYxOCkiLz48L2RlZnM+PGcgY29sb3I9IiMwMDAiPjxwYXRoIGQ9Ik0zOS43NzUgMTkuMDA5YTguNjYyIDguNjYyIDAgMSAxLTE3LjMyNCAwIDguNjYyIDguNjYyIDAgMSAxIDE3LjMyNCAweiIgdHJhbnNmb3JtPSJtYXRyaXgoLjY5MyAwIDAgLjM3NCAtMTUuNTQ4IDMuNDgxKSIgZmlsbD0idXJsKCNmKSIgZmlsbC1ydWxlPSJldmVub2RkIiBvdmVyZmxvdz0idmlzaWJsZSIvPjxwYXRoIGQ9Ik00LjA0NiAxMi4zOThoNC4xMzdjMS4xNzIgMCAyLjMzMi0uNDMgMi43NTgtMS42NTUuNDA0LTEuMTYzLjA2OS0zLjM3OC0yLjU1MS01LjE3MUgzLjQ5NUMuODc1IDcuMjI3LjU0OCA5LjQ4OSAxLjE1MSAxMC44MTJjLjYxNCAxLjM0NyAxLjY1NSAxLjU4NiAyLjg5NiAxLjU4NnoiIGZpbGw9InVybCgjZykiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMjA0YTg3IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIG92ZXJmbG93PSJ2aXNpYmxlIiBzdHJva2Utd2lkdGg9Ii4zOSIvPjxwYXRoIGQ9Ik00LjMyMSA2LjE5M2MxLjI0MSAxLjEwMyAxLjc5MyA1LjEwMiAxLjc5MyA1LjEwMnMuNTUyLTMuOTk5IDEuNTE3LTUuMTcxbC0zLjMwOS4wNjl6IiBmaWxsPSJ1cmwoI2gpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PHBhdGggZD0iTTUuMjEgNi42MDdzLS44MzkuNjQ4LS43NjcgMS40MjhjLS43OTYtLjcwMi0uODE5LTIuMDQ4LS44MTktMi4wNDhsMS41ODYuNjJ6IiBmaWxsPSIjNzI5ZmNmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PHBhdGggZD0ibTQuMDE4IDExLjk5MiA0LjA5Mi0uMDA5YzEuMDI5IDAgMi4wNDktLjM3NyAyLjQyMi0xLjQ1My4zNTUtMS4wMjItLjAzNy0yLjk2Ny0yLjMzOC00LjU0MmwtNC40OTUtLjA5NUMxLjM5OCA3LjM0Ni45NTIgOS4zMzQgMS40OTEgMTAuNTljLjUzOCAxLjI1NiAxLjMyNCAxLjM5MyAyLjUyNiAxLjQwMXoiIG9wYWNpdHk9Ii4yMTUiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBvdmVyZmxvdz0idmlzaWJsZSIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIuMzkiLz48cGF0aCBkPSJNNi45NDEgNi42MDdzLjgzOS42NDguNzY3IDEuNDI4Yy43OTYtLjcwMi44MTktMi4wNDguODE5LTIuMDQ4bC0xLjU4Ni42MnoiIGZpbGw9IiM3MjlmY2YiIGZpbGwtcnVsZT0iZXZlbm9kZCIgb3ZlcmZsb3c9InZpc2libGUiLz48cGF0aCBkPSJNMzkuNzc1IDE5LjAwOWE4LjY2MiA4LjY2MiAwIDEgMS0xNy4zMjQgMCA4LjY2MiA4LjY2MiAwIDEgMSAxNy4zMjQgMHoiIHRyYW5zZm9ybT0ibWF0cml4KC4zOSAwIDAgLjM5IC02LjEzOCAtMi40NzUpIiBmaWxsPSJ1cmwoI2kpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PHBhdGggZD0iTTM5Ljc3NSAxOS4wMDlhOC42NjIgOC42NjIgMCAxIDEtMTcuMzI0IDAgOC42NjIgOC42NjIgMCAxIDEgMTcuMzI0IDB6IiBmaWxsPSJ1cmwoI2opIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iI2MxN2QxMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBvdmVyZmxvdz0idmlzaWJsZSIgdHJhbnNmb3JtPSJtYXRyaXgoLjM5IDAgMCAuMzkgLTYuMDg5IC0zLjg0KSIvPjxwYXRoIGQ9Ik05LjAwNSAzLjU3MmEyLjk2MiAyLjk2MiAwIDEgMS01LjkyNSAwIDIuOTYyIDIuOTYyIDAgMSAxIDUuOTI1IDB6IiBvcGFjaXR5PSIuMTk2IiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iLjM4OTg4IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIG92ZXJmbG93PSJ2aXNpYmxlIiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTIuNDMzIDEyLjA2MmMtLjQ4Ny0uMjEzLS43MDQtLjcyNS0uNzA0LS43MjVDMi4wNTcgOS43NSAzLjE4IDguNTg5IDMuMTggOC41ODlzLS44ODkgMi41LS43NDYgMy40NzN6IiBvcGFjaXR5PSIuMjI4IiBmaWxsPSJ1cmwoI2spIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PHBhdGggZD0iTTkuODA2IDExLjcyOGMuNDgtLjIyNy43MDQtLjc4MS43MDQtLjc4MS0uMzc0LTEuNTc3LTEuNTUxLTIuNjY5LTEuNTUxLTIuNjY5cy45NjEgMi40NzQuODQ3IDMuNDV6IiBvcGFjaXR5PSIuMjI4IiBmaWxsPSJ1cmwoI2wpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9nPjwvc3ZnPg==);background-position:0;background-repeat:no-repeat;line-height:1.125em;margin-top:.5em;padding-left:15px!important;white-space:nowrap}.app-footer{bottom:0;left:0;margin-top:30px;min-height:148px;padding:15px;position:absolute;width:100%}.app-footer hr{margin-bottom:0}.footer-content{padding-top:20px}.footer-about{display:inline;max-width:calc(100% - 200px)}.footer-branding,.footer-quote{white-space:nowrap}.footer-quote{display:inline-block;font-style:italic;max-width:100%;overflow-x:hidden;position:relative;text-overflow:ellipsis;top:8px}.lang-dropdown .dropdown-menu{height:194px;overflow-y:scroll}.navbar-default{background:transparent}.form-fieldset{margin-bottom:15px}.form-fieldset .checkbox{margin-bottom:0}.form-fieldset:nth-child(2){margin-top:-15px}.form-submit{margin-bottom:20px}.form-row>*{border-radius:0}.form-row .input-group-addon label{font-weight:400;margin:0}.form-row:first-child>:first-child{border-top-left-radius:4px}.form-row:first-child>:last-child{border-top-right-radius:4px}.form-row:last-child>:first-child{border-bottom-left-radius:4px}.form-row:last-child>.form-control:last-of-type{border-bottom-right-radius:4px}.form-control[disabled],.form-control[readonly]{background-color:transparent;cursor:not-allowed;opacity:.8}.stat-list{margin-bottom:20px}.stat-list caption{text-align:center}.panel-body .stat-list:only-child{margin-bottom:0}.stat-list>.table td,.stat-list>.table th{border:0;padding-bottom:0;padding-top:0;white-space:normal}.stat-list>.table td:first-child:not(.non-label,.stat-list--footer),.stat-list>.table th:first-child:not(.non-label,.stat-list--footer){font-weight:700;text-align:right}.stat-list>.table td:first-child:not(.non-label,.stat-list--footer):after,.stat-list>.table th:first-child:not(.non-label,.stat-list--footer):after{content:":"}.stat-list--new-group{padding-top:10px!important}.stat-list tr:first-child>td.stat-list--new-group{padding-top:0!important}.stat-list--group{border-top:0!important}.stat-list--group>tr:first-child>td{border-bottom:1px solid #eee!important;padding-top:15px!important;text-align:center!important}.stat-list--group>tr:nth-child(2)>td{padding-top:5px!important}.color-icon{border-radius:100%;display:inline-block;height:15px;vertical-align:-2px;width:15px}.diff-pos{color:#006400}.diff-pos:before{color:#006400;content:"+"}.diff-neg{color:#8b0000}.diff-zero{color:#a2a9b1}.sort-link{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.sort-link .glyphicon{top:2px;visibility:hidden}.sort-link .glyphicon-sort-by-alphabet,.sort-link .glyphicon-sort-by-alphabet-alt,.sort-link:hover .glyphicon-sort{visibility:visible}.assessment-badge{height:20px;width:20px}.rm-inline-margin{margin-right:-4px}.rm-inline-margin-left{margin-left:-4px}.toggle-table{float:left}.toggle-table .toggle-table--toggle{cursor:pointer;margin-right:4px;position:relative}.toggle-table tr:hover .toggle-table--toggle .color-icon{visibility:hidden}.toggle-table tr:hover .toggle-table--toggle .glyphicon{display:block}.toggle-table tr.excluded td.linked a,.toggle-table tr.excluded td:not(.linked){opacity:.5;text-decoration:line-through}.toggle-table tr.excluded .color-icon{opacity:.5}.toggle-table td .glyphicon{display:none;left:1px;position:absolute}.toggle-table--chart{float:left;margin-left:100px;margin-top:20px;max-width:500px}.toggle-table--chart canvas{height:400px;width:400px}.basic-info-charts{clear:both;display:block;padding-top:20px;position:relative}.basic-info-charts canvas:not(#sizechart-canvas){max-width:150px}.basic-info-charts .sizechart-container{height:200px;min-width:650px;position:relative}.basic-info-charts .chart-wrapper{display:flex;float:left;margin-right:50px}.basic-info-charts .chart-legend{align-self:center;margin-left:15px}.basic-info-charts .chart-legend .color-icon{vertical-align:-4px}.display-title *{font-size:inherit!important}.error-wrapper{font-size:18px}.error-wrapper p{margin-bottom:30px}.error-mascot{margin-right:30px;max-width:100%;width:300px}.times-in-utc{margin-top:15px}.download-dropdown{bottom:5px}.download-dropdown .glyphicon-download-alt{top:2px}.multi-select{height:auto}.multi-select .checkbox{display:inline-block;float:left;margin-top:3px;width:33.3333333333%}.user-group-icon{height:18px}a.help-icon{font-size:25px;position:relative;text-decoration:none;top:5px}.help-text{cursor:help;text-decoration:underline dotted}.reverted-edit{background:#fcf8e3!important}.pending-edit:not(.reverted-edit){background:#fffdf2!important}.side-to-side>div{display:inline-block;margin:0 10px 15px 0;vertical-align:top}.side-to-side{clear:both}.link-loading{font-style:italic;pointer-events:none}.pageinfo .top-editors-charts{display:block;margin-bottom:25px;position:relative}.pageinfo .top-editors-charts canvas{max-height:250px;max-width:250px}.pageinfo .year-count-charts{clear:both;display:block;margin-bottom:25px;position:relative}.pageinfo .year-count-charts canvas{max-width:800px}.pageinfo .chart-wrapper{display:flex;flex-wrap:wrap;float:left;margin-right:50px}.pageinfo #textshares_chart{display:none;height:auto;width:auto}.pageinfo .chart-title{font-weight:700;text-align:center}.pageinfo .chart-legend{align-self:center;margin-left:15px}.pageinfo .chart-legend .color-icon{vertical-align:-4px}.pageinfo .legend-label{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:middle}.pageinfo .legend-value{vertical-align:bottom}.pageinfo .top-editors-table{margin-bottom:0}.pageinfo .footnotes{margin-bottom:20px;margin-top:5px}.pageinfo .month-counts-table .stripes-column{height:30px;padding:0}.pageinfo .month-counts-table .stripes{height:33.3333333333%}.pageinfo .sort-entry--assessment,.pageinfo .sort-entry--importance{font-weight:700;text-align:center}.pageinfo .sort-entry--assessment a,.pageinfo .sort-entry--importance a{color:#4365cc}.pageinfo .bugs-table .sort-entry--explanation{min-width:400px;white-space:pre-wrap}@media (max-width:767px){.pageinfo #year_count_legend{margin:0}.pageinfo #year_count_legend .legend-body>div{display:inline;margin-right:10px}}.autoedits #summary .chart-wrapper,.autoedits #summary .chart-wrapper canvas{max-width:300px}.autoedits #summary .chart-wrapper .chart-legend{display:none}.autoedits #tool_chart{display:none;height:auto;width:auto}.autoedits .autoedits-stat-list{margin-bottom:0;padding-bottom:0}.autoedits .tool-selector-form{margin-bottom:20px}.autoedits .tool-selector-form .btn-primary{vertical-align:bottom}.autoedits .tool-selector-form .form-submit{margin-bottom:0}.autoedits .contributions-container--loading .tool-selector-form{visibility:hidden}.autoedits #toolSelector{display:inline-block;width:auto}.autoedits .tooltipcss--tool-counts{cursor:help;position:relative;vertical-align:-1px}.autoedits .tooltipcss--tool-counts .tooltip-body{min-width:300px}.autoedits .footnotes{margin:20px 0 0}.blame .diff{border:0;border-collapse:initial;border-spacing:4px;margin:0;width:100%}.blame .diff td{padding:.33em .5em}.blame .diff td div{word-wrap:break-word}.blame .diff-lineno{font-weight:700}.blame .diff-marker{font-size:1.25em;padding:.25em;text-align:right}.blame .diff-context{background:#f8f9fa;border-color:#eaecf0;color:#222}.blame .diff-deletedline{border-color:#ffe49c}.blame .diff-deletedline .diffchange{background:#feeec8}.blame .diff-addedline{border-color:#a3d3ff}.blame .diff-addedline .diffchange{background:#d8ecff}.blame .diff-addedline,.blame .diff-context,.blame .diff-deletedline{border-radius:.33em;border-style:solid;border-width:1px 1px 1px 4px;line-height:1.6;vertical-align:top;white-space:pre-wrap}.blame .diff-addedline .diffchange,.blame .diff-deletedline .diffchange{border-radius:.33em;padding:.25em 0}.blame .diffchange{text-decoration:none}.categoryedits .toggle-table--chart{margin-left:50px}.categoryedits #category_chart{display:none;height:auto;width:auto}.categoryedits .select2-selection--multiple{border-color:#ccc!important;border-radius:0}.categoryedits .select2-results__option,.categoryedits .select2-selection__rendered{padding-left:12px!important}.categoryedits .select2-results__message{display:none}.categoryedits .select2-results__option--highlighted{background:#3379b7!important}.categoryedits .loading-results{display:none}.editcounter .stat-list .table{margin:0 auto}.editcounter .stat-list .table.rights-changes-summary{margin:0}.editcounter .stat-list--empty-group{font-weight:400!important}.editcounter .stat-list--empty-group:after{content:""!important}.editcounter #timecard-bubble-chart{max-width:1100px}.editcounter #monthcounts-canvas,.editcounter #yearcounts-canvas{max-width:1000px}.editcounter .yearmonth-container{display:flex;flex-direction:row;flex-wrap:wrap;width:100%}.editcounter .yearmonth-chart-container{flex-grow:1}.editcounter #namespace-canvas{height:auto;width:auto}.editcounter .top-project-edit-counts td{white-space:nowrap}.editcounter .footnotes{clear:both;padding-top:20px}.editcounter .tooltipcss--pages-created{position:relative;vertical-align:-1px}.editcounter .tooltipcss--pages-created:hover{text-decoration:none}.editcounter .tooltipcss--pages-created .tooltip-body{min-width:300px}.editcounter .pending{opacity:.5}.home #wrapper{background:transparent}.home .splash-logo{margin-top:30px;max-width:320px;width:100%}.home .tool-list{padding-top:10px;text-align:left}.home .tool-list .btn{display:block;margin-top:15px;position:relative;text-align:left;white-space:normal;width:100%}.home .tool-name{font-weight:700}@media (max-width:767px){.home .splash-logo{max-width:450px;width:90%}}.meta #api_usage_chart,.meta #usage_chart{max-width:1000px}.pages .panel-body h3{clear:both}.pages .panel-body h4:not(:first-child){padding-top:10px}.pages .deleted-page{cursor:help;position:relative}.pages .deleted-page .tooltip-body{left:67%;width:300px}.pages .sort-entry--page-title{white-space:normal}.topedits .color-icon{margin-right:3px}.topedits .footnotes{margin:20px 0}@media (max-width:767px){.basic-info-charts{display:none;margin-bottom:0}}@media (prefers-color-scheme:dark){:root{scrollbar-color:#aaa transparent}#wrapper,.panel-body,.xt-toc,body{background:#181818;color:#aaa}.xt-toc.fixed{box-shadow:5px 5px 8px #333}.home-link:after,[role=separator]{display:none}.dropdown-menu,.dropdown.open,.form-label{background:#222}.dropdown-menu{box-shadow:0 6px 12px #333}.dropdown-menu>.active>a,.dropdown-menu>li>a{background:#222;color:#999}.dropdown-menu>.active>a:hover,.dropdown-menu>li>a:hover{background:#333;color:#999}.navbar-default{border:0}.navbar-default .navbar-nav>li>a{color:#999}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#aaa}header{background:#212121!important}.stat-list--group>tr:first-child>td{border-color:#606060!important}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-color:#606060}.table-striped>tbody>tr:hover,.table-striped>tbody>tr:nth-of-type(odd){background-color:transparent}.table-sticky-header .sticky-heading{background:#111}a,a:hover{color:#09f}.panel-primary,.panel-primary .panel-heading{border-color:#606060}.help-icon,.help-icon:hover,.panel-primary>.panel-heading,.panel-primary>.panel-heading a,.panel-primary>.panel-heading a:hover,h4{color:#aaa}.panel{background-color:transparent}.form-control,.form-label,.panel-default,.panel-default>.panel-heading,hr{border-color:#333}.form-control:focus{border-color:#606060;box-shadow:inset 0 1px 1px #333,0 0 8px #333}.form-control,.form-label,label{color:#999}.form-control{background:#111;color:#999}.blame .diff-context{background:transparent;color:#aaa}.diffchange-inline{color:#333}.btn-default{background:#222;border-color:#222;color:#999}.btn-default svg{fill:#999}.btn-default:hover svg,.open .btn-default svg{fill:#333}.select2-container--default .select2-selection--multiple,.select2-container--default .select2-selection--multiple .select2-selection__choice{background:transparent}.select2-dropdown{background-color:#222}.categoryedits .select2-selection--multiple{border-color:#333!important}.categoryedits .select2-results__option--highlighted,.select2-container--default .select2-results__option[aria-selected=true]{background-color:#333!important}.alert .close{opacity:.8;text-shadow:none}.alert-info{background:#012;border:0;color:#999}.alert-warning{background-color:#8a6d3b;color:#fcf8e3}.alert-danger{background-color:#a94442;border-color:#ff6b6b;color:#1b1818}.color-icon,canvas{background:transparent}.tooltipcss .tooltip-body{background:#333;border-color:#606060;box-shadow:5px 5px 8px #333;color:#aaa}.tooltipcss .tooltip-body:before{border-color:transparent #606060 transparent transparent}.tooltipcss .tooltip-body:after{border-color:transparent #333 transparent transparent}body.rtl .tooltipcss .tooltip-body:before{border-color:transparent transparent transparent #606060}body.rtl .tooltipcss .tooltip-body:after{border-color:transparent transparent transparent #333}.diff-pos,.diff-pos:before{color:#00b400}.diff-neg{color:#f73d3d}.pagination>li>a{background-color:transparent;border-color:#606060;color:#aaa}.pagination>li>a:focus,.pagination>li>a:hover{background-color:#333;border-color:#606060;color:#aaa}.pagination>li.disabled>span{background-color:inherit;border-color:inherit;opacity:.5}.pagination>li.active>a,.pagination>li.active>a:focus,.pagination>li.active>a:hover{background-color:#333;border-color:#606060;color:#aaa}.reverted-edit{background:#4e4c40!important}.pending-edit:not(.reverted-edit){background:#333127!important}.pending-edit .text-info,.reverted-edit .text-info{color:#74cefa}.pending-edit .text-muted,.reverted-edit .text-muted{color:#909090}.footer-branding,.home-link,.splash-logo{filter:invert(1) hue-rotate(180deg)}}@media (min-width:1200px){.xt-panel-body table{width:auto}}@media (max-width:1200px){.stat-list>.table td:first-child,.stat-list>.table th:first-child{width:300px}}@media (max-width:992px){.error-mascot{width:200px}}@media (max-width:767px){.basic-info-charts .chart-wrapper{display:block!important}.basic-info-charts .chart-wrapper .chart-legend{margin-bottom:15px}.app-footer{position:relative}.footer-branding{float:left!important;margin-bottom:10px}.footer-about{clear:both;display:block;max-width:100%}.footer-quote{overflow-x:initial;text-overflow:clip;white-space:normal}.xt-panel-description{display:block}.stat-list{padding:0}.stat-list>.table td:first-child,.stat-list>.table th:first-child{display:block;padding-top:5px;text-align:left!important}.stat-list>.table td:first-child.stat-list--new-group,.stat-list>.table th:first-child.stat-list--new-group{padding-top:15px!important}.stat-list>.table td .stat-list--new-group,.stat-list>.table td:last-child,.stat-list>.table th .stat-list--new-group,.stat-list>.table th:last-child{display:block;padding-top:0!important}.stat-list--group{padding-top:15px!important}.stat-list--group tr>td{padding-top:5px!important}.stat-list--group>tr:first-child>td{text-align:left!important}.back-to-search{font-size:0}.back-to-search .glyphicon{font-size:medium}.tool-links{clear:both;width:100%}.xt-panel-body{padding:15px 0}.panel-default{border-radius:0}#wrapper{margin:15px 5px}.xt-toc{display:none}.toggle-table--chart{margin:0;max-width:100%}.xt-page-title>small{display:block;padding:3px 0 10px}.xt-page-title>small:before{display:none}.input-group{margin-bottom:15px;width:100%}.input-group .tooltipcss{display:none}.input-group input[type=text]{border-radius:0!important}.input-group-addon{background:transparent;border:0;display:block;padding:0}.input-group-addon:first-child{font-weight:700}.input-group-addon:last-child{clear:both;padding-top:5px}.error-wrapper{padding:10px}.error-mascot--wrapper{margin-bottom:20px;text-align:center;width:100%}.times-in-utc{padding:0 15px}} \ No newline at end of file diff --git a/public/build/entrypoints.json b/public/build/entrypoints.json index 4da235871..a419b25fc 100644 --- a/public/build/entrypoints.json +++ b/public/build/entrypoints.json @@ -7,7 +7,7 @@ "/build/app.a92fcf1a.js" ], "css": [ - "/build/app.7692d209.css" + "/build/app.6998a4d8.css" ] } } diff --git a/public/build/manifest.json b/public/build/manifest.json index fab113bcd..8988293b2 100644 --- a/public/build/manifest.json +++ b/public/build/manifest.json @@ -1,5 +1,5 @@ { - "build/app.css": "/build/app.7692d209.css", + "build/app.css": "/build/app.6998a4d8.css", "build/app.js": "/build/app.a92fcf1a.js", "build/runtime.js": "/build/runtime.c217f8c4.js", "build/852.96913092.js": "/build/852.96913092.js", diff --git a/src/Model/Edit.php b/src/Model/Edit.php index 9bfcd68d7..6bb5212ec 100644 --- a/src/Model/Edit.php +++ b/src/Model/Edit.php @@ -46,6 +46,9 @@ class Edit extends Model /** @var bool|null Whether this edit was later reverted. */ protected ?bool $reverted; + /** @var bool|null Whether this edit is pending review (FlaggedRevs extension). */ + protected ?bool $pending; + /** @var int Deletion status of the revision. */ protected int $deleted; @@ -104,6 +107,9 @@ public function __construct(EditRepository $repository, UserRepository $userRepo // Note that the Edit class knows nothing about it's value, and // is not capable of detecting whether the given edit was actually reverted. $this->reverted = isset($attrs['reverted']) ? (bool)$attrs['reverted'] : null; + + // for FlaggedRevs + $this->pending = isset($attrs['is_pending']) ? (bool)$attrs['is_pending'] : null; } /** @@ -270,6 +276,15 @@ public function getSha(): ?string return $this->sha; } + /** + * Is this edit pending? (from flaggedrevs) + * @return bool|null + */ + public function isPending(): ?bool + { + return $this->pending; + } + /** * Was this edit reported as having been reverted? * The value for this is merely passed in from precomputed data. diff --git a/src/Model/Project.php b/src/Model/Project.php index d6f911fd8..a89f23380 100644 --- a/src/Model/Project.php +++ b/src/Model/Project.php @@ -249,18 +249,20 @@ public function getMainPage(): string } /** - * List of extensions that are installed on the wiki. + * List of extensions that are installed on the given project instance (or this if not given). + * @param Project|null $project Optional, resorts to the current instance if not given. * @return string[] */ - public function getInstalledExtensions(): array + public function getInstalledExtensions(?Project $project = null): array { + $project = $project ?? $this; // Quick cache, valid only for the same request. static $installedExtensions = null; if (is_array($installedExtensions)) { return $installedExtensions; } - return $installedExtensions = $this->getRepository()->getInstalledExtensions($this); + return $installedExtensions = $this->getRepository()->getInstalledExtensions($project); } /** @@ -273,6 +275,17 @@ public function hasPageTriage() : bool return in_array('PageTriage', $extensions); } + /** + * Get if the given Project has the FlaggedRevs extensions + * (for pending changes) + * @return bool + */ + public function projectHasFlaggedRevs(Project $project) : bool + { + $extensions = $this->getInstalledExtensions($project); + return in_array('FlaggedRevs', $extensions); + } + /** * Whether this wiki has the VisualEditor extension enabled. * @return bool diff --git a/src/Repository/GlobalContribsRepository.php b/src/Repository/GlobalContribsRepository.php index 26b4ba9e9..768e59bbe 100644 --- a/src/Repository/GlobalContribsRepository.php +++ b/src/Repository/GlobalContribsRepository.php @@ -280,6 +280,25 @@ public function getRevisions( $whereClause = 'revs.rev_actor = '.$actorIds[$dbName]; } + $thisProject = $this->projectRepo->getProject($dbName); + if ($this->caProject->projectHasFlaggedRevs($thisProject)) { + /* If fp_reviewed == 1, this page has flaggedrevs activated but all of its revs are accepted. + If fp_pending_since is null (but fp_reviewed != 1), this page doesn't have flaggedrevs on. + And then >= as fp_pending_since is the timestamp of the oldest unaccepted rev. */ + $frSelect = ", + (fp_reviewed != 1 && + fp_pending_since IS NOT NULL && + revs.rev_timestamp >= fp_pending_since + ) as is_pending"; + $frTable = $this->projectRepo->getTableName($dbName, "flaggedpages"); + $frJoin = " + LEFT OUTER JOIN $frTable + ON fp_page_id = revs.rev_page"; + } else { + $frSelect = ""; + $frJoin = ""; + } + $slice = $this->getDbList()[$dbName]; $queriesBySlice[$slice][] = " SELECT @@ -307,12 +326,14 @@ public function getRevisions( ) LIMIT 1 ) AS reverted + $frSelect FROM $revisionTable AS revs $ipcJoin JOIN $pageTable AS page ON (rev_page = page_id) JOIN $actorTable ON (actor_id = revs.rev_actor) LEFT JOIN $revisionTable AS parentrevs ON (revs.rev_parent_id = parentrevs.rev_id) LEFT OUTER JOIN $commentTable ON revs.rev_comment_id = comment_id + $frJoin WHERE $whereClause $namespaceCond $revDateConditions"; diff --git a/templates/globalContribs/result.html.twig b/templates/globalContribs/result.html.twig index 68f333701..998dd43a4 100644 --- a/templates/globalContribs/result.html.twig +++ b/templates/globalContribs/result.html.twig @@ -136,7 +136,7 @@ {% set substr = user.ipSubstringFromCidr %} {% for edit in gc.globalEdits %} {% if edit.project.exists %} - + {{ wiki.diffLink(edit, edit.timestamp) }} @@ -158,6 +158,7 @@ {% if edit.isReverted %}({{ msg('reverted')|lower }}) {% endif %} + {% if edit.isPending %}({{ msg('pending')|lower }}) {% endif %} {% if edit.deletedSummary %} {{ msg('edit-summary-removed') }} {% else %}