git.iko.soy/typeable/octopod
on master help sign in
Added Kubernetes Dashboard button to Web UI (#14)

* Added logs url support to the frontend * Added k8s dashboard URL to charts and deployment guide * Added troubleshooting to FAQ * Tweaked docs. * Resolved comments * Renamed button to Details

commitfe69f08eec0a6e6f32ad50319507d70c11f581ee authoriko <ilyakooo0@gmail.com> dateMon 18 Jan 2021, 11:53 (6 years ago) parentfbf59b0
32 files changed+304−175
README.md+18−4 charts/octopod/templates/octopod-nginx-configmap.yaml+6−1 dev/config.json+2−1 docs/en/Octopod_deployment_guide.md+17 octopod-css/development/styles/_button.css+8 octopod-css/production/images/dialog-delete@2x.png octopod-css/production/layouts/index.html+7−7 octopod-css/production/layouts/staging.html+7−7 octopod-css/production/markups/_action.html+7−7 octopod-css/production/markups/_bar.html+7−7 octopod-css/production/markups/_break.html+7−7 octopod-css/production/markups/_button.html+7−7 octopod-css/production/markups/_dash.html+7−7 octopod-css/production/markups/_drop.html+7−7 octopod-css/production/markups/_expander.html+7−7 octopod-css/production/markups/_external.html+7−7 octopod-css/production/markups/_input.html+7−7 octopod-css/production/markups/_listing.html+7−7 octopod-css/production/markups/_loading.html+7−7 octopod-css/production/markups/_notification.html+7−7 octopod-css/production/markups/_null.html+7−7 octopod-css/production/markups/_spot.html+7−7 octopod-css/production/markups/_status.html+7−7 octopod-css/production/markups/_title.html+7−7 octopod-css/production/styles/style.css+1−1 octopod-frontend/octopod-frontend.cabal+1 octopod-frontend/src/Frontend/GHCJS.hs+10−13 octopod-frontend/src/Frontend/Utils.hs+51−5 octopod-frontend/src/Main.hs+8−5 octopod-frontend/src/Page/Deployment.hs+34−13 octopod-frontend/src/Page/Deployments.hs+21−5 octopod-frontend/src/Reflex/MultiEventWriter/Class.hs+1−1
README.md+18−4
@@ -17,10 +17,10 @@ We created _Octopod_ because we believe that everything we release should be rig
1717
1818### 🛠️ Technical documentation
1919- [🏗 Technical architecture](docs/en/Technical_architecture.md) [[RU](docs/ru/Technical_architecture.md)]
20−- [⚙️ Control script guide](docs/en/Control_scripts.md) [[RU](docs/ru/Control_scripts.md)]
20+- [⚙️ Control script guide][cs] [[RU](docs/ru/Control_scripts.md)]
2121- [🔧🐙 Octopod deployment guide](docs/en/Octopod_deployment_guide.md) [[RU](docs/ru/Octopod_deployment_with_K8S.md)]
2222- [🔧🚀 Helm-based Octopod project setup](docs/en/Helm-based_deployment_guide.md) [[RU](docs/ru/Helm-based_deployment_guide.md)]
23−- [🐙🎛 octo CLI user guide](docs/en/Octo_user_guide.md) [[RU](docs/ru/Octo_user_guide.md)]
23+- [🐙🎛 octo CLI user guide][octo] [[RU](docs/ru/Octo_user_guide.md)]
2424- [🤖 CI integration](docs/en/Integration.md)
2525- [🔒 Octopod security model](docs/en/Security_model.md) [[RU](docs/ru/Security_model.md)]
2626
@@ -28,7 +28,7 @@ We created _Octopod_ because we believe that everything we release should be rig
2828
2929### How long does it take to set up _Octopod_?
3030
31−The longest part of setting up _Octopod_ for your project will probably be writing [_Control Scripts_](docs/en/Control_scripts.md). In total you should be able to get things running in about a day.
31+The longest part of setting up _Octopod_ for your project will probably be writing [_Control Scripts_][cs]. In total you should be able to get things running in about a day.
3232
3333### Will _Octopod_ work with my project if it uses X?
3434
@@ -36,7 +36,7 @@ Yes. _Octopod_ is project-agnostic. If you can run your project in a Docker cont
3636
3737### What do I need to know to set up Octopod?
3838
39−You need to understand the basics of _Kubernetes_ and be familiar with whatever hosting provider you will be using. There is no need to know any special language – you can write [_Control Scripts_](docs/en/Control_scripts.md) in whatever language you like.
39+You need to understand the basics of _Kubernetes_ and be familiar with whatever hosting provider you will be using. There is no need to know any special language – you can write [_Control Scripts_][cs] in whatever language you like.
4040
4141### Does _Octopod_ work with my CI?
4242
@@ -46,6 +46,17 @@ Yes. If you can run arbitrary executables in your CI, then you will be able to i
4646
4747It's been excluded from the GUI because we don't have a good security story to accompany this feature yet. Some secrets and credentials may leak to the project team using Octopod and, potentially, not everyone should have access to this data.
4848
49+### Octopod says "Failure" next to my deployment. Why is it not working?
50+
51+There are several places where things can go wrong:
52+
53+1. Your DevOps engineer could have made mistakes in one of the [_Control Scripts_][cs] leading to an improper deployment process.
54+
55+ To fix this the DevOps engineer can use the [_octo CLI_][octo] to see detailed logs collected during the deployment process and diagnose the issue.
56+2. You could have one of the steps of your deployment failing (for example, a failing database migration).
57+
58+ If you have supplied a [_Kubernetes Dashboard_](https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/) URL to _Octopod_ during deployment, then you will have a "Details" button in the _Web UI_. You can click that button to get a filtered view of the _Kubernetes Dashboard_ where you can see what could have gone wrong and diagnose the issue.
59+
4960### Why Haskell and Rust?
5061
5162We believe that there is a lot to be gained in programming in general by being able to statically ensure invariants in your code. One of the most practical ways of ensuring invariants is a good static type system. Haskell and Rust are both languages that have very strong type systems. This allows us to move fast without breaking things in the process.
@@ -55,3 +66,6 @@ We believe that there is a lot to be gained in programming in general by being a
5566If you still have questions, be sure to ask them in our [Octopod Discussions](https://github.com/typeable/octopod/discussions).
5667
5768<p align="center"><a href="https://typeable.io"><img src="img/typeable.png" width="177px"></img></a></p>
69+
70+[cs]: docs/en/Control_scripts.md
71+[octo]: docs/en/Octo_user_guide.md
charts/octopod/templates/octopod-nginx-configmap.yaml+6−1
@@ -16,5 +16,10 @@ data:
1616 {
1717 "app_url": "https://{{ .Values.app_domain }}",
1818 "ws_url": "wss://{{ .Values.ws_domain }}",
19− "app_auth": "Basic {{ .Values.basic_auth_token }}"
19+ "app_auth": "Basic {{ .Values.basic_auth_token }}",
20+ {{ if .Values.kubernetes_dashboard_url }}
21+ "kubernetes_dashboard_url_template": "{{ .Values.kubernetes_dashboard_url }}/#/search?namespace={{ .Values.namespace }}&q="
22+ {{ else }}
23+ "kubernetes_dashboard_url_template": null
24+ {{ end }}
2025 }
dev/config.json+2−1
@@ -1,5 +1,6 @@
11{
22 "app_url": "http://localhost:8000",
33 "ws_url": "ws://localhost:4020",
4− "app_auth": ""
4+ "app_auth": "",
5+ "kubernetes_dashboard_url_template": "https://echo-url.github.io/#"
56}
docs/en/Octopod_deployment_guide.md+17
@@ -352,6 +352,22 @@ base_domain="octo.example.com"
352352username="octopod"
353353password="password"
354354
355+#################################################
356+# Kubernetes Dashboard Setup
357+#################################################
358+
359+# You can supply a base url for your k8s dashboard you have set up
360+# to view the cluster, in which the Octopod will create deployments.
361+#
362+# Example URL to supply:
363+# https://dashboard.example.com
364+#
365+# If you supply a url, then there will be a "Details" button for
366+# every deployment which opens a filtered page of your k8s dashboard.
367+#
368+# If you leave this blank, the "Details" button will not be displayed in the
369+# Web UI.
370+kubernetes_dashboard_url=""
355371
356372#################################################
357373# Other Setup
@@ -389,6 +405,7 @@ helm upgrade --install octopod ./octopod \
389405 --set "power_app_domain=$power_app_domain" \
390406 --set "base_domain=$base_domain" \
391407 --set "status_update_timeout=$status_update_timeout" \
408+ --set "kubernetes_dashboard_url=$kubernetes_dashboard_url" \
392409 --wait --timeout 600 --debug
393410 ```
394411
octopod-css/development/styles/_button.css+8
@@ -99,3 +99,11 @@
9999 background-position: 11px center;
100100 background-repeat: no-repeat;
101101}
102+
103+.button--logs {
104+ padding-left: 40px;
105+ background-image: url("../vectors/common-use-logs.svg");
106+ background-size: 24px 24px;
107+ background-position: 11px center;
108+ background-repeat: no-repeat;
109+}
octopod-css/production/images/dialog-delete@2x.png

Binary file not shown.

octopod-css/production/layouts/index.html+7−7
@@ -6,7 +6,7 @@
66 <title>Index</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111 <body>
1212
@@ -874,12 +874,12 @@
874874 <script src="../vendors/outline/outline.js"></script>
875875
876876 <!-- Temp -->
877− <script src="../scripts/_expander.js?1606142431"></script>
878− <script src="../scripts/_drop.js?1606142431"></script>
879− <script src="../scripts/_sort.js?1606142431"></script>
880− <script src="../scripts/_data.js?1606142431"></script>
881− <script src="../scripts/_popup.js?1606142431"></script>
882− <script src="../scripts/_classic-popup.js?1606142431"></script>
877+ <script src="../scripts/_expander.js?1610627322"></script>
878+ <script src="../scripts/_drop.js?1610627322"></script>
879+ <script src="../scripts/_sort.js?1610627322"></script>
880+ <script src="../scripts/_data.js?1610627322"></script>
881+ <script src="../scripts/_popup.js?1610627322"></script>
882+ <script src="../scripts/_classic-popup.js?1610627322"></script>
883883
884884 </body>
885885</html>
octopod-css/production/layouts/staging.html+7−7
@@ -6,7 +6,7 @@
66 <title>Deployment</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111 <body>
1212
@@ -699,12 +699,12 @@
699699 <script src="../vendors/outline/outline.js"></script>
700700
701701 <!-- Temp -->
702− <script src="../scripts/_expander.js?1606142431"></script>
703− <script src="../scripts/_drop.js?1606142431"></script>
704− <script src="../scripts/_sort.js?1606142431"></script>
705− <script src="../scripts/_data.js?1606142431"></script>
706− <script src="../scripts/_popup.js?1606142431"></script>
707− <script src="../scripts/_classic-popup.js?1606142431"></script>
702+ <script src="../scripts/_expander.js?1610627322"></script>
703+ <script src="../scripts/_drop.js?1610627322"></script>
704+ <script src="../scripts/_sort.js?1610627322"></script>
705+ <script src="../scripts/_data.js?1610627322"></script>
706+ <script src="../scripts/_popup.js?1610627322"></script>
707+ <script src="../scripts/_classic-popup.js?1610627322"></script>
708708
709709 </body>
710710</html>
octopod-css/production/markups/_action.html+7−7
@@ -6,7 +6,7 @@
66 <title>.action</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111 <body>
1212
@@ -98,12 +98,12 @@
9898 <script src="../vendors/outline/outline.js"></script>
9999
100100 <!-- Temp -->
101− <script src="../scripts/_expander.js?1606142431"></script>
102− <script src="../scripts/_drop.js?1606142431"></script>
103− <script src="../scripts/_sort.js?1606142431"></script>
104− <script src="../scripts/_data.js?1606142431"></script>
105− <script src="../scripts/_popup.js?1606142431"></script>
106− <script src="../scripts/_classic-popup.js?1606142431"></script>
101+ <script src="../scripts/_expander.js?1610627322"></script>
102+ <script src="../scripts/_drop.js?1610627322"></script>
103+ <script src="../scripts/_sort.js?1610627322"></script>
104+ <script src="../scripts/_data.js?1610627322"></script>
105+ <script src="../scripts/_popup.js?1610627322"></script>
106+ <script src="../scripts/_classic-popup.js?1610627322"></script>
107107
108108 </body>
109109</html>
octopod-css/production/markups/_bar.html+7−7
@@ -6,7 +6,7 @@
66 <title>.bar</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111 <body>
1212
@@ -47,12 +47,12 @@
4747 <script src="../vendors/outline/outline.js"></script>
4848
4949 <!-- Temp -->
50− <script src="../scripts/_expander.js?1606142431"></script>
51− <script src="../scripts/_drop.js?1606142431"></script>
52− <script src="../scripts/_sort.js?1606142431"></script>
53− <script src="../scripts/_data.js?1606142431"></script>
54− <script src="../scripts/_popup.js?1606142431"></script>
55− <script src="../scripts/_classic-popup.js?1606142431"></script>
50+ <script src="../scripts/_expander.js?1610627322"></script>
51+ <script src="../scripts/_drop.js?1610627322"></script>
52+ <script src="../scripts/_sort.js?1610627322"></script>
53+ <script src="../scripts/_data.js?1610627322"></script>
54+ <script src="../scripts/_popup.js?1610627322"></script>
55+ <script src="../scripts/_classic-popup.js?1610627322"></script>
5656
5757 </body>
5858</html>
octopod-css/production/markups/_break.html+7−7
@@ -6,7 +6,7 @@
66 <title>.break</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111
1212 <body>
@@ -70,12 +70,12 @@
7070 <script src="../vendors/outline/outline.js"></script>
7171
7272 <!-- Temp -->
73− <script src="../scripts/_expander.js?1606142431"></script>
74− <script src="../scripts/_drop.js?1606142431"></script>
75− <script src="../scripts/_sort.js?1606142431"></script>
76− <script src="../scripts/_data.js?1606142431"></script>
77− <script src="../scripts/_popup.js?1606142431"></script>
78− <script src="../scripts/_classic-popup.js?1606142431"></script>
73+ <script src="../scripts/_expander.js?1610627322"></script>
74+ <script src="../scripts/_drop.js?1610627322"></script>
75+ <script src="../scripts/_sort.js?1610627322"></script>
76+ <script src="../scripts/_data.js?1610627322"></script>
77+ <script src="../scripts/_popup.js?1610627322"></script>
78+ <script src="../scripts/_classic-popup.js?1610627322"></script>
7979
8080
8181 </body>
octopod-css/production/markups/_button.html+7−7
@@ -6,7 +6,7 @@
66 <title>.button</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111
1212 <body>
@@ -122,12 +122,12 @@
122122 <script src="../vendors/outline/outline.js"></script>
123123
124124 <!-- Temp -->
125− <script src="../scripts/_expander.js?1606142431"></script>
126− <script src="../scripts/_drop.js?1606142431"></script>
127− <script src="../scripts/_sort.js?1606142431"></script>
128− <script src="../scripts/_data.js?1606142431"></script>
129− <script src="../scripts/_popup.js?1606142431"></script>
130− <script src="../scripts/_classic-popup.js?1606142431"></script>
125+ <script src="../scripts/_expander.js?1610627322"></script>
126+ <script src="../scripts/_drop.js?1610627322"></script>
127+ <script src="../scripts/_sort.js?1610627322"></script>
128+ <script src="../scripts/_data.js?1610627322"></script>
129+ <script src="../scripts/_popup.js?1610627322"></script>
130+ <script src="../scripts/_classic-popup.js?1610627322"></script>
131131
132132
133133 </body>
octopod-css/production/markups/_dash.html+7−7
@@ -6,7 +6,7 @@
66 <title>.dash</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111
1212 <body>
@@ -115,12 +115,12 @@
115115 <script src="../vendors/outline/outline.js"></script>
116116
117117 <!-- Temp -->
118− <script src="../scripts/_expander.js?1606142431"></script>
119− <script src="../scripts/_drop.js?1606142431"></script>
120− <script src="../scripts/_sort.js?1606142431"></script>
121− <script src="../scripts/_data.js?1606142431"></script>
122− <script src="../scripts/_popup.js?1606142431"></script>
123− <script src="../scripts/_classic-popup.js?1606142431"></script>
118+ <script src="../scripts/_expander.js?1610627322"></script>
119+ <script src="../scripts/_drop.js?1610627322"></script>
120+ <script src="../scripts/_sort.js?1610627322"></script>
121+ <script src="../scripts/_data.js?1610627322"></script>
122+ <script src="../scripts/_popup.js?1610627322"></script>
123+ <script src="../scripts/_classic-popup.js?1610627322"></script>
124124
125125
126126 </body>
octopod-css/production/markups/_drop.html+7−7
@@ -6,7 +6,7 @@
66 <title>.drop</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111 <body>
1212
@@ -98,12 +98,12 @@
9898 <script src="../vendors/outline/outline.js"></script>
9999
100100 <!-- Temp -->
101− <script src="../scripts/_expander.js?1606142431"></script>
102− <script src="../scripts/_drop.js?1606142431"></script>
103− <script src="../scripts/_sort.js?1606142431"></script>
104− <script src="../scripts/_data.js?1606142431"></script>
105− <script src="../scripts/_popup.js?1606142431"></script>
106− <script src="../scripts/_classic-popup.js?1606142431"></script>
101+ <script src="../scripts/_expander.js?1610627322"></script>
102+ <script src="../scripts/_drop.js?1610627322"></script>
103+ <script src="../scripts/_sort.js?1610627322"></script>
104+ <script src="../scripts/_data.js?1610627322"></script>
105+ <script src="../scripts/_popup.js?1610627322"></script>
106+ <script src="../scripts/_classic-popup.js?1610627322"></script>
107107
108108 </body>
109109</html>
octopod-css/production/markups/_expander.html+7−7
@@ -6,7 +6,7 @@
66 <title>.expander</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111 <body>
1212
@@ -82,12 +82,12 @@
8282 <script src="../vendors/outline/outline.js"></script>
8383
8484 <!-- Temp -->
85− <script src="../scripts/_expander.js?1606142431"></script>
86− <script src="../scripts/_drop.js?1606142431"></script>
87− <script src="../scripts/_sort.js?1606142431"></script>
88− <script src="../scripts/_data.js?1606142431"></script>
89− <script src="../scripts/_popup.js?1606142431"></script>
90− <script src="../scripts/_classic-popup.js?1606142431"></script>
85+ <script src="../scripts/_expander.js?1610627322"></script>
86+ <script src="../scripts/_drop.js?1610627322"></script>
87+ <script src="../scripts/_sort.js?1610627322"></script>
88+ <script src="../scripts/_data.js?1610627322"></script>
89+ <script src="../scripts/_popup.js?1610627322"></script>
90+ <script src="../scripts/_classic-popup.js?1610627322"></script>
9191
9292 </body>
9393</html>
octopod-css/production/markups/_external.html+7−7
@@ -6,7 +6,7 @@
66 <title>.external</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111 <body>
1212
@@ -47,12 +47,12 @@
4747 <script src="../vendors/outline/outline.js"></script>
4848
4949 <!-- Temp -->
50− <script src="../scripts/_expander.js?1606142431"></script>
51− <script src="../scripts/_drop.js?1606142431"></script>
52− <script src="../scripts/_sort.js?1606142431"></script>
53− <script src="../scripts/_data.js?1606142431"></script>
54− <script src="../scripts/_popup.js?1606142431"></script>
55− <script src="../scripts/_classic-popup.js?1606142431"></script>
50+ <script src="../scripts/_expander.js?1610627322"></script>
51+ <script src="../scripts/_drop.js?1610627322"></script>
52+ <script src="../scripts/_sort.js?1610627322"></script>
53+ <script src="../scripts/_data.js?1610627322"></script>
54+ <script src="../scripts/_popup.js?1610627322"></script>
55+ <script src="../scripts/_classic-popup.js?1610627322"></script>
5656
5757 </body>
5858</html>
octopod-css/production/markups/_input.html+7−7
@@ -6,7 +6,7 @@
66 <title>.input</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111
1212 <body>
@@ -96,12 +96,12 @@
9696 <script src="../vendors/outline/outline.js"></script>
9797
9898 <!-- Temp -->
99− <script src="../scripts/_expander.js?1606142431"></script>
100− <script src="../scripts/_drop.js?1606142431"></script>
101− <script src="../scripts/_sort.js?1606142431"></script>
102− <script src="../scripts/_data.js?1606142431"></script>
103− <script src="../scripts/_popup.js?1606142431"></script>
104− <script src="../scripts/_classic-popup.js?1606142431"></script>
99+ <script src="../scripts/_expander.js?1610627322"></script>
100+ <script src="../scripts/_drop.js?1610627322"></script>
101+ <script src="../scripts/_sort.js?1610627322"></script>
102+ <script src="../scripts/_data.js?1610627322"></script>
103+ <script src="../scripts/_popup.js?1610627322"></script>
104+ <script src="../scripts/_classic-popup.js?1610627322"></script>
105105
106106
107107 </body>
octopod-css/production/markups/_listing.html+7−7
@@ -6,7 +6,7 @@
66 <title>.listing</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111 <body>
1212
@@ -86,12 +86,12 @@
8686 <script src="../vendors/outline/outline.js"></script>
8787
8888 <!-- Temp -->
89− <script src="../scripts/_expander.js?1606142431"></script>
90− <script src="../scripts/_drop.js?1606142431"></script>
91− <script src="../scripts/_sort.js?1606142431"></script>
92− <script src="../scripts/_data.js?1606142431"></script>
93− <script src="../scripts/_popup.js?1606142431"></script>
94− <script src="../scripts/_classic-popup.js?1606142431"></script>
89+ <script src="../scripts/_expander.js?1610627322"></script>
90+ <script src="../scripts/_drop.js?1610627322"></script>
91+ <script src="../scripts/_sort.js?1610627322"></script>
92+ <script src="../scripts/_data.js?1610627322"></script>
93+ <script src="../scripts/_popup.js?1610627322"></script>
94+ <script src="../scripts/_classic-popup.js?1610627322"></script>
9595
9696 </body>
9797</html>
octopod-css/production/markups/_loading.html+7−7
@@ -6,7 +6,7 @@
66 <title>.loading</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111 <body>
1212
@@ -122,12 +122,12 @@
122122 <script src="../vendors/outline/outline.js"></script>
123123
124124 <!-- Temp -->
125− <script src="../scripts/_expander.js?1606142431"></script>
126− <script src="../scripts/_drop.js?1606142431"></script>
127− <script src="../scripts/_sort.js?1606142431"></script>
128− <script src="../scripts/_data.js?1606142431"></script>
129− <script src="../scripts/_popup.js?1606142431"></script>
130− <script src="../scripts/_classic-popup.js?1606142431"></script>
125+ <script src="../scripts/_expander.js?1610627322"></script>
126+ <script src="../scripts/_drop.js?1610627322"></script>
127+ <script src="../scripts/_sort.js?1610627322"></script>
128+ <script src="../scripts/_data.js?1610627322"></script>
129+ <script src="../scripts/_popup.js?1610627322"></script>
130+ <script src="../scripts/_classic-popup.js?1610627322"></script>
131131
132132 </body>
133133</html>
octopod-css/production/markups/_notification.html+7−7
@@ -6,7 +6,7 @@
66 <title>.notification</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111 <body>
1212
@@ -74,12 +74,12 @@
7474 <script src="../vendors/outline/outline.js"></script>
7575
7676 <!-- Temp -->
77− <script src="../scripts/_expander.js?1606142431"></script>
78− <script src="../scripts/_drop.js?1606142431"></script>
79− <script src="../scripts/_sort.js?1606142431"></script>
80− <script src="../scripts/_data.js?1606142431"></script>
81− <script src="../scripts/_popup.js?1606142431"></script>
82− <script src="../scripts/_classic-popup.js?1606142431"></script>
77+ <script src="../scripts/_expander.js?1610627322"></script>
78+ <script src="../scripts/_drop.js?1610627322"></script>
79+ <script src="../scripts/_sort.js?1610627322"></script>
80+ <script src="../scripts/_data.js?1610627322"></script>
81+ <script src="../scripts/_popup.js?1610627322"></script>
82+ <script src="../scripts/_classic-popup.js?1610627322"></script>
8383
8484 </body>
8585</html>
octopod-css/production/markups/_null.html+7−7
@@ -6,7 +6,7 @@
66 <title>.null</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111 <body>
1212
@@ -67,12 +67,12 @@
6767 <script src="../vendors/outline/outline.js"></script>
6868
6969 <!-- Temp -->
70− <script src="../scripts/_expander.js?1606142431"></script>
71− <script src="../scripts/_drop.js?1606142431"></script>
72− <script src="../scripts/_sort.js?1606142431"></script>
73− <script src="../scripts/_data.js?1606142431"></script>
74− <script src="../scripts/_popup.js?1606142431"></script>
75− <script src="../scripts/_classic-popup.js?1606142431"></script>
70+ <script src="../scripts/_expander.js?1610627322"></script>
71+ <script src="../scripts/_drop.js?1610627322"></script>
72+ <script src="../scripts/_sort.js?1610627322"></script>
73+ <script src="../scripts/_data.js?1610627322"></script>
74+ <script src="../scripts/_popup.js?1610627322"></script>
75+ <script src="../scripts/_classic-popup.js?1610627322"></script>
7676
7777 </body>
7878</html>
octopod-css/production/markups/_spot.html+7−7
@@ -6,7 +6,7 @@
66 <title>.spot</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111 <body>
1212
@@ -47,12 +47,12 @@
4747 <script src="../vendors/outline/outline.js"></script>
4848
4949 <!-- Temp -->
50− <script src="../scripts/_expander.js?1606142431"></script>
51− <script src="../scripts/_drop.js?1606142431"></script>
52− <script src="../scripts/_sort.js?1606142431"></script>
53− <script src="../scripts/_data.js?1606142431"></script>
54− <script src="../scripts/_popup.js?1606142431"></script>
55− <script src="../scripts/_classic-popup.js?1606142431"></script>
50+ <script src="../scripts/_expander.js?1610627322"></script>
51+ <script src="../scripts/_drop.js?1610627322"></script>
52+ <script src="../scripts/_sort.js?1610627322"></script>
53+ <script src="../scripts/_data.js?1610627322"></script>
54+ <script src="../scripts/_popup.js?1610627322"></script>
55+ <script src="../scripts/_classic-popup.js?1610627322"></script>
5656
5757 </body>
5858</html>
octopod-css/production/markups/_status.html+7−7
@@ -6,7 +6,7 @@
66 <title>.status</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111 <body>
1212
@@ -69,12 +69,12 @@
6969 <script src="../vendors/outline/outline.js"></script>
7070
7171 <!-- Temp -->
72− <script src="../scripts/_expander.js?1606142431"></script>
73− <script src="../scripts/_drop.js?1606142431"></script>
74− <script src="../scripts/_sort.js?1606142431"></script>
75− <script src="../scripts/_data.js?1606142431"></script>
76− <script src="../scripts/_popup.js?1606142431"></script>
77− <script src="../scripts/_classic-popup.js?1606142431"></script>
72+ <script src="../scripts/_expander.js?1610627322"></script>
73+ <script src="../scripts/_drop.js?1610627322"></script>
74+ <script src="../scripts/_sort.js?1610627322"></script>
75+ <script src="../scripts/_data.js?1610627322"></script>
76+ <script src="../scripts/_popup.js?1610627322"></script>
77+ <script src="../scripts/_classic-popup.js?1610627322"></script>
7878
7979 </body>
8080</html>
octopod-css/production/markups/_title.html+7−7
@@ -6,7 +6,7 @@
66 <title>.title</title>
77 <meta name="viewport" content="width=device-width, initial-scale=1">
88 <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
9− <link rel="stylesheet" href="../styles/style.css?1606142431">
9+ <link rel="stylesheet" href="../styles/style.css?1610627322">
1010 </head>
1111 <body>
1212
@@ -46,12 +46,12 @@
4646 <script src="../vendors/outline/outline.js"></script>
4747
4848 <!-- Temp -->
49− <script src="../scripts/_expander.js?1606142431"></script>
50− <script src="../scripts/_drop.js?1606142431"></script>
51− <script src="../scripts/_sort.js?1606142431"></script>
52− <script src="../scripts/_data.js?1606142431"></script>
53− <script src="../scripts/_popup.js?1606142431"></script>
54− <script src="../scripts/_classic-popup.js?1606142431"></script>
49+ <script src="../scripts/_expander.js?1610627322"></script>
50+ <script src="../scripts/_drop.js?1610627322"></script>
51+ <script src="../scripts/_sort.js?1610627322"></script>
52+ <script src="../scripts/_data.js?1610627322"></script>
53+ <script src="../scripts/_popup.js?1610627322"></script>
54+ <script src="../scripts/_classic-popup.js?1610627322"></script>
5555
5656 </body>
5757</html>
octopod-css/production/styles/style.css+1−1
@@ -1 +1 @@
1−html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}body{height:100%;background-color:#FFF;font-family:Roboto,sans-serif}.browserupgrade{background:#CCC;color:#000;padding:4px 10px}.button{display:inline-block;vertical-align:top;height:40px;padding:11px;border:1px solid transparent;background-color:#3671E3;border-radius:4px;font-family:inherit;font-weight:500;font-size:14px;line-height:16px;letter-spacing:.6px;color:#FFF;text-align:center;text-transform:uppercase;text-decoration:none;white-space:nowrap;cursor:pointer}.button:hover{background-color:#3A6CCC}.button:active{background-color:#3964B8}.button--disabled,.button--disabled:active,.button--disabled:hover{background-color:#99B7F3;cursor:default}.button--secondary{background-color:#FFF;border-color:#757575;color:#000}.button--secondary:hover{background-color:#EEE}.button--secondary:active{background-color:#E2E2E2}.button--secondary.button--disabled,.button--secondary.button--disabled:active,.button--secondary.button--disabled:hover{background-color:transparent;opacity:.5;cursor:default}.button--add{padding-left:40px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDEzSDEzVjE5SDExVjEzSDVWMTFIMTFWNUgxM1YxMUgxOVYxM1oiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=);background-size:24px 24px;background-position:11px center;background-repeat:no-repeat}.button--edit{padding-left:40px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMgMTcuMjUwNVYyMS4wMDA1SDYuNzVMMTcuODEgOS45NDA1NUwxNC4wNiA2LjE5MDU1TDMgMTcuMjUwNVpNMjAuNzEgNy4wNDA1NUMyMS4xIDYuNjUwNTUgMjEuMSA2LjAyMDU1IDIwLjcxIDUuNjMwNTVMMTguMzcgMy4yOTA1NUMxNy45OCAyLjkwMDU1IDE3LjM1IDIuOTAwNTUgMTYuOTYgMy4yOTA1NUwxNS4xMyA1LjEyMDU1TDE4Ljg4IDguODcwNTVMMjAuNzEgNy4wNDA1NVoiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=);background-size:24px 24px;background-position:11px center;background-repeat:no-repeat}.button--archive{padding-left:40px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwLjU0IDUuMjNMMTkuMTUgMy41NUMxOC44OCAzLjIxIDE4LjQ3IDMgMTggM0g2QzUuNTMgMyA1LjEyIDMuMjEgNC44NCAzLjU1TDMuNDYgNS4yM0MzLjE3IDUuNTcgMyA2LjAyIDMgNi41VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNi41QzIxIDYuMDIgMjAuODMgNS41NyAyMC41NCA1LjIzWk0xMiAxNy41TDYuNSAxMkgxMFYxMEgxNFYxMkgxNy41TDEyIDE3LjVaTTUuMTIgNUw1LjkzIDRIMTcuOTNMMTguODcgNUg1LjEyWiIgZmlsbD0iIzc1NzU3NSIvPgo8L3N2Zz4K);background-size:24px 24px;background-position:11px center;background-repeat:no-repeat}.button--restore{padding-left:40px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwLjU1IDUuMjJMMTkuMTYgMy41NEMxOC44OCAzLjIxIDE4LjQ3IDMgMTggM0g2QzUuNTMgMyA1LjEyIDMuMjEgNC44NSAzLjU1TDMuNDYgNS4yMkMzLjE3IDUuNTcgMyA2LjAxIDMgNi41VjE5QzMgMjAuMSAzLjg5IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjYuNUMyMSA2LjAxIDIwLjgzIDUuNTcgMjAuNTUgNS4yMlpNMTIgOS41TDE3LjUgMTVIMTRWMTdIMTBWMTVINi41TDEyIDkuNVpNNS4xMiA1TDUuOTQgNEgxNy45NEwxOC44NyA1SDUuMTJaIiBmaWxsPSIjNzU3NTc1Ii8+Cjwvc3ZnPgo=);background-size:24px 24px;background-position:11px center;background-repeat:no-repeat}.button--save{padding-left:40px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTguOTk5OTcgMTYuMTY5OEw0LjgyOTk3IDExLjk5OThMMy40MDk5NyAxMy40MDk4TDguOTk5OTcgMTguOTk5OEwyMSA2Ljk5OTg0TDE5LjU5IDUuNTg5ODRMOC45OTk5NyAxNi4xNjk4WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==);background-size:24px 24px;background-position:11px center;background-repeat:no-repeat}*{box-sizing:border-box}:before{box-sizing:border-box}:after{box-sizing:border-box}.visuallyhidden{border:0;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;-webkit-clip-path:none;clip-path:none;height:auto;margin:0;overflow:visible;position:static;width:auto;white-space:inherit}.container{padding-left:24px;padding-right:24px}.header{padding-top:24px;padding-bottom:24px;background-color:#3671E3;box-shadow:0 2px 2px rgba(0, 0, 0, 0.24),0 0 2px rgba(0, 0, 0, 0.12);color:#FFF}.header__wrap{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.header__logo{margin-top:0;margin-bottom:0;border-right:1px solid #709AEE;padding-right:15px;font-weight:700;font-size:20px;line-height:24px;letter-spacing:.85px;text-transform:uppercase}.header__project{margin-left:-1px;border-left:1px solid #709AEE;padding-left:16px;font-weight:500;font-size:16px;line-height:24px}.status{background-size:16px 16px;background-repeat:no-repeat;background-position:left center;padding-left:21px;font-weight:700;font-size:12px;line-height:16px;letter-spacing:.4px;text-transform:uppercase}.status--success{color:#0F7F12;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTcuOTk5OTIgMS4zMzMwMUM0LjMxOTkyIDEuMzMzMDEgMS4zMzMyNSA0LjMxOTY3IDEuMzMzMjUgNy45OTk2OEMxLjMzMzI1IDExLjY3OTcgNC4zMTk5MiAxNC42NjYzIDcuOTk5OTIgMTQuNjY2M0MxMS42Nzk5IDE0LjY2NjMgMTQuNjY2NiAxMS42Nzk3IDE0LjY2NjYgNy45OTk2OEMxNC42NjY2IDQuMzE5NjcgMTEuNjc5OSAxLjMzMzAxIDcuOTk5OTIgMS4zMzMwMVpNNi42NjY1OSAxMS4zMzNMMy4zMzMyNSA3Ljk5OTY4TDQuMjczMjUgNy4wNTk2OEw2LjY2NjU5IDkuNDQ2MzRMMTEuNzI2NiA0LjM4NjM0TDEyLjY2NjYgNS4zMzMwMUw2LjY2NjU5IDExLjMzM1oiIGZpbGw9IiMwRjdGMTIiLz4KPC9zdmc+Cg==)}.status--pending{color:#3671E3;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEwLjgyNjYgNS4xNzMwMUMxMC4wNDY2IDQuMzkzMDEgOS4wMjY1OSAzLjk5OTY3IDcuOTk5OTIgMy45OTk2N1Y3Ljk5OTY4TDUuMTczMjUgMTAuODI2M0M2LjczMzI1IDEyLjM4NjMgOS4yNjY1OSAxMi4zODYzIDEwLjgzMzMgMTAuODI2M0MxMi4zOTMzIDkuMjY2MzQgMTIuMzkzMyA2LjczMzAxIDEwLjgyNjYgNS4xNzMwMVpNNy45OTk5MiAxLjMzMzAxQzQuMzE5OTIgMS4zMzMwMSAxLjMzMzI1IDQuMzE5NjcgMS4zMzMyNSA3Ljk5OTY4QzEuMzMzMjUgMTEuNjc5NyA0LjMxOTkyIDE0LjY2NjMgNy45OTk5MiAxNC42NjYzQzExLjY3OTkgMTQuNjY2MyAxNC42NjY2IDExLjY3OTcgMTQuNjY2NiA3Ljk5OTY4QzE0LjY2NjYgNC4zMTk2NyAxMS42Nzk5IDEuMzMzMDEgNy45OTk5MiAxLjMzMzAxWk03Ljk5OTkyIDEzLjMzM0M1LjA1MzI1IDEzLjMzMyAyLjY2NjU5IDEwLjk0NjMgMi42NjY1OSA3Ljk5OTY4QzIuNjY2NTkgNS4wNTMwMSA1LjA1MzI1IDIuNjY2MzQgNy45OTk5MiAyLjY2NjM0QzEwLjk0NjYgMi42NjYzNCAxMy4zMzMzIDUuMDUzMDEgMTMuMzMzMyA3Ljk5OTY4QzEzLjMzMzMgMTAuOTQ2MyAxMC45NDY2IDEzLjMzMyA3Ljk5OTkyIDEzLjMzM1oiIGZpbGw9IiMzNjcxRTMiLz4KPC9zdmc+Cg==)}.status--failure{color:#FC5830;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuNjY2NzQ4IDEzLjk5OTdIMTUuMzMzNEw4LjAwMDA4IDEuMzMzMDFMMC42NjY3NDggMTMuOTk5N1pNOC42NjY3NSAxMS45OTk3SDcuMzMzNDFWMTAuNjY2M0g4LjY2Njc1VjExLjk5OTdaTTguNjY2NzUgOS4zMzMwMUg3LjMzMzQxVjYuNjY2MzRIOC42NjY3NVY5LjMzMzAxWiIgZmlsbD0iI0ZDNTgzMCIvPgo8L3N2Zz4K)}.status--archived{color:#D42A2A;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjY5MzMgMy40ODY2N0wxMi43NjY3IDIuMzY2NjdDMTIuNTg2NyAyLjE0IDEyLjMxMzMgMiAxMiAySDRDMy42ODY2NyAyIDMuNDEzMzMgMi4xNCAzLjIyNjY3IDIuMzY2NjdMMi4zMDY2NyAzLjQ4NjY3QzIuMTEzMzMgMy43MTMzMyAyIDQuMDEzMzMgMiA0LjMzMzMzVjEyLjY2NjdDMiAxMy40IDIuNiAxNCAzLjMzMzMzIDE0SDEyLjY2NjdDMTMuNCAxNCAxNCAxMy40IDE0IDEyLjY2NjdWNC4zMzMzM0MxNCA0LjAxMzMzIDEzLjg4NjcgMy43MTMzMyAxMy42OTMzIDMuNDg2NjdaTTggMTEuNjY2N0w0LjMzMzMzIDhINi42NjY2N1Y2LjY2NjY3SDkuMzMzMzNWOEgxMS42NjY3TDggMTEuNjY2N1pNMy40MTMzMyAzLjMzMzMzTDMuOTUzMzMgMi42NjY2N0gxMS45NTMzTDEyLjU4IDMuMzMzMzNIMy40MTMzM1oiIGZpbGw9IiNENDJBMkEiLz4KPC9zdmc+Cg==)}.bar{display:inline-block;vertical-align:top;padding:4px 6px;background-color:#EEE;border-radius:4px;font-size:12px;line-height:16px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar b{font-weight:500}.bar--larger{padding:4px 8px;font-size:16px;line-height:24px}.external{padding-right:24px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTkuMTQyODEgOS4xNDM0MkgyLjg1NzA5VjIuODU3N0g1LjE0MjgxVjEuNzE0ODRIMi44NTcwOUMyLjIyMjgxIDEuNzE0ODQgMS43MTQyMyAyLjIyOTEzIDEuNzE0MjMgMi44NTc3VjkuMTQzNDJDMS43MTQyMyA5Ljc3MTk5IDIuMjIyODEgMTAuMjg2MyAyLjg1NzA5IDEwLjI4NjNIOS4xNDI4MUM5Ljc3MTM4IDEwLjI4NjMgMTAuMjg1NyA5Ljc3MTk5IDEwLjI4NTcgOS4xNDM0MlY2Ljg1NzdIOS4xNDI4MVY5LjE0MzQyWk02LjI4NTY2IDEuNzE0ODRWMi44NTc3SDguMzM3MDlMNC40MzQyMyA2Ljc2MDU2TDUuMjM5OTUgNy41NjYyN0w5LjE0MjgxIDMuNjYzNDJWNS43MTQ4NEgxMC4yODU3VjEuNzE0ODRINi4yODU2NloiIGZpbGw9IiMyMTIxMjEiLz4KPC9zdmc+Cg==);background-size:12px 12px;background-repeat:no-repeat;background-position:right 6px center;color:inherit;text-decoration:none;cursor:pointer}.external:hover{color:#3671E3;background-color:#E2E2E2;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTkuMTQyODEgOS4xNDM0MkgyLjg1NzA5VjIuODU3N0g1LjE0MjgxVjEuNzE0ODRIMi44NTcwOUMyLjIyMjgxIDEuNzE0ODQgMS43MTQyMyAyLjIyOTEzIDEuNzE0MjMgMi44NTc3VjkuMTQzNDJDMS43MTQyMyA5Ljc3MTk5IDIuMjIyODEgMTAuMjg2MyAyLjg1NzA5IDEwLjI4NjNIOS4xNDI4MUM5Ljc3MTM4IDEwLjI4NjMgMTAuMjg1NyA5Ljc3MTk5IDEwLjI4NTcgOS4xNDM0MlY2Ljg1NzdIOS4xNDI4MVY5LjE0MzQyWk02LjI4NTY2IDEuNzE0ODRWMi44NTc3SDguMzM3MDlMNC40MzQyMyA2Ljc2MDU2TDUuMjM5OTUgNy41NjYyN0w5LjE0MjgxIDMuNjYzNDJWNS43MTQ4NEgxMC4yODU3VjEuNzE0ODRINi4yODU2NloiIGZpbGw9IiMzNjcxRTMgICIvPgo8L3N2Zz4K)}.external:active{color:#3671E3;background-color:#D6D6D6;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTkuMTQyODEgOS4xNDM0MkgyLjg1NzA5VjIuODU3N0g1LjE0MjgxVjEuNzE0ODRIMi44NTcwOUMyLjIyMjgxIDEuNzE0ODQgMS43MTQyMyAyLjIyOTEzIDEuNzE0MjMgMi44NTc3VjkuMTQzNDJDMS43MTQyMyA5Ljc3MTk5IDIuMjIyODEgMTAuMjg2MyAyLjg1NzA5IDEwLjI4NjNIOS4xNDI4MUM5Ljc3MTM4IDEwLjI4NjMgMTAuMjg1NyA5Ljc3MTk5IDEwLjI4NTcgOS4xNDM0MlY2Ljg1NzdIOS4xNDI4MVY5LjE0MzQyWk02LjI4NTY2IDEuNzE0ODRWMi44NTc3SDguMzM3MDlMNC40MzQyMyA2Ljc2MDU2TDUuMjM5OTUgNy41NjYyN0w5LjE0MjgxIDMuNjYzNDJWNS43MTQ4NEgxMC4yODU3VjEuNzE0ODRINi4yODU2NloiIGZpbGw9IiMzNjcxRTMgICIvPgo8L3N2Zz4K)}.external.bar--larger{background-position:right 8px center}.expander{position:relative;border:none;background-color:transparent;padding:0 17px 0 0;font-family:inherit;font-weight:500;font-size:12px;line-height:16px;color:#3671E3;text-decoration:none;cursor:pointer}.expander:before{content:"";position:absolute;left:-4px;right:-4px;top:-10px;bottom:-10px;display:block}.expander:after{position:absolute;right:0;top:0;content:"";display:block;width:16px;height:16px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuOTQgNS43MjY1Nkw4IDguNzc5OUwxMS4wNiA1LjcyNjU2TDEyIDYuNjY2NTZMOCAxMC42NjY2TDQgNi42NjY1Nkw0Ljk0IDUuNzI2NTZaIiBmaWxsPSIjMzY3MUUzIi8+Cjwvc3ZnPgo=);background-repeat:no-repeat;background-position:center center}.expander:hover{color:#3A6CCC}.expander:active{color:#3964B8}.expander--open:after{-ms-transform:scaleY(-1);transform:scaleY(-1)}.expander--stand-alone{padding:9px 24px 9px 0;background-color:transparent;font-family:inherit;font-size:14px;line-height:16px;color:#3671E3;text-transform:uppercase;letter-spacing:.6px}.expander--stand-alone:after{right:0;top:7px;width:20px;height:20px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTYuMTc1IDcuMTU4MkwxMCAxMC45NzQ5TDEzLjgyNSA3LjE1ODJMMTUgOC4zMzMyTDEwIDEzLjMzMzJMNSA4LjMzMzJMNi4xNzUgNy4xNTgyWiIgZmlsbD0iIzM2NzFFMyIvPgo8L3N2Zz4K);background-size:contain}.expander--stand-alone:hover{background-color:transparent;color:#3A6CCC}.expander--stand-alone:hover:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTYuMTc1IDcuMTU4MkwxMCAxMC45NzQ5TDEzLjgyNSA3LjE1ODJMMTUgOC4zMzMyTDEwIDEzLjMzMzJMNSA4LjMzMzJMNi4xNzUgNy4xNTgyWiIgZmlsbD0iIzNBNkNDQyIvPgo8L3N2Zz4K)}.expander--stand-alone:active{background-color:transparent;color:#3964B8}.expander--stand-alone:active:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTYuMTc1IDcuMTU4MkwxMCAxMC45NzQ5TDEzLjgyNSA3LjE1ODJMMTUgOC4zMzMyTDEwIDEzLjMzMzJMNSA4LjMzMzJMNi4xNzUgNy4xNTgyWiIgZmlsbD0iIzM5NjRCOCIvPgo8L3N2Zz4K)}.action{display:inline-block;vertical-align:top;width:100%;border:none;padding:16px 32px 16px 16px;background-color:transparent;background-repeat:no-repeat;background-position:16px center;font-family:inherit;font-size:14px;line-height:16px;color:#000;white-space:nowrap;text-align:left;text-decoration:none;cursor:pointer}.action:not(.action--disabled):hover{background-color:#EEEEEE}.action:not(.action--disabled):active{background-color:#D6D6D6}.action--archive{padding-left:50px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwLjU0IDUuMjNMMTkuMTUgMy41NUMxOC44OCAzLjIxIDE4LjQ3IDMgMTggM0g2QzUuNTMgMyA1LjEyIDMuMjEgNC44NCAzLjU1TDMuNDYgNS4yM0MzLjE3IDUuNTcgMyA2LjAyIDMgNi41VjE5QzMgMjAuMSAzLjkgMjEgNSAyMUgxOUMyMC4xIDIxIDIxIDIwLjEgMjEgMTlWNi41QzIxIDYuMDIgMjAuODMgNS41NyAyMC41NCA1LjIzWk0xMiAxNy41TDYuNSAxMkgxMFYxMEgxNFYxMkgxNy41TDEyIDE3LjVaTTUuMTIgNUw1LjkzIDRIMTcuOTNMMTguODcgNUg1LjEyWiIgZmlsbD0iIzc1NzU3NSIvPgo8L3N2Zz4K)}.action--edit{padding-left:50px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMgMTcuMjQ5NlYyMC45OTk2SDYuNzVMMTcuODEgOS45Mzk1N0wxNC4wNiA2LjE4OTU3TDMgMTcuMjQ5NlpNMjAuNzEgNy4wMzk1N0MyMS4xIDYuNjQ5NTcgMjEuMSA2LjAxOTU3IDIwLjcxIDUuNjI5NTdMMTguMzcgMy4yODk1N0MxNy45OCAyLjg5OTU3IDE3LjM1IDIuODk5NTcgMTYuOTYgMy4yODk1N0wxNS4xMyA1LjExOTU3TDE4Ljg4IDguODY5NTdMMjAuNzEgNy4wMzk1N1oiIGZpbGw9IiM3NTc1NzUiLz4KPC9zdmc+Cg==)}.action--restore{padding-left:50px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIwLjU1IDUuMjJMMTkuMTYgMy41NEMxOC44OCAzLjIxIDE4LjQ3IDMgMTggM0g2QzUuNTMgMyA1LjEyIDMuMjEgNC44NSAzLjU1TDMuNDYgNS4yMkMzLjE3IDUuNTcgMyA2LjAxIDMgNi41VjE5QzMgMjAuMSAzLjg5IDIxIDUgMjFIMTlDMjAuMSAyMSAyMSAyMC4xIDIxIDE5VjYuNUMyMSA2LjAxIDIwLjgzIDUuNTcgMjAuNTUgNS4yMlpNMTIgOS41TDE3LjUgMTVIMTRWMTdIMTBWMTVINi41TDEyIDkuNVpNNS4xMiA1TDUuOTQgNEgxNy45NEwxOC44NyA1SDUuMTJaIiBmaWxsPSIjNzU3NTc1Ii8+Cjwvc3ZnPgo=)}.action--logs{padding-left:50px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE0IDE3SDRWMTlIMTRWMTdaTTIwIDlINFYxMUgyMFY5Wk00IDE1SDIwVjEzSDRWMTVaTTQgNVY3SDIwVjVINFoiIGZpbGw9IiM3NTc1NzUiLz4KPC9zdmc+Cg==)}.action--disabled{opacity:.5;cursor:default}.drop{position:relative;display:inline-block;vertical-align:top}.drop__handler{border:none;padding:0;background-color:transparent;cursor:pointer}.drop__dropdown{position:absolute;z-index:500;right:0;top:100%;min-width:100%;opacity:0;visibility:hidden;transition:opacity 0.1s cubic-bezier(0.075, 0.82, 0.165, 1),visibility 0.1s cubic-bezier(0.075, 0.82, 0.165, 1)}.drop--expanded .drop__dropdown{opacity:1;visibility:visible}.drop--actions .drop__handler{width:40px;height:40px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyIDhDMTMuMSA4IDE0IDcuMSAxNCA2QzE0IDQuOSAxMy4xIDQgMTIgNEMxMC45IDQgMTAgNC45IDEwIDZDMTAgNy4xIDEwLjkgOCAxMiA4Wk0xMiAxMEMxMC45IDEwIDEwIDEwLjkgMTAgMTJDMTAgMTMuMSAxMC45IDE0IDEyIDE0QzEzLjEgMTQgMTQgMTMuMSAxNCAxMkMxNCAxMC45IDEzLjEgMTAgMTIgMTBaTTEyIDE2QzEwLjkgMTYgMTAgMTYuOSAxMCAxOEMxMCAxOS4xIDEwLjkgMjAgMTIgMjBDMTMuMSAyMCAxNCAxOS4xIDE0IDE4QzE0IDE2LjkgMTMuMSAxNiAxMiAxNloiIGZpbGw9IiM3NTc1NzUiLz4KPC9zdmc+Cg==);background-size:24px 24px;background-repeat:no-repeat;background-position:center center;text-indent:200%;white-space:nowrap;overflow:hidden}.drop--actions .drop__handler:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyIDhDMTMuMSA4IDE0IDcuMSAxNCA2QzE0IDQuOSAxMy4xIDQgMTIgNEMxMC45IDQgMTAgNC45IDEwIDZDMTAgNy4xIDEwLjkgOCAxMiA4Wk0xMiAxMEMxMC45IDEwIDEwIDEwLjkgMTAgMTJDMTAgMTMuMSAxMC45IDE0IDEyIDE0QzEzLjEgMTQgMTQgMTMuMSAxNCAxMkMxNCAxMC45IDEzLjEgMTAgMTIgMTBaTTEyIDE2QzEwLjkgMTYgMTAgMTYuOSAxMCAxOEMxMCAxOS4xIDEwLjkgMjAgMTIgMjBDMTMuMSAyMCAxNCAxOS4xIDE0IDE4QzE0IDE2LjkgMTMuMSAxNiAxMiAxNloiIGZpbGw9IiM0QzRDNEMiLz4KPC9zdmc+Cg==)}.drop--actions .drop__handler:active,.drop--actions.drop--expanded .drop__handler{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyIDhDMTMuMSA4IDE0IDcuMSAxNCA2QzE0IDQuOSAxMy4xIDQgMTIgNEMxMC45IDQgMTAgNC45IDEwIDZDMTAgNy4xIDEwLjkgOCAxMiA4Wk0xMiAxMEMxMC45IDEwIDEwIDEwLjkgMTAgMTJDMTAgMTMuMSAxMC45IDE0IDEyIDE0QzEzLjEgMTQgMTQgMTMuMSAxNCAxMkMxNCAxMC45IDEzLjEgMTAgMTIgMTBaTTEyIDE2QzEwLjkgMTYgMTAgMTYuOSAxMCAxOEMxMCAxOS4xIDEwLjkgMjAgMTIgMjBDMTMuMSAyMCAxNCAxOS4xIDE0IDE4QzE0IDE2LjkgMTMuMSAxNiAxMiAxNloiIGZpbGw9IiMyMTIxMjEiLz4KPC9zdmc+Cg==)}.drop--actions .drop__dropdown{margin-top:8px;margin-right:-17px;padding-top:8px;padding-bottom:8px;background-color:#FFF;box-shadow:0 2px 2px rgba(0, 0, 0, 0.24),0 0 2px rgba(0, 0, 0, 0.12);border-radius:2px}.input{position:relative}.input__widget{width:100%;height:40px;vertical-align:top;padding:8px 0;background-color:transparent;border:none;outline:0;box-shadow:inset 0 -1px #B0B0B0;background-clip:padding-box;border-radius:0;font-family:inherit;font-size:16px;line-height:24px;color:#000000;color:rgba(0,0,0,.87)}.input__widget:hover{box-shadow:inset 0 -1px #326EE6}.input__widget:focus{box-shadow:inset 0 -2px #326EE6}.input__widget::-webkit-input-placeholder{font-style:normal;color:#757575}.input__widget::-moz-placeholder{font-style:normal;color:#757575;opacity:1}.input__widget:-ms-input-placeholder{font-style:normal;color:#757575}.input__widget:hover::-webkit-input-placeholder{color:#B1B1B1}.input__widget:hover::-moz-placeholder{color:#B1B1B1}.input__widget:hover:-ms-input-placeholder{color:#B1B1B1}.input__widget:focus::-webkit-input-placeholder{color:#B1B1B1}.input__widget:focus::-moz-placeholder{color:#B1B1B1}.input__widget:focus:-ms-input-placeholder{color:#B1B1B1}.input--has-clear-type .input__widget{padding-right:30px}.input--has-clear-type .input__widget::-ms-clear{display:none}.input__clear-type{position:absolute;right:-8px;top:0}.input--search .input__widget{padding-left:32px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE1LjUgMTRIMTQuNzFMMTQuNDMgMTMuNzNDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41QzE2IDUuOTEgMTMuMDkgMyA5LjUgM0M1LjkxIDMgMyA1LjkxIDMgOS41QzMgMTMuMDkgNS45MSAxNiA5LjUgMTZDMTEuMTEgMTYgMTIuNTkgMTUuNDEgMTMuNzMgMTQuNDNMMTQgMTQuNzFWMTUuNUwxOSAyMC40OUwyMC40OSAxOUwxNS41IDE0Wk05LjUgMTRDNy4wMSAxNCA1IDExLjk5IDUgOS41QzUgNy4wMSA3LjAxIDUgOS41IDVDMTEuOTkgNSAxNCA3LjAxIDE0IDkuNUMxNCAxMS45OSAxMS45OSAxNCA5LjUgMTRaIiBmaWxsPSIjNzU3NTc1Ii8+Cjwvc3ZnPgo=);background-size:24px 24px;background-repeat:no-repeat;background-position:left center}.input--error .input__widget{box-shadow:inset 0 -2px #D42A2A}.input__output{margin-top:7px;font-size:12px;line-height:16px;color:#D42A2A}.input__output+.input__output{margin-top:3px}.spot{display:inline-block;vertical-align:top;border:none;background-color:transparent;background-repeat:no-repeat;background-position:center center;background-size:24px 24px;padding:0;width:40px;height:40px;cursor:pointer;text-indent:200%;white-space:nowrap;overflow:hidden;opacity:.5}.spot--cancel{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTExLjk5OTggMkM2LjQ2OTgyIDIgMS45OTk4MiA2LjQ3IDEuOTk5ODIgMTJDMS45OTk4MiAxNy41MyA2LjQ2OTgyIDIyIDExLjk5OTggMjJDMTcuNTI5OCAyMiAyMS45OTk4IDE3LjUzIDIxLjk5OTggMTJDMjEuOTk5OCA2LjQ3IDE3LjUyOTggMiAxMS45OTk4IDJaTTE2Ljk5OTggMTUuNTlMMTUuNTg5OCAxN0wxMS45OTk4IDEzLjQxTDguNDA5ODIgMTdMNi45OTk4MiAxNS41OUwxMC41ODk4IDEyTDYuOTk5ODIgOC40MUw4LjQwOTgyIDdMMTEuOTk5OCAxMC41OUwxNS41ODk4IDdMMTYuOTk5OCA4LjQxTDEzLjQwOTggMTJMMTYuOTk5OCAxNS41OVoiIGZpbGw9IiM3NTc1NzUiLz4KPC9zdmc+Cg==)}.spot--cancel:hover{opacity:1}.title{font-weight:inherit;font-size:28px;line-height:32px}.page{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;height:calc(100% - 72px);padding-top:24px}.page__wrap{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:100%}.page__output{-ms-flex-negative:0;flex-shrink:0;margin-bottom:24px}.page__back{-ms-flex-item-align:start;align-self:flex-start;margin-top:-8px;margin-bottom:-8px}.page__head{-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;margin-bottom:16px}.page__heading{margin-top:5px;margin-bottom:0}.page__note{margin-left:15px;margin-top:17px;font-size:14px;line-height:16px;color:#757575}.page__action{margin-left:auto}.page__action+.page__action{margin-left:8px}.page__action:first-child{margin-left:0}.page__action--search{margin-right:8px}.page__search{margin-left:auto;width:240px}.page__add-deployment{margin-left:16px}.page__body{-ms-flex-positive:1;flex-grow:1;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-bottom:24px}.table{background-color:#FFF;border:1px solid #E0E0E0;border-radius:4px}.table table{width:100%;vertical-align:top;border-collapse:collapse;table-layout:fixed;font-size:14px;line-height:20px;color:#000000;color:rgba(0,0,0,.87)}.table thead tr{background-color:#EEE}.table tbody tr{border-top:1px solid #E0E0E0}.table th{vertical-align:middle;height:48px;padding:16px 12px;font-weight:500;font-size:14px;line-height:16px;color:#000;text-align:left;overflow:hidden;text-overflow:ellipsis}.table td{vertical-align:top;padding:16px 12px}.table tr:first-child th:first-child{border-top-left-radius:3px}.table tr:first-child th:last-child{border-top-right-radius:3px}.table tr:last-child td:first-child{border-bottom-left-radius:3px}.table tr:last-child td:last-child{border-bottom-right-radius:3px}.table--clickable tbody tr{cursor:default}.table--clickable tbody tr:hover{background-color:#F8F8F8}.table--double-click tbody tr{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.table--deployments th:nth-child(1){width:16.1818%}.table--deployments th:nth-child(2){width:16.1818%}.table--deployments th:nth-child(3){width:8%}.table--deployments th:nth-child(4){width:20.3636%}.table--deployments th:nth-child(5){width:20.3636%}.table--deployments th:nth-child(6){width:9.4546%}.table--deployments th:nth-child(7){width:9.4546%}.table--deployments th:nth-child(8){width:52px}.table--deployments td:first-child,.table--deployments th:first-child{padding-left:16px}.table--deployments td:last-child,.table--deployments th:last-child{padding-right:16px}.table--deployments td:nth-child(1){font-weight:500;font-size:16px;line-height:24px}.table--deployments td:nth-child(1) .loading,.table--deployments td:nth-child(1) .status{margin-top:8px;display:block}.table--deployments td:nth-child(3){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.table--deployments td:nth-child(6){white-space:nowrap}.table--deployments td:nth-child(7){white-space:nowrap}.table--deployments td:nth-child(8) .drop{margin:-8px}.table--actions th:nth-child(1){width:8%}.table--actions th:nth-child(2){width:20%}.table--actions th:nth-child(3){width:21%}.table--actions th:nth-child(4){width:20%}.table--actions th:nth-child(5){width:7%}.table--actions th:nth-child(6){width:15%}.table--actions th:nth-child(7){width:9%}.table--actions td:first-child,.table--actions th:first-child{padding-left:16px}.table--actions td:last-child,.table--actions th:last-child{padding-right:16px}.table--actions td:nth-child(1){font-weight:500;font-size:16px;line-height:24px}.table--actions td:nth-child(1) .loading,.table--actions td:nth-child(1) .status{margin-top:8px;display:block}.table--actions td:nth-child(2){word-break:break-all}.table--actions td:nth-child(5){white-space:nowrap}.table--actions td:nth-child(6) .drop{margin:-8px}.listing{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start}.listing__item.bar{margin-top:2px}.listing__item.bar--larger{margin-top:4px}.listing__item.bar:first-child{margin-top:0}.listing__more{margin-top:2px}.listing--for-text{display:block;font-size:12px;line-height:16px}.listing--for-text .listing__item{margin-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.listing--for-text .listing__item:first-child{margin-top:0}.listing--for-text b{font-weight:500}.listing--for-text .listing__more{margin-top:8px}.listing--for-text.listing--larger{font-size:16px;line-height:24px}.sort{position:relative;display:inline-block;vertical-align:top;border:none;background:0 0;margin:-8px;padding:8px;font-family:inherit;font-weight:500;font-size:14px;line-height:16px;text-decoration:underline;color:#000;cursor:pointer}.sort:after{position:absolute;right:12px;top:14px;content:"";display:block;border-left:4px solid transparent;border-right:4px solid transparent;opacity:0}.sort:hover{color:#3671E3}.sort--desc{padding-right:24px}.sort--desc:after{border-top:4px solid}.sort--asc{padding-right:24px}.sort--asc:after{border-bottom:4px solid}.sort--active:after{opacity:1}.notification{position:relative;padding:15px 46px 15px 16px;border:1px solid;border-radius:4px;font-size:14px;line-height:20px}.notification__close{position:absolute;right:0;top:0;bottom:0;width:46px;padding:0;border:none;background-color:transparent;background-size:24px 24px;background-repeat:no-repeat;background-position:center center;text-indent:200%;white-space:nowrap;overflow:hidden;cursor:pointer}.notification--success{background-color:#0f7f12;background-color:rgba(15,127,18,.1);color:#0F7F12}.notification--success .notification__close{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iIzBGN0YxMiIvPgo8L3N2Zz4K)}.notification--success:hover .notification__close{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iIzBDNjcwRSIvPgo8L3N2Zz4K)}.notification--success:active .notification__close{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iIzA4NTMwQSIvPgo8L3N2Zz4K)}.notification--danger{background-color:#d42a2a;background-color:rgba(212,42,42,.1);color:#D42A2A}.notification--danger .notification__close{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iI0Q0MkEyQSIvPgo8L3N2Zz4K)}.notification--danger:hover .notification__close{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iI0IxMUIxQiIvPgo8L3N2Zz4K)}.notification--danger:active .notification__close{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iIzhCMTAxMCIvPgo8L3N2Zz4K)}.null{display:inline-block;vertical-align:top}.null:before{content:"";display:block;margin:0 auto 22px;background-size:contain;background-repeat:no-repeat;background-position:center center}.null__heading{margin-top:0;margin-bottom:0;display:block;font-weight:700;font-size:16px;line-height:20px;text-align:center}.null__message{margin-top:14px;font-size:14px;line-height:16px;color:#757575;text-align:center}.null--data{padding-bottom:8px}.null--data:before{width:174px;height:120px;background-image:url(../images/null-data.png)}@media (-webkit-min-device-pixel-ratio:2), (min-resolution:2dppx){.null--data:before{background-image:url(../images/null-data@2x.png)}}.null--search:before{width:120px;height:120px;background-image:url(../images/null-search.png)}@media (-webkit-min-device-pixel-ratio:2), (min-resolution:2dppx){.null--search:before{background-image:url(../images/null-search@2x.png)}}.null--search .null__message{margin-top:6px}html{height:100%;min-width:1000px}.no-page{display:table;vertical-align:top;width:100%;height:calc(100% - 72px)}.no-page__inner{display:table-cell;vertical-align:middle;text-align:center;width:100%;height:100%;padding-top:40px;padding-bottom:40px}.popup{position:relative;z-index:550;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.popup__overlay{position:fixed;z-index:600;left:0;top:0;right:0;bottom:0;background-color:#000000;background-color:rgba(0,0,0,.3);text-indent:200%;white-space:nowrap;overflow:hidden}.popup__body{position:fixed;z-index:800;right:0;top:0;bottom:0;width:1000px;background-color:#FFF}.popup__head{position:absolute;z-index:20;left:0;top:0;right:0;height:72px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;background-color:#FFF;box-shadow:0 2px 2px rgba(0, 0, 0, 0.24),0 0 2px rgba(0, 0, 0, 0.12)}.popup__close{display:inline-block;vertical-align:top;width:72px;height:72px;padding:0;border:none;background-color:transparent;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iIzc1NzU3NSIvPgo8L3N2Zz4K);background-size:24px 24px;background-repeat:no-repeat;background-position:center center;text-indent:100%;white-space:nowrap;overflow:hidden;cursor:pointer}.popup__close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iIzRDNEM0QyIvPgo8L3N2Zz4K)}.popup__close:active{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iIzIxMjEyMSIvPgo8L3N2Zz4K)}.popup__project{margin-top:0;margin-bottom:0;margin-right:32px;display:block;font-weight:inherit;font-size:24px;line-height:24px}.popup__operations{margin-left:auto;display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.popup__action{margin-left:8px}.popup__action:first-child{margin-left:0}.popup__menu{margin-left:8px;margin-right:10px}.popup__sub-head{position:absolute;z-index:10;left:0;top:72px;right:0;height:56px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;background-color:#FFF;box-shadow:inset 0 -1px 0 #D9D9D9}.popup__head~.popup__content{margin-top:72px;height:calc(100% - 72px);overflow-y:auto}.popup__head~.popup__sub-head~.popup__content{margin-top:128px;height:calc(100% - 128px);overflow-y:auto}.popup__sub-head .nav__link:first-child{border-left:8px solid transparent}.popup--visible{opacity:1;visibility:visible}@keyframes popup-body-slide{from{transform:translateX(20px)}to{transform:translateX(0)}}.popup--visible .popup__body{animation:popup-body-slide .3s ease}.deployment{padding:24px}.page__body .deployment{padding:0}.deployment__output{margin-bottom:32px}.deployment__summary{display:-ms-flexbox;display:flex;-ms-flex-item-align:start;align-self:flex-start}.deployment__stat{min-width:120px;margin-left:32px}.deployment__stat:first-child{margin-left:0}.deployment__param{display:block;margin-top:0;margin-bottom:0;font-weight:500;font-size:14px;line-height:16px}.deployment__value{margin-top:8px;font-size:16px;line-height:24px}.deployment__value .status{border-top:4px solid transparent;border-bottom:4px solid transparent}.deployment__section{margin-top:32px}.deployment__sub-heading{margin-top:0;margin-bottom:0;font-weight:500;font-size:14px;line-height:16px}.deployment__widget{margin-top:16px;font-size:16px;line-height:24px}.tag{width:400px}.overrides__item{margin-top:8px;display:-ms-flexbox;display:flex;-ms-flex-item-align:start;align-self:flex-start}.overrides__item:first-child{margin-top:0}.overrides__key{width:400px}.overrides__value{margin-left:16px;width:400px}.overrides__delete{margin-left:2px}.overrides__add{margin-top:4px}.dash{padding:12px 0 12px 24px;background-color:transparent;background-size:16px 16px;background-repeat:no-repeat;background-position:left center;border:none;font-family:inherit;font-weight:500;font-size:14px;line-height:16px;letter-spacing:.4px;text-decoration:none;text-transform:uppercase;color:#3671E3;cursor:pointer}.dash:hover{color:#3A6CCC}.dash:active{color:#3964B8}.dash--smaller{font-size:12px;padding-left:20px}.dash--add{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiByeD0iOCIgZmlsbD0iIzM2NzFFMyIvPgo8cGF0aCBkPSJNMTEuNSA4LjVIOC40OTk5OFYxMS41SDcuNDk5OThWOC41SDQuNDk5OThWNy41SDcuNDk5OThWNC41SDguNDk5OThWNy41SDExLjVWOC41WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==)}.dash--add:not(.dash--disabled):hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiByeD0iOCIgZmlsbD0iIzNBNkNDQyIvPgo8cGF0aCBkPSJNMTEuNSA4LjVIOC40OTk5OFYxMS41SDcuNDk5OThWOC41SDQuNDk5OThWNy41SDcuNDk5OThWNC41SDguNDk5OThWNy41SDExLjVWOC41WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==)}.dash--add:not(.dash--disabled):active{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiByeD0iOCIgZmlsbD0iIzM5NjRCOCIvPgo8cGF0aCBkPSJNMTEuNSA4LjVIOC40OTk5OFYxMS41SDcuNDk5OThWOC41SDQuNDk5OThWNy41SDcuNDk5OThWNC41SDguNDk5OThWNy41SDExLjVWOC41WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==)}.dash--back{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTciIHZpZXdCb3g9IjAgMCAxNiAxNyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjMzMzMgNy43NDI4NEg1LjIyTDguOTQ2NjYgNC4wMTYxN0w4IDMuMDc2MTdMMi42NjY2NiA4LjQwOTVMOCAxMy43NDI4TDguOTQgMTIuODAyOEw1LjIyIDkuMDc2MTdIMTMuMzMzM1Y3Ljc0Mjg0WiIgZmlsbD0iIzM2NzFFMyIvPgo8L3N2Zz4K)}.dash--back:not(.dash--disabled):hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTciIHZpZXdCb3g9IjAgMCAxNiAxNyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbD0iIzNBNkNDQyIgZD0iTTEzLjMzMzMgNy43NDI4NEg1LjIyTDguOTQ2NjYgNC4wMTYxN0w4IDMuMDc2MTdMMi42NjY2NiA4LjQwOTVMOCAxMy43NDI4TDguOTQgMTIuODAyOEw1LjIyIDkuMDc2MTdIMTMuMzMzM1Y3Ljc0Mjg0WiIvPgo8L3N2Zz4K)}.dash--back:not(.dash--disabled):active{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTciIHZpZXdCb3g9IjAgMCAxNiAxNyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbD0iIzM5NjRCOCIgZD0iTTEzLjMzMzMgNy43NDI4NEg1LjIyTDguOTQ2NjYgNC4wMTYxN0w4IDMuMDc2MTdMMi42NjY2NiA4LjQwOTVMOCAxMy43NDI4TDguOTQgMTIuODAyOEw1LjIyIDkuMDc2MTdIMTMuMzMzM1Y3Ljc0Mjg0WiIvPgo8L3N2Zz4K)}.dash--next{padding-left:0;padding-right:20px;background-position:right center}.dash--next{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICAgIDxwb2x5Z29uIGZpbGw9IiMzNjcxRTMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgcG9pbnRzPSI0LjYgMy40IDkuMiA4IDQuNiAxMi42IDYgMTQgMTIgOCA2IDIiLz4KPC9zdmc+Cg==)}.dash--next:not(.dash--disabled):hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICAgIDxwb2x5Z29uIGZpbGw9IiMzQTZDQ0MiIGZpbGwtcnVsZT0iZXZlbm9kZCIgcG9pbnRzPSI0LjYgMy40IDkuMiA4IDQuNiAxMi42IDYgMTQgMTIgOCA2IDIiLz4KPC9zdmc+Cg==)}.dash--next:not(.dash--disabled):active{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICAgIDxwb2x5Z29uIGZpbGw9IiMzOTY0QjgiIGZpbGwtcnVsZT0iZXZlbm9kZCIgcG9pbnRzPSI0LjYgMy40IDkuMiA4IDQuNiAxMi42IDYgMTQgMTIgOCA2IDIiLz4KPC9zdmc+Cg==)}.dash--disabled{opacity:.5;cursor:default}.log{margin-top:0;margin-bottom:0;display:block;padding:24px;font-family:"Roboto Mono",monospace;font-size:12px;line-height:16px;word-break:break-all}.no-deployment{height:100%;padding-bottom:72px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.data{-ms-flex-negative:0;flex-shrink:0}.data__show-archive{margin-top:18px;-ms-flex-item-align:start;align-self:flex-start}.data__archive{display:none}.data__archive--open{display:block}.no-data{-ms-flex-positive:1;flex-grow:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding-top:50px;padding-bottom:40px}.html-lock{overflow:hidden}.classic-popup{position:fixed;z-index:800;left:0;top:0;width:100%;height:100%;overflow:auto;background:#000000;background:rgba(0,0,0,.5);display:none}.classic-popup__container{display:table;table-layout:fixed;width:100%;height:100%}.classic-popup__viewport{display:table-cell;width:100%;height:100%;text-align:center;vertical-align:middle}.classic-popup__slot{position:relative;display:inline-block;vertical-align:top;text-align:left;margin:20px}.classic-popup__close{position:absolute;right:16px;top:16px;width:40px;height:40px;background-color:transparent;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg==);background-size:24px 24px;background-repeat:no-repeat;background-position:center center;padding:0;border:none;text-indent:200%;white-space:nowrap;overflow:hidden;cursor:pointer}.dialog{width:400px;padding:40px 24px;background-color:#FFF;border-radius:16px}.dialog--archive:before{content:"";display:block;width:185px;height:120px;margin-left:auto;margin-right:auto;background-image:url(../images/dialog-delete.png);background-size:contain;background-repeat:no-repeat;background-position:center center}@media (-webkit-min-device-pixel-ratio:2), (min-resolution:2dppx){.dialog--archive:before{background-image:url(../images/dialog-delete@2x.png)}}.dialog__content{margin-top:25px;font-weight:700;font-size:16px;line-height:20px;text-align:center}.dialog__footer{margin-top:16px;display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.dialog__action{margin-left:8px}.dialog__action:first-child{margin-left:0}.no-table{background-color:transparent!important;cursor:auto!important}.no-table td{vertical-align:middle;text-align:center;height:352px;padding-top:50px;padding-bottom:50px}.no-table .loading{display:inline-block!important;vertical-align:top!important;margin-top:0!important}.loading{position:relative;display:inline-block;vertical-align:top;padding-left:21px;font-size:14px;line-height:16px;color:#757575}@keyframes loading{to{transform:rotate(360deg)}}.loading:before{content:"";position:absolute;left:0;top:0;bottom:0;right:auto;margin:auto;display:block;width:16px;height:16px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIgOEMyIDExLjMxMzcgNC42ODYyOSAxNCA4IDE0QzExLjMxMzcgMTQgMTQgMTEuMzEzNyAxNCA4QzE0IDQuNjg2MjkgMTEuMzEzNyAyIDggMiIgc3Ryb2tlPSIjNzU3NTc1IiBzdHJva2Utd2lkdGg9IjIiLz4KPC9zdmc+Cg==);background-size:contain;background-repeat:no-repeat;background-position:center center;animation:loading 2.2s linear infinite}.loading--status-alike{font-weight:700;font-size:12px;letter-spacing:.4px;text-transform:uppercase}.loading--alternate:before{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIgOEMyIDExLjMxMzcgNC42ODYyOSAxNCA4IDE0QzExLjMxMzcgMTQgMTQgMTEuMzEzNyAxNCA4QzE0IDQuNjg2MjkgMTEuMzEzNyAyIDggMiIgc3Ryb2tlPSIjMzY3MUUzIiBzdHJva2Utd2lkdGg9IjIiLz4KPC9zdmc+Cg==)}.loading--enlarged{padding-left:0;padding-top:66px;padding-bottom:8px;width:62px;text-align:center}.loading--enlarged:before{left:0;top:0;bottom:auto;right:0;width:52px;height:52px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTIiIGhlaWdodD0iNTIiIHZpZXdCb3g9IjAgMCA1MiA1MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIgMjZDMiAzOS4yNTQ4IDEyLjc0NTIgNTAgMjYgNTBDMzkuMjU0OCA1MCA1MCAzOS4yNTQ4IDUwIDI2QzUwIDEyLjc0NTIgMzkuMjU0OCAyIDI2IDIiIHN0cm9rZT0iIzc1NzU3NSIgc3Ryb2tlLXdpZHRoPSI0Ii8+Cjwvc3ZnPgo=)}.loading--alternate.loading--enlarged:before{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTIiIGhlaWdodD0iNTIiIHZpZXdCb3g9IjAgMCA1MiA1MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIgMjZDMiAzOS4yNTQ4IDEyLjc0NTIgNTAgMjYgNTBDMzkuMjU0OCA1MCA1MCAzOS4yNTQ4IDUwIDI2QzUwIDEyLjc0NTIgMzkuMjU0OCAyIDI2IDIiIHN0cm9rZT0iIzM2NzFFMyIgc3Ryb2tlLXdpZHRoPSI0Ii8+Cjwvc3ZnPgo=)}.loading--indicator-only{width:16px;height:16px;padding:0;text-indent:200%;white-space:nowrap;overflow:hidden}.loading--indicator-only.loading--enlarged{width:52px;height:52px}.no-log{height:100%;padding-bottom:72px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.nav{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:start;align-items:flex-start}.nav__link{position:relative;display:inline-block;vertical-align:top;background-color:transparent;border:none;padding:21px 16px 19px;font-family:inherit;font-size:14px;line-height:16px;letter-spacing:.75px;text-transform:uppercase;cursor:pointer}.nav__link:hover{color:#3964B8}.nav__link--current{font-weight:500;color:#3964B8}.nav__link--current:after{content:"";position:absolute;left:16px;right:16px;bottom:0;display:block;height:4px;border-top-left-radius:4px;border-top-right-radius:4px;background-color:#3964B8}.break{word-break:break-all}
1+html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}body{height:100%;background-color:#FFF;font-family:Roboto,sans-serif}.browserupgrade{background:#CCC;color:#000;padding:4px 10px}.button{display:inline-block;vertical-align:top;height:40px;padding:11px;border:1px solid transparent;background-color:#3671E3;border-radius:4px;font-family:inherit;font-weight:500;font-size:14px;line-height:16px;letter-spacing:.6px;color:#FFF;text-align:center;text-transform:uppercase;text-decoration:none;white-space:nowrap;cursor:pointer}.button:hover{background-color:#3A6CCC}.button:active{background-color:#3964B8}.button--disabled,.button--disabled:active,.button--disabled:hover{background-color:#99B7F3;cursor:default}.button--secondary{background-color:#FFF;border-color:#757575;color:#000}.button--secondary:hover{background-color:#EEE}.button--secondary:active{background-color:#E2E2E2}.button--secondary.button--disabled,.button--secondary.button--disabled:active,.button--secondary.button--disabled:hover{background-color:transparent;opacity:.5;cursor:default}.button--add{padding-left:40px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTkgMTNoLTZ2NmgtMnYtNmgtNnYtMmg2di02aDJ2Nmg2eiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==);background-size:24px 24px;background-position:11px center;background-repeat:no-repeat}.button--edit{padding-left:40px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMyAxNy4yNTA1djMuNzVoMy43NWwxMS4wNi0xMS4wNTk5NS0zLjc1LTMuNzV6bTE3LjcxLTEwLjIwOTk1Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFsLTIuMzQtMi4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzV6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);background-size:24px 24px;background-position:11px center;background-repeat:no-repeat}.button--archive{padding-left:40px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMjAuNTQgNS4yMy0xLjM5LTEuNjhjLS4yNy0uMzQtLjY4LS41NS0xLjE1LS41NWgtMTJjLS40NyAwLS44OC4yMS0xLjE2LjU1bC0xLjM4IDEuNjhjLS4yOS4zNC0uNDYuNzktLjQ2IDEuMjd2MTIuNWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi0xMi41YzAtLjQ4LS4xNy0uOTMtLjQ2LTEuMjd6bS04LjU0IDEyLjI3LTUuNS01LjVoMy41di0yaDR2MmgzLjV6bS02Ljg4LTEyLjUuODEtMWgxMmwuOTQgMXoiIGZpbGw9IiM3NTc1NzUiLz48L3N2Zz4=);background-size:24px 24px;background-position:11px center;background-repeat:no-repeat}.button--restore{padding-left:40px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMjAuNTUgNS4yMi0xLjM5LTEuNjhjLS4yOC0uMzMtLjY5LS41NC0xLjE2LS41NGgtMTJjLS40NyAwLS44OC4yMS0xLjE1LjU1bC0xLjM5IDEuNjdjLS4yOS4zNS0uNDYuNzktLjQ2IDEuMjh2MTIuNWMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtMTIuNWMwLS40OS0uMTctLjkzLS40NS0xLjI4em0tOC41NSA0LjI4IDUuNSA1LjVoLTMuNXYyaC00di0yaC0zLjV6bS02Ljg4LTQuNS44Mi0xaDEybC45MyAxeiIgZmlsbD0iIzc1NzU3NSIvPjwvc3ZnPg==);background-size:24px 24px;background-position:11px center;background-repeat:no-repeat}.button--save{padding-left:40px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtOC45OTk5NyAxNi4xNjk4LTQuMTctNC4xNy0xLjQyIDEuNDEgNS41OSA1LjU5IDEyLjAwMDAzLTExLjk5OTk2LTEuNDEtMS40MXoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=);background-size:24px 24px;background-position:11px center;background-repeat:no-repeat}.button--logs{padding-left:40px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTQgMTdoLTEwdjJoMTB6bTYtOGgtMTZ2MmgxNnptLTE2IDZoMTZ2LTJoLTE2em0wLTEwdjJoMTZ2LTJ6IiBmaWxsPSIjNzU3NTc1Ii8+PC9zdmc+);background-size:24px 24px;background-position:11px center;background-repeat:no-repeat}*{box-sizing:border-box}:before{box-sizing:border-box}:after{box-sizing:border-box}.visuallyhidden{border:0;clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;-webkit-clip-path:none;clip-path:none;height:auto;margin:0;overflow:visible;position:static;width:auto;white-space:inherit}.container{padding-left:24px;padding-right:24px}.header{padding-top:24px;padding-bottom:24px;background-color:#3671E3;box-shadow:0 2px 2px rgba(0, 0, 0, 0.24),0 0 2px rgba(0, 0, 0, 0.12);color:#FFF}.header__wrap{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.header__logo{margin-top:0;margin-bottom:0;border-right:1px solid #709AEE;padding-right:15px;font-weight:700;font-size:20px;line-height:24px;letter-spacing:.85px;text-transform:uppercase}.header__project{margin-left:-1px;border-left:1px solid #709AEE;padding-left:16px;font-weight:500;font-size:16px;line-height:24px}.status{background-size:16px 16px;background-repeat:no-repeat;background-position:left center;padding-left:21px;font-weight:700;font-size:12px;line-height:16px;letter-spacing:.4px;text-transform:uppercase}.status--success{color:#0F7F12;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNy45OTk5MiAxLjMzMzAxYy0zLjY4IDAtNi42NjY2NyAyLjk4NjY2LTYuNjY2NjcgNi42NjY2NyAwIDMuNjgwMDIgMi45ODY2NyA2LjY2NjYyIDYuNjY2NjcgNi42NjY2MiAzLjY3OTk4IDAgNi42NjY2OC0yLjk4NjYgNi42NjY2OC02LjY2NjYyIDAtMy42ODAwMS0yLjk4NjctNi42NjY2Ny02LjY2NjY4LTYuNjY2Njd6bS0xLjMzMzMzIDkuOTk5OTktMy4zMzMzNC0zLjMzMzMyLjk0LS45NCAyLjM5MzM0IDIuMzg2NjYgNS4wNjAwMS01LjA2Ljk0Ljk0NjY3eiIgZmlsbD0iIzBmN2YxMiIvPjwvc3ZnPg==)}.status--pending{color:#3671E3;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTAuODI2NiA1LjE3MzAxYy0uNzgtLjc4LTEuODAwMDEtMS4xNzMzNC0yLjgyNjY4LTEuMTczMzR2NC4wMDAwMWwtMi44MjY2NyAyLjgyNjYyYzEuNTYgMS41NiA0LjA5MzM0IDEuNTYgNS42NjAwNSAwIDEuNTYtMS41NTk5NiAxLjU2LTQuMDkzMjktLjAwNjctNS42NTMyOXptLTIuODI2NjgtMy44NGMtMy42OCAwLTYuNjY2NjcgMi45ODY2Ni02LjY2NjY3IDYuNjY2NjcgMCAzLjY4MDAyIDIuOTg2NjcgNi42NjY2MiA2LjY2NjY3IDYuNjY2NjIgMy42Nzk5OCAwIDYuNjY2NjgtMi45ODY2IDYuNjY2NjgtNi42NjY2MiAwLTMuNjgwMDEtMi45ODY3LTYuNjY2NjctNi42NjY2OC02LjY2NjY3em0wIDExLjk5OTk5Yy0yLjk0NjY3IDAtNS4zMzMzMy0yLjM4NjctNS4zMzMzMy01LjMzMzMyIDAtMi45NDY2NyAyLjM4NjY2LTUuMzMzMzQgNS4zMzMzMy01LjMzMzM0IDIuOTQ2NjggMCA1LjMzMzM4IDIuMzg2NjcgNS4zMzMzOCA1LjMzMzM0IDAgMi45NDY2Mi0yLjM4NjcgNS4zMzMzMi01LjMzMzM4IDUuMzMzMzJ6IiBmaWxsPSIjMzY3MWUzIi8+PC9zdmc+)}.status--failure{color:#FC5830;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtLjY2Njc0OCAxMy45OTk3aDE0LjY2NjY1MmwtNy4zMzMzMi0xMi42NjY2OXptOC4wMDAwMDItMmgtMS4zMzMzNHYtMS4zMzM0aDEuMzMzMzR6bTAtMi42NjY2OWgtMS4zMzMzNHYtMi42NjY2N2gxLjMzMzM0eiIgZmlsbD0iI2ZjNTgzMCIvPjwvc3ZnPg==)}.status--archived{color:#D42A2A;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTMuNjkzMyAzLjQ4NjY3LS45MjY2LTEuMTJjLS4xOC0uMjI2NjctLjQ1MzQtLjM2NjY3LS43NjY3LS4zNjY2N2gtOGMtLjMxMzMzIDAtLjU4NjY3LjE0LS43NzMzMy4zNjY2N2wtLjkyIDEuMTJjLS4xOTMzNC4yMjY2Ni0uMzA2NjcuNTI2NjYtLjMwNjY3Ljg0NjY2djguMzMzMzdjMCAuNzMzMy42IDEuMzMzMyAxLjMzMzMzIDEuMzMzM2g5LjMzMzM3Yy43MzMzIDAgMS4zMzMzLS42IDEuMzMzMy0xLjMzMzN2LTguMzMzMzdjMC0uMzItLjExMzMtLjYyLS4zMDY3LS44NDY2NnptLTUuNjkzMyA4LjE4MDAzLTMuNjY2NjctMy42NjY3aDIuMzMzMzR2LTEuMzMzMzNoMi42NjY2NnYxLjMzMzMzaDIuMzMzMzd6bS00LjU4NjY3LTguMzMzMzcuNTQtLjY2NjY2aDcuOTk5OTdsLjYyNjcuNjY2NjZ6IiBmaWxsPSIjZDQyYTJhIi8+PC9zdmc+)}.bar{display:inline-block;vertical-align:top;padding:4px 6px;background-color:#EEE;border-radius:4px;font-size:12px;line-height:16px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar b{font-weight:500}.bar--larger{padding:4px 8px;font-size:16px;line-height:24px}.external{padding-right:24px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEyIiB2aWV3Qm94PSIwIDAgMTIgMTIiIHdpZHRoPSIxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtOS4xNDI4MSA5LjE0MzQyaC02LjI4NTcydi02LjI4NTcyaDIuMjg1NzJ2LTEuMTQyODZoLTIuMjg1NzJjLS42MzQyOCAwLTEuMTQyODYuNTE0MjktMS4xNDI4NiAxLjE0Mjg2djYuMjg1NzJjMCAuNjI4NTcuNTA4NTggMS4xNDI4OCAxLjE0Mjg2IDEuMTQyODhoNi4yODU3MmMuNjI4NTcgMCAxLjE0Mjg5LS41MTQzMSAxLjE0Mjg5LTEuMTQyODh2LTIuMjg1NzJoLTEuMTQyODl6bS0yLjg1NzE1LTcuNDI4NTh2MS4xNDI4NmgyLjA1MTQzbC0zLjkwMjg2IDMuOTAyODYuODA1NzIuODA1NzEgMy45MDI4Ni0zLjkwMjg1djIuMDUxNDJoMS4xNDI4OXYtNHoiIGZpbGw9IiMyMTIxMjEiLz48L3N2Zz4=);background-size:12px 12px;background-repeat:no-repeat;background-position:right 6px center;color:inherit;text-decoration:none;cursor:pointer}.external:hover{color:#3671E3;background-color:#E2E2E2;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEyIiB2aWV3Qm94PSIwIDAgMTIgMTIiIHdpZHRoPSIxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtOS4xNDI4MSA5LjE0MzQyaC02LjI4NTcydi02LjI4NTcyaDIuMjg1NzJ2LTEuMTQyODZoLTIuMjg1NzJjLS42MzQyOCAwLTEuMTQyODYuNTE0MjktMS4xNDI4NiAxLjE0Mjg2djYuMjg1NzJjMCAuNjI4NTcuNTA4NTggMS4xNDI4OCAxLjE0Mjg2IDEuMTQyODhoNi4yODU3MmMuNjI4NTcgMCAxLjE0Mjg5LS41MTQzMSAxLjE0Mjg5LTEuMTQyODh2LTIuMjg1NzJoLTEuMTQyODl6bS0yLjg1NzE1LTcuNDI4NTh2MS4xNDI4NmgyLjA1MTQzbC0zLjkwMjg2IDMuOTAyODYuODA1NzIuODA1NzEgMy45MDI4Ni0zLjkwMjg1djIuMDUxNDJoMS4xNDI4OXYtNHoiIGZpbGw9IiMzNjcxZTMiLz48L3N2Zz4=)}.external:active{color:#3671E3;background-color:#D6D6D6;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjEyIiB2aWV3Qm94PSIwIDAgMTIgMTIiIHdpZHRoPSIxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtOS4xNDI4MSA5LjE0MzQyaC02LjI4NTcydi02LjI4NTcyaDIuMjg1NzJ2LTEuMTQyODZoLTIuMjg1NzJjLS42MzQyOCAwLTEuMTQyODYuNTE0MjktMS4xNDI4NiAxLjE0Mjg2djYuMjg1NzJjMCAuNjI4NTcuNTA4NTggMS4xNDI4OCAxLjE0Mjg2IDEuMTQyODhoNi4yODU3MmMuNjI4NTcgMCAxLjE0Mjg5LS41MTQzMSAxLjE0Mjg5LTEuMTQyODh2LTIuMjg1NzJoLTEuMTQyODl6bS0yLjg1NzE1LTcuNDI4NTh2MS4xNDI4NmgyLjA1MTQzbC0zLjkwMjg2IDMuOTAyODYuODA1NzIuODA1NzEgMy45MDI4Ni0zLjkwMjg1djIuMDUxNDJoMS4xNDI4OXYtNHoiIGZpbGw9IiMzNjcxZTMiLz48L3N2Zz4=)}.external.bar--larger{background-position:right 8px center}.expander{position:relative;border:none;background-color:transparent;padding:0 17px 0 0;font-family:inherit;font-weight:500;font-size:12px;line-height:16px;color:#3671E3;text-decoration:none;cursor:pointer}.expander:before{content:"";position:absolute;left:-4px;right:-4px;top:-10px;bottom:-10px;display:block}.expander:after{position:absolute;right:0;top:0;content:"";display:block;width:16px;height:16px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNC45NCA1LjcyNjU2IDMuMDYgMy4wNTMzNCAzLjA2LTMuMDUzMzQuOTQuOTQtNCA0LjAwMDA0LTQtNC4wMDAwNHoiIGZpbGw9IiMzNjcxZTMiLz48L3N2Zz4=);background-repeat:no-repeat;background-position:center center}.expander:hover{color:#3A6CCC}.expander:active{color:#3964B8}.expander--open:after{-ms-transform:scaleY(-1);transform:scaleY(-1)}.expander--stand-alone{padding:9px 24px 9px 0;background-color:transparent;font-family:inherit;font-size:14px;line-height:16px;color:#3671E3;text-transform:uppercase;letter-spacing:.6px}.expander--stand-alone:after{right:0;top:7px;width:20px;height:20px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHdpZHRoPSIyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNi4xNzUgNy4xNTgyIDMuODI1IDMuODE2NyAzLjgyNS0zLjgxNjcgMS4xNzUgMS4xNzUtNSA1LTUtNXoiIGZpbGw9IiMzNjcxZTMiLz48L3N2Zz4=);background-size:contain}.expander--stand-alone:hover{background-color:transparent;color:#3A6CCC}.expander--stand-alone:hover:after{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHdpZHRoPSIyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNi4xNzUgNy4xNTgyIDMuODI1IDMuODE2NyAzLjgyNS0zLjgxNjcgMS4xNzUgMS4xNzUtNSA1LTUtNXoiIGZpbGw9IiMzYTZjY2MiLz48L3N2Zz4=)}.expander--stand-alone:active{background-color:transparent;color:#3964B8}.expander--stand-alone:active:after{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjIwIiB2aWV3Qm94PSIwIDAgMjAgMjAiIHdpZHRoPSIyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNi4xNzUgNy4xNTgyIDMuODI1IDMuODE2NyAzLjgyNS0zLjgxNjcgMS4xNzUgMS4xNzUtNSA1LTUtNXoiIGZpbGw9IiMzOTY0YjgiLz48L3N2Zz4=)}.action{display:inline-block;vertical-align:top;width:100%;border:none;padding:16px 32px 16px 16px;background-color:transparent;background-repeat:no-repeat;background-position:16px center;font-family:inherit;font-size:14px;line-height:16px;color:#000;white-space:nowrap;text-align:left;text-decoration:none;cursor:pointer}.action:not(.action--disabled):hover{background-color:#EEEEEE}.action:not(.action--disabled):active{background-color:#D6D6D6}.action--archive{padding-left:50px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMjAuNTQgNS4yMy0xLjM5LTEuNjhjLS4yNy0uMzQtLjY4LS41NS0xLjE1LS41NWgtMTJjLS40NyAwLS44OC4yMS0xLjE2LjU1bC0xLjM4IDEuNjhjLS4yOS4zNC0uNDYuNzktLjQ2IDEuMjd2MTIuNWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi0xMi41YzAtLjQ4LS4xNy0uOTMtLjQ2LTEuMjd6bS04LjU0IDEyLjI3LTUuNS01LjVoMy41di0yaDR2MmgzLjV6bS02Ljg4LTEyLjUuODEtMWgxMmwuOTQgMXoiIGZpbGw9IiM3NTc1NzUiLz48L3N2Zz4=)}.action--edit{padding-left:50px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMyAxNy4yNDk2djMuNzVoMy43NWwxMS4wNi0xMS4wNjAwMy0zLjc1LTMuNzV6bTE3LjcxLTEwLjIxMDAzYy4zOS0uMzkuMzktMS4wMiAwLTEuNDFsLTIuMzQtMi4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzV6IiBmaWxsPSIjNzU3NTc1Ii8+PC9zdmc+)}.action--restore{padding-left:50px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMjAuNTUgNS4yMi0xLjM5LTEuNjhjLS4yOC0uMzMtLjY5LS41NC0xLjE2LS41NGgtMTJjLS40NyAwLS44OC4yMS0xLjE1LjU1bC0xLjM5IDEuNjdjLS4yOS4zNS0uNDYuNzktLjQ2IDEuMjh2MTIuNWMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtMTIuNWMwLS40OS0uMTctLjkzLS40NS0xLjI4em0tOC41NSA0LjI4IDUuNSA1LjVoLTMuNXYyaC00di0yaC0zLjV6bS02Ljg4LTQuNS44Mi0xaDEybC45MyAxeiIgZmlsbD0iIzc1NzU3NSIvPjwvc3ZnPg==)}.action--logs{padding-left:50px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTQgMTdoLTEwdjJoMTB6bTYtOGgtMTZ2MmgxNnptLTE2IDZoMTZ2LTJoLTE2em0wLTEwdjJoMTZ2LTJ6IiBmaWxsPSIjNzU3NTc1Ii8+PC9zdmc+)}.action--disabled{opacity:.5;cursor:default}.drop{position:relative;display:inline-block;vertical-align:top}.drop__handler{border:none;padding:0;background-color:transparent;cursor:pointer}.drop__dropdown{position:absolute;z-index:500;right:0;top:100%;min-width:100%;opacity:0;visibility:hidden;transition:opacity 0.1s cubic-bezier(0.075, 0.82, 0.165, 1),visibility 0.1s cubic-bezier(0.075, 0.82, 0.165, 1)}.drop--expanded .drop__dropdown{opacity:1;visibility:visible}.drop--actions .drop__handler{width:40px;height:40px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTIgOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTAgMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6IiBmaWxsPSIjNzU3NTc1Ii8+PC9zdmc+);background-size:24px 24px;background-repeat:no-repeat;background-position:center center;text-indent:200%;white-space:nowrap;overflow:hidden}.drop--actions .drop__handler:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTIgOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTAgMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6IiBmaWxsPSIjNGM0YzRjIi8+PC9zdmc+)}.drop--actions .drop__handler:active,.drop--actions.drop--expanded .drop__handler{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTIgOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTAgMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6IiBmaWxsPSIjMjEyMTIxIi8+PC9zdmc+)}.drop--actions .drop__dropdown{margin-top:8px;margin-right:-17px;padding-top:8px;padding-bottom:8px;background-color:#FFF;box-shadow:0 2px 2px rgba(0, 0, 0, 0.24),0 0 2px rgba(0, 0, 0, 0.12);border-radius:2px}.input{position:relative}.input__widget{width:100%;height:40px;vertical-align:top;padding:8px 0;background-color:transparent;border:none;outline:0;box-shadow:inset 0 -1px #B0B0B0;background-clip:padding-box;border-radius:0;font-family:inherit;font-size:16px;line-height:24px;color:#000000;color:rgba(0,0,0,.87)}.input__widget:hover{box-shadow:inset 0 -1px #326EE6}.input__widget:focus{box-shadow:inset 0 -2px #326EE6}.input__widget::-webkit-input-placeholder{font-style:normal;color:#757575}.input__widget::-moz-placeholder{font-style:normal;color:#757575;opacity:1}.input__widget:-ms-input-placeholder{font-style:normal;color:#757575}.input__widget:hover::-webkit-input-placeholder{color:#B1B1B1}.input__widget:hover::-moz-placeholder{color:#B1B1B1}.input__widget:hover:-ms-input-placeholder{color:#B1B1B1}.input__widget:focus::-webkit-input-placeholder{color:#B1B1B1}.input__widget:focus::-moz-placeholder{color:#B1B1B1}.input__widget:focus:-ms-input-placeholder{color:#B1B1B1}.input--has-clear-type .input__widget{padding-right:30px}.input--has-clear-type .input__widget::-ms-clear{display:none}.input__clear-type{position:absolute;right:-8px;top:0}.input--search .input__widget{padding-left:32px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTUuNSAxNGgtLjc5bC0uMjgtLjI3Yy45OC0xLjE0IDEuNTctMi42MiAxLjU3LTQuMjMgMC0zLjU5LTIuOTEtNi41LTYuNS02LjVzLTYuNSAyLjkxLTYuNSA2LjUgMi45MSA2LjUgNi41IDYuNWMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5IDEuNDktMS40OXptLTYgMGMtMi40OSAwLTQuNS0yLjAxLTQuNS00LjVzMi4wMS00LjUgNC41LTQuNSA0LjUgMi4wMSA0LjUgNC41LTIuMDEgNC41LTQuNSA0LjV6IiBmaWxsPSIjNzU3NTc1Ii8+PC9zdmc+);background-size:24px 24px;background-repeat:no-repeat;background-position:left center}.input--error .input__widget{box-shadow:inset 0 -2px #D42A2A}.input__output{margin-top:7px;font-size:12px;line-height:16px;color:#D42A2A}.input__output+.input__output{margin-top:3px}.spot{display:inline-block;vertical-align:top;border:none;background-color:transparent;background-repeat:no-repeat;background-position:center center;background-size:24px 24px;padding:0;width:40px;height:40px;cursor:pointer;text-indent:200%;white-space:nowrap;overflow:hidden;opacity:.5}.spot--cancel{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTEuOTk5OCAyYy01LjUyOTk4IDAtOS45OTk5OCA0LjQ3LTkuOTk5OTggMTBzNC40NyAxMCA5Ljk5OTk4IDEwYzUuNTMgMCAxMC00LjQ3IDEwLTEwcy00LjQ3LTEwLTEwLTEwem01IDEzLjU5LTEuNDEgMS40MS0zLjU5LTMuNTktMy41ODk5OCAzLjU5LTEuNDEtMS40MSAzLjU4OTk4LTMuNTktMy41ODk5OC0zLjU5IDEuNDEtMS40MSAzLjU4OTk4IDMuNTkgMy41OS0zLjU5IDEuNDEgMS40MS0zLjU5IDMuNTl6IiBmaWxsPSIjNzU3NTc1Ii8+PC9zdmc+)}.spot--cancel:hover{opacity:1}.title{font-weight:inherit;font-size:28px;line-height:32px}.page{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;height:calc(100% - 72px);padding-top:24px}.page__wrap{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:100%}.page__output{-ms-flex-negative:0;flex-shrink:0;margin-bottom:24px}.page__back{-ms-flex-item-align:start;align-self:flex-start;margin-top:-8px;margin-bottom:-8px}.page__head{-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;margin-bottom:16px}.page__heading{margin-top:5px;margin-bottom:0}.page__note{margin-left:15px;margin-top:17px;font-size:14px;line-height:16px;color:#757575}.page__action{margin-left:auto}.page__action+.page__action{margin-left:8px}.page__action:first-child{margin-left:0}.page__action--search{margin-right:8px}.page__search{margin-left:auto;width:240px}.page__add-deployment{margin-left:16px}.page__body{-ms-flex-positive:1;flex-grow:1;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-bottom:24px}.table{background-color:#FFF;border:1px solid #E0E0E0;border-radius:4px}.table table{width:100%;vertical-align:top;border-collapse:collapse;table-layout:fixed;font-size:14px;line-height:20px;color:#000000;color:rgba(0,0,0,.87)}.table thead tr{background-color:#EEE}.table tbody tr{border-top:1px solid #E0E0E0}.table th{vertical-align:middle;height:48px;padding:16px 12px;font-weight:500;font-size:14px;line-height:16px;color:#000;text-align:left;overflow:hidden;text-overflow:ellipsis}.table td{vertical-align:top;padding:16px 12px}.table tr:first-child th:first-child{border-top-left-radius:3px}.table tr:first-child th:last-child{border-top-right-radius:3px}.table tr:last-child td:first-child{border-bottom-left-radius:3px}.table tr:last-child td:last-child{border-bottom-right-radius:3px}.table--clickable tbody tr{cursor:default}.table--clickable tbody tr:hover{background-color:#F8F8F8}.table--double-click tbody tr{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.table--deployments th:nth-child(1){width:16.1818%}.table--deployments th:nth-child(2){width:16.1818%}.table--deployments th:nth-child(3){width:8%}.table--deployments th:nth-child(4){width:20.3636%}.table--deployments th:nth-child(5){width:20.3636%}.table--deployments th:nth-child(6){width:9.4546%}.table--deployments th:nth-child(7){width:9.4546%}.table--deployments th:nth-child(8){width:52px}.table--deployments td:first-child,.table--deployments th:first-child{padding-left:16px}.table--deployments td:last-child,.table--deployments th:last-child{padding-right:16px}.table--deployments td:nth-child(1){font-weight:500;font-size:16px;line-height:24px}.table--deployments td:nth-child(1) .loading,.table--deployments td:nth-child(1) .status{margin-top:8px;display:block}.table--deployments td:nth-child(3){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.table--deployments td:nth-child(6){white-space:nowrap}.table--deployments td:nth-child(7){white-space:nowrap}.table--deployments td:nth-child(8) .drop{margin:-8px}.table--actions th:nth-child(1){width:8%}.table--actions th:nth-child(2){width:20%}.table--actions th:nth-child(3){width:21%}.table--actions th:nth-child(4){width:20%}.table--actions th:nth-child(5){width:7%}.table--actions th:nth-child(6){width:15%}.table--actions th:nth-child(7){width:9%}.table--actions td:first-child,.table--actions th:first-child{padding-left:16px}.table--actions td:last-child,.table--actions th:last-child{padding-right:16px}.table--actions td:nth-child(1){font-weight:500;font-size:16px;line-height:24px}.table--actions td:nth-child(1) .loading,.table--actions td:nth-child(1) .status{margin-top:8px;display:block}.table--actions td:nth-child(2){word-break:break-all}.table--actions td:nth-child(5){white-space:nowrap}.table--actions td:nth-child(6) .drop{margin:-8px}.listing{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start}.listing__item.bar{margin-top:2px}.listing__item.bar--larger{margin-top:4px}.listing__item.bar:first-child{margin-top:0}.listing__more{margin-top:2px}.listing--for-text{display:block;font-size:12px;line-height:16px}.listing--for-text .listing__item{margin-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.listing--for-text .listing__item:first-child{margin-top:0}.listing--for-text b{font-weight:500}.listing--for-text .listing__more{margin-top:8px}.listing--for-text.listing--larger{font-size:16px;line-height:24px}.sort{position:relative;display:inline-block;vertical-align:top;border:none;background:0 0;margin:-8px;padding:8px;font-family:inherit;font-weight:500;font-size:14px;line-height:16px;text-decoration:underline;color:#000;cursor:pointer}.sort:after{position:absolute;right:12px;top:14px;content:"";display:block;border-left:4px solid transparent;border-right:4px solid transparent;opacity:0}.sort:hover{color:#3671E3}.sort--desc{padding-right:24px}.sort--desc:after{border-top:4px solid}.sort--asc{padding-right:24px}.sort--asc:after{border-bottom:4px solid}.sort--active:after{opacity:1}.notification{position:relative;padding:15px 46px 15px 16px;border:1px solid;border-radius:4px;font-size:14px;line-height:20px}.notification__close{position:absolute;right:0;top:0;bottom:0;width:46px;padding:0;border:none;background-color:transparent;background-size:24px 24px;background-repeat:no-repeat;background-position:center center;text-indent:200%;white-space:nowrap;overflow:hidden;cursor:pointer}.notification--success{background-color:#0f7f12;background-color:rgba(15,127,18,.1);color:#0F7F12}.notification--success .notification__close{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iIzBGN0YxMiIvPgo8L3N2Zz4K)}.notification--success:hover .notification__close{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iIzBDNjcwRSIvPgo8L3N2Zz4K)}.notification--success:active .notification__close{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iIzA4NTMwQSIvPgo8L3N2Zz4K)}.notification--danger{background-color:#d42a2a;background-color:rgba(212,42,42,.1);color:#D42A2A}.notification--danger .notification__close{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iI0Q0MkEyQSIvPgo8L3N2Zz4K)}.notification--danger:hover .notification__close{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iI0IxMUIxQiIvPgo8L3N2Zz4K)}.notification--danger:active .notification__close{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iIzhCMTAxMCIvPgo8L3N2Zz4K)}.null{display:inline-block;vertical-align:top}.null:before{content:"";display:block;margin:0 auto 22px;background-size:contain;background-repeat:no-repeat;background-position:center center}.null__heading{margin-top:0;margin-bottom:0;display:block;font-weight:700;font-size:16px;line-height:20px;text-align:center}.null__message{margin-top:14px;font-size:14px;line-height:16px;color:#757575;text-align:center}.null--data{padding-bottom:8px}.null--data:before{width:174px;height:120px;background-image:url(../images/null-data.png)}@media (-webkit-min-device-pixel-ratio:2), (min-resolution:2dppx){.null--data:before{background-image:url(../images/null-data@2x.png)}}.null--search:before{width:120px;height:120px;background-image:url(../images/null-search.png)}@media (-webkit-min-device-pixel-ratio:2), (min-resolution:2dppx){.null--search:before{background-image:url(../images/null-search@2x.png)}}.null--search .null__message{margin-top:6px}html{height:100%;min-width:1000px}.no-page{display:table;vertical-align:top;width:100%;height:calc(100% - 72px)}.no-page__inner{display:table-cell;vertical-align:middle;text-align:center;width:100%;height:100%;padding-top:40px;padding-bottom:40px}.popup{position:relative;z-index:550;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.popup__overlay{position:fixed;z-index:600;left:0;top:0;right:0;bottom:0;background-color:#000000;background-color:rgba(0,0,0,.3);text-indent:200%;white-space:nowrap;overflow:hidden}.popup__body{position:fixed;z-index:800;right:0;top:0;bottom:0;width:1000px;background-color:#FFF}.popup__head{position:absolute;z-index:20;left:0;top:0;right:0;height:72px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;background-color:#FFF;box-shadow:0 2px 2px rgba(0, 0, 0, 0.24),0 0 2px rgba(0, 0, 0, 0.12)}.popup__close{display:inline-block;vertical-align:top;width:72px;height:72px;padding:0;border:none;background-color:transparent;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iIzc1NzU3NSIvPgo8L3N2Zz4K);background-size:24px 24px;background-repeat:no-repeat;background-position:center center;text-indent:100%;white-space:nowrap;overflow:hidden;cursor:pointer}.popup__close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iIzRDNEM0QyIvPgo8L3N2Zz4K)}.popup__close:active{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iIzIxMjEyMSIvPgo8L3N2Zz4K)}.popup__project{margin-top:0;margin-bottom:0;margin-right:32px;display:block;font-weight:inherit;font-size:24px;line-height:24px}.popup__operations{margin-left:auto;display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.popup__action{margin-left:8px}.popup__action:first-child{margin-left:0}.popup__menu{margin-left:8px;margin-right:10px}.popup__sub-head{position:absolute;z-index:10;left:0;top:72px;right:0;height:56px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;background-color:#FFF;box-shadow:inset 0 -1px 0 #D9D9D9}.popup__head~.popup__content{margin-top:72px;height:calc(100% - 72px);overflow-y:auto}.popup__head~.popup__sub-head~.popup__content{margin-top:128px;height:calc(100% - 128px);overflow-y:auto}.popup__sub-head .nav__link:first-child{border-left:8px solid transparent}.popup--visible{opacity:1;visibility:visible}@keyframes popup-body-slide{from{transform:translateX(20px)}to{transform:translateX(0)}}.popup--visible .popup__body{animation:popup-body-slide .3s ease}.deployment{padding:24px}.page__body .deployment{padding:0}.deployment__output{margin-bottom:32px}.deployment__summary{display:-ms-flexbox;display:flex;-ms-flex-item-align:start;align-self:flex-start}.deployment__stat{min-width:120px;margin-left:32px}.deployment__stat:first-child{margin-left:0}.deployment__param{display:block;margin-top:0;margin-bottom:0;font-weight:500;font-size:14px;line-height:16px}.deployment__value{margin-top:8px;font-size:16px;line-height:24px}.deployment__value .status{border-top:4px solid transparent;border-bottom:4px solid transparent}.deployment__section{margin-top:32px}.deployment__sub-heading{margin-top:0;margin-bottom:0;font-weight:500;font-size:14px;line-height:16px}.deployment__widget{margin-top:16px;font-size:16px;line-height:24px}.tag{width:400px}.overrides__item{margin-top:8px;display:-ms-flexbox;display:flex;-ms-flex-item-align:start;align-self:flex-start}.overrides__item:first-child{margin-top:0}.overrides__key{width:400px}.overrides__value{margin-left:16px;width:400px}.overrides__delete{margin-left:2px}.overrides__add{margin-top:4px}.dash{padding:12px 0 12px 24px;background-color:transparent;background-size:16px 16px;background-repeat:no-repeat;background-position:left center;border:none;font-family:inherit;font-weight:500;font-size:14px;line-height:16px;letter-spacing:.4px;text-decoration:none;text-transform:uppercase;color:#3671E3;cursor:pointer}.dash:hover{color:#3A6CCC}.dash:active{color:#3964B8}.dash--smaller{font-size:12px;padding-left:20px}.dash--add{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCBmaWxsPSIjMzY3MWUzIiBoZWlnaHQ9IjE2IiByeD0iOCIgd2lkdGg9IjE2Ii8+PHBhdGggZD0ibTExLjUgOC41aC0zLjAwMDAydjNoLTF2LTNoLTN2LTFoM3YtM2gxdjNoMy4wMDAwMnoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=)}.dash--add:not(.dash--disabled):hover{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCBmaWxsPSIjM2E2Y2NjIiBoZWlnaHQ9IjE2IiByeD0iOCIgd2lkdGg9IjE2Ii8+PHBhdGggZD0ibTExLjUgOC41aC0zLjAwMDAydjNoLTF2LTNoLTN2LTFoM3YtM2gxdjNoMy4wMDAwMnoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=)}.dash--add:not(.dash--disabled):active{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCBmaWxsPSIjMzk2NGI4IiBoZWlnaHQ9IjE2IiByeD0iOCIgd2lkdGg9IjE2Ii8+PHBhdGggZD0ibTExLjUgOC41aC0zLjAwMDAydjNoLTF2LTNoLTN2LTFoM3YtM2gxdjNoMy4wMDAwMnoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=)}.dash--back{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjE3IiB2aWV3Qm94PSIwIDAgMTYgMTciIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTMuMzMzMyA3Ljc0Mjg0aC04LjExMzNsMy43MjY2Ni0zLjcyNjY3LS45NDY2Ni0uOTQtNS4zMzMzNCA1LjMzMzMzIDUuMzMzMzQgNS4zMzMzLjk0LS45NC0zLjcyLTMuNzI2NjNoOC4xMTMzeiIgZmlsbD0iIzM2NzFlMyIvPjwvc3ZnPg==)}.dash--back:not(.dash--disabled):hover{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjE3IiB2aWV3Qm94PSIwIDAgMTYgMTciIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTMuMzMzMyA3Ljc0Mjg0aC04LjExMzNsMy43MjY2Ni0zLjcyNjY3LS45NDY2Ni0uOTQtNS4zMzMzNCA1LjMzMzMzIDUuMzMzMzQgNS4zMzMzLjk0LS45NC0zLjcyLTMuNzI2NjNoOC4xMTMzeiIgZmlsbD0iIzNhNmNjYyIvPjwvc3ZnPg==)}.dash--back:not(.dash--disabled):active{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjE3IiB2aWV3Qm94PSIwIDAgMTYgMTciIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTMuMzMzMyA3Ljc0Mjg0aC04LjExMzNsMy43MjY2Ni0zLjcyNjY3LS45NDY2Ni0uOTQtNS4zMzMzNCA1LjMzMzMzIDUuMzMzMzQgNS4zMzMzLjk0LS45NC0zLjcyLTMuNzI2NjNoOC4xMTMzeiIgZmlsbD0iIzM5NjRiOCIvPjwvc3ZnPg==)}.dash--next{padding-left:0;padding-right:20px;background-position:right center}.dash--next{background-image:url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNC42IDMuNCA0LjYgNC42LTQuNiA0LjYgMS40IDEuNCA2LTYtNi02eiIgZmlsbD0iIzM2NzFlMyIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+)}.dash--next:not(.dash--disabled):hover{background-image:url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNC42IDMuNCA0LjYgNC42LTQuNiA0LjYgMS40IDEuNCA2LTYtNi02eiIgZmlsbD0iIzNhNmNjYyIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+)}.dash--next:not(.dash--disabled):active{background-image:url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNC42IDMuNCA0LjYgNC42LTQuNiA0LjYgMS40IDEuNCA2LTYtNi02eiIgZmlsbD0iIzM5NjRiOCIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+)}.dash--disabled{opacity:.5;cursor:default}.log{margin-top:0;margin-bottom:0;display:block;padding:24px;font-family:"Roboto Mono",monospace;font-size:12px;line-height:16px;word-break:break-all}.no-deployment{height:100%;padding-bottom:72px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.data{-ms-flex-negative:0;flex-shrink:0}.data__show-archive{margin-top:18px;-ms-flex-item-align:start;align-self:flex-start}.data__archive{display:none}.data__archive--open{display:block}.no-data{-ms-flex-positive:1;flex-grow:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding-top:50px;padding-bottom:40px}.html-lock{overflow:hidden}.classic-popup{position:fixed;z-index:800;left:0;top:0;width:100%;height:100%;overflow:auto;background:#000000;background:rgba(0,0,0,.5);display:none}.classic-popup__container{display:table;table-layout:fixed;width:100%;height:100%}.classic-popup__viewport{display:table-cell;width:100%;height:100%;text-align:center;vertical-align:middle}.classic-popup__slot{position:relative;display:inline-block;vertical-align:top;text-align:left;margin:20px}.classic-popup__close{position:absolute;right:16px;top:16px;width:40px;height:40px;background-color:transparent;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNUwxMiAxMC41OUw2LjQxIDVMNSA2LjQxTDEwLjU5IDEyTDUgMTcuNTlMNi40MSAxOUwxMiAxMy40MUwxNy41OSAxOUwxOSAxNy41OUwxMy40MSAxMkwxOSA2LjQxWiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg==);background-size:24px 24px;background-repeat:no-repeat;background-position:center center;padding:0;border:none;text-indent:200%;white-space:nowrap;overflow:hidden;cursor:pointer}.dialog{width:400px;padding:40px 24px;background-color:#FFF;border-radius:16px}.dialog--archive:before{content:"";display:block;width:185px;height:120px;margin-left:auto;margin-right:auto;background-image:url(../images/dialog-delete.png);background-size:contain;background-repeat:no-repeat;background-position:center center}@media (-webkit-min-device-pixel-ratio:2), (min-resolution:2dppx){.dialog--archive:before{background-image:url(../images/dialog-delete@2x.png)}}.dialog__content{margin-top:25px;font-weight:700;font-size:16px;line-height:20px;text-align:center}.dialog__footer{margin-top:16px;display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.dialog__action{margin-left:8px}.dialog__action:first-child{margin-left:0}.no-table{background-color:transparent!important;cursor:auto!important}.no-table td{vertical-align:middle;text-align:center;height:352px;padding-top:50px;padding-bottom:50px}.no-table .loading{display:inline-block!important;vertical-align:top!important;margin-top:0!important}.loading{position:relative;display:inline-block;vertical-align:top;padding-left:21px;font-size:14px;line-height:16px;color:#757575}@keyframes loading{to{transform:rotate(360deg)}}.loading:before{content:"";position:absolute;left:0;top:0;bottom:0;right:auto;margin:auto;display:block;width:16px;height:16px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMiA4YzAgMy4zMTM3IDIuNjg2MjkgNiA2IDYgMy4zMTM3IDAgNi0yLjY4NjMgNi02IDAtMy4zMTM3MS0yLjY4NjMtNi02LTYiIHN0cm9rZT0iIzc1NzU3NSIgc3Ryb2tlLXdpZHRoPSIyIi8+PC9zdmc+);background-size:contain;background-repeat:no-repeat;background-position:center center;animation:loading 2.2s linear infinite}.loading--status-alike{font-weight:700;font-size:12px;letter-spacing:.4px;text-transform:uppercase}.loading--alternate:before{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMiA4YzAgMy4zMTM3IDIuNjg2MjkgNiA2IDYgMy4zMTM3IDAgNi0yLjY4NjMgNi02IDAtMy4zMTM3MS0yLjY4NjMtNi02LTYiIHN0cm9rZT0iIzM2NzFlMyIgc3Ryb2tlLXdpZHRoPSIyIi8+PC9zdmc+)}.loading--enlarged{padding-left:0;padding-top:66px;padding-bottom:8px;width:62px;text-align:center}.loading--enlarged:before{left:0;top:0;bottom:auto;right:0;width:52px;height:52px;background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjUyIiB2aWV3Qm94PSIwIDAgNTIgNTIiIHdpZHRoPSI1MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMiAyNmMwIDEzLjI1NDggMTAuNzQ1MiAyNCAyNCAyNHMyNC0xMC43NDUyIDI0LTI0LTEwLjc0NTItMjQtMjQtMjQiIHN0cm9rZT0iIzc1NzU3NSIgc3Ryb2tlLXdpZHRoPSI0Ii8+PC9zdmc+)}.loading--alternate.loading--enlarged:before{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjUyIiB2aWV3Qm94PSIwIDAgNTIgNTIiIHdpZHRoPSI1MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMiAyNmMwIDEzLjI1NDggMTAuNzQ1MiAyNCAyNCAyNHMyNC0xMC43NDUyIDI0LTI0LTEwLjc0NTItMjQtMjQtMjQiIHN0cm9rZT0iIzM2NzFlMyIgc3Ryb2tlLXdpZHRoPSI0Ii8+PC9zdmc+)}.loading--indicator-only{width:16px;height:16px;padding:0;text-indent:200%;white-space:nowrap;overflow:hidden}.loading--indicator-only.loading--enlarged{width:52px;height:52px}.no-log{height:100%;padding-bottom:72px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.nav{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:start;align-items:flex-start}.nav__link{position:relative;display:inline-block;vertical-align:top;background-color:transparent;border:none;padding:21px 16px 19px;font-family:inherit;font-size:14px;line-height:16px;letter-spacing:.75px;text-transform:uppercase;cursor:pointer}.nav__link:hover{color:#3964B8}.nav__link--current{font-weight:500;color:#3964B8}.nav__link--current:after{content:"";position:absolute;left:16px;right:16px;bottom:0;display:block;height:4px;border-top-left-radius:4px;border-top-right-radius:4px;background-color:#3964B8}.break{word-break:break-all}
octopod-frontend/octopod-frontend.cabal+1
@@ -66,6 +66,7 @@ executable frontend
6666 , UndecidableInstances
6767 , FunctionalDependencies
6868 , AllowAmbiguousTypes
69+ , OverloadedLabels
6970 -- other-extensions:
7071 build-depends: aeson
7172 , base >=4.12 && <4.13
octopod-frontend/src/Frontend/GHCJS.hs+10−13
@@ -29,22 +29,18 @@ appAuthKey = "auth"
2929-- | There are project settings that contain the host for API requests,
3030-- websocket host and API authentication token.
3131data ProjectConfig = ProjectConfig
32− { appUrl :: String -- ^ API host.
33− , wsUrl :: String -- ^ WS host.
34− , appAuth :: String -- ^ API authentication token.
32+ { appUrl :: T.Text -- ^ API host.
33+ , wsUrl :: T.Text -- ^ WS host.
34+ , appAuth :: T.Text -- ^ API authentication token.
35+ , kubernetesDashboardUrlTemplate :: Maybe T.Text
36+ -- ^ A k8s dashboard url template to which the name of the deployment is appended.
3537 }
3638 deriving (Generic, Show, Eq)
3739 deriving (FromJSON, ToJSON) via Snake ProjectConfig
3840
39−-- | The type for error handling.
40−data BadConfig = BadConfig
41− deriving (Show)
42−
43−instance Exception BadConfig
44−
4541-- | Reads settings from the config file and puts them into session storage.
4642-- Throws 'BadConfig' if the config file can't be parsed.
47−initConfig' :: JSM ()
43+initConfig' :: JSM (Maybe ProjectConfig)
4844initConfig' = do
4945 w <- currentWindowUnchecked
5046 resp <- fetch w ("/config.json" :: JSString) Nothing
@@ -57,12 +53,13 @@ initConfig' = do
5753 setItem stor appUrlKey $ appUrl cfg
5854 setItem stor wsUrlKey $ wsUrl cfg
5955 setItem stor appAuthKey $ appAuth cfg
60− A.Error _ -> throwM BadConfig
56+ return $ Just cfg
57+ A.Error _ -> return Nothing
6158
6259-- | Reads settings from the config file and puts them into session storage. If
6360-- the config file can't be parsed returns 'False', else 'True'.
64−initConfig :: MonadJSM m => m Bool
65−initConfig = liftJSM $ catchAll (initConfig' >> pure True) (const $ pure False)
61+initConfig :: MonadJSM m => m (Maybe ProjectConfig)
62+initConfig = liftJSM $ catchAll initConfig' (const $ pure Nothing)
6663
6764-- | Gets a value from session storage for the given key.
6865-- Throws an error if key doesn't exist.
octopod-frontend/src/Frontend/Utils.hs+51−5
@@ -10,6 +10,7 @@ module Frontend.Utils where
1010
1111import Control.Lens
1212import Control.Monad
13+import Data.Generics.Labels ()
1314import Data.Map (Map)
1415import Data.Maybe (fromMaybe)
1516import Data.Proxy (Proxy(..))
@@ -24,6 +25,8 @@ import GHCJS.DOM.Node as DOM
2425import Reflex.Dom as R
2526
2627import Common.Types as CT
28+import Control.Monad.Reader
29+import Frontend.GHCJS
2730
2831-- | Wrapper for @Maybe DOM.Element@. It's used by 'elementClick'.
2932newtype ClickedElement =
@@ -193,7 +196,22 @@ aButtonClass
193196 -> m (Event t ())
194197aButtonClass cl lbl = do
195198 (bEl, _) <- elDynAttr' "a"
196− (constDyn $ "class" =: cl <> "type" =: "button") $ text lbl
199+ (constDyn $ "class" =: cl) $ text lbl
200+ return $ domEvent Click bEl
201+
202+-- | Version of 'buttonClass' for links that should look like buttons.
203+aButtonClass'
204+ :: (DomBuilder t m, PostBuild t m)
205+ => Text
206+ -- ^ Classes.
207+ -> Text
208+ -- ^ Label text.
209+ -> Dynamic t (Map Text Text)
210+ -- ^ Extra attributes
211+ -> m (Event t ())
212+aButtonClass' cl lbl eAttrs = do
213+ (bEl, _) <- elDynAttr' "a"
214+ (fmap (<> ("class" =: cl)) eAttrs) $ text lbl
197215 return $ domEvent Click bEl
198216
199217-- | Version of 'buttonDynClass' for links that should look like
@@ -206,7 +224,27 @@ aButtonDynClass
206224 -- ^ Label text.
207225 -> m (Event t ())
208226aButtonDynClass clDyn lblDyn = do
209− let attrDyn = ffor clDyn $ \cl -> "class" =: cl <> "type" =: "button"
227+ let attrDyn = ffor clDyn $ \cl -> "class" =: cl
228+ (bEl, _) <- elDynAttr' "a" attrDyn $
229+ dynText lblDyn
230+ return $ domEvent Click bEl
231+
232+
233+-- | Version of 'buttonDynClass' for links that should look like
234+-- buttons.
235+aButtonDynClass'
236+ :: (DomBuilder t m, PostBuild t m)
237+ => Dynamic t Text
238+ -- ^ Classes.
239+ -> Dynamic t Text
240+ -- ^ Label text.
241+ -> Dynamic t (Map Text Text)
242+ -- ^ Extra attributes
243+ -> m (Event t ())
244+aButtonDynClass' clDyn lblDyn eAttrs = do
245+ let
246+ attrDyn' = ffor clDyn $ \cl -> "class" =: cl
247+ attrDyn = (<>) <$> eAttrs <*> attrDyn'
210248 (bEl, _) <- elDynAttr' "a" attrDyn $
211249 dynText lblDyn
212250 return $ domEvent Click bEl
@@ -225,10 +263,10 @@ aButtonClassEnabled
225263aButtonClassEnabled cl lbl dDyn = do
226264 let
227265 attrDyn = ffor dDyn $ \case
228− True -> "class" =: cl <> "type" =: "button"
266+ True -> "class" =: cl
229267 False -> "class" =: (cl <> " button--disabled")
230− <> "type" =: "button" <> "disabled" =: ""
231− (bEl, _) <- elDynAttr' "button" attrDyn $
268+ <> "disabled" =: ""
269+ (bEl, _) <- elDynAttr' "a" attrDyn $
232270 text lbl
233271 return $ domEvent Click bEl
234272
@@ -468,3 +506,11 @@ pageNotification notEv = mdo
468506 [ messageWidget <$> notEv
469507 , pure never <$ closeEv ]
470508 blank
509+
510+kubeDashboardUrl
511+ :: (MonadReader ProjectConfig m, MonadWidget t m)
512+ => Dynamic t DeploymentFullInfo -> m (Dynamic t (Maybe Text))
513+kubeDashboardUrl deploymentInfo = do
514+ template <- asks kubernetesDashboardUrlTemplate
515+ let name = unDeploymentName . view (#deployment . #name) <$> deploymentInfo
516+ return $ name <&> (\n -> (<> n) <$> template)
octopod-frontend/src/Main.hs+8−5
@@ -14,6 +14,8 @@ import Servant.Reflex
1414
1515import Common.Types as CT
1616import qualified Data.Semigroup as S
17+import Control.Monad.Reader
18+import Data.Maybe
1719import Frontend.API
1820import Frontend.GHCJS
1921import Frontend.Route
@@ -38,8 +40,8 @@ initConfigWidget = do
3840 pb <- getPostBuild
3941 x <- performEvent (initConfig <$ pb)
4042 widgetHold_ loadingWidget $ leftmost
41− [ (headerWidget >> routeWidget) <$ ffilter id x
42− , errorWidget <$ ffilter not x ]
43+ [ (\cfg -> headerWidget >> routeWidget cfg) <$> fmapMaybe id x
44+ , errorWidget <$ ffilter isNothing x ]
4345 return ()
4446
4547-- | Sets up websockets. WS url is obtained from session storage.
@@ -63,8 +65,9 @@ routeWidget
6365 ::
6466 ( MonadWidget t m
6567 , Prerender js t m )
66− => m ()
67−routeWidget = do
68+ => ProjectConfig
69+ -> m ()
70+routeWidget cfg = do
6871 let Right encoder = checkEncoder routeEncoder
6972 pb <- getPostBuild
7073 updAllEv <- wsUpdate
@@ -72,7 +75,7 @@ routeWidget = do
7275 subRoute_ $ \case
7376 DashboardRoute -> do
7477 r <- askRoute
75− dyn_ $ ffor r $ \case
78+ flip runReaderT cfg $ dyn_ $ ffor r $ \case
7679 Nothing -> deploymentsPage updAllEv
7780 Just dn -> deploymentPage updAllEv dn
7881 blank
octopod-frontend/src/Page/Deployment.hs+34−13
@@ -18,7 +18,11 @@ import Servant.Reflex
1818
1919import Common.Types as CT
2020import Common.Utils
21+import Control.Monad.Reader
22+import Data.Align
23+import Data.Generics.Labels ()
2124import Frontend.API
25+import Frontend.GHCJS
2226import Frontend.Route
2327import Frontend.Utils
2428import Page.ClassicPopup
@@ -33,7 +37,9 @@ deploymentPage
3337 ( MonadWidget t m
3438 , RouteToUrl (R Routes) m
3539 , SetRoute t (R Routes) m
36− , Prerender js t m )
40+ , Prerender js t m
41+ , MonadReader ProjectConfig m
42+ )
3743 => Event t () -- ^ Event notifying about the need to update data.
3844 -> DeploymentName -- ^ Name of current deployment.
3945 -> m ()
@@ -53,7 +59,9 @@ deploymentWidget
5359 ( MonadWidget t m
5460 , RouteToUrl (R Routes) m
5561 , SetRoute t (R Routes) m
56− , Prerender js t m)
62+ , Prerender js t m
63+ , MonadReader ProjectConfig m
64+ )
5765 => Event t () -- ^ Event notifying about the need to update data.
5866 -> DeploymentFullInfo -- ^ Initial deployment data.
5967 -> m ()
@@ -81,7 +89,7 @@ deploymentWidget updEv dfi = mdo
8189-- If the status is pending (\"Creating\", \"Updating\", etc)
8290-- then all buttons are inactive.
8391deploymentHead
84− :: MonadWidget t m
92+ :: (MonadWidget t m, MonadReader ProjectConfig m)
8593 => Dynamic t DeploymentFullInfo
8694 -- ^ Deployment data.
8795 -> Event t Bool
@@ -92,7 +100,7 @@ deploymentHead dfiDyn sentEv =
92100 divClass "page__head" $ do
93101 let dname = dfiDyn <^.> dfiName . coerced
94102 elClass "h1" "page__heading title" $ dynText dname
95− editEvEv <- dyn $ dfiDyn <&> \dfi -> case dfi ^. field @"archived" of
103+ (editEv, archEv) <- hold2 . dyn $ dfiDyn <&> \dfi -> case dfi ^. field @"archived" of
96104 True -> mdo
97105 let btnState = not $ isPending $ dfi ^. field @"status"
98106 btnEnabledDyn <- holdDyn btnState $ leftmost [ False <$ btnEv, sentEv ]
@@ -102,7 +110,7 @@ deploymentHead dfiDyn sentEv =
102110 "Recover from archive"
103111 btnEnabledDyn
104112 void $ restoreEndpoint (Right . coerce <$> dname) btnEv
105− pure never
113+ pure (never, never)
106114 False -> mdo
107115 let btnState = not $ isPending $ dfi ^. field @"status"
108116 btnEnabledDyn <- holdDyn btnState $ not <$> sentEv
@@ -115,14 +123,27 @@ deploymentHead dfiDyn sentEv =
115123 \classic-popup-handler"
116124 "Move to archive"
117125 btnEnabledDyn
118− delEv <- confirmArchivePopup archEv $ do
119− text "Are you sure you want to archive the"
120− el "br" blank
121− dynText dname
122− text " deployment?"
123− void $ archiveEndpoint (Right . coerce <$> dname) delEv
124− pure $ R.tag (current dfiDyn) editEv
125− switchHold never editEvEv
126+ pure (R.tag (current dfiDyn) editEv, archEv)
127+ url' <- kubeDashboardUrl dfiDyn
128+ void . dyn $ url' <&> maybe blank (\url ->
129+ void $ aButtonDynClass'
130+ "page__action button button--secondary button--logs"
131+ "Details"
132+ (pure $ "href" =: url)
133+ )
134+ delEv <- confirmArchivePopup archEv $ do
135+ text "Are you sure you want to archive the"
136+ el "br" blank
137+ dynText dname
138+ text " deployment?"
139+ void $ archiveEndpoint (Right . coerce <$> dname) delEv
140+ return editEv
141+
142+hold2
143+ :: (MonadHold t m, Reflex t)
144+ => m (Event t (Event t a, Event t b))
145+ -> m (Event t a, Event t b)
146+hold2 = (>>= fmap fanThese . switchHold never . fmap (uncurry align))
126147
127148-- | Div wrappers.
128149deploymentBodyWrapper :: MonadWidget t m => m a -> m a
octopod-frontend/src/Page/Deployments.hs+21−5
@@ -31,6 +31,7 @@ import Data.Functor
3131import qualified Data.Semigroup as S
3232import Data.These
3333import Frontend.API
34+import Frontend.GHCJS
3435import Frontend.Route
3536import Frontend.Utils
3637import Page.ClassicPopup
@@ -48,7 +49,9 @@ deploymentsPage
4849 ::
4950 ( MonadWidget t m
5051 , RouteToUrl (R Routes) m
51− , SetRoute t (R Routes) m )
52+ , SetRoute t (R Routes) m
53+ , MonadReader ProjectConfig m
54+ )
5255 => Event t () -- ^ Event notifying about the need to update data.
5356 -> m ()
5457deploymentsPage updAllEv = do
@@ -66,7 +69,9 @@ deploymentsWidget
6669 ::
6770 ( MonadWidget t m
6871 , RouteToUrl (R Routes) m
69− , SetRoute t (R Routes) m )
72+ , SetRoute t (R Routes) m
73+ , MonadReader ProjectConfig m
74+ )
7075 => Event t () -- ^ Event notifying about the need to update data.
7176 -> [DeploymentFullInfo] -- ^ Initial deployment data.
7277 -> m ()
@@ -154,7 +159,9 @@ deploymentsListWidget
154159 ::
155160 ( MonadWidget t m
156161 , RouteToUrl (R Routes) m
157− , SetRoute t (R Routes) m )
162+ , SetRoute t (R Routes) m
163+ , MonadReader ProjectConfig m
164+ )
158165 => Event t ()
159166 -> Dynamic t Text
160167 -> [DeploymentFullInfo] -- ^ Initial deployment data
@@ -195,7 +202,9 @@ activeDeploymentsWidget
195202 ::
196203 ( MonadWidget t m
197204 , RouteToUrl (R Routes) m
198− , SetRoute t (R Routes) m )
205+ , SetRoute t (R Routes) m
206+ , MonadReader ProjectConfig m
207+ )
199208 => Event t ClickedElement
200209 -- ^ Event that carries the clicked DOM element. This event is required by
201210 -- `dropdownWidget'`.
@@ -231,7 +240,9 @@ activeDeploymentWidget
231240 ::
232241 ( MonadWidget t m
233242 , RouteToUrl (R Routes) m
234− , SetRoute t (R Routes) m )
243+ , SetRoute t (R Routes) m
244+ , MonadReader ProjectConfig m
245+ )
235246 => Event t ClickedElement
236247 -- ^ Event that carries the clicked DOM element. This event is required by
237248 -- `dropdownWidget'`.
@@ -272,6 +283,11 @@ activeDeploymentWidget clickedEv dDyn' = do
272283 body = do
273284 btnEditEv <- buttonClass "action action--edit" "Edit"
274285 btnArcEv <- buttonClass "action action--archive" "Move to archive"
286+ url' <- kubeDashboardUrl dDyn
287+ void . dyn $ url' <&> maybe blank (\url ->
288+ void $ aButtonClass' "action action--logs" "Details"
289+ (pure $ "href" =: url)
290+ )
275291 pure $
276292 leftmost
277293 [ ArchiveDeployment <$ btnArcEv, EditDeployment <$ btnEditEv ]
octopod-frontend/src/Reflex/MultiEventWriter/Class.hs+1−1
@@ -8,7 +8,7 @@ import Data.Type.Equality
88import Reflex.Dom
99
1010
11−-- | Same as 'EventWriter' but without a fundep and can only have a concrete implementation by EventWriterT.
11+-- | Same as 'EventWriter' but without a fundep.
1212class (Monad m, Semigroup w) => MultiEventWriter t w m | m -> t where
1313 tellMultiEvent :: Event t w -> m ()
1414