diff --git a/awx/ui/static/js/controllers/JobStdout.js b/awx/ui/static/js/controllers/JobStdout.js index 9dec929fed..4a49a80402 100644 --- a/awx/ui/static/js/controllers/JobStdout.js +++ b/awx/ui/static/js/controllers/JobStdout.js @@ -33,52 +33,16 @@ function JobStdoutController ($rootScope, $scope, $compile, $routeParams, ClearS $scope.removeLoadStdout(); } $scope.removeLoadStdout = $scope.$on('LoadStdout', function() { - Rest.setUrl(stdout_url + '?format=html'); + Rest.setUrl(stdout_url + '?format=json&start_line=-1000'); Rest.get() .success(function(data) { - var lines, styles=[], html=[], found=false, doc, style, pre, parser; api_complete = true; Wait('stop'); - if ($rootScope.browser === "SAFARI") { - // Safari's DOMParser will not parse HTML, so we have to do our best to extract the - // parts we want. - - lines = data.split("\n"); - // Get the style sheet - lines.forEach(function(line) { - if (//.test(line)) { - found = false; - } - }); - found = false; - // Get all the bits between
 and  
- lines.forEach(function(line) { - if (/
/.test(line)) {
-                            found = true;
-                        }
-                        else if (/<\/pre>/.test(line)) {
-                            found = false;
-                        }
-                        else if (found) {
-                            html.push(line);
-                        }
-                    });
-                    $('#style-sheet-container').empty().html(styles.join("\n"));
-                    $('#pre-container-content').empty().html(html.join("\n"));
+                if (data.content) {
+                    $('#pre-container-content').empty().html(data.content);
                 }
                 else {
-                    parser = new DOMParser();
-                    doc = parser.parseFromString(data, "text/html");
-                    pre = doc.getElementsByTagName('pre');
-                    style = doc.getElementsByTagName('style');
-                    $('#style-sheet-container').empty().html(style[0]);
-                    $('#pre-container-content').empty().html($(pre[0]).html());
+                    $('#pre-container-content').empty();
                 }
                 setTimeout(function() { $('#pre-container').mCustomScrollbar("scrollTo", 'bottom'); }, 1000);
             })
diff --git a/awx/ui/static/js/controllers/JobStdout.js.tmp b/awx/ui/static/js/controllers/JobStdout.js.tmp
new file mode 100644
index 0000000000..8743f90df3
--- /dev/null
+++ b/awx/ui/static/js/controllers/JobStdout.js.tmp
@@ -0,0 +1,85 @@
+/************************************
+ * Copyright (c) 2014 AnsibleWorks, Inc.
+ *
+ *  JobStdout.js
+ *
+ */
+
+'use strict';
+
+function JobStdoutController ($rootScope, $scope, $compile, $routeParams, ClearScope, GetBasePath, Wait, Rest, ProcessErrors, Socket) {
+
+    ClearScope();
+
+    var available_height, job_id = $routeParams.id,
+        api_complete = false,
+        stdout_url,
+        event_socket = Socket({
+            scope: $scope,
+            endpoint: "job_events"
+        });
+
+    Wait('start');
+
+    event_socket.init();
+
+    event_socket.on("job_events-" + job_id, function() {
+        if (api_complete) {
+            $scope.$emit('LoadStdout');
+        }
+    });
+
+    if ($scope.removeLoadStdout) {
+        $scope.removeLoadStdout();
+    }
+    $scope.removeLoadStdout = $scope.$on('LoadStdout', function() {
+        Rest.setUrl(stdout_url + '?format=json&start_line=-1000');
+        Rest.get()
+            .success(function(data) {
+                if (data.content) {
+                    $('#pre-container-content').empty().html(data.content);
+                }
+                else {
+                    $('#pre-container-content').empty();
+                }
+                setTimeout(function() { $('#pre-container').mCustomScrollbar("scrollTo", 'bottom'); }, 1000);
+            })
+            .error(function(data, status) {
+                ProcessErrors($scope, data, status, null, { hdr: 'Error!',
+                    msg: 'Failed to retrieve stdout for job: ' + job_id + '. GET returned: ' + status });
+            });
+    });
+
+    function resizeToFit() {
+        available_height = $(window).height() - $('.main-menu').outerHeight() - $('#main_tabs').outerHeight() -
+            $('#breadcrumb-container').outerHeight() - $('.site-footer').outerHeight() * 2;
+        if ($(window).width() < 768) {
+            available_height += 55;
+        }
+        else if ($(window).width() > 1240) {
+            available_height += 5;
+        }
+        $('#pre-container').height(available_height);
+        $('#pre-container').mCustomScrollbar("update");
+    }
+    resizeToFit();
+
+    $(window).resize(_.debounce(function() {
+        resizeToFit();
+    }, 500));
+
+    Rest.setUrl(GetBasePath('jobs') + job_id + '/');
+    Rest.get()
+        .success(function(data) {
+            $scope.job = data;
+            stdout_url = data.related.stdout;
+            $scope.$emit('LoadStdout');
+        })
+        .error(function(data, status) {
+            ProcessErrors($scope, data, status, null, { hdr: 'Error!',
+                msg: 'Failed to retrieve job: ' + job_id + '. GET returned: ' + status });
+        });
+}
+
+JobStdoutController.$inject = [ '$rootScope', '$scope', '$compile', '$routeParams', 'ClearScope', 'GetBasePath', 'Wait', 'Rest', 'ProcessErrors', 'Socket' ];
+
diff --git a/awx/ui/static/less/ansible-ui.less b/awx/ui/static/less/ansible-ui.less
index 6074956028..76dea8c5f1 100644
--- a/awx/ui/static/less/ansible-ui.less
+++ b/awx/ui/static/less/ansible-ui.less
@@ -12,14 +12,16 @@
 @blue:         #1778c3;   /* logo blue */
 @blue-link:    #1778c3;
 @blue-dark:    #2a6496;   /* link hover */
-@green:        #5bb75b;
+@green:        #00aa00;   // Ansible OK
 @grey:         #A9A9A9;
 @grey-txt:     #707070;
 @info:         #d9edf7;   /* alert info background color */
 @info-border:  #bce8f1;   /* alert info border color */
 @info-color:   #3a87ad;
-@red:          #da4f49;
+@red:          #aa0000;   // Ansible Unreachable
 @red-hover:    #AE3F3A;
+@changed:      #aa5500;   // Ansible Changed
+@skipped:      #00aaaa;   // Ansible Skipped
 @warning:      #FF9900;
 @well:         #f5f5f5;   /* well background color */
 @well-border:  #e3e3e3;
diff --git a/awx/ui/static/less/ansible-ui.less.tmp b/awx/ui/static/less/ansible-ui.less.tmp
new file mode 100644
index 0000000000..c984f0b906
--- /dev/null
+++ b/awx/ui/static/less/ansible-ui.less.tmp
@@ -0,0 +1,1767 @@
+/*********************************************
+ *  Copyright (c) 2014 AnsibleWorks, Inc.
+ *
+ *  ansible-ui.css
+ *
+ *  custom styles for ansible-ui
+ *
+ */
+
+@active-color: #c6e5e5;
+@black:        #171717;
+@blue:         #1778c3;   /* logo blue */
+@blue-link:    #1778c3;
+@blue-dark:    #2a6496;   /* link hover */
+@green:        #5bb75b;
+@grey:         #A9A9A9;
+@grey-txt:     #707070;
+@info:         #d9edf7;   /* alert info background color */
+@info-border:  #bce8f1;   /* alert info border color */
+@info-color:   #3a87ad;
+@red:          #da4f49;
+@red-hover:    #AE3F3A;
+@warning:      #FF9900;
+@well:         #f5f5f5;   /* well background color */
+@well-border:  #e3e3e3;
+@white:        #FFF;
+
+@tip-background: #0088CC;
+@tip-color: #fff;
+
+@font-face {
+    font-family: 'Open Sans';
+    font-style: normal;
+    font-weight: 400;
+    src: url(/static/fonts/OpenSans-Regular.ttf);
+}
+
+@font-face {
+    font-family: 'Open Sans';
+    font-style: bold;
+    font-weight: 600;
+    src: url(/static/fonts/OpenSans-Bold.ttf);
+}
+
+@import "main-layout.less";
+@import "animations.less";
+@import "jquery-ui-overrides.less";
+@import "codemirror.less";
+@import "angular-scheduler.less";
+@import "log-viewer.less";
+@import "job-details.less";
+@import "jobs.less";
+@import "inventory-edit.less";
+@import "breadcrumbs.less";
+@import "stdout.less";
+
+
+/* Bootstrap fix that's causing a right margin to appear
+   whenver a modal is opened */
+body.modal-open {
+  margin-right: 0;
+}
+
+
+/* Helper Classes */
+.pad-right-sm { padding-right: 10px; }
+.pad-left-md { padding-left: 30px; }
+.pad-left-sm { padding-left: 10px; }
+.pad-left-lg { padding-left: 50px; }
+.normal-weight { font-weight: normal; }
+.small-text { font-size: 12px; font-weight: normal; }
+.no-bullets { list-style: none; }
+.nowrap { white-space: nowrap; }
+.capitalize { text-transform: capitalize; }
+.grey-txt { color: @grey; }
+.text-center { text-align: center !important; }
+.cursor-pointer { cursor: pointer }
+
+.red-txt,
+a.red-txt:visited,
+a.red-txt:hover,
+a.red-txt:active {
+  color: @red;
+}
+
+/* Used on inventory groups/hosts lists for long names */
+.ellipsis {
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+
+blockquote {
+    font-size: 14px;
+}
+
+.group-name {
+    display: inline-block;
+    width: 85%;
+}
+
+a {
+  color: @blue;
+  text-decoration: none;
+}
+
+a:hover,
+a:focus {
+  color: @blue-dark;
+  text-decoration: none;
+}
+
+/* Old style TB default button with grey background */
+.btn-grey {
+  color: #333;
+  background-color: #ccc;
+  border-color: #ccc;
+}
+
+.btn-grey:hover {
+  background-color: #FFF;
+}
+
+/* Make buttons appear to be disabled, but allow mouse events */
+.btn-disabled {
+   opacity: 0.35;
+   filter: alpha(opacity=65);
+   -webkit-box-shadow: none;
+   box-shadow: none;
+}
+
+.btn-disabled {
+   cursor: not-allowed;
+}
+
+/* Bring primary (blue) buttons in line with link colors */
+.btn-primary {
+   background-color: @blue;
+}
+
+.btn-primary:hover {
+   background-color: @blue-dark;
+}
+
+/* List Actions column */
+.actions {
+  a {
+    font-size: 14px;
+    margin-right: 12px;
+  }
+  a:last-child {
+    margin-right: 0;
+  }
+  a:hover {
+    cursor: pointer;
+  }
+  .dropdown .caret {
+    border-top-color: @blue;
+  }
+}
+
+#home_groups_table .actions .cancel { padding-right: 3px; }
+
+.success-badge {
+  color: #ffffff;
+  background-color: #5cb85c;
+}
+
+.bold-text .checkbox-inline {
+  font-weight: bold;
+}
+
+/* Disable textarea re-sizing as a general rule */
+textarea {
+  resize: none;
+}
+
+textarea.allowresize {
+  resize: both;
+}
+
+/* Working... spinner */
+.spinny {
+  display: none;
+  position: fixed;
+  z-index: 2000;
+  width: 75px;
+  height: 75px;
+  text-align:center;
+  color: #eee;
+  background-color: @black;
+  border: 1px solid @grey;
+  border-radius: 6px;
+  padding-top: 10px;
+
+  p {
+    padding-top: 10px;
+    font-size: 11px;
+  }
+}
+
+.prepend-asterisk:before {
+  content: "\002A\00A0";
+  color: @red;
+}
+
+.subtitle {
+  font-size: 16px;
+}
+
+.license-version {
+  font-size: 18px;
+  color: @grey-txt;
+}
+
+.modal-dialog .ui-accordion .ui-accordion-content {
+  overflow: hidden;
+}
+
+.overlay {
+  display: none;
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1999;
+  background-color: @black;
+  opacity: 0;
+}
+
+/* TB tooltip overrides */
+  .popover-content {
+      width: 100%;
+  }
+  h3.popover-title, .popover-content, .popover-content blockquote, .popover-content a {
+      font-size: 12px;
+  }
+  .flyout thead> tr> th, .flyout tbody> tr> td, .flyout tbody> tr> td> a {
+      font-size: 12px;
+  }
+  .popover-title {
+      padding-top: 5px;
+      padding-bottom: 5px;
+  }
+  .popover {
+      z-index: 2000;
+      min-width: 200px;
+      max-width: 325px;
+  }
+  .popover pre {
+      white-space: pre-wrap;
+  }
+  .popover-footer {
+      font-size: 12px;
+      margin-top: 10px;
+      text-align: right;
+      color: @grey;
+      .key {
+          color: @white;
+          background-color: @grey;
+          padding: 0 1px 1px 1px;
+          border-radius: 3px;
+      }
+  }
+  .tooltip {
+      z-index: 2050;
+      opacity: 1.0;
+  }
+
+.alert {
+    margin-top: 15px;
+    margin-bottom: 15px;
+}
+
+hr {
+  border-color: #e3e3e3;
+}
+
+.help {
+  display: inline-block;
+}
+
+.help-auto-off {
+  margin-top: 15px;
+  margin-bottom: 15px;
+  margin-left: 10px;
+  label {
+    font-weight: normal;
+  }
+}
+
+/* help collapse */
+  h4.panel-title {
+    font-size: 14px;
+  }
+
+  .panel-heading:hover {
+    cursor: pointer;
+  }
+
+  .panel-default>.panel-heading .collapse-help-icon {
+    color: @grey;
+  }
+
+  .collapsible-help {
+      margin-top: 20px;
+      margin-bottom: 20px;
+      dl {
+         margin-left: 15px;
+      }
+      dt {
+         margin-top: 15px;
+      }
+  }
+
+th.actions-column,
+td.actions {
+  white-space: nowrap;
+}
+
+.tab-content {
+  padding-top: 15px;
+}
+
+.btn .caret {
+  border-top-color: #696969;
+}
+
+.btn-light {
+  color: #333;
+  background-color: #ddd;
+  border-color: #ddd;
+}
+
+.refresh-grp {
+  display: inline-block;
+  text-align: right;
+  margin-left: 0;
+  margin-top: 0;
+  padding: 0;
+  line-height: normal;
+
+  .refresh-msg {
+    font-size: 10px;
+  }
+}
+
+.btn-light:hover {
+  color: #333;
+  background-color: #ccc;
+  border-color: #ccc;
+}
+
+.ssh-key-field, .mono-space {
+  font-family: Fixed, monospace;
+}
+
+/* Make a div or any element behave like pre. Use in conjunction with .mono-space */
+.pre {
+  white-space: pre;
+}
+
+
+dd {
+  margin-left: 15px;
+}
+
+/* Use code-breakable in pop-over text to indent and wrap code segments */
+
+.code-breakable {
+  padding-left: 10px;
+  word-wrap: break-word;
+}
+
+.break {
+  word-break: break-all;
+}
+
+.login-alert {
+  margin-bottom: 25px;
+  font-size: 14px;
+  font-weight: normal;
+  color: @blue-link;
+  text-align: center;
+}
+
+.controls {
+  min-height: 15px;
+}
+
+/* The sticky footer: http://css-tricks.com/snippets/css/sticky-footer, with less variables */
+  @footer-height: 68px;
+  @footer-margin: 22px;
+  @push-height: (@footer-height + @footer-margin);
+  #wrap {
+      min-height: 100%;
+      height: 100%;
+      height: auto !important;
+      margin-bottom: -(@push-height);
+  }
+  #wrap:after {
+      content: "";
+      display: block;
+  }
+
+  #wrap:after {
+      height: @push-height;
+  }
+
+  .site-footer {
+      height: @footer-height;
+      margin-top: @footer-margin;
+  }
+
+
+#navbar-container, .main-menu {
+  width: 100%;
+  background-color: @black;
+}
+
+.text-justify {
+  text-align: justify;
+}
+
+.help-link,
+.help-link:active,
+.help-link:visited,
+.ui-widget-content a.help-link,
+.ui-widget-content a.help-link:active,
+.ui-widget-content a.help-link:visited {
+  color: @grey;
+  text-decoration: none;
+}
+
+.help-link:hover,
+.ui-widget-content a.help-link:hover {
+  color: @black;
+  text-decoration: none;
+}
+
+.navbar.site-footer {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+  border-bottom-left-radius: 0;
+  border-bottom-right-radius: 0;
+  margin-bottom: 0;
+  background-color: @black;
+}
+
+.site-footer {
+    color: @grey;
+    text-align: center;
+    padding-top: 10px;
+    padding-bottom: 10px;
+    font-size: 12px;
+
+    a,
+    a:active,
+    a:visited {
+        color: @grey;
+    }
+
+    a:hover {
+        color: @blue;
+    }
+
+    .help {
+        padding-top: 14px;
+        font-weight: normal;
+    }
+
+    .logo {
+        text-align: right;
+    }
+
+    .logo img {
+        max-width: 46px;
+    }
+
+    .copyright {
+        padding-top: 6px;
+        font-weight: normal;
+        text-align: center;
+    }
+}
+
+.modal-header.login-header {
+    text-align: center;
+    background-color: @black;
+    border-left: 1px solid #686868;
+    border-right: 1px solid #686868;
+    border-top: 1px solid #686868;
+    border-top-left-radius: 6px;
+    border-top-right-radius: 6px;
+}
+
+.login-header img {
+    width: 327px;
+}
+
+.form-title {
+    display: inline-block;
+    width: 100%;
+    vertical-align: middle;
+    font-weight: bold;
+    padding-left: 15px;
+    margin-bottom: 10px;
+}
+
+.form-group {
+   margin-bottom: 25px;
+}
+
+.form-cancel {
+  float: right;
+  margin-right: 10px;
+}
+
+.form-title-hr {
+  margin-bottom: 20px;
+}
+
+.form-horizontal .buttons {
+  margin-top: 25px;
+}
+
+.label-text {
+  padding-right: 10px;
+}
+
+#group_form #group_tabs {
+  margin-top: 25px;
+}
+
+/* Outline required fields in Red when there is an error */
+  .form-control.ng-dirty.ng-invalid, .form-control.ng-dirty.ng-invalid:focus {
+      border-color: rgba(204, 0, 0, 0.8);
+      outline: 0;
+      -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px rgba(204, 0, 0, 0.6);
+              box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px rgba(204, 0, 0, 0.6);
+  }
+
+/* For some reason TB 3 RC1 does not provide an input-mini */
+
+.input-mini {
+  height: 26px;
+  padding: 3px 8px;
+  font-size: 12px;
+  border-radius: 3px;
+}
+
+.error {
+  margin-top: 5px;
+  font-size: 12px;
+  line-height: normal;
+  color: @red;
+}
+
+.xsmall {
+  font-size: 12px;
+}
+
+.note {
+  padding-top: 15px;
+  font-size: 12px;
+}
+
+legend {
+  font-size: medium;
+  font-weight: bold;
+}
+
+.navigation {
+  margin: 15px 0 15px 0;
+}
+
+.page-number {
+  display: inline-block;
+  padding: 0;
+  margin: 0;
+}
+
+.page-number-small {
+  display: inline-block;
+  margin-left: 10px;
+  font-size: 11px;
+}
+
+/* Pagination */
+  .page-label {
+    font-size: 12px;
+    margin-top: 0;
+    text-align: right;
+  }
+
+  .pagination {
+    margin-top: 0;
+    margin-bottom: 7px;
+  }
+
+  .pagination > li > a {
+    padding: 3px 6px;
+    font-size: 10px;
+  }
+
+  .modal-body {
+      .pagination {
+          margin-top: 15px;
+          margin-bottom: 0;
+      }
+      .pagination > li > a {
+          border: none;
+          padding-top: 0;
+          padding-bottom: 0;
+      }
+      .pagination > .active > a {
+          background-color: #fff;
+          color: #428bca;
+          border-color: none;
+          border: 1px solid #428bca;
+      }
+  }
+
+.footer-navigation {
+  margin: 10px 0 10px 0;
+}
+
+.lookup-navigation {
+  margin: 15px 0 0 0;
+  /*padding-top: 20px;*/
+
+}
+
+#lookup-modal-dialog {
+    overflow-x: hidden;
+    .instructions {
+        margin-top: 0;
+        margin-bottom: 20px;
+    }
+}
+
+.related-footer {
+  margin: 10px 0 0 0;
+}
+
+select.page-size {
+   width: 65px;
+   height: 24px;
+   font-size: 10px;
+}
+
+.page-size-label {
+  margin-left: 15px;
+  font-size: 10.5px;
+  font-weight: normal;
+}
+
+.accordion-heading {
+  font-weight: bold;
+  color: @blue-link;
+}
+
+.accordion-heading i {
+  margin-right: 5px;
+}
+
+.status-actions {
+  display: inline-block;
+  height: 25px;
+}
+
+.status-spin {
+  display: inline-block;
+  margin-left: 15px;
+  font-size: 22px;
+  vertical-align: middle;
+}
+
+/* Search Widget */
+
+  .search-widget label {
+    display: inline-block;
+    padding-right: 15px;
+    vertical-align: middle;
+  }
+
+  #search_value_input {
+    padding-right: 25px;
+  }
+
+  .search-reset-start {
+    color: @grey;
+    float: right;
+    position: relative;
+    top: -25px;
+    left: -10px;
+    z-index: 10;
+  }
+
+  .search-reset-start:hover {
+    cursor: pointer;
+    color: @black;
+  }
+
+  .ui-widget-content a.search-reset-start {
+    color: @grey;
+  }
+
+/* breadcrumbs */
+.nav-path {
+    padding: 5px 0 10px 0;
+    margin-right: 2px;
+    margin-bottom: 15px;
+    font-size: 14px;
+    font-weight: bold;
+    background-color: #f5f5f5;
+    border: 1px solid #d8d8d8;
+    border-radius: 6px;
+    box-shadow: 3px 3px 4px 0 #808080;
+
+    .breadcrumb {
+      display: inline-block;
+      padding-bottom: 0;
+      padding-left: 0;
+      padding-right: 0;
+      margin-bottom: 0;
+      margin-left: 10px;
+    }
+
+    .dropdown {
+        display: inline-block;
+        margin-right: 0;
+        paddding-right: 0;
+
+        .toggle, .toggle:visited, .toggle:hover, .toggle:active {
+          color: @black;
+        }
+
+        li a.active {
+           color: @grey;
+        }
+
+        .crumb-icon {
+           font-size: 12px;
+        }
+    }
+}
+
+.actions .dropdown {
+    display: inline-block;
+}
+
+/* Display drop-down menus on hover. Remove margin between toggle link
+   and menu, allowing smooth mouse movement between toggle and menu
+
+   http://stackoverflow.com/questions/8878033/how-to-make-twitter-bootstrap-menu-dropdown-on-hover-rather-than-click
+*/
+
+  .dropdown-toggle:hover .dropdown-menu, .dropdown:hover .dropdown-menu {
+     display: block;
+  }
+
+  .dropdown-menu li:hover {
+     visibility: visible;
+  }
+
+  .dropdown-menu {
+     margin-top: 0;
+     z-index: 200;
+  }
+
+/* end */
+
+
+.greeting {
+  padding-right: 22px;
+}
+
+.breadcrumb .active {
+  color: @black;
+}
+
+.nav-tabs > li > a {
+  font-weight: bold;
+}
+
+input[type="text"].field-mini-height {
+  height: 12px;
+  font-size: 10.5px;
+}
+
+select.field-mini-height {
+  height: 22px;
+  font-size: 10.5px;
+}
+
+.ask-checkbox {
+  margin-left: 10px;
+}
+
+.no-padding {
+  padding: 0;
+  margin: 0;
+}
+
+input[type="checkbox"].checkbox-no-label {
+  margin-top: 10px;
+}
+
+.checkbox-group {
+  .radio-inline + .radio-inline,
+  .checkbox-inline + .checkbox-inline {
+    margin-left: 0;
+  }
+  .checkbox-inline, .radio-inline {
+    margin-right: 10px;
+  }
+}
+
+.checkbox-options {
+  font-weight: normal;
+  padding-right: 20px;
+}
+
+/* Display list actions next to search widget */
+.list-actions {
+  text-align: right;
+  margin-bottom: 10px;
+
+  button {
+    margin-left: 4px;
+  }
+
+  .fa-lg {
+    vertical-align: -8%;
+  }
+}
+
+.jqui-accordion {
+    .list-actions {
+        margin: 0;
+    }
+    /*.list-wrapper {
+        background-color: @well;
+        padding: 10px;
+        border-radius: 4px;
+        border: 1px solid @well-border;
+    }*/
+    .ui-accordion-content {
+        padding-left: 15px;
+        padding-right: 15px;
+    }
+    .page-label {
+        margin-top: 5px;
+    }
+}
+
+#home-list-actions {
+  margin-bottom: 15px;
+}
+
+/* End Display list actions */
+
+
+/* Enable table-hover to work when table is in a well */
+
+.table-hover tbody tr:hover > td,
+.table-hover tbody tr:hover > th {
+  background-color: #fff;
+}
+
+.table-hover-inverse tbody tr:hover > td,
+.table-hover-inverse tbody tr:hover > th {
+  background-color: @active-color;
+}
+
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+  background-color: @active-color;
+}
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr.success:hover > th {
+  background-color: @active-color;
+}
+
+.table-summary thead > tr > th,
+.table-summary tbody > tr > th,
+.table-summary tfoot > tr > th,
+.table-summary thead > tr > td,
+.table-summary tbody > tr > td,
+.table-summary tfoot > tr > td {
+  border-top: 1px solid #ccc;
+}
+
+.table-summary thead > tr > th {
+  border-bottom: 1px solid #ccc;
+}
+
+/* Table without row borders */
+
+.table-no-border thead > tr > th,
+.table-no-border tbody > tr > th,
+.table-no-border tfoot > tr > th,
+.table-no-border thead > tr > td,
+.table-no-border tbody > tr > td,
+.table-no-border tfoot > tr > td {
+  border-top: none;
+}
+
+/* Less padding on .table-condensed */
+.table-condensed>tbody>tr>td,
+.table-condensed>thead>tr>th {
+    padding-top: 3px;
+    padding-bottom: 3px;
+}
+
+/* Table info rows */
+
+.loading-info {
+    color: @grey-txt;
+    font-weight: normal;
+    padding: 15px 0;
+}
+
+/* Status Icons */
+
+  .license-expired,
+  .license-invalid,
+  .icon-failures-true,
+  .active-failures-true a,
+  .active-failures-true a:active,
+  .job-failed,
+  .job-error {
+    color: #da4f49;
+  }
+
+  .icon-failures-true a:hover {
+    color: @red;
+  }
+
+  .job-failures-true {
+    padding-top: 5px;
+    color: #da4f49;
+  }
+
+  .job-event-status,
+  .license-status {
+    padding-top: 5px;
+  }
+
+
+  .job-new,
+  .license-valid,
+  .job-success,
+  .job-successful {
+      color: @green;
+  }
+
+  .icon-job-active:before,
+  .icon-job-running:before,
+  .icon-job-success:before,
+  .icon-job-successful:before,
+  .icon-job-changed:before,
+  .icon-job-ok:before {
+      content: "\f111";
+  }
+
+  .icon-job-stopped:before,
+  .icon-job-error:before,
+  .icon-job-failed:before,
+  .icon-job-canceled:before,
+  .icon-job-unreachable:before {
+      content: "\f06a";
+  }
+
+  .icon-job-pending:before,
+  .icon-job-waiting:before,
+  .icon-job-new:before,
+  .icon-job-none:before,
+  .icon-job-skipped:before,
+  .icon-job-no-matching-hosts:before {
+      content: "\f10c";
+  }
+
+  .icon-job-active,
+  .icon-job-running,
+  .icon-job-success,
+  .icon-job-successful,
+  .icon-job-ok {
+      color: @green;
+  }
+
+  .icon-job-running {
+    .pulsate();
+  }
+
+  .icon-job-changed,
+  .job-changed {
+      color: @warning;
+  }
+
+  .icon-job-stopped,
+  .icon-job-error,
+  .icon-job-failed,
+  .icon-job-canceled,
+  .icon-job-unreachable {
+      color: @red;
+  }
+
+  .icon-job-none,
+  .icon-job-pending,
+  .icon-job-waiting,
+  .icon-job-new,
+  .icon-job-skipped,
+  .icon-job-no-matching-hosts {
+      color: @grey;
+      opacity: 0.45;
+  }
+
+  .icon-schedule-enabled-true:before {
+      content: "\f04d";
+  }
+
+  .icon-schedule-enabled-false:before {
+      content: "\f04b";
+  }
+
+  .icon-socket-ok:before {
+      content: "\f111";
+      color: @green;
+  }
+  .icon-socket-error:before {
+      content: "\f111";
+      color: @red;
+  }
+  .icon-socket-connecting:before {
+      content: "\f042";
+      color: @warning;
+  }
+
+  .badge {
+    padding: 2px 3px 3px 4px;
+    font-size: 10px;
+    font-weight: normal;
+    line-height: 1;
+  }
+
+/* job_events page */
+
+  #jobevents_table {
+      div.return-code {
+          display: inline-block;
+          margin-left: 10px;
+      }
+      textarea {
+          white-space: pre-wrap;
+          resize: vertical;
+      }
+  }
+
+  #password-modal .alert-info {
+      margin-top: 0;
+      margin-bottom: 25px;
+  }
+
+/* Inventory job status badge */
+  .failures-true {
+    background-color: @red;
+    color: #fff;
+  }
+
+  .failures-false {
+    background-color: @green;
+    color: #fff;
+  }
+
+/* Cloud inventory status. i.e. inventory_source.status values */
+
+  .icon-cloud-na:before,
+  .icon-cloud-never:before,
+  .icon-cloud-updating:before,
+  .icon-cloud-running:before,
+  .icon-cloud-successful:before,
+  .icon-cloud-pending:before,
+  .icon-cloud-failed:before,
+  .icon-cloud-canceled:before,
+  .icon-cloud-error:before {
+    content: "\f0c2";
+  }
+
+  /*.icon-cloud-failed:before,
+  .icon-cloud-error:before {
+    content: "\f06a";
+  }*/
+
+  .icon-cloud-na,
+  .icon-cloud-never,
+  a.icon-cloud-na:hover,
+  a.icon-cloud-never:hover {
+    color: @grey;
+  }
+
+  .icon-cloud-updating,
+  .icon-cloud-running,
+  .icon-cloud-successful,
+  .icon-cloud-pending,
+  a.icon-cloud-updating:hover,
+  a.icon-cloud-successful:hover {
+    color: @green;
+  }
+
+  .icon-cloud-failed,
+  .icon-cloud-error,
+  .icon-cloud-canceled,
+  a.icon-cloud-failed:hover {
+    color: @red;
+  }
+
+  .icon-cloud-updating,
+  .icon-cloud-running,
+  .icon-cloud-pending {
+    .pulsate();
+  }
+
+  .icon-enabled-true:before {
+    content: "\f046";
+  }
+
+  .icon-enabled-true {
+    color: @green;
+    width: 14px;
+
+  }
+  .icon-enabled-false:before {
+    content: "\f096";
+  }
+
+  .icon-enabled-false{
+    color: @red;
+    width: 14px;
+  }
+
+/* Inventory cloud sourced? indicator */
+  .icon-cloud-true:before {
+    content: "\f111";
+  }
+
+  .icon-cloud-false:before {
+    content: "\f111";
+  }
+
+  .icon-cloud-true {
+    color: @green;
+  }
+
+  .icon-cloud-false {
+    color: @grey;
+  }
+/* end */
+
+  .field-success {
+    color: #5bb75b;
+  }
+
+  .field-success input {
+    border-color: #5bb75b;
+  }
+
+  .field-failure {
+    color: @red;
+  }
+
+  .field-failure input {
+    border-color: @red;
+  }
+
+  .field-badge {
+    font-size: 12px;
+    margin-right: 3px;
+  }
+
+  .license-warning,
+  .license-demo {
+    color: @warning;
+  }
+
+  .job-detail-status {
+    display: inline-block;
+    margin-top: 5px;
+    font-size: 15px;
+  }
+
+  /*.form-items .search-widget {
+    margin-top: 15px;
+  }*/
+
+  .form-items .item-count {
+    display: inline-block;
+    margin-top: 25px;
+    font-size: small;
+  }
+
+  .child-event a {
+    color: @black;
+    cursor: default;
+  }
+  /* Padding levels used on job events and inventory groups */
+  .level { display: inline-block; }
+  .level-1 { padding-left: 15px; }
+  .level-2 { padding-left: 30px; }
+  .level-3 { padding-left: 45px; }
+  .level-4 { padding-left: 60px; }
+  .level-5 { padding-left: 75px; }
+  .level-6 { padding-left: 90px; }
+  .level-7 { padding-left: 105px; }
+  .level-8 { padding-left: 120px; }
+  .level-9 { padding-left: 135px; }
+  .level-10 { padding-left: 150px; }
+
+  .level-3-detail {
+    padding-left: 80px;
+  }
+
+  #job_events .control-group {
+    margin-top: 0;
+    margin-bottom: 10px;
+  }
+
+/* End Jobs Page */
+
+
+/* License Accordion */
+  #license-collapse .ui-accordion-content {
+     overflow: hidden;
+  }
+
+/* Inventory nav links */
+  .navigation-links {
+
+    padding: 0;
+    margin-top: -10px;
+
+    a {
+      margin-right: 15px;
+    }
+
+    a:last-child {
+      margin-right: 20px;
+    }
+  }
+
+/* Dashboard */
+  #home #container1.col-lg-6,
+  #home #container3.col-lg-6 {
+      padding-right: 7px;
+  }
+
+  #home #container2.col-lg-6,
+  #home #container4.col-lg-6 {
+      padding-left: 7px;
+  }
+
+
+/* Inventory Edit */
+
+  #groups-container.col-lg-6 {
+      padding-right: 7px;
+  }
+
+  #hosts-container.col-lg-6 {
+      padding-left: 7px;
+      padding-right: 17px;
+  }
+
+  #groups-container .well,
+  #hosts-container .well {
+      padding: 8px;
+      margin-bottom: 0;
+  }
+
+  #inventories_table i[class*="icon-job-"],
+  #home_groups_table i[class*="icon-job-"] {
+      margin-left: 10px;
+  }
+
+  .selected {
+    font-weight: bold;
+    color: @blue-dark;
+  }
+
+  .inventory-title {
+    font-size: 16px;
+    font-weight: bold;
+  }
+
+  .active-row {
+     background-color: @white;
+     border-bottom: 1px solid #ddd;
+     border-right: 1px solid #ddd;
+  }
+
+  #groups_table .actions .cancel { padding-right: 2px; }
+
+  .node-toggle, .node-no-toggle {
+    /* also used on job evetns */
+    float: none;
+    padding-top: 3px;
+    padding-left: 0;
+    margin-right: 5px;
+    margin-left: 0;
+  }
+
+  .node-no-toggle {
+    opacity: .30;
+  }
+
+  .draggable-clone {
+      opacity: .60;
+      font-weight: bold;
+      /*z-index: 2000;
+      overflow: visible;
+      whitespace: wrap;
+      text-overflow: clip;*/
+  }
+
+  .droppable-hover {
+      background-color: @info;
+      color: @info-color;
+      padding: 6px;
+      border: 1px solid @info-border;
+      border-radius: 4px;
+      /*overflow: visible;
+      whitespace: wrap;
+      text-overflow: clip;*/
+  }
+
+  #group-delete-dialog .help-container,
+  #password-modal .help-container {
+      .help-link,
+      .help-link:active,
+      .help-link:visited {
+          color: @blue-link;
+      }
+
+      .help-link:hover {
+          color: @blue-dark;
+      }
+  }
+
+// Inventory edit dialog, source form, ec2
+#source_form.squeeze .form-group {
+    margin-bottom: 10px;
+}
+
+.disabled {
+  color: @grey;
+}
+
+a.disabled:hover {
+  color: @grey;
+  cursor: not-allowed;
+}
+a.btn-disabled:hover {
+  cursor: not-allowed;
+}
+
+/* Variable Editing */
+  .parse-selection {
+      display: inline-block;
+      margin: 5px 0 8px 0;
+      font-size: 12px;
+      line-height: normal;
+  }
+
+  .parse-selection input {
+      margin-left: 5px;
+  }
+
+  .parse-select .parse-label {
+      margin-left: 3px;
+  }
+
+  .external-editor-link {
+      display: inline-block;
+      margin-left: 20px;
+  }
+
+.slider {
+  display: inline-block;
+  width: 100px;
+  margin: 0 10px;
+  vertical-align: middle;
+}
+
+/* Sort link styles */
+
+.list-header:hover {
+  cursor: pointer;
+}
+
+.list-header i {
+  margin-left: 10px;
+}
+
+.list-header .icon-sort {
+  color: #ccc;
+}
+
+.list-header .icon-sort-down,
+.list-header .icon-sort-up {
+  color: @black;
+}
+
+/* job_events syles */
+
+#jobevents_table .actions i {
+  padding-top: 0;
+  margin-right: 0;
+}
+
+tr td button i {
+  padding-top: 0;
+  margin-right: 0;
+}
+
+.event-form {
+  margin-top: 10px;
+  margin-bottom: 5px;
+
+  label {
+    font-weight: normal;
+  }
+}
+
+.event-detail-host {
+  padding-top: 10px;
+  padding-bottom: 5px;
+}
+
+.form-section-title {
+  width: 100%;
+  margin-top: 0;
+  margin-bottom: 10px;
+  font-weight: bold;
+  border-bottom: 1px solid #d8d8d8;
+}
+
+.modal-backdrop,
+.modal-backdrop.fade.in {
+  opacity: 0.6;
+  filter: alpha(opacity=60);
+}
+
+.modal-body .ui-accordion .ui-accordion-content {
+  padding: 10px;
+}
+
+/* overrides to TB modal */
+
+.modal-header {
+  padding: 15px 10px;
+  color: #2078be;
+  border-bottom: 1px solid #eee;
+  -webkit-border-top-right-radius: 3px;
+     -moz-border-top-right-radius: 3px;
+          border-top-right-radius: 3px;
+  -webkit-border-top-left-radius: 3px;
+     -moz-border-top-left-radius: 3px;
+          border-top-left-radius: 3px;
+}
+
+.modal {
+  border: 1px solid @black;
+}
+
+#alert-modal, #alert-modal2 {
+  z-index: 2100;
+}
+
+.close {
+  color: @grey;
+  opacity: .7;
+  filter: alpha(opacity=70);
+}
+
+.modal-header h3 {
+  margin: 0;
+  font-size: 22px;
+  font-weight: bold;
+  text-rendering: optimizeLegibility;
+}
+
+.modal-body {
+  padding-top: 30px;
+}
+
+#prompt-modal .modal-body {
+  padding-bottom: 30px;
+}
+
+.skinny-modal .modal-body {
+  padding: 5px 10px 0 10px;
+}
+
+/* form navigation */
+.navigation-buttons {
+  height: 40px;
+}
+
+
+/* PW progress bar */
+.pw-progress {
+  margin-top: 10px;
+
+  li {
+    line-height: normal;
+    margin-bottom: 10px;
+  }
+  ul:last-child {
+    margin-top: 10px;
+  }
+
+}
+
+/* Home page */
+
+.failed-column {
+  a:link, a:visited {
+    color: @red;
+  }
+  a:hover {
+    color: @red-hover;
+  }
+}
+
+/* Help modal dialog */
+
+#help-modal {
+  overflow: hidden;
+  padding: 10px;
+
+  img {
+    max-width: 450px;
+    margin-top: 15px;
+    margin-bottom: 15px;
+    border: 1px solid @grey;
+    box-shadow: 3px 3px 5px 0 @grey;
+    }
+}
+
+#help-modal .img-container {
+    width: 100%;
+    text-align: center;
+}
+
+.help-box {
+    width: 100%;
+    margin-top: 15px;
+    border-radius: 6px;
+    padding: 8px;
+    color: @grey-txt;
+    font-size: 14px;
+    }
+
+
+/* Activity Stream Widget */
+
+  #stream-container {
+    display: none;
+    border-radius: 8px;
+    z-index: 20;  /* has to be greater than tree selector */
+
+    .nav-path {
+      margin-bottom: 15px;
+      margin-top: 5px;
+    }
+  }
+
+  #stream-content {
+    border: 1px solid @grey;
+    border-radius: 8px;
+    padding: 8px;
+
+    h5 {
+        margin-top: 0;
+        margin-bottom: 20px;
+    }
+  }
+
+/* job stdout */
+
+  #pre-container {
+      overflow: auto;
+      width: 100%;
+      border-radius: 4px;
+      margin: 0;
+  }
+
+
+/* ng-cloak directive */
+
+[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
+  display: none !important;
+}
+
+
+/* Large desktop */
+
+@media (min-width: 1200px) {
+
+  .delete-btn {
+    /* Used on job and project page to make cancel and delete buttons have an equal width */
+    width: 60px;
+  }
+
+  .label-text {
+    text-align: right;
+  }
+
+}
+
+@media (min-width: 768px) and (max-width: 1199px) {
+
+  .level-1,
+  .level-2,
+  .level-3,
+  .level-4,
+  .level-5,
+  .level-6,
+  .level-7,
+  .level-8,
+  .level-9,
+  .level-10,
+  .level-3-detail {
+      padding-left: 0;
+  }
+
+  .list-actions button, .list-actions .checkbox-inline {
+      margin-top: 10px;
+  }
+
+  .label-text {
+      text-align: left;
+  }
+
+  .group-name {
+      width: 80%;
+  }
+
+  #groups-container.col-lg-6 {
+      padding-right: 15px;
+  }
+
+  #hosts-container.col-lg-6 {
+      margin-top: 15px;
+      padding-left: 15px;
+      padding-right: 15px;
+      .well {
+          margin-bottom: 0;
+      }
+  }
+
+}
+
+
+/* Landscape phone to portrait tablet */
+
+@media (max-width: 767px) {
+
+  /* The sticky footer: http://css-tricks.com/snippets/css/sticky-footer, with less variables */
+  @footer-height: 140px;
+  @footer-margin: 15px;
+  @push-height: (@footer-height + @footer-margin);
+  #wrap {
+      min-height: 100%;
+      height: 100%;
+      height: auto !important;
+      margin-bottom: -(@push-height);
+  }
+  #wrap:after {
+      content: "";
+      display: block;
+  }
+  #wrap:after {
+      height: @push-height;
+  }
+  .site-footer {
+      height: @footer-height;
+      margin-top: @footer-margin;
+      padding-top: 5px;
+      padding-bottom: 5px;
+      .logo {
+          text-align: center;
+          padding-top: 10px;
+          margin-bottom: 10px;
+      }
+  }
+
+  /* Job events */
+
+  .level-1,
+  .level-2,
+  .level-3,
+  .level-4,
+  .level-5,
+  .level-6,
+  .level-7,
+  .level-8,
+  .level-9,
+  .level-10,
+  .level-3-detail {
+      padding-left: 0;
+  }
+
+  table {
+      word-wrap: break-word;
+      table-layout: fixed;
+  }
+
+  th.actions-column,
+  td.actions {
+      white-space: normal;
+  }
+
+  td.actions .btn {
+      width: 75px;
+      margin-bottom: 5px;
+  }
+
+  .list-actions button, .list-actions .checkbox-inline {
+      margin-top: 10px;
+  }
+
+  .group-name {
+      width: 80%;
+  }
+
+  .label-text {
+      text-align: left;
+  }
+
+  .list-action-label {
+      display: none;
+  }
+
+  #groups-container.col-lg-6 {
+      padding-right: 15px;
+  }
+
+  #hosts-container.col-lg-6 {
+      margin-top: 15px;
+      padding-left: 15px;
+      padding-right: 15px;
+  }
+
+}
diff --git a/awx/ui/static/less/stdout.less b/awx/ui/static/less/stdout.less
new file mode 100644
index 0000000000..5e80a84392
--- /dev/null
+++ b/awx/ui/static/less/stdout.less
@@ -0,0 +1,1015 @@
+/***************************************************************************
+ * Copyright (c) 2014 Ansible, Inc.
+ *
+ * Styles for job stdout
+ *
+ */
+
+.body_foreground { color: #AAAAAA; }
+.body_background { background-color: @black; }
+
+.body_foreground > .bold,.bold > .body_foreground, body.body_foreground > pre > .bold { color: @white; font-weight: normal; }
+
+.inv_foreground { color: @black; }
+.inv_background { background-color: #AAAAAA; }
+
+.ansi1 { font-weight: bold; }
+.ansi2 { font-weight: lighter; }
+.ansi3 { font-style: italic; }
+.ansi4 { text-decoration: underline; }
+.ansi5 { text-decoration: blink; }
+.ansi6 { text-decoration: blink; }
+.ansi8 { visibility: hidden; }
+.ansi9 { text-decoration: line-through; }
+.ansi30 { color: #000316; }
+.inv30 { background-color: #000316; }
+.ansi31 { color: @red; }
+.inv31 { background-color: @red; }
+.ansi32 { color: @green; }
+.inv32 { background-color: @green; }
+.ansi33 { color:@changed; }
+.inv33 { background-color:@changed; }
+.ansi34 { color: #0000aa; }
+.inv34 { background-color: #0000aa; }
+.ansi35 { color: #E850A8; }
+.inv35 { background-color: #E850A8; }
+.ansi36 { color: @skipped; }
+.inv36 { background-color: @skipped; }
+.ansi37 { color: #F5F1DE; }
+.inv37 { background-color: #F5F1DE; }
+.ansi40 { background-color: #000316; }
+.inv40 { color: #000316; }
+.ansi41 { background-color: @red; }
+.inv41 { color: @red; }
+.ansi42 { background-color: @green; }
+.inv42 { color: @green; }
+.ansi43 { background-color:@changed; }
+.inv43 { color:@changed; }
+.ansi44 { background-color: #0000aa; }
+.inv44 { color: #0000aa; }
+.ansi45 { background-color: #E850A8; }
+.inv45 { color: #E850A8; }
+.ansi46 { background-color: @skipped; }
+.inv46 { color: @skipped; }
+.ansi47 { background-color: #F5F1DE; }
+.inv47 { color: #F5F1DE; }
+.ansi38-16 { color: #000000; }
+.inv38-16 { background: #000000; }
+.ansi48-16 { background: #000000; }
+.inv48-16 { color: #000000; }
+.ansi38-17 { color: #00002a; }
+.inv38-17 { background: #00002a; }
+.ansi48-17 { background: #00002a; }
+.inv48-17 { color: #00002a; }
+.ansi38-18 { color: #000054; }
+.inv38-18 { background: #000054; }
+.ansi48-18 { background: #000054; }
+.inv48-18 { color: #000054; }
+.ansi38-19 { color: #00007e; }
+.inv38-19 { background: #00007e; }
+.ansi48-19 { background: #00007e; }
+.inv48-19 { color: #00007e; }
+.ansi38-20 { color: #0000a8; }
+.inv38-20 { background: #0000a8; }
+.ansi48-20 { background: #0000a8; }
+.inv48-20 { color: #0000a8; }
+.ansi38-21 { color: #0000d2; }
+.inv38-21 { background: #0000d2; }
+.ansi48-21 { background: #0000d2; }
+.inv48-21 { color: #0000d2; }
+.ansi38-52 { color: #2a0000; }
+.inv38-52 { background: #2a0000; }
+.ansi48-52 { background: #2a0000; }
+.inv48-52 { color: #2a0000; }
+.ansi38-53 { color: #2a002a; }
+.inv38-53 { background: #2a002a; }
+.ansi48-53 { background: #2a002a; }
+.inv48-53 { color: #2a002a; }
+.ansi38-54 { color: #2a0054; }
+.inv38-54 { background: #2a0054; }
+.ansi48-54 { background: #2a0054; }
+.inv48-54 { color: #2a0054; }
+.ansi38-55 { color: #2a007e; }
+.inv38-55 { background: #2a007e; }
+.ansi48-55 { background: #2a007e; }
+.inv48-55 { color: #2a007e; }
+.ansi38-56 { color: #2a00a8; }
+.inv38-56 { background: #2a00a8; }
+.ansi48-56 { background: #2a00a8; }
+.inv48-56 { color: #2a00a8; }
+.ansi38-57 { color: #2a00d2; }
+.inv38-57 { background: #2a00d2; }
+.ansi48-57 { background: #2a00d2; }
+.inv48-57 { color: #2a00d2; }
+.ansi38-88 { color: #540000; }
+.inv38-88 { background: #540000; }
+.ansi48-88 { background: #540000; }
+.inv48-88 { color: #540000; }
+.ansi38-89 { color: #54002a; }
+.inv38-89 { background: #54002a; }
+.ansi48-89 { background: #54002a; }
+.inv48-89 { color: #54002a; }
+.ansi38-90 { color: #540054; }
+.inv38-90 { background: #540054; }
+.ansi48-90 { background: #540054; }
+.inv48-90 { color: #540054; }
+.ansi38-91 { color: #54007e; }
+.inv38-91 { background: #54007e; }
+.ansi48-91 { background: #54007e; }
+.inv48-91 { color: #54007e; }
+.ansi38-92 { color: #5400a8; }
+.inv38-92 { background: #5400a8; }
+.ansi48-92 { background: #5400a8; }
+.inv48-92 { color: #5400a8; }
+.ansi38-93 { color: #5400d2; }
+.inv38-93 { background: #5400d2; }
+.ansi48-93 { background: #5400d2; }
+.inv48-93 { color: #5400d2; }
+.ansi38-124 { color: #7e0000; }
+.inv38-124 { background: #7e0000; }
+.ansi48-124 { background: #7e0000; }
+.inv48-124 { color: #7e0000; }
+.ansi38-125 { color: #7e002a; }
+.inv38-125 { background: #7e002a; }
+.ansi48-125 { background: #7e002a; }
+.inv48-125 { color: #7e002a; }
+.ansi38-126 { color: #7e0054; }
+.inv38-126 { background: #7e0054; }
+.ansi48-126 { background: #7e0054; }
+.inv48-126 { color: #7e0054; }
+.ansi38-127 { color: #7e007e; }
+.inv38-127 { background: #7e007e; }
+.ansi48-127 { background: #7e007e; }
+.inv48-127 { color: #7e007e; }
+.ansi38-128 { color: #7e00a8; }
+.inv38-128 { background: #7e00a8; }
+.ansi48-128 { background: #7e00a8; }
+.inv48-128 { color: #7e00a8; }
+.ansi38-129 { color: #7e00d2; }
+.inv38-129 { background: #7e00d2; }
+.ansi48-129 { background: #7e00d2; }
+.inv48-129 { color: #7e00d2; }
+.ansi38-160 { color: #a80000; }
+.inv38-160 { background: #a80000; }
+.ansi48-160 { background: #a80000; }
+.inv48-160 { color: #a80000; }
+.ansi38-161 { color: #a8002a; }
+.inv38-161 { background: #a8002a; }
+.ansi48-161 { background: #a8002a; }
+.inv48-161 { color: #a8002a; }
+.ansi38-162 { color: #a80054; }
+.inv38-162 { background: #a80054; }
+.ansi48-162 { background: #a80054; }
+.inv48-162 { color: #a80054; }
+.ansi38-163 { color: #a8007e; }
+.inv38-163 { background: #a8007e; }
+.ansi48-163 { background: #a8007e; }
+.inv48-163 { color: #a8007e; }
+.ansi38-164 { color: #a800a8; }
+.inv38-164 { background: #a800a8; }
+.ansi48-164 { background: #a800a8; }
+.inv48-164 { color: #a800a8; }
+.ansi38-165 { color: #a800d2; }
+.inv38-165 { background: #a800d2; }
+.ansi48-165 { background: #a800d2; }
+.inv48-165 { color: #a800d2; }
+.ansi38-196 { color: #d20000; }
+.inv38-196 { background: #d20000; }
+.ansi48-196 { background: #d20000; }
+.inv48-196 { color: #d20000; }
+.ansi38-197 { color: #d2002a; }
+.inv38-197 { background: #d2002a; }
+.ansi48-197 { background: #d2002a; }
+.inv48-197 { color: #d2002a; }
+.ansi38-198 { color: #d20054; }
+.inv38-198 { background: #d20054; }
+.ansi48-198 { background: #d20054; }
+.inv48-198 { color: #d20054; }
+.ansi38-199 { color: #d2007e; }
+.inv38-199 { background: #d2007e; }
+.ansi48-199 { background: #d2007e; }
+.inv48-199 { color: #d2007e; }
+.ansi38-200 { color: #d200a8; }
+.inv38-200 { background: #d200a8; }
+.ansi48-200 { background: #d200a8; }
+.inv48-200 { color: #d200a8; }
+.ansi38-201 { color: #d200d2; }
+.inv38-201 { background: #d200d2; }
+.ansi48-201 { background: #d200d2; }
+.inv48-201 { color: #d200d2; }
+.ansi38-22 { color: #002a00; }
+.inv38-22 { background: #002a00; }
+.ansi48-22 { background: #002a00; }
+.inv48-22 { color: #002a00; }
+.ansi38-23 { color: #002a2a; }
+.inv38-23 { background: #002a2a; }
+.ansi48-23 { background: #002a2a; }
+.inv48-23 { color: #002a2a; }
+.ansi38-24 { color: #002a54; }
+.inv38-24 { background: #002a54; }
+.ansi48-24 { background: #002a54; }
+.inv48-24 { color: #002a54; }
+.ansi38-25 { color: #002a7e; }
+.inv38-25 { background: #002a7e; }
+.ansi48-25 { background: #002a7e; }
+.inv48-25 { color: #002a7e; }
+.ansi38-26 { color: #002aa8; }
+.inv38-26 { background: #002aa8; }
+.ansi48-26 { background: #002aa8; }
+.inv48-26 { color: #002aa8; }
+.ansi38-27 { color: #002ad2; }
+.inv38-27 { background: #002ad2; }
+.ansi48-27 { background: #002ad2; }
+.inv48-27 { color: #002ad2; }
+.ansi38-58 { color: #2a2a00; }
+.inv38-58 { background: #2a2a00; }
+.ansi48-58 { background: #2a2a00; }
+.inv48-58 { color: #2a2a00; }
+.ansi38-59 { color: #2a2a2a; }
+.inv38-59 { background: #2a2a2a; }
+.ansi48-59 { background: #2a2a2a; }
+.inv48-59 { color: #2a2a2a; }
+.ansi38-60 { color: #2a2a54; }
+.inv38-60 { background: #2a2a54; }
+.ansi48-60 { background: #2a2a54; }
+.inv48-60 { color: #2a2a54; }
+.ansi38-61 { color: #2a2a7e; }
+.inv38-61 { background: #2a2a7e; }
+.ansi48-61 { background: #2a2a7e; }
+.inv48-61 { color: #2a2a7e; }
+.ansi38-62 { color: #2a2aa8; }
+.inv38-62 { background: #2a2aa8; }
+.ansi48-62 { background: #2a2aa8; }
+.inv48-62 { color: #2a2aa8; }
+.ansi38-63 { color: #2a2ad2; }
+.inv38-63 { background: #2a2ad2; }
+.ansi48-63 { background: #2a2ad2; }
+.inv48-63 { color: #2a2ad2; }
+.ansi38-94 { color: #542a00; }
+.inv38-94 { background: #542a00; }
+.ansi48-94 { background: #542a00; }
+.inv48-94 { color: #542a00; }
+.ansi38-95 { color: #542a2a; }
+.inv38-95 { background: #542a2a; }
+.ansi48-95 { background: #542a2a; }
+.inv48-95 { color: #542a2a; }
+.ansi38-96 { color: #542a54; }
+.inv38-96 { background: #542a54; }
+.ansi48-96 { background: #542a54; }
+.inv48-96 { color: #542a54; }
+.ansi38-97 { color: #542a7e; }
+.inv38-97 { background: #542a7e; }
+.ansi48-97 { background: #542a7e; }
+.inv48-97 { color: #542a7e; }
+.ansi38-98 { color: #542aa8; }
+.inv38-98 { background: #542aa8; }
+.ansi48-98 { background: #542aa8; }
+.inv48-98 { color: #542aa8; }
+.ansi38-99 { color: #542ad2; }
+.inv38-99 { background: #542ad2; }
+.ansi48-99 { background: #542ad2; }
+.inv48-99 { color: #542ad2; }
+.ansi38-130 { color: #7e2a00; }
+.inv38-130 { background: #7e2a00; }
+.ansi48-130 { background: #7e2a00; }
+.inv48-130 { color: #7e2a00; }
+.ansi38-131 { color: #7e2a2a; }
+.inv38-131 { background: #7e2a2a; }
+.ansi48-131 { background: #7e2a2a; }
+.inv48-131 { color: #7e2a2a; }
+.ansi38-132 { color: #7e2a54; }
+.inv38-132 { background: #7e2a54; }
+.ansi48-132 { background: #7e2a54; }
+.inv48-132 { color: #7e2a54; }
+.ansi38-133 { color: #7e2a7e; }
+.inv38-133 { background: #7e2a7e; }
+.ansi48-133 { background: #7e2a7e; }
+.inv48-133 { color: #7e2a7e; }
+.ansi38-134 { color: #7e2aa8; }
+.inv38-134 { background: #7e2aa8; }
+.ansi48-134 { background: #7e2aa8; }
+.inv48-134 { color: #7e2aa8; }
+.ansi38-135 { color: #7e2ad2; }
+.inv38-135 { background: #7e2ad2; }
+.ansi48-135 { background: #7e2ad2; }
+.inv48-135 { color: #7e2ad2; }
+.ansi38-166 { color: #a82a00; }
+.inv38-166 { background: #a82a00; }
+.ansi48-166 { background: #a82a00; }
+.inv48-166 { color: #a82a00; }
+.ansi38-167 { color: #a82a2a; }
+.inv38-167 { background: #a82a2a; }
+.ansi48-167 { background: #a82a2a; }
+.inv48-167 { color: #a82a2a; }
+.ansi38-168 { color: #a82a54; }
+.inv38-168 { background: #a82a54; }
+.ansi48-168 { background: #a82a54; }
+.inv48-168 { color: #a82a54; }
+.ansi38-169 { color: #a82a7e; }
+.inv38-169 { background: #a82a7e; }
+.ansi48-169 { background: #a82a7e; }
+.inv48-169 { color: #a82a7e; }
+.ansi38-170 { color: #a82aa8; }
+.inv38-170 { background: #a82aa8; }
+.ansi48-170 { background: #a82aa8; }
+.inv48-170 { color: #a82aa8; }
+.ansi38-171 { color: #a82ad2; }
+.inv38-171 { background: #a82ad2; }
+.ansi48-171 { background: #a82ad2; }
+.inv48-171 { color: #a82ad2; }
+.ansi38-202 { color: #d22a00; }
+.inv38-202 { background: #d22a00; }
+.ansi48-202 { background: #d22a00; }
+.inv48-202 { color: #d22a00; }
+.ansi38-203 { color: #d22a2a; }
+.inv38-203 { background: #d22a2a; }
+.ansi48-203 { background: #d22a2a; }
+.inv48-203 { color: #d22a2a; }
+.ansi38-204 { color: #d22a54; }
+.inv38-204 { background: #d22a54; }
+.ansi48-204 { background: #d22a54; }
+.inv48-204 { color: #d22a54; }
+.ansi38-205 { color: #d22a7e; }
+.inv38-205 { background: #d22a7e; }
+.ansi48-205 { background: #d22a7e; }
+.inv48-205 { color: #d22a7e; }
+.ansi38-206 { color: #d22aa8; }
+.inv38-206 { background: #d22aa8; }
+.ansi48-206 { background: #d22aa8; }
+.inv48-206 { color: #d22aa8; }
+.ansi38-207 { color: #d22ad2; }
+.inv38-207 { background: #d22ad2; }
+.ansi48-207 { background: #d22ad2; }
+.inv48-207 { color: #d22ad2; }
+.ansi38-28 { color: #005400; }
+.inv38-28 { background: #005400; }
+.ansi48-28 { background: #005400; }
+.inv48-28 { color: #005400; }
+.ansi38-29 { color: #00542a; }
+.inv38-29 { background: #00542a; }
+.ansi48-29 { background: #00542a; }
+.inv48-29 { color: #00542a; }
+.ansi38-30 { color: #005454; }
+.inv38-30 { background: #005454; }
+.ansi48-30 { background: #005454; }
+.inv48-30 { color: #005454; }
+.ansi38-31 { color: #00547e; }
+.inv38-31 { background: #00547e; }
+.ansi48-31 { background: #00547e; }
+.inv48-31 { color: #00547e; }
+.ansi38-32 { color: #0054a8; }
+.inv38-32 { background: #0054a8; }
+.ansi48-32 { background: #0054a8; }
+.inv48-32 { color: #0054a8; }
+.ansi38-33 { color: #0054d2; }
+.inv38-33 { background: #0054d2; }
+.ansi48-33 { background: #0054d2; }
+.inv48-33 { color: #0054d2; }
+.ansi38-64 { color: #2a5400; }
+.inv38-64 { background: #2a5400; }
+.ansi48-64 { background: #2a5400; }
+.inv48-64 { color: #2a5400; }
+.ansi38-65 { color: #2a542a; }
+.inv38-65 { background: #2a542a; }
+.ansi48-65 { background: #2a542a; }
+.inv48-65 { color: #2a542a; }
+.ansi38-66 { color: #2a5454; }
+.inv38-66 { background: #2a5454; }
+.ansi48-66 { background: #2a5454; }
+.inv48-66 { color: #2a5454; }
+.ansi38-67 { color: #2a547e; }
+.inv38-67 { background: #2a547e; }
+.ansi48-67 { background: #2a547e; }
+.inv48-67 { color: #2a547e; }
+.ansi38-68 { color: #2a54a8; }
+.inv38-68 { background: #2a54a8; }
+.ansi48-68 { background: #2a54a8; }
+.inv48-68 { color: #2a54a8; }
+.ansi38-69 { color: #2a54d2; }
+.inv38-69 { background: #2a54d2; }
+.ansi48-69 { background: #2a54d2; }
+.inv48-69 { color: #2a54d2; }
+.ansi38-100 { color: #545400; }
+.inv38-100 { background: #545400; }
+.ansi48-100 { background: #545400; }
+.inv48-100 { color: #545400; }
+.ansi38-101 { color: #54542a; }
+.inv38-101 { background: #54542a; }
+.ansi48-101 { background: #54542a; }
+.inv48-101 { color: #54542a; }
+.ansi38-102 { color: #545454; }
+.inv38-102 { background: #545454; }
+.ansi48-102 { background: #545454; }
+.inv48-102 { color: #545454; }
+.ansi38-103 { color: #54547e; }
+.inv38-103 { background: #54547e; }
+.ansi48-103 { background: #54547e; }
+.inv48-103 { color: #54547e; }
+.ansi38-104 { color: #5454a8; }
+.inv38-104 { background: #5454a8; }
+.ansi48-104 { background: #5454a8; }
+.inv48-104 { color: #5454a8; }
+.ansi38-105 { color: #5454d2; }
+.inv38-105 { background: #5454d2; }
+.ansi48-105 { background: #5454d2; }
+.inv48-105 { color: #5454d2; }
+.ansi38-136 { color: #7e5400; }
+.inv38-136 { background: #7e5400; }
+.ansi48-136 { background: #7e5400; }
+.inv48-136 { color: #7e5400; }
+.ansi38-137 { color: #7e542a; }
+.inv38-137 { background: #7e542a; }
+.ansi48-137 { background: #7e542a; }
+.inv48-137 { color: #7e542a; }
+.ansi38-138 { color: #7e5454; }
+.inv38-138 { background: #7e5454; }
+.ansi48-138 { background: #7e5454; }
+.inv48-138 { color: #7e5454; }
+.ansi38-139 { color: #7e547e; }
+.inv38-139 { background: #7e547e; }
+.ansi48-139 { background: #7e547e; }
+.inv48-139 { color: #7e547e; }
+.ansi38-140 { color: #7e54a8; }
+.inv38-140 { background: #7e54a8; }
+.ansi48-140 { background: #7e54a8; }
+.inv48-140 { color: #7e54a8; }
+.ansi38-141 { color: #7e54d2; }
+.inv38-141 { background: #7e54d2; }
+.ansi48-141 { background: #7e54d2; }
+.inv48-141 { color: #7e54d2; }
+.ansi38-172 { color: #a85400; }
+.inv38-172 { background: #a85400; }
+.ansi48-172 { background: #a85400; }
+.inv48-172 { color: #a85400; }
+.ansi38-173 { color: #a8542a; }
+.inv38-173 { background: #a8542a; }
+.ansi48-173 { background: #a8542a; }
+.inv48-173 { color: #a8542a; }
+.ansi38-174 { color: #a85454; }
+.inv38-174 { background: #a85454; }
+.ansi48-174 { background: #a85454; }
+.inv48-174 { color: #a85454; }
+.ansi38-175 { color: #a8547e; }
+.inv38-175 { background: #a8547e; }
+.ansi48-175 { background: #a8547e; }
+.inv48-175 { color: #a8547e; }
+.ansi38-176 { color: #a854a8; }
+.inv38-176 { background: #a854a8; }
+.ansi48-176 { background: #a854a8; }
+.inv48-176 { color: #a854a8; }
+.ansi38-177 { color: #a854d2; }
+.inv38-177 { background: #a854d2; }
+.ansi48-177 { background: #a854d2; }
+.inv48-177 { color: #a854d2; }
+.ansi38-208 { color: #d25400; }
+.inv38-208 { background: #d25400; }
+.ansi48-208 { background: #d25400; }
+.inv48-208 { color: #d25400; }
+.ansi38-209 { color: #d2542a; }
+.inv38-209 { background: #d2542a; }
+.ansi48-209 { background: #d2542a; }
+.inv48-209 { color: #d2542a; }
+.ansi38-210 { color: #d25454; }
+.inv38-210 { background: #d25454; }
+.ansi48-210 { background: #d25454; }
+.inv48-210 { color: #d25454; }
+.ansi38-211 { color: #d2547e; }
+.inv38-211 { background: #d2547e; }
+.ansi48-211 { background: #d2547e; }
+.inv48-211 { color: #d2547e; }
+.ansi38-212 { color: #d254a8; }
+.inv38-212 { background: #d254a8; }
+.ansi48-212 { background: #d254a8; }
+.inv48-212 { color: #d254a8; }
+.ansi38-213 { color: #d254d2; }
+.inv38-213 { background: #d254d2; }
+.ansi48-213 { background: #d254d2; }
+.inv48-213 { color: #d254d2; }
+.ansi38-34 { color: #007e00; }
+.inv38-34 { background: #007e00; }
+.ansi48-34 { background: #007e00; }
+.inv48-34 { color: #007e00; }
+.ansi38-35 { color: #007e2a; }
+.inv38-35 { background: #007e2a; }
+.ansi48-35 { background: #007e2a; }
+.inv48-35 { color: #007e2a; }
+.ansi38-36 { color: #007e54; }
+.inv38-36 { background: #007e54; }
+.ansi48-36 { background: #007e54; }
+.inv48-36 { color: #007e54; }
+.ansi38-37 { color: #007e7e; }
+.inv38-37 { background: #007e7e; }
+.ansi48-37 { background: #007e7e; }
+.inv48-37 { color: #007e7e; }
+.ansi38-38 { color: #007ea8; }
+.inv38-38 { background: #007ea8; }
+.ansi48-38 { background: #007ea8; }
+.inv48-38 { color: #007ea8; }
+.ansi38-39 { color: #007ed2; }
+.inv38-39 { background: #007ed2; }
+.ansi48-39 { background: #007ed2; }
+.inv48-39 { color: #007ed2; }
+.ansi38-70 { color: #2a7e00; }
+.inv38-70 { background: #2a7e00; }
+.ansi48-70 { background: #2a7e00; }
+.inv48-70 { color: #2a7e00; }
+.ansi38-71 { color: #2a7e2a; }
+.inv38-71 { background: #2a7e2a; }
+.ansi48-71 { background: #2a7e2a; }
+.inv48-71 { color: #2a7e2a; }
+.ansi38-72 { color: #2a7e54; }
+.inv38-72 { background: #2a7e54; }
+.ansi48-72 { background: #2a7e54; }
+.inv48-72 { color: #2a7e54; }
+.ansi38-73 { color: #2a7e7e; }
+.inv38-73 { background: #2a7e7e; }
+.ansi48-73 { background: #2a7e7e; }
+.inv48-73 { color: #2a7e7e; }
+.ansi38-74 { color: #2a7ea8; }
+.inv38-74 { background: #2a7ea8; }
+.ansi48-74 { background: #2a7ea8; }
+.inv48-74 { color: #2a7ea8; }
+.ansi38-75 { color: #2a7ed2; }
+.inv38-75 { background: #2a7ed2; }
+.ansi48-75 { background: #2a7ed2; }
+.inv48-75 { color: #2a7ed2; }
+.ansi38-106 { color: #547e00; }
+.inv38-106 { background: #547e00; }
+.ansi48-106 { background: #547e00; }
+.inv48-106 { color: #547e00; }
+.ansi38-107 { color: #547e2a; }
+.inv38-107 { background: #547e2a; }
+.ansi48-107 { background: #547e2a; }
+.inv48-107 { color: #547e2a; }
+.ansi38-108 { color: #547e54; }
+.inv38-108 { background: #547e54; }
+.ansi48-108 { background: #547e54; }
+.inv48-108 { color: #547e54; }
+.ansi38-109 { color: #547e7e; }
+.inv38-109 { background: #547e7e; }
+.ansi48-109 { background: #547e7e; }
+.inv48-109 { color: #547e7e; }
+.ansi38-110 { color: #547ea8; }
+.inv38-110 { background: #547ea8; }
+.ansi48-110 { background: #547ea8; }
+.inv48-110 { color: #547ea8; }
+.ansi38-111 { color: #547ed2; }
+.inv38-111 { background: #547ed2; }
+.ansi48-111 { background: #547ed2; }
+.inv48-111 { color: #547ed2; }
+.ansi38-142 { color: #7e7e00; }
+.inv38-142 { background: #7e7e00; }
+.ansi48-142 { background: #7e7e00; }
+.inv48-142 { color: #7e7e00; }
+.ansi38-143 { color: #7e7e2a; }
+.inv38-143 { background: #7e7e2a; }
+.ansi48-143 { background: #7e7e2a; }
+.inv48-143 { color: #7e7e2a; }
+.ansi38-144 { color: #7e7e54; }
+.inv38-144 { background: #7e7e54; }
+.ansi48-144 { background: #7e7e54; }
+.inv48-144 { color: #7e7e54; }
+.ansi38-145 { color: #7e7e7e; }
+.inv38-145 { background: #7e7e7e; }
+.ansi48-145 { background: #7e7e7e; }
+.inv48-145 { color: #7e7e7e; }
+.ansi38-146 { color: #7e7ea8; }
+.inv38-146 { background: #7e7ea8; }
+.ansi48-146 { background: #7e7ea8; }
+.inv48-146 { color: #7e7ea8; }
+.ansi38-147 { color: #7e7ed2; }
+.inv38-147 { background: #7e7ed2; }
+.ansi48-147 { background: #7e7ed2; }
+.inv48-147 { color: #7e7ed2; }
+.ansi38-178 { color: #a87e00; }
+.inv38-178 { background: #a87e00; }
+.ansi48-178 { background: #a87e00; }
+.inv48-178 { color: #a87e00; }
+.ansi38-179 { color: #a87e2a; }
+.inv38-179 { background: #a87e2a; }
+.ansi48-179 { background: #a87e2a; }
+.inv48-179 { color: #a87e2a; }
+.ansi38-180 { color: #a87e54; }
+.inv38-180 { background: #a87e54; }
+.ansi48-180 { background: #a87e54; }
+.inv48-180 { color: #a87e54; }
+.ansi38-181 { color: #a87e7e; }
+.inv38-181 { background: #a87e7e; }
+.ansi48-181 { background: #a87e7e; }
+.inv48-181 { color: #a87e7e; }
+.ansi38-182 { color: #a87ea8; }
+.inv38-182 { background: #a87ea8; }
+.ansi48-182 { background: #a87ea8; }
+.inv48-182 { color: #a87ea8; }
+.ansi38-183 { color: #a87ed2; }
+.inv38-183 { background: #a87ed2; }
+.ansi48-183 { background: #a87ed2; }
+.inv48-183 { color: #a87ed2; }
+.ansi38-214 { color: #d27e00; }
+.inv38-214 { background: #d27e00; }
+.ansi48-214 { background: #d27e00; }
+.inv48-214 { color: #d27e00; }
+.ansi38-215 { color: #d27e2a; }
+.inv38-215 { background: #d27e2a; }
+.ansi48-215 { background: #d27e2a; }
+.inv48-215 { color: #d27e2a; }
+.ansi38-216 { color: #d27e54; }
+.inv38-216 { background: #d27e54; }
+.ansi48-216 { background: #d27e54; }
+.inv48-216 { color: #d27e54; }
+.ansi38-217 { color: #d27e7e; }
+.inv38-217 { background: #d27e7e; }
+.ansi48-217 { background: #d27e7e; }
+.inv48-217 { color: #d27e7e; }
+.ansi38-218 { color: #d27ea8; }
+.inv38-218 { background: #d27ea8; }
+.ansi48-218 { background: #d27ea8; }
+.inv48-218 { color: #d27ea8; }
+.ansi38-219 { color: #d27ed2; }
+.inv38-219 { background: #d27ed2; }
+.ansi48-219 { background: #d27ed2; }
+.inv48-219 { color: #d27ed2; }
+.ansi38-40 { color: #00a800; }
+.inv38-40 { background: #00a800; }
+.ansi48-40 { background: #00a800; }
+.inv48-40 { color: #00a800; }
+.ansi38-41 { color: #00a82a; }
+.inv38-41 { background: #00a82a; }
+.ansi48-41 { background: #00a82a; }
+.inv48-41 { color: #00a82a; }
+.ansi38-42 { color: #00a854; }
+.inv38-42 { background: #00a854; }
+.ansi48-42 { background: #00a854; }
+.inv48-42 { color: #00a854; }
+.ansi38-43 { color: #00a87e; }
+.inv38-43 { background: #00a87e; }
+.ansi48-43 { background: #00a87e; }
+.inv48-43 { color: #00a87e; }
+.ansi38-44 { color: #00a8a8; }
+.inv38-44 { background: #00a8a8; }
+.ansi48-44 { background: #00a8a8; }
+.inv48-44 { color: #00a8a8; }
+.ansi38-45 { color: #00a8d2; }
+.inv38-45 { background: #00a8d2; }
+.ansi48-45 { background: #00a8d2; }
+.inv48-45 { color: #00a8d2; }
+.ansi38-76 { color: #2aa800; }
+.inv38-76 { background: #2aa800; }
+.ansi48-76 { background: #2aa800; }
+.inv48-76 { color: #2aa800; }
+.ansi38-77 { color: #2aa82a; }
+.inv38-77 { background: #2aa82a; }
+.ansi48-77 { background: #2aa82a; }
+.inv48-77 { color: #2aa82a; }
+.ansi38-78 { color: #2aa854; }
+.inv38-78 { background: #2aa854; }
+.ansi48-78 { background: #2aa854; }
+.inv48-78 { color: #2aa854; }
+.ansi38-79 { color: #2aa87e; }
+.inv38-79 { background: #2aa87e; }
+.ansi48-79 { background: #2aa87e; }
+.inv48-79 { color: #2aa87e; }
+.ansi38-80 { color: #2aa8a8; }
+.inv38-80 { background: #2aa8a8; }
+.ansi48-80 { background: #2aa8a8; }
+.inv48-80 { color: #2aa8a8; }
+.ansi38-81 { color: #2aa8d2; }
+.inv38-81 { background: #2aa8d2; }
+.ansi48-81 { background: #2aa8d2; }
+.inv48-81 { color: #2aa8d2; }
+.ansi38-112 { color: #54a800; }
+.inv38-112 { background: #54a800; }
+.ansi48-112 { background: #54a800; }
+.inv48-112 { color: #54a800; }
+.ansi38-113 { color: #54a82a; }
+.inv38-113 { background: #54a82a; }
+.ansi48-113 { background: #54a82a; }
+.inv48-113 { color: #54a82a; }
+.ansi38-114 { color: #54a854; }
+.inv38-114 { background: #54a854; }
+.ansi48-114 { background: #54a854; }
+.inv48-114 { color: #54a854; }
+.ansi38-115 { color: #54a87e; }
+.inv38-115 { background: #54a87e; }
+.ansi48-115 { background: #54a87e; }
+.inv48-115 { color: #54a87e; }
+.ansi38-116 { color: #54a8a8; }
+.inv38-116 { background: #54a8a8; }
+.ansi48-116 { background: #54a8a8; }
+.inv48-116 { color: #54a8a8; }
+.ansi38-117 { color: #54a8d2; }
+.inv38-117 { background: #54a8d2; }
+.ansi48-117 { background: #54a8d2; }
+.inv48-117 { color: #54a8d2; }
+.ansi38-148 { color: #7ea800; }
+.inv38-148 { background: #7ea800; }
+.ansi48-148 { background: #7ea800; }
+.inv48-148 { color: #7ea800; }
+.ansi38-149 { color: #7ea82a; }
+.inv38-149 { background: #7ea82a; }
+.ansi48-149 { background: #7ea82a; }
+.inv48-149 { color: #7ea82a; }
+.ansi38-150 { color: #7ea854; }
+.inv38-150 { background: #7ea854; }
+.ansi48-150 { background: #7ea854; }
+.inv48-150 { color: #7ea854; }
+.ansi38-151 { color: #7ea87e; }
+.inv38-151 { background: #7ea87e; }
+.ansi48-151 { background: #7ea87e; }
+.inv48-151 { color: #7ea87e; }
+.ansi38-152 { color: #7ea8a8; }
+.inv38-152 { background: #7ea8a8; }
+.ansi48-152 { background: #7ea8a8; }
+.inv48-152 { color: #7ea8a8; }
+.ansi38-153 { color: #7ea8d2; }
+.inv38-153 { background: #7ea8d2; }
+.ansi48-153 { background: #7ea8d2; }
+.inv48-153 { color: #7ea8d2; }
+.ansi38-184 { color: #a8a800; }
+.inv38-184 { background: #a8a800; }
+.ansi48-184 { background: #a8a800; }
+.inv48-184 { color: #a8a800; }
+.ansi38-185 { color: #a8a82a; }
+.inv38-185 { background: #a8a82a; }
+.ansi48-185 { background: #a8a82a; }
+.inv48-185 { color: #a8a82a; }
+.ansi38-186 { color: #a8a854; }
+.inv38-186 { background: #a8a854; }
+.ansi48-186 { background: #a8a854; }
+.inv48-186 { color: #a8a854; }
+.ansi38-187 { color: #a8a87e; }
+.inv38-187 { background: #a8a87e; }
+.ansi48-187 { background: #a8a87e; }
+.inv48-187 { color: #a8a87e; }
+.ansi38-188 { color: #a8a8a8; }
+.inv38-188 { background: #a8a8a8; }
+.ansi48-188 { background: #a8a8a8; }
+.inv48-188 { color: #a8a8a8; }
+.ansi38-189 { color: #a8a8d2; }
+.inv38-189 { background: #a8a8d2; }
+.ansi48-189 { background: #a8a8d2; }
+.inv48-189 { color: #a8a8d2; }
+.ansi38-220 { color: #d2a800; }
+.inv38-220 { background: #d2a800; }
+.ansi48-220 { background: #d2a800; }
+.inv48-220 { color: #d2a800; }
+.ansi38-221 { color: #d2a82a; }
+.inv38-221 { background: #d2a82a; }
+.ansi48-221 { background: #d2a82a; }
+.inv48-221 { color: #d2a82a; }
+.ansi38-222 { color: #d2a854; }
+.inv38-222 { background: #d2a854; }
+.ansi48-222 { background: #d2a854; }
+.inv48-222 { color: #d2a854; }
+.ansi38-223 { color: #d2a87e; }
+.inv38-223 { background: #d2a87e; }
+.ansi48-223 { background: #d2a87e; }
+.inv48-223 { color: #d2a87e; }
+.ansi38-224 { color: #d2a8a8; }
+.inv38-224 { background: #d2a8a8; }
+.ansi48-224 { background: #d2a8a8; }
+.inv48-224 { color: #d2a8a8; }
+.ansi38-225 { color: #d2a8d2; }
+.inv38-225 { background: #d2a8d2; }
+.ansi48-225 { background: #d2a8d2; }
+.inv48-225 { color: #d2a8d2; }
+.ansi38-46 { color: #00d200; }
+.inv38-46 { background: #00d200; }
+.ansi48-46 { background: #00d200; }
+.inv48-46 { color: #00d200; }
+.ansi38-47 { color: #00d22a; }
+.inv38-47 { background: #00d22a; }
+.ansi48-47 { background: #00d22a; }
+.inv48-47 { color: #00d22a; }
+.ansi38-48 { color: #00d254; }
+.inv38-48 { background: #00d254; }
+.ansi48-48 { background: #00d254; }
+.inv48-48 { color: #00d254; }
+.ansi38-49 { color: #00d27e; }
+.inv38-49 { background: #00d27e; }
+.ansi48-49 { background: #00d27e; }
+.inv48-49 { color: #00d27e; }
+.ansi38-50 { color: #00d2a8; }
+.inv38-50 { background: #00d2a8; }
+.ansi48-50 { background: #00d2a8; }
+.inv48-50 { color: #00d2a8; }
+.ansi38-51 { color: #00d2d2; }
+.inv38-51 { background: #00d2d2; }
+.ansi48-51 { background: #00d2d2; }
+.inv48-51 { color: #00d2d2; }
+.ansi38-82 { color: #2ad200; }
+.inv38-82 { background: #2ad200; }
+.ansi48-82 { background: #2ad200; }
+.inv48-82 { color: #2ad200; }
+.ansi38-83 { color: #2ad22a; }
+.inv38-83 { background: #2ad22a; }
+.ansi48-83 { background: #2ad22a; }
+.inv48-83 { color: #2ad22a; }
+.ansi38-84 { color: #2ad254; }
+.inv38-84 { background: #2ad254; }
+.ansi48-84 { background: #2ad254; }
+.inv48-84 { color: #2ad254; }
+.ansi38-85 { color: #2ad27e; }
+.inv38-85 { background: #2ad27e; }
+.ansi48-85 { background: #2ad27e; }
+.inv48-85 { color: #2ad27e; }
+.ansi38-86 { color: #2ad2a8; }
+.inv38-86 { background: #2ad2a8; }
+.ansi48-86 { background: #2ad2a8; }
+.inv48-86 { color: #2ad2a8; }
+.ansi38-87 { color: #2ad2d2; }
+.inv38-87 { background: #2ad2d2; }
+.ansi48-87 { background: #2ad2d2; }
+.inv48-87 { color: #2ad2d2; }
+.ansi38-118 { color: #54d200; }
+.inv38-118 { background: #54d200; }
+.ansi48-118 { background: #54d200; }
+.inv48-118 { color: #54d200; }
+.ansi38-119 { color: #54d22a; }
+.inv38-119 { background: #54d22a; }
+.ansi48-119 { background: #54d22a; }
+.inv48-119 { color: #54d22a; }
+.ansi38-120 { color: #54d254; }
+.inv38-120 { background: #54d254; }
+.ansi48-120 { background: #54d254; }
+.inv48-120 { color: #54d254; }
+.ansi38-121 { color: #54d27e; }
+.inv38-121 { background: #54d27e; }
+.ansi48-121 { background: #54d27e; }
+.inv48-121 { color: #54d27e; }
+.ansi38-122 { color: #54d2a8; }
+.inv38-122 { background: #54d2a8; }
+.ansi48-122 { background: #54d2a8; }
+.inv48-122 { color: #54d2a8; }
+.ansi38-123 { color: #54d2d2; }
+.inv38-123 { background: #54d2d2; }
+.ansi48-123 { background: #54d2d2; }
+.inv48-123 { color: #54d2d2; }
+.ansi38-154 { color: #7ed200; }
+.inv38-154 { background: #7ed200; }
+.ansi48-154 { background: #7ed200; }
+.inv48-154 { color: #7ed200; }
+.ansi38-155 { color: #7ed22a; }
+.inv38-155 { background: #7ed22a; }
+.ansi48-155 { background: #7ed22a; }
+.inv48-155 { color: #7ed22a; }
+.ansi38-156 { color: #7ed254; }
+.inv38-156 { background: #7ed254; }
+.ansi48-156 { background: #7ed254; }
+.inv48-156 { color: #7ed254; }
+.ansi38-157 { color: #7ed27e; }
+.inv38-157 { background: #7ed27e; }
+.ansi48-157 { background: #7ed27e; }
+.inv48-157 { color: #7ed27e; }
+.ansi38-158 { color: #7ed2a8; }
+.inv38-158 { background: #7ed2a8; }
+.ansi48-158 { background: #7ed2a8; }
+.inv48-158 { color: #7ed2a8; }
+.ansi38-159 { color: #7ed2d2; }
+.inv38-159 { background: #7ed2d2; }
+.ansi48-159 { background: #7ed2d2; }
+.inv48-159 { color: #7ed2d2; }
+.ansi38-190 { color: #a8d200; }
+.inv38-190 { background: #a8d200; }
+.ansi48-190 { background: #a8d200; }
+.inv48-190 { color: #a8d200; }
+.ansi38-191 { color: #a8d22a; }
+.inv38-191 { background: #a8d22a; }
+.ansi48-191 { background: #a8d22a; }
+.inv48-191 { color: #a8d22a; }
+.ansi38-192 { color: #a8d254; }
+.inv38-192 { background: #a8d254; }
+.ansi48-192 { background: #a8d254; }
+.inv48-192 { color: #a8d254; }
+.ansi38-193 { color: #a8d27e; }
+.inv38-193 { background: #a8d27e; }
+.ansi48-193 { background: #a8d27e; }
+.inv48-193 { color: #a8d27e; }
+.ansi38-194 { color: #a8d2a8; }
+.inv38-194 { background: #a8d2a8; }
+.ansi48-194 { background: #a8d2a8; }
+.inv48-194 { color: #a8d2a8; }
+.ansi38-195 { color: #a8d2d2; }
+.inv38-195 { background: #a8d2d2; }
+.ansi48-195 { background: #a8d2d2; }
+.inv48-195 { color: #a8d2d2; }
+.ansi38-226 { color: #d2d200; }
+.inv38-226 { background: #d2d200; }
+.ansi48-226 { background: #d2d200; }
+.inv48-226 { color: #d2d200; }
+.ansi38-227 { color: #d2d22a; }
+.inv38-227 { background: #d2d22a; }
+.ansi48-227 { background: #d2d22a; }
+.inv48-227 { color: #d2d22a; }
+.ansi38-228 { color: #d2d254; }
+.inv38-228 { background: #d2d254; }
+.ansi48-228 { background: #d2d254; }
+.inv48-228 { color: #d2d254; }
+.ansi38-229 { color: #d2d27e; }
+.inv38-229 { background: #d2d27e; }
+.ansi48-229 { background: #d2d27e; }
+.inv48-229 { color: #d2d27e; }
+.ansi38-230 { color: #d2d2a8; }
+.inv38-230 { background: #d2d2a8; }
+.ansi48-230 { background: #d2d2a8; }
+.inv48-230 { color: #d2d2a8; }
+.ansi38-231 { color: #d2d2d2; }
+.inv38-231 { background: #d2d2d2; }
+.ansi48-231 { background: #d2d2d2; }
+.inv48-231 { color: #d2d2d2; }
+.ansi38-232 { color: #080808; }
+.inv38-232 { background: #080808; }
+.ansi48-232 { background: #080808; }
+.inv48-232 { color: #080808; }
+.ansi38-233 { color: #121212; }
+.inv38-233 { background: #121212; }
+.ansi48-233 { background: #121212; }
+.inv48-233 { color: #121212; }
+.ansi38-234 { color: #1c1c1c; }
+.inv38-234 { background: #1c1c1c; }
+.ansi48-234 { background: #1c1c1c; }
+.inv48-234 { color: #1c1c1c; }
+.ansi38-235 { color: #262626; }
+.inv38-235 { background: #262626; }
+.ansi48-235 { background: #262626; }
+.inv48-235 { color: #262626; }
+.ansi38-236 { color: #303030; }
+.inv38-236 { background: #303030; }
+.ansi48-236 { background: #303030; }
+.inv48-236 { color: #303030; }
+.ansi38-237 { color: #3a3a3a; }
+.inv38-237 { background: #3a3a3a; }
+.ansi48-237 { background: #3a3a3a; }
+.inv48-237 { color: #3a3a3a; }
+.ansi38-238 { color: #444444; }
+.inv38-238 { background: #444444; }
+.ansi48-238 { background: #444444; }
+.inv48-238 { color: #444444; }
+.ansi38-239 { color: #4e4e4e; }
+.inv38-239 { background: #4e4e4e; }
+.ansi48-239 { background: #4e4e4e; }
+.inv48-239 { color: #4e4e4e; }
+.ansi38-240 { color: #585858; }
+.inv38-240 { background: #585858; }
+.ansi48-240 { background: #585858; }
+.inv48-240 { color: #585858; }
+.ansi38-241 { color: #626262; }
+.inv38-241 { background: #626262; }
+.ansi48-241 { background: #626262; }
+.inv48-241 { color: #626262; }
+.ansi38-242 { color: #6c6c6c; }
+.inv38-242 { background: #6c6c6c; }
+.ansi48-242 { background: #6c6c6c; }
+.inv48-242 { color: #6c6c6c; }
+.ansi38-243 { color: #767676; }
+.inv38-243 { background: #767676; }
+.ansi48-243 { background: #767676; }
+.inv48-243 { color: #767676; }
+.ansi38-244 { color: #808080; }
+.inv38-244 { background: #808080; }
+.ansi48-244 { background: #808080; }
+.inv48-244 { color: #808080; }
+.ansi38-245 { color: #8a8a8a; }
+.inv38-245 { background: #8a8a8a; }
+.ansi48-245 { background: #8a8a8a; }
+.inv48-245 { color: #8a8a8a; }
+.ansi38-246 { color: #949494; }
+.inv38-246 { background: #949494; }
+.ansi48-246 { background: #949494; }
+.inv48-246 { color: #949494; }
+.ansi38-247 { color: #9e9e9e; }
+.inv38-247 { background: #9e9e9e; }
+.ansi48-247 { background: #9e9e9e; }
+.inv48-247 { color: #9e9e9e; }
+.ansi38-248 { color: #a8a8a8; }
+.inv38-248 { background: #a8a8a8; }
+.ansi48-248 { background: #a8a8a8; }
+.inv48-248 { color: #a8a8a8; }
+.ansi38-249 { color: #b2b2b2; }
+.inv38-249 { background: #b2b2b2; }
+.ansi48-249 { background: #b2b2b2; }
+.inv48-249 { color: #b2b2b2; }
+.ansi38-250 { color: #bcbcbc; }
+.inv38-250 { background: #bcbcbc; }
+.ansi48-250 { background: #bcbcbc; }
+.inv48-250 { color: #bcbcbc; }
+.ansi38-251 { color: #c6c6c6; }
+.inv38-251 { background: #c6c6c6; }
+.ansi48-251 { background: #c6c6c6; }
+.inv48-251 { color: #c6c6c6; }
+.ansi38-252 { color: #d0d0d0; }
+.inv38-252 { background: #d0d0d0; }
+.ansi48-252 { background: #d0d0d0; }
+.inv48-252 { color: #d0d0d0; }
+.ansi38-253 { color: #dadada; }
+.inv38-253 { background: #dadada; }
+.ansi48-253 { background: #dadada; }
+.inv48-253 { color: #dadada; }
+.ansi38-254 { color: #e4e4e4; }
+.inv38-254 { background: #e4e4e4; }
+.ansi48-254 { background: #e4e4e4; }
+.inv48-254 { color: #e4e4e4; }
+.ansi38-255 { color: #eeeeee; }
+.inv38-255 { background: #eeeeee; }
+.ansi48-255 { background: #eeeeee; }
+.inv48-255 { color: #eeeeee; }
\ No newline at end of file
diff --git a/awx/ui/static/partials/job_stdout.html b/awx/ui/static/partials/job_stdout.html
index 9420e11842..5870796a02 100644
--- a/awx/ui/static/partials/job_stdout.html
+++ b/awx/ui/static/partials/job_stdout.html
@@ -3,20 +3,17 @@
 
         
         
 
         
-