diff --git a/bundle/package.json b/bundle/package.json
index a00ea351..72628ce9 100644
--- a/bundle/package.json
+++ b/bundle/package.json
@@ -10,7 +10,7 @@
"dependencies": {
"apr-main": "^4.0.2",
"brule": "^3.1.0",
- "cloudapi-gql": "^4.3.1",
+ "cloudapi-gql": "^4.5.0",
"hapi": "^17.2.0",
"inert": "^5.1.0",
"joyent-navigation": "^1.0.0",
diff --git a/packages/my-joy-beta/src/app.js b/packages/my-joy-beta/src/app.js
index d8b47f10..6f6cbad4 100644
--- a/packages/my-joy-beta/src/app.js
+++ b/packages/my-joy-beta/src/app.js
@@ -39,9 +39,10 @@ const fullTheme = {
}
},
spacing: {
- 0.5: remcalc(4),
0: remcalc(0),
+ 0.5: remcalc(3),
1: remcalc(6),
+ 1.5: remcalc(9),
2: remcalc(12),
3: remcalc(18),
4: remcalc(24),
diff --git a/packages/my-joy-beta/src/components/__tests__/__snapshots__/firewall.spec.js.snap b/packages/my-joy-beta/src/components/__tests__/__snapshots__/firewall.spec.js.snap
new file mode 100644
index 00000000..f5e29824
--- /dev/null
+++ b/packages/my-joy-beta/src/components/__tests__/__snapshots__/firewall.spec.js.snap
@@ -0,0 +1,7233 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+Array [
+ .c0 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+
+ Default firewall rules
+ ,
+ .c0 {
+ margin-top: 1rem;
+}
+
+
,
+]
+`;
+
+exports[`renders without throwing 1`] = `
+Array [
+ .c0 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+
+ Default firewall rules
+ ,
+ .c1 {
+ margin-bottom: 0.5rem;
+}
+
+.c7 {
+ margin-right: undefined;
+}
+
+.c11 {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+}
+
+.c14 {
+ margin-left: undefined;
+}
+
+.c15 {
+ margin-right: 0;
+ margin-bottom: 0;
+}
+
+.c0 {
+ margin-top: 1rem;
+}
+
+.c3 {
+ padding-top: undefined;
+ padding-right: 1rem;
+ padding-bottom: undefined;
+ padding-left: 1rem;
+}
+
+.c6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+}
+
+.c9 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c8 {
+ -webkit-order: 0;
+ -ms-flex-order: 0;
+ order: 0;
+ -webkit-flex-basis: auto;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -webkit-flex-shrink: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+}
+
+.c4 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+}
+
+.c5 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c12 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c16 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-flex: 1;
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.c17 {
+ border: 0.0625rem solid rgb(216,216,216);
+ box-sizing: border-box;
+ border-radius: 0.1875rem;
+ font-size: 0.8125rem;
+ line-height: 1.125rem;
+ padding: 0.3125rem 0.75rem;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-flex: 1;
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.c10 {
+ margin: 0;
+ padding: 0;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ list-style: none;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+}
+
+.c2 {
+ display: inline-block;
+ background-color: rgb(255,255,255);
+ border: 0.0625rem solid rgb(216,216,216);
+ min-width: 100%;
+}
+
+.c13 {
+ display: inline-block;
+ background-color: rgb(255,255,255);
+ border: 0.0625rem solid rgb(216,216,216);
+ min-width: 100%;
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:0em) {
+ .c5 {
+ -webkit-flex-basis: 25%;
+ -ms-flex-preferred-size: 25%;
+ flex-basis: 25%;
+ max-width: 25%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c12 {
+ -webkit-flex-basis: 16.666666666666668%;
+ -ms-flex-preferred-size: 16.666666666666668%;
+ flex-basis: 16.666666666666668%;
+ max-width: 16.666666666666668%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
,
+]
+`;
+
+exports[`renders without throwing 1`] = `
+.c0 {
+ margin-bottom: 2rem;
+}
+
+.c5 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c1 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c2 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c3 {
+ display: none;
+}
+
+.c3:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c3:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c3:checked + label:active {
+ box-shadow: none;
+}
+
+.c4 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c4::selection {
+ background: none;
+}
+
+.c4:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c4:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c4:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c4:after,
+.c4:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c4:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c4:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c4:before {
+ display: none;
+}
+
+
+`;
+
+exports[`renders without throwing 1`] = `
+Array [
+ .c8 {
+ margin-bottom: 0.5rem;
+}
+
+.c14 {
+ margin-right: undefined;
+}
+
+.c18 {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+}
+
+.c7 {
+ margin-top: 1rem;
+}
+
+.c0 {
+ margin-bottom: 2rem;
+}
+
+.c10 {
+ padding-top: undefined;
+ padding-right: 1rem;
+ padding-bottom: undefined;
+ padding-left: 1rem;
+}
+
+.c13 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+}
+
+.c16 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c15 {
+ -webkit-order: 0;
+ -ms-flex-order: 0;
+ order: 0;
+ -webkit-flex-basis: auto;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -webkit-flex-shrink: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+}
+
+.c23 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c23 + p,
+.c23 + small,
+.c23 + h1,
+.c23 + h2,
+.c23 + label,
+.c23 + h3,
+.c23 + h4,
+.c23 + h5,
+.c23 + div,
+.c23 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c5 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c11 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+}
+
+.c22 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c12 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c19 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c6 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+.c21 {
+ background-color: rgb(216,216,216);
+ margin: 0;
+ background-color: transparent;
+ height: 0.75rem;
+}
+
+.c1 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c2 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c3 {
+ display: none;
+}
+
+.c3:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c3:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c3:checked + label:active {
+ box-shadow: none;
+}
+
+.c4 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c4::selection {
+ background: none;
+}
+
+.c4:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c4:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c4:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c4:after,
+.c4:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c4:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c4:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c4:before {
+ display: none;
+}
+
+.c17 {
+ margin: 0;
+ padding: 0;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ list-style: none;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+}
+
+.c9 {
+ display: inline-block;
+ background-color: rgb(255,255,255);
+ border: 0.0625rem solid rgb(216,216,216);
+ min-width: 100%;
+}
+
+.c20 {
+ display: inline-block;
+ background-color: rgb(255,255,255);
+ border: 0.0625rem solid rgb(216,216,216);
+ min-width: 100%;
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:0em) {
+ .c12 {
+ -webkit-flex-basis: 25%;
+ -ms-flex-preferred-size: 25%;
+ flex-basis: 25%;
+ max-width: 25%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c19 {
+ -webkit-flex-basis: 16.666666666666668%;
+ -ms-flex-preferred-size: 16.666666666666668%;
+ flex-basis: 16.666666666666668%;
+ max-width: 16.666666666666668%;
+ display: block;
+ }
+}
+
+,
+ .c0 {
+ margin-bottom: 2rem;
+}
+
+.c5 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c1 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c2 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c3 {
+ display: none;
+}
+
+.c3:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c3:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c3:checked + label:active {
+ box-shadow: none;
+}
+
+.c4 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c4::selection {
+ background: none;
+}
+
+.c4:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c4:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c4:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c4:after,
+.c4:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c4:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c4:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c4:before {
+ display: none;
+}
+
+,
+]
+`;
+
+exports[`renders without throwing 1`] = `
+.c12 {
+ margin-bottom: 0.5rem;
+}
+
+.c7 {
+ margin-top: 1rem;
+}
+
+.c0 {
+ margin-bottom: 2rem;
+}
+
+.c8 {
+ margin-top: 4rem;
+}
+
+.c10 {
+ padding: 8rem;
+}
+
+.c11 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c15 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c15 + p,
+.c15 + small,
+.c15 + h1,
+.c15 + h2,
+.c15 + label,
+.c15 + h3,
+.c15 + h4,
+.c15 + h5,
+.c15 + div,
+.c15 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c5 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c6 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+.c14 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+.c14 + p,
+.c14 + small,
+.c14 + h1,
+.c14 + h2,
+.c14 + label,
+.c14 + h3,
+.c14 + h4,
+.c14 + h5,
+.c14 + div,
+.c14 + span {
+ margin-top: 1.5rem;
+}
+
+.c9 {
+ box-sizing: content-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 1 0 auto;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ position: relative;
+ border-width: 0.0625rem;
+ border-style: solid;
+ -webkit-transition: all 300ms ease;
+ transition: all 300ms ease;
+ color: rgba(73,73,73,1);
+ background-color: rgb(255,255,255);
+ border-color: rgb(216,216,216);
+}
+
+.c1 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c2 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c3 {
+ display: none;
+}
+
+.c3:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c3:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c3:checked + label:active {
+ box-shadow: none;
+}
+
+.c4 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c4::selection {
+ background: none;
+}
+
+.c4:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c4:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c4:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c4:after,
+.c4:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c4:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c4:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c4:before {
+ display: none;
+}
+
+.c13 {
+ color: rgb(151,151,151);
+}
+
+
+`;
+
+exports[`renders without throwing 1`] = `
+Array [
+ .c8 {
+ margin-bottom: 0.5rem;
+}
+
+.c14 {
+ margin-right: undefined;
+}
+
+.c18 {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+}
+
+.c19 {
+ margin-left: undefined;
+}
+
+.c20 {
+ margin-right: 0;
+ margin-bottom: 0;
+}
+
+.c7 {
+ margin-top: 1rem;
+}
+
+.c0 {
+ margin-bottom: 2rem;
+}
+
+.c10 {
+ padding-top: undefined;
+ padding-right: 1rem;
+ padding-bottom: undefined;
+ padding-left: 1rem;
+}
+
+.c13 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+}
+
+.c16 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c15 {
+ -webkit-order: 0;
+ -ms-flex-order: 0;
+ order: 0;
+ -webkit-flex-basis: auto;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -webkit-flex-shrink: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+}
+
+.c26 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c26 + p,
+.c26 + small,
+.c26 + h1,
+.c26 + h2,
+.c26 + label,
+.c26 + h3,
+.c26 + h4,
+.c26 + h5,
+.c26 + div,
+.c26 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c5 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c11 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+}
+
+.c25 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c12 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c23 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c6 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+.c24 {
+ background-color: rgb(216,216,216);
+ margin: 0;
+ background-color: transparent;
+ height: 0.75rem;
+}
+
+.c21 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-flex: 1;
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.c1 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c2 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c3 {
+ display: none;
+}
+
+.c3:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c3:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c3:checked + label:active {
+ box-shadow: none;
+}
+
+.c4 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c4::selection {
+ background: none;
+}
+
+.c4:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c4:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c4:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c4:after,
+.c4:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c4:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c4:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c4:before {
+ display: none;
+}
+
+.c22 {
+ border: 0.0625rem solid rgb(216,216,216);
+ box-sizing: border-box;
+ border-radius: 0.1875rem;
+ font-size: 0.8125rem;
+ line-height: 1.125rem;
+ padding: 0.3125rem 0.75rem;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-flex: 1;
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.c17 {
+ margin: 0;
+ padding: 0;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ list-style: none;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+}
+
+.c9 {
+ display: inline-block;
+ background-color: rgb(255,255,255);
+ border: 0.0625rem solid rgb(216,216,216);
+ min-width: 100%;
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:0em) {
+ .c12 {
+ -webkit-flex-basis: 25%;
+ -ms-flex-preferred-size: 25%;
+ flex-basis: 25%;
+ max-width: 25%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c23 {
+ -webkit-flex-basis: 16.666666666666668%;
+ -ms-flex-preferred-size: 16.666666666666668%;
+ flex-basis: 16.666666666666668%;
+ max-width: 16.666666666666668%;
+ display: block;
+ }
+}
+
+,
+ .c0 {
+ margin-bottom: 2rem;
+}
+
+.c5 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c1 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c2 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c3 {
+ display: none;
+}
+
+.c3:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c3:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c3:checked + label:active {
+ box-shadow: none;
+}
+
+.c4 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c4::selection {
+ background: none;
+}
+
+.c4:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c4:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c4:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c4:after,
+.c4:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c4:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c4:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c4:before {
+ display: none;
+}
+
+,
+]
+`;
+
+exports[`renders without throwing 1`] = `
+Array [
+ .c0 {
+ margin-bottom: 0.5rem;
+}
+
+.c6 {
+ margin-right: undefined;
+}
+
+.c10 {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+}
+
+.c2 {
+ padding-top: undefined;
+ padding-right: 1rem;
+ padding-bottom: undefined;
+ padding-left: 1rem;
+}
+
+.c5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c7 {
+ -webkit-order: 0;
+ -ms-flex-order: 0;
+ order: 0;
+ -webkit-flex-basis: auto;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -webkit-flex-shrink: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+}
+
+.c3 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+}
+
+.c4 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c11 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c9 {
+ margin: 0;
+ padding: 0;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ list-style: none;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+}
+
+.c1 {
+ display: inline-block;
+ background-color: rgb(255,255,255);
+ border: 0.0625rem solid rgb(216,216,216);
+ min-width: 100%;
+}
+
+@media only screen and (min-width:0em) {
+ .c4 {
+ -webkit-flex-basis: 25%;
+ -ms-flex-preferred-size: 25%;
+ flex-basis: 25%;
+ max-width: 25%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c11 {
+ -webkit-flex-basis: 16.666666666666668%;
+ -ms-flex-preferred-size: 16.666666666666668%;
+ flex-basis: 16.666666666666668%;
+ max-width: 16.666666666666668%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
,
+ .c0 {
+ margin-bottom: 0.5rem;
+}
+
+.c6 {
+ margin-right: undefined;
+}
+
+.c10 {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+}
+
+.c2 {
+ padding-top: undefined;
+ padding-right: 1rem;
+ padding-bottom: undefined;
+ padding-left: 1rem;
+}
+
+.c5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c7 {
+ -webkit-order: 0;
+ -ms-flex-order: 0;
+ order: 0;
+ -webkit-flex-basis: auto;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -webkit-flex-shrink: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+}
+
+.c3 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+}
+
+.c4 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c11 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c9 {
+ margin: 0;
+ padding: 0;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ list-style: none;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+}
+
+.c1 {
+ display: inline-block;
+ background-color: rgb(255,255,255);
+ border: 0.0625rem solid rgb(216,216,216);
+ min-width: 100%;
+}
+
+@media only screen and (min-width:0em) {
+ .c4 {
+ -webkit-flex-basis: 25%;
+ -ms-flex-preferred-size: 25%;
+ flex-basis: 25%;
+ max-width: 25%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c11 {
+ -webkit-flex-basis: 16.666666666666668%;
+ -ms-flex-preferred-size: 16.666666666666668%;
+ flex-basis: 16.666666666666668%;
+ max-width: 16.666666666666668%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
,
+ .c0 {
+ margin-bottom: 0.5rem;
+}
+
+.c6 {
+ margin-right: undefined;
+}
+
+.c10 {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+}
+
+.c2 {
+ padding-top: undefined;
+ padding-right: 1rem;
+ padding-bottom: undefined;
+ padding-left: 1rem;
+}
+
+.c5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c7 {
+ -webkit-order: 0;
+ -ms-flex-order: 0;
+ order: 0;
+ -webkit-flex-basis: auto;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -webkit-flex-shrink: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+}
+
+.c3 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+}
+
+.c4 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c11 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c9 {
+ margin: 0;
+ padding: 0;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ list-style: none;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+}
+
+.c1 {
+ display: inline-block;
+ background-color: rgb(255,255,255);
+ border: 0.0625rem solid rgb(216,216,216);
+ min-width: 100%;
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:0em) {
+ .c4 {
+ -webkit-flex-basis: 25%;
+ -ms-flex-preferred-size: 25%;
+ flex-basis: 25%;
+ max-width: 25%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c11 {
+ -webkit-flex-basis: 16.666666666666668%;
+ -ms-flex-preferred-size: 16.666666666666668%;
+ flex-basis: 16.666666666666668%;
+ max-width: 16.666666666666668%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
,
+ .c0 {
+ margin-bottom: 0.5rem;
+}
+
+.c6 {
+ margin-right: undefined;
+}
+
+.c10 {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+}
+
+.c2 {
+ padding-top: undefined;
+ padding-right: 1rem;
+ padding-bottom: undefined;
+ padding-left: 1rem;
+}
+
+.c5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c7 {
+ -webkit-order: 0;
+ -ms-flex-order: 0;
+ order: 0;
+ -webkit-flex-basis: auto;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -webkit-flex-shrink: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+}
+
+.c3 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+}
+
+.c4 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c11 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c9 {
+ margin: 0;
+ padding: 0;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ list-style: none;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+}
+
+.c1 {
+ display: inline-block;
+ background-color: rgb(255,255,255);
+ border: 0.0625rem solid rgb(216,216,216);
+ min-width: 100%;
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:0em) {
+ .c4 {
+ -webkit-flex-basis: 25%;
+ -ms-flex-preferred-size: 25%;
+ flex-basis: 25%;
+ max-width: 25%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c11 {
+ -webkit-flex-basis: 16.666666666666668%;
+ -ms-flex-preferred-size: 16.666666666666668%;
+ flex-basis: 16.666666666666668%;
+ max-width: 16.666666666666668%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
,
+ .c0 {
+ margin-bottom: 0.5rem;
+}
+
+.c6 {
+ margin-right: undefined;
+}
+
+.c10 {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+}
+
+.c11 {
+ margin-left: undefined;
+}
+
+.c12 {
+ margin-right: 0;
+ margin-bottom: 0;
+}
+
+.c2 {
+ padding-top: undefined;
+ padding-right: 1rem;
+ padding-bottom: undefined;
+ padding-left: 1rem;
+}
+
+.c5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c7 {
+ -webkit-order: 0;
+ -ms-flex-order: 0;
+ order: 0;
+ -webkit-flex-basis: auto;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -webkit-flex-shrink: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+}
+
+.c3 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+}
+
+.c4 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c15 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c13 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-flex: 1;
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.c14 {
+ border: 0.0625rem solid rgb(216,216,216);
+ box-sizing: border-box;
+ border-radius: 0.1875rem;
+ font-size: 0.8125rem;
+ line-height: 1.125rem;
+ padding: 0.3125rem 0.75rem;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-flex: 1;
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.c9 {
+ margin: 0;
+ padding: 0;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ list-style: none;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+}
+
+.c1 {
+ display: inline-block;
+ background-color: rgb(255,255,255);
+ border: 0.0625rem solid rgb(216,216,216);
+ min-width: 100%;
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:0em) {
+ .c4 {
+ -webkit-flex-basis: 25%;
+ -ms-flex-preferred-size: 25%;
+ flex-basis: 25%;
+ max-width: 25%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c15 {
+ -webkit-flex-basis: 16.666666666666668%;
+ -ms-flex-preferred-size: 16.666666666666668%;
+ flex-basis: 16.666666666666668%;
+ max-width: 16.666666666666668%;
+ display: block;
+ }
+}
+
+,
+]
+`;
+
+exports[`renders without throwing 1`] = `null`;
+
+exports[`renders without throwing 1`] = `
+Array [
+ .c0 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+
+ Firewall rules from instance tags
+ ,
+ .c0 {
+ margin-top: 1rem;
+}
+
+
,
+]
+`;
+
+exports[`renders without throwing 1`] = `
+Array [
+ .c0 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+
+ Firewall rules from instance tags
+ ,
+ .c1 {
+ margin-bottom: 0.5rem;
+}
+
+.c7 {
+ margin-right: undefined;
+}
+
+.c11 {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+}
+
+.c14 {
+ margin-left: undefined;
+}
+
+.c15 {
+ margin-right: 0;
+ margin-bottom: 0;
+}
+
+.c0 {
+ margin-top: 1rem;
+}
+
+.c3 {
+ padding-top: undefined;
+ padding-right: 1rem;
+ padding-bottom: undefined;
+ padding-left: 1rem;
+}
+
+.c6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+}
+
+.c9 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c8 {
+ -webkit-order: 0;
+ -ms-flex-order: 0;
+ order: 0;
+ -webkit-flex-basis: auto;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -webkit-flex-shrink: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+}
+
+.c4 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+}
+
+.c5 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c12 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c16 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-flex: 1;
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.c17 {
+ border: 0.0625rem solid rgb(216,216,216);
+ box-sizing: border-box;
+ border-radius: 0.1875rem;
+ font-size: 0.8125rem;
+ line-height: 1.125rem;
+ padding: 0.3125rem 0.75rem;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-flex: 1;
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.c10 {
+ margin: 0;
+ padding: 0;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ list-style: none;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+}
+
+.c2 {
+ display: inline-block;
+ background-color: rgb(255,255,255);
+ border: 0.0625rem solid rgb(216,216,216);
+ min-width: 100%;
+}
+
+.c13 {
+ display: inline-block;
+ background-color: rgb(255,255,255);
+ border: 0.0625rem solid rgb(216,216,216);
+ min-width: 100%;
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:0em) {
+ .c5 {
+ -webkit-flex-basis: 25%;
+ -ms-flex-preferred-size: 25%;
+ flex-basis: 25%;
+ max-width: 25%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c12 {
+ -webkit-flex-basis: 16.666666666666668%;
+ -ms-flex-preferred-size: 16.666666666666668%;
+ flex-basis: 16.666666666666668%;
+ max-width: 16.666666666666668%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
+ All VMs in DC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
,
+]
+`;
+
+exports[`renders without throwing 1`] = `
+.c1 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c2 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c0 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c3 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c4 {
+ display: none;
+}
+
+.c4:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c4:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c4:checked + label:active {
+ box-shadow: none;
+}
+
+.c5 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c5::selection {
+ background: none;
+}
+
+.c5:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c5:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c5:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c5:after,
+.c5:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c5:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c5:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c5:before {
+ display: none;
+}
+
+
+`;
+
+exports[`renders without throwing 1`] = `
+.c1 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c2 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c6 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+ color: rgb(216,216,216);
+}
+
+.c0 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c3 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c4 {
+ display: none;
+}
+
+.c4:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c4:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c4:checked + label:active {
+ box-shadow: none;
+}
+
+.c5 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+ cursor: not-allowed;
+}
+
+.c5::selection {
+ background: none;
+}
+
+.c5:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c5:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c5:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c5:after,
+.c5:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c5:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c5:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c5:before {
+ display: none;
+}
+
+.c5:active {
+ box-shadow: none;
+}
+
+.c5:active:after {
+ padding-right: 0;
+}
+
+.c5:before {
+ cursor: not-allowed;
+}
+
+.c5:after {
+ cursor: not-allowed;
+ background: rgb(230,230,230);
+}
+
+.c5:hover {
+ border: 0.0625rem solid rgb(216,216,216);
+}
+
+.c5:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+
+`;
+
+exports[`renders without throwing 1`] = `
+.c1 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c5 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c0 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c2 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c3 {
+ display: none;
+}
+
+.c3:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c3:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c3:checked + label:active {
+ box-shadow: none;
+}
+
+.c4 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c4::selection {
+ background: none;
+}
+
+.c4:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c4:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c4:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c4:after,
+.c4:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c4:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c4:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c4:before {
+ display: none;
+}
+
+
+`;
diff --git a/packages/my-joy-beta/src/components/__tests__/__snapshots__/tags.spec.js.snap b/packages/my-joy-beta/src/components/__tests__/__snapshots__/tags.spec.js.snap
index 7e959b10..ea55e4ce 100644
--- a/packages/my-joy-beta/src/components/__tests__/__snapshots__/tags.spec.js.snap
+++ b/packages/my-joy-beta/src/components/__tests__/__snapshots__/tags.spec.js.snap
@@ -2082,7 +2082,7 @@ exports[`renders without throwing 1`] = `
border-radius: 0.1875rem;
font-size: 0.8125rem;
line-height: 1.125rem;
- padding: 0.375rem 0.75rem;
+ padding: 0.3125rem 0.75rem;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
@@ -2138,7 +2138,7 @@ exports[`renders without throwing 1`] = `
border-radius: 0.1875rem;
font-size: 0.8125rem;
line-height: 1.125rem;
- padding: 0.375rem 0.75rem;
+ padding: 0.3125rem 0.75rem;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
diff --git a/packages/my-joy-beta/src/components/__tests__/firewall.spec.js b/packages/my-joy-beta/src/components/__tests__/firewall.spec.js
new file mode 100644
index 00000000..1b808291
--- /dev/null
+++ b/packages/my-joy-beta/src/components/__tests__/firewall.spec.js
@@ -0,0 +1,275 @@
+import React, { Fragment } from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import Firewall, { Rules, TagRules, DefaultRules, ToggleFirewallForm, ToggleInactiveForm } from '../firewall';
+import Theme from '@mocks/theme';
+
+const rules = [
+ {
+ id: '3473327e-6d0c-4747-97c5-ced1260a7e42',
+ enabled: true,
+ rule_str: 'FROM any TO all vms ALLOW icmp TYPE 8 CODE 0',
+ rule_obj: {
+ from: [['wildcard', 'any']],
+ to: [['wildcard', 'vmall']],
+ action: 'allow',
+ protocol: {
+ name: 'icmp',
+ targets: ['8:0']
+ },
+ isWildcard: true,
+ tags: []
+ },
+ global: true,
+ description: null
+ },
+ {
+ id: '24d55d2f-12ba-4935-9de9-ac305b8a40a5',
+ enabled: true,
+ rule_str: 'FROM any TO all vms ALLOW icmp6 TYPE all',
+ rule_obj: {
+ from: [['wildcard', 'any']],
+ to: [['wildcard', 'vmall']],
+ action: 'allow',
+ protocol: {
+ name: 'icmp6',
+ targets: ['all']
+ },
+ isWildcard: true,
+ tags: []
+ },
+ global: true,
+ description: 'allow all ICMPv6 types'
+ },
+ {
+ id: '4bd8b2e2-981b-474b-9b8b-0b53fecb4b71',
+ enabled: false,
+ rule_str: 'FROM all vms TO all vms ALLOW tcp PORT all',
+ rule_obj: {
+ from: [['wildcard', 'vmall']],
+ to: [['wildcard', 'vmall']],
+ action: 'allow',
+ protocol: {
+ name: 'tcp',
+ targets: ['all']
+ },
+ isWildcard: true,
+ tags: []
+ },
+ global: null,
+ description: null
+ },
+ {
+ id: 'af549024-b3b1-43bf-8a66-49c2b2dc5640',
+ enabled: false,
+ rule_str: 'FROM all vms TO all vms ALLOW tcp PORT all',
+ rule_obj: {
+ from: [['wildcard', 'vmall']],
+ to: [['wildcard', 'vmall']],
+ action: 'allow',
+ protocol: {
+ name: 'tcp',
+ targets: ['all']
+ },
+ isWildcard: true,
+ tags: []
+ },
+ global: null,
+ description: null
+ },
+ {
+ id: '9e5a152a-582b-4525-909e-f9c55deb7f03',
+ enabled: false,
+ rule_str: 'FROM any TO tag "wat" ALLOW tcp PORT all',
+ rule_obj: {
+ from: [['wildcard', 'any']],
+ to: [['tag', 'wat']],
+ action: 'allow',
+ protocol: {
+ name: 'tcp',
+ targets: ['all']
+ },
+ isWildcard: false,
+ tags: ['wat']
+ },
+ global: null,
+ description: null
+ }
+];
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+ !rule_obj.tags.length
+ )}
+ enabled
+ />
+ !rule_obj.tags.length
+ )}
+ />
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+ rule_obj.tags.length)}
+ enabled
+ />
+ rule_obj.tags.length)}
+ />
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
diff --git a/packages/my-joy-beta/src/components/create-instance/__tests__/__snapshots__/package.spec.js.snap b/packages/my-joy-beta/src/components/create-instance/__tests__/__snapshots__/package.spec.js.snap
index 51b97bd1..4744d741 100644
--- a/packages/my-joy-beta/src/components/create-instance/__tests__/__snapshots__/package.spec.js.snap
+++ b/packages/my-joy-beta/src/components/create-instance/__tests__/__snapshots__/package.spec.js.snap
@@ -1923,7 +1923,6 @@ exports[`renders without throwing 1`] = `
className="c10"
>
@@ -2369,7 +2368,6 @@ exports[`renders without throwing 1`] = `
className="c10"
>
@@ -2815,7 +2813,6 @@ exports[`renders without throwing 1`] = `
className="c10"
>
@@ -3594,7 +3591,6 @@ exports[`renders without throwing 1`] = `
className="c10"
>
diff --git a/packages/my-joy-beta/src/components/create-instance/package.js b/packages/my-joy-beta/src/components/create-instance/package.js
index 8a2987fb..eaab3434 100644
--- a/packages/my-joy-beta/src/components/create-instance/package.js
+++ b/packages/my-joy-beta/src/components/create-instance/package.js
@@ -26,7 +26,7 @@ import {
MemoryIcon
} from 'joyent-ui-toolkit';
-import Empty from './empty';
+import Empty from '@components/empty';
const GroupIcons = {
MEMORY: ,
diff --git a/packages/my-joy-beta/src/components/create-instance/empty.js b/packages/my-joy-beta/src/components/empty.js
similarity index 89%
rename from packages/my-joy-beta/src/components/create-instance/empty.js
rename to packages/my-joy-beta/src/components/empty.js
index 9c5beb2d..3ff358f7 100644
--- a/packages/my-joy-beta/src/components/create-instance/empty.js
+++ b/packages/my-joy-beta/src/components/empty.js
@@ -15,7 +15,7 @@ export default ({ children }) => (
-
+
{children}
diff --git a/packages/my-joy-beta/src/components/create-instance/firewall.js b/packages/my-joy-beta/src/components/firewall.js
similarity index 73%
rename from packages/my-joy-beta/src/components/create-instance/firewall.js
rename to packages/my-joy-beta/src/components/firewall.js
index 374fd6ed..c6c66c15 100644
--- a/packages/my-joy-beta/src/components/create-instance/firewall.js
+++ b/packages/my-joy-beta/src/components/firewall.js
@@ -9,6 +9,7 @@ import is from 'styled-is';
import {
H3,
FormGroup,
+ FormLabel,
Toggle,
Divider,
Row,
@@ -18,7 +19,7 @@ import {
} from 'joyent-ui-toolkit';
import Tag from '@components/tags';
-import Empty from './empty';
+import Empty from '@components/empty';
const capitalizeFirstLetter = string =>
string.charAt(0).toUpperCase() + string.slice(1);
@@ -41,7 +42,11 @@ const Wildcards = {
const parsePartial = (p, index) => {
if (p[0] === 'wildcard') {
- return {Wildcards[p[1]]} ;
+ return (
+
+ {Wildcards[p[1]]}
+
+ );
}
if (p[0] === 'tag') {
@@ -64,7 +69,7 @@ const Rule = ({ enabled, rule_obj }) => {
return (
-
+
@@ -126,6 +131,55 @@ const Rule = ({ enabled, rule_obj }) => {
);
};
+export const Rules = ({ rules = [] }) => (
+
+ {rules.map(rule => (
+
+
+
+ ))}
+
+);
+
+export const DefaultRules = ({ rules = [] }) => (
+
+ Default firewall rules
+
+
+
+
+);
+
+export const TagRules = ({ rules = [] }) => (
+
+ Firewall rules from instance tags
+
+
+
+
+);
+
+export const ToggleFirewallForm = ({ handleSubmit, submitting }) => (
+
+);
+
+export const ToggleInactiveForm = () => (
+
+);
+
export default ({
defaultRules = [],
tagRules = [],
@@ -143,38 +197,16 @@ export default ({
) : null}
- {enabled && defaultRules.length ? (
-
- Default firewall rules
-
- {defaultRules.map(rule => (
-
-
-
- ))}
-
-
- ) : null}
- {enabled && !defaultRules.length ? (
-
+ {enabled ? : null}
+ {enabled && !tagRules.length && !defaultRules.length ? (
+
Sorry, but we weren’t able to find any firewall rules.
) : null}
{enabled && tagRules.length && defaultRules.length ? (
) : null}
- {enabled && tagRules.length ? (
-
- Firewall rules from instance tags
-
- {tagRules.map(rule => (
-
-
-
- ))}
-
-
- ) : null}
+ {enabled && tagRules.length ? : null}
{enabled && (tagRules.length || defaultRules.length) ? (
) : null}
diff --git a/packages/my-joy-beta/src/containers/create-instance/firewall.js b/packages/my-joy-beta/src/containers/create-instance/firewall.js
index b0b721d3..fe106af9 100644
--- a/packages/my-joy-beta/src/containers/create-instance/firewall.js
+++ b/packages/my-joy-beta/src/containers/create-instance/firewall.js
@@ -13,7 +13,7 @@ import { StatusLoader, FirewallIcon, H3, Button } from 'joyent-ui-toolkit';
import Title from '@components/create-instance/title';
import Description from '@components/description';
-import FirewallForm from '@components/create-instance/firewall';
+import FirewallForm from '@components/firewall';
import ListFwRules from '@graphql/list-fw-rules.gql';
const FORM_NAME = 'CREATE-INSTANCE-FIREWALL';
@@ -132,20 +132,13 @@ export default compose(
refetch
} = data;
- const rules = forceArray(firewall_rules_create_machine)
- .filter(({ enabled }) => enabled || showInactive)
- .map(({ rule_obj, ...rule }) => ({
- ...rule,
- rule_obj: {
- ...rule_obj,
- from: forceArray(rule_obj.from).map(f => forceArray(f)),
- to: forceArray(rule_obj.to).map(t => forceArray(t))
- }
- }));
+ const rules = forceArray(firewall_rules_create_machine).filter(
+ ({ enabled }) => enabled || showInactive
+ );
return {
- defaultRules: rules.filter(({ tag }) => !tag),
- tagRules: rules.filter(({ tag }) => tag),
+ defaultRules: rules.filter(({ rule_obj = {} }) => rule_obj.isWildcard),
+ tagRules: rules.filter(({ rule_obj = {} }) => rule_obj.tags.length),
loading,
error,
refetch
diff --git a/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/cns.spec.js.snap b/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/cns.spec.js.snap
index ed8d51d4..f4fe0d5c 100644
--- a/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/cns.spec.js.snap
+++ b/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/cns.spec.js.snap
@@ -3864,7 +3864,7 @@ exports[`renders without throwing 1`] = `
border-radius: 0.1875rem;
font-size: 0.8125rem;
line-height: 1.125rem;
- padding: 0.375rem 0.75rem;
+ padding: 0.3125rem 0.75rem;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
@@ -5871,7 +5871,7 @@ exports[`renders without throwing 1`] = `
border-radius: 0.1875rem;
font-size: 0.8125rem;
line-height: 1.125rem;
- padding: 0.375rem 0.75rem;
+ padding: 0.3125rem 0.75rem;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
diff --git a/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/firewall.spec.js.snap b/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/firewall.spec.js.snap
new file mode 100644
index 00000000..ec2e4693
--- /dev/null
+++ b/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/firewall.spec.js.snap
@@ -0,0 +1,6770 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+Array [
+ .c1 {
+ margin-bottom: 0.25rem;
+}
+
+.c4 {
+ margin-bottom: 1rem;
+}
+
+.c6 {
+ margin-bottom: undefined;
+}
+
+.c14 {
+ margin-top: 4rem;
+}
+
+.c18 {
+ margin-bottom: 0.5rem;
+}
+
+.c16 {
+ padding: 8rem;
+}
+
+.c5 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c5 + p,
+.c5 + small,
+.c5 + h1,
+.c5 + h2,
+.c5 + label,
+.c5 + h3,
+.c5 + h4,
+.c5 + h5,
+.c5 + div,
+.c5 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c9 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 62.5rem;
+ padding-bottom: 1.125rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c20 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+.c20 + p,
+.c20 + small,
+.c20 + h1,
+.c20 + h2,
+.c20 + label,
+.c20 + h3,
+.c20 + h4,
+.c20 + h5,
+.c20 + div,
+.c20 + span {
+ margin-top: 1.5rem;
+}
+
+.c13 {
+ background-color: rgb(216,216,216);
+ margin: 0;
+ height: 0.0625rem;
+}
+
+.c15 {
+ box-sizing: content-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 1 0 auto;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ position: relative;
+ border-width: 0.0625rem;
+ border-style: solid;
+ -webkit-transition: all 300ms ease;
+ transition: all 300ms ease;
+ color: rgba(73,73,73,1);
+ background-color: rgb(255,255,255);
+ border-color: rgb(216,216,216);
+}
+
+.c7 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c10 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c11 {
+ display: none;
+}
+
+.c11:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c11:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c11:checked + label:active {
+ box-shadow: none;
+}
+
+.c12 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c12::selection {
+ background: none;
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c12:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c12:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c12:after,
+.c12:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c12:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c12:before {
+ display: none;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c17 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c19 {
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+@media only screen and (max-width:47.9375rem) {
+ .c0 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 66.66666666666667%;
+ -ms-flex-preferred-size: 66.66666666666667%;
+ flex-basis: 66.66666666666667%;
+ max-width: 66.66666666666667%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags.
+
+
+ Read the docs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sorry, but we weren’t able to find any firewall rules.
+
+
+
+
+
+
,
+ .c1 {
+ margin-bottom: 0.25rem;
+}
+
+.c4 {
+ margin-bottom: 1rem;
+}
+
+.c6 {
+ margin-bottom: undefined;
+}
+
+.c15 {
+ margin-top: 4rem;
+}
+
+.c19 {
+ margin-bottom: 0.5rem;
+}
+
+.c14 {
+ margin-top: 2rem;
+}
+
+.c17 {
+ padding: 8rem;
+}
+
+.c5 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c5 + p,
+.c5 + small,
+.c5 + h1,
+.c5 + h2,
+.c5 + label,
+.c5 + h3,
+.c5 + h4,
+.c5 + h5,
+.c5 + div,
+.c5 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c9 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 62.5rem;
+ padding-bottom: 1.125rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c21 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+.c21 + p,
+.c21 + small,
+.c21 + h1,
+.c21 + h2,
+.c21 + label,
+.c21 + h3,
+.c21 + h4,
+.c21 + h5,
+.c21 + div,
+.c21 + span {
+ margin-top: 1.5rem;
+}
+
+.c13 {
+ background-color: rgb(216,216,216);
+ margin: 0;
+ height: 0.0625rem;
+}
+
+.c16 {
+ box-sizing: content-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 1 0 auto;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ position: relative;
+ border-width: 0.0625rem;
+ border-style: solid;
+ -webkit-transition: all 300ms ease;
+ transition: all 300ms ease;
+ color: rgba(73,73,73,1);
+ background-color: rgb(255,255,255);
+ border-color: rgb(216,216,216);
+}
+
+.c7 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c10 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c11 {
+ display: none;
+}
+
+.c11:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c11:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c11:checked + label:active {
+ box-shadow: none;
+}
+
+.c12 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c12::selection {
+ background: none;
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c12:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c12:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c12:after,
+.c12:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c12:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c12:before {
+ display: none;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c18 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c20 {
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+@media only screen and (max-width:47.9375rem) {
+ .c0 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 66.66666666666667%;
+ -ms-flex-preferred-size: 66.66666666666667%;
+ flex-basis: 66.66666666666667%;
+ max-width: 66.66666666666667%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags.
+
+
+ Read the docs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sorry, but we weren’t able to find any firewall rules.
+
+
+
+
+
+
,
+]
+`;
+
+exports[`renders without throwing 1`] = `
+Array [
+ .c1 {
+ margin-bottom: 0.25rem;
+}
+
+.c4 {
+ margin-bottom: 1rem;
+}
+
+.c6 {
+ margin-bottom: undefined;
+}
+
+.c14 {
+ margin-top: 4rem;
+}
+
+.c18 {
+ margin-bottom: 0.5rem;
+}
+
+.c16 {
+ padding: 8rem;
+}
+
+.c5 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c5 + p,
+.c5 + small,
+.c5 + h1,
+.c5 + h2,
+.c5 + label,
+.c5 + h3,
+.c5 + h4,
+.c5 + h5,
+.c5 + div,
+.c5 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c9 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 62.5rem;
+ padding-bottom: 1.125rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c20 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+.c20 + p,
+.c20 + small,
+.c20 + h1,
+.c20 + h2,
+.c20 + label,
+.c20 + h3,
+.c20 + h4,
+.c20 + h5,
+.c20 + div,
+.c20 + span {
+ margin-top: 1.5rem;
+}
+
+.c13 {
+ background-color: rgb(216,216,216);
+ margin: 0;
+ height: 0.0625rem;
+}
+
+.c15 {
+ box-sizing: content-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 1 0 auto;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ position: relative;
+ border-width: 0.0625rem;
+ border-style: solid;
+ -webkit-transition: all 300ms ease;
+ transition: all 300ms ease;
+ color: rgba(73,73,73,1);
+ background-color: rgb(255,255,255);
+ border-color: rgb(216,216,216);
+}
+
+.c7 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c10 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c11 {
+ display: none;
+}
+
+.c11:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c11:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c11:checked + label:active {
+ box-shadow: none;
+}
+
+.c12 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c12::selection {
+ background: none;
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c12:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c12:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c12:after,
+.c12:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c12:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c12:before {
+ display: none;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c17 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c19 {
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+@media only screen and (max-width:47.9375rem) {
+ .c0 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 66.66666666666667%;
+ -ms-flex-preferred-size: 66.66666666666667%;
+ flex-basis: 66.66666666666667%;
+ max-width: 66.66666666666667%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags.
+
+
+ Read the docs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sorry, but we weren’t able to find any firewall rules.
+
+
+
+
+
+
,
+ .c1 {
+ margin-bottom: 0.25rem;
+}
+
+.c4 {
+ margin-bottom: 1rem;
+}
+
+.c6 {
+ margin-bottom: undefined;
+}
+
+.c15 {
+ margin-top: 4rem;
+}
+
+.c19 {
+ margin-bottom: 0.5rem;
+}
+
+.c14 {
+ margin-top: 2rem;
+}
+
+.c17 {
+ padding: 8rem;
+}
+
+.c5 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c5 + p,
+.c5 + small,
+.c5 + h1,
+.c5 + h2,
+.c5 + label,
+.c5 + h3,
+.c5 + h4,
+.c5 + h5,
+.c5 + div,
+.c5 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c9 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 62.5rem;
+ padding-bottom: 1.125rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c21 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+.c21 + p,
+.c21 + small,
+.c21 + h1,
+.c21 + h2,
+.c21 + label,
+.c21 + h3,
+.c21 + h4,
+.c21 + h5,
+.c21 + div,
+.c21 + span {
+ margin-top: 1.5rem;
+}
+
+.c13 {
+ background-color: rgb(216,216,216);
+ margin: 0;
+ height: 0.0625rem;
+}
+
+.c16 {
+ box-sizing: content-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 1 0 auto;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ position: relative;
+ border-width: 0.0625rem;
+ border-style: solid;
+ -webkit-transition: all 300ms ease;
+ transition: all 300ms ease;
+ color: rgba(73,73,73,1);
+ background-color: rgb(255,255,255);
+ border-color: rgb(216,216,216);
+}
+
+.c7 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c10 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c11 {
+ display: none;
+}
+
+.c11:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c11:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c11:checked + label:active {
+ box-shadow: none;
+}
+
+.c12 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c12::selection {
+ background: none;
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c12:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c12:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c12:after,
+.c12:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c12:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c12:before {
+ display: none;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c18 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c20 {
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+@media only screen and (max-width:47.9375rem) {
+ .c0 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 66.66666666666667%;
+ -ms-flex-preferred-size: 66.66666666666667%;
+ flex-basis: 66.66666666666667%;
+ max-width: 66.66666666666667%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags.
+
+
+ Read the docs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sorry, but we weren’t able to find any firewall rules.
+
+
+
+
+
+
,
+]
+`;
+
+exports[`renders without throwing 1`] = `
+Array [
+ .c1 {
+ margin-bottom: 0.25rem;
+}
+
+.c4 {
+ margin-bottom: 1rem;
+}
+
+.c7 {
+ fill: rgb(59,70,204);
+ stroke: rgb(59,70,204);
+ -webkit-animation: iCqDak 1.5s ease-out 0s infinite;
+ animation: iCqDak 1.5s ease-out 0s infinite;
+}
+
+.c8 {
+ fill: rgb(59,70,204);
+ stroke: rgb(59,70,204);
+ -webkit-animation: iCqDak 1.5s ease-out 0s infinite;
+ animation: iCqDak 1.5s ease-out 0s infinite;
+ -webkit-animation-delay: 0.5s;
+ animation-delay: 0.5s;
+}
+
+.c9 {
+ fill: rgb(59,70,204);
+ stroke: rgb(59,70,204);
+ -webkit-animation: iCqDak 1.5s ease-out 0s infinite;
+ animation: iCqDak 1.5s ease-out 0s infinite;
+ -webkit-animation-delay: 1s;
+ animation-delay: 1s;
+}
+
+.c5 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c5 + p,
+.c5 + small,
+.c5 + h1,
+.c5 + h2,
+.c5 + label,
+.c5 + h3,
+.c5 + h4,
+.c5 + h5,
+.c5 + div,
+.c5 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c10 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ text-align: center;
+ margin-bottom: 0;
+ margin-left: 0.375rem;
+}
+
+.c10 + p,
+.c10 + small,
+.c10 + h1,
+.c10 + h2,
+.c10 + label,
+.c10 + h3,
+.c10 + h4,
+.c10 + h5,
+.c10 + div,
+.c10 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-content: center;
+ -ms-flex-line-pack: center;
+ align-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ min-height: 1.25rem;
+ -webkit-flex: 1 0 auto;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 62.5rem;
+ padding-bottom: 1.125rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+@media only screen and (max-width:47.9375rem) {
+ .c0 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 66.66666666666667%;
+ -ms-flex-preferred-size: 66.66666666666667%;
+ flex-basis: 66.66666666666667%;
+ max-width: 66.66666666666667%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags.
+
+
+ Read the docs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Loading...
+
+
+
,
+ .c1 {
+ margin-bottom: 0.25rem;
+}
+
+.c4 {
+ margin-bottom: 1rem;
+}
+
+.c7 {
+ fill: rgb(59,70,204);
+ stroke: rgb(59,70,204);
+ -webkit-animation: iCqDak 1.5s ease-out 0s infinite;
+ animation: iCqDak 1.5s ease-out 0s infinite;
+}
+
+.c8 {
+ fill: rgb(59,70,204);
+ stroke: rgb(59,70,204);
+ -webkit-animation: iCqDak 1.5s ease-out 0s infinite;
+ animation: iCqDak 1.5s ease-out 0s infinite;
+ -webkit-animation-delay: 0.5s;
+ animation-delay: 0.5s;
+}
+
+.c9 {
+ fill: rgb(59,70,204);
+ stroke: rgb(59,70,204);
+ -webkit-animation: iCqDak 1.5s ease-out 0s infinite;
+ animation: iCqDak 1.5s ease-out 0s infinite;
+ -webkit-animation-delay: 1s;
+ animation-delay: 1s;
+}
+
+.c5 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c5 + p,
+.c5 + small,
+.c5 + h1,
+.c5 + h2,
+.c5 + label,
+.c5 + h3,
+.c5 + h4,
+.c5 + h5,
+.c5 + div,
+.c5 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c10 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ text-align: center;
+ margin-bottom: 0;
+ margin-left: 0.375rem;
+}
+
+.c10 + p,
+.c10 + small,
+.c10 + h1,
+.c10 + h2,
+.c10 + label,
+.c10 + h3,
+.c10 + h4,
+.c10 + h5,
+.c10 + div,
+.c10 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-content: center;
+ -ms-flex-line-pack: center;
+ align-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ min-height: 1.25rem;
+ -webkit-flex: 1 0 auto;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 62.5rem;
+ padding-bottom: 1.125rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+@media only screen and (max-width:47.9375rem) {
+ .c0 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 66.66666666666667%;
+ -ms-flex-preferred-size: 66.66666666666667%;
+ flex-basis: 66.66666666666667%;
+ max-width: 66.66666666666667%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags.
+
+
+ Read the docs
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Loading...
+
+
+
,
+]
+`;
+
+exports[`renders without throwing 1`] = `
+.c1 {
+ margin-bottom: 0.25rem;
+}
+
+.c4 {
+ margin-bottom: 1rem;
+}
+
+.c11 {
+ margin-bottom: undefined;
+}
+
+.c19 {
+ margin-top: 4rem;
+}
+
+.c23 {
+ margin-bottom: 0.5rem;
+}
+
+.c21 {
+ padding: 8rem;
+}
+
+.c5 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c5 + p,
+.c5 + small,
+.c5 + h1,
+.c5 + h2,
+.c5 + label,
+.c5 + h3,
+.c5 + h4,
+.c5 + h5,
+.c5 + div,
+.c5 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c14 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 62.5rem;
+ padding-bottom: 1.125rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c25 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+.c25 + p,
+.c25 + small,
+.c25 + h1,
+.c25 + h2,
+.c25 + label,
+.c25 + h3,
+.c25 + h4,
+.c25 + h5,
+.c25 + div,
+.c25 + span {
+ margin-top: 1.5rem;
+}
+
+.c9 {
+ color: rgba(73,73,73,1);
+ font-weight: 600;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c9 + p,
+.c9 + small,
+.c9 + h1,
+.c9 + h2,
+.c9 + label,
+.c9 + h3,
+.c9 + h4,
+.c9 + h5,
+.c9 + div,
+.c9 + span {
+ margin-top: 0.75rem;
+}
+
+.c18 {
+ background-color: rgb(216,216,216);
+ margin: 0;
+ height: 0.0625rem;
+}
+
+.c20 {
+ box-sizing: content-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 1 0 auto;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ position: relative;
+ border-width: 0.0625rem;
+ border-style: solid;
+ -webkit-transition: all 300ms ease;
+ transition: all 300ms ease;
+ color: rgba(73,73,73,1);
+ background-color: rgb(255,255,255);
+ border-color: rgb(216,216,216);
+}
+
+.c12 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c15 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c16 {
+ display: none;
+}
+
+.c16:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c16:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c16:checked + label:active {
+ box-shadow: none;
+}
+
+.c17 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c17::selection {
+ background: none;
+}
+
+.c17:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c17:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c17:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c17:after,
+.c17:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c17:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c17:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c17:before {
+ display: none;
+}
+
+.c6 {
+ position: relative;
+ margin-bottom: 0.75rem;
+ background-color: rgb(255,255,255);
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+ border: 0.0625rem solid rgb(216,216,216);
+ width: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.c7 {
+ min-width: 2.25rem;
+ margin-right: 1.125rem;
+ min-height: 100%;
+ background-color: rgb(0,152,88);
+ background-color: rgb(210,67,58);
+}
+
+.c8 {
+ padding: 0.75rem 0 0.84375rem 0;
+}
+
+.c10 {
+ position: absolute;
+ right: 0.1875rem;
+ margin: 0;
+}
+
+.c13 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c22 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c24 {
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+@media only screen and (max-width:47.9375rem) {
+ .c0 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 66.66666666666667%;
+ -ms-flex-preferred-size: 66.66666666666667%;
+ flex-basis: 66.66666666666667%;
+ max-width: 66.66666666666667%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags.
+
+
+ Read the docs
+
+
+
+
+
+
+
+
+
+
+ Ooops!
+
+
+ An error occurred while loading your firewall rules
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sorry, but we weren’t able to find any firewall rules.
+
+
+
+
+
+
+`;
+
+exports[`renders without throwing 1`] = `
+.c1 {
+ margin-bottom: 0.25rem;
+}
+
+.c4 {
+ margin-bottom: 1rem;
+}
+
+.c11 {
+ margin-bottom: undefined;
+}
+
+.c19 {
+ margin-top: 4rem;
+}
+
+.c23 {
+ margin-bottom: 0.5rem;
+}
+
+.c21 {
+ padding: 8rem;
+}
+
+.c5 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c5 + p,
+.c5 + small,
+.c5 + h1,
+.c5 + h2,
+.c5 + label,
+.c5 + h3,
+.c5 + h4,
+.c5 + h5,
+.c5 + div,
+.c5 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c14 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 62.5rem;
+ padding-bottom: 1.125rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c25 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+.c25 + p,
+.c25 + small,
+.c25 + h1,
+.c25 + h2,
+.c25 + label,
+.c25 + h3,
+.c25 + h4,
+.c25 + h5,
+.c25 + div,
+.c25 + span {
+ margin-top: 1.5rem;
+}
+
+.c9 {
+ color: rgba(73,73,73,1);
+ font-weight: 600;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c9 + p,
+.c9 + small,
+.c9 + h1,
+.c9 + h2,
+.c9 + label,
+.c9 + h3,
+.c9 + h4,
+.c9 + h5,
+.c9 + div,
+.c9 + span {
+ margin-top: 0.75rem;
+}
+
+.c18 {
+ background-color: rgb(216,216,216);
+ margin: 0;
+ height: 0.0625rem;
+}
+
+.c20 {
+ box-sizing: content-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 1 0 auto;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ position: relative;
+ border-width: 0.0625rem;
+ border-style: solid;
+ -webkit-transition: all 300ms ease;
+ transition: all 300ms ease;
+ color: rgba(73,73,73,1);
+ background-color: rgb(255,255,255);
+ border-color: rgb(216,216,216);
+}
+
+.c12 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c15 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c16 {
+ display: none;
+}
+
+.c16:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c16:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c16:checked + label:active {
+ box-shadow: none;
+}
+
+.c17 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c17::selection {
+ background: none;
+}
+
+.c17:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c17:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c17:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c17:after,
+.c17:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c17:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c17:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c17:before {
+ display: none;
+}
+
+.c6 {
+ position: relative;
+ margin-bottom: 0.75rem;
+ background-color: rgb(255,255,255);
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+ border: 0.0625rem solid rgb(216,216,216);
+ width: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.c7 {
+ min-width: 2.25rem;
+ margin-right: 1.125rem;
+ min-height: 100%;
+ background-color: rgb(0,152,88);
+ background-color: rgb(210,67,58);
+}
+
+.c8 {
+ padding: 0.75rem 0 0.84375rem 0;
+}
+
+.c10 {
+ position: absolute;
+ right: 0.1875rem;
+ margin: 0;
+}
+
+.c13 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c22 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c24 {
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+@media only screen and (max-width:47.9375rem) {
+ .c0 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 66.66666666666667%;
+ -ms-flex-preferred-size: 66.66666666666667%;
+ flex-basis: 66.66666666666667%;
+ max-width: 66.66666666666667%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags.
+
+
+ Read the docs
+
+
+
+
+
+
+
+
+
+
+ Ooops!
+
+
+ error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sorry, but we weren’t able to find any firewall rules.
+
+
+
+
+
+
+`;
+
+exports[`renders without throwing 1`] = `
+Array [
+ .c1 {
+ margin-bottom: 0.25rem;
+}
+
+.c4 {
+ margin-bottom: 1rem;
+}
+
+.c6 {
+ margin-bottom: undefined;
+}
+
+.c5 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c5 + p,
+.c5 + small,
+.c5 + h1,
+.c5 + h2,
+.c5 + label,
+.c5 + h3,
+.c5 + h4,
+.c5 + h5,
+.c5 + div,
+.c5 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c9 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 62.5rem;
+ padding-bottom: 1.125rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c13 {
+ background-color: rgb(216,216,216);
+ margin: 0;
+ height: 0.0625rem;
+}
+
+.c7 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c10 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c11 {
+ display: none;
+}
+
+.c11:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c11:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c11:checked + label:active {
+ box-shadow: none;
+}
+
+.c12 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c12::selection {
+ background: none;
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c12:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c12:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c12:after,
+.c12:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c12:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c12:before {
+ display: none;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+@media only screen and (max-width:47.9375rem) {
+ .c0 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 66.66666666666667%;
+ -ms-flex-preferred-size: 66.66666666666667%;
+ flex-basis: 66.66666666666667%;
+ max-width: 66.66666666666667%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags.
+
+
+ Read the docs
+
+
+
+
+
+
+
+
+
,
+ .c1 {
+ margin-bottom: 0.25rem;
+}
+
+.c4 {
+ margin-bottom: 1rem;
+}
+
+.c6 {
+ margin-bottom: undefined;
+}
+
+.c5 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c5 + p,
+.c5 + small,
+.c5 + h1,
+.c5 + h2,
+.c5 + label,
+.c5 + h3,
+.c5 + h4,
+.c5 + h5,
+.c5 + div,
+.c5 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c9 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 62.5rem;
+ padding-bottom: 1.125rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c13 {
+ background-color: rgb(216,216,216);
+ margin: 0;
+ height: 0.0625rem;
+}
+
+.c7 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c10 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c11 {
+ display: none;
+}
+
+.c11:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c11:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c11:checked + label:active {
+ box-shadow: none;
+}
+
+.c12 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c12::selection {
+ background: none;
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c12:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c12:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c12:after,
+.c12:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c12:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c12:before {
+ display: none;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+@media only screen and (max-width:47.9375rem) {
+ .c0 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 66.66666666666667%;
+ -ms-flex-preferred-size: 66.66666666666667%;
+ flex-basis: 66.66666666666667%;
+ max-width: 66.66666666666667%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags.
+
+
+ Read the docs
+
+
+
+
+
+
+
+
+
,
+ .c1 {
+ margin-bottom: 0.25rem;
+}
+
+.c4 {
+ margin-bottom: 1rem;
+}
+
+.c6 {
+ margin-bottom: undefined;
+}
+
+.c18 {
+ margin-bottom: 0.5rem;
+}
+
+.c14 {
+ margin-top: 2rem;
+}
+
+.c15 {
+ margin-top: undefined;
+}
+
+.c17 {
+ margin-top: 1rem;
+}
+
+.c24 {
+ margin-right: undefined;
+}
+
+.c27 {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+}
+
+.c28 {
+ margin-left: undefined;
+}
+
+.c29 {
+ margin-right: 0;
+ margin-bottom: 0;
+}
+
+.c20 {
+ padding-top: undefined;
+ padding-right: 1rem;
+ padding-bottom: undefined;
+ padding-left: 1rem;
+}
+
+.c5 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c5 + p,
+.c5 + small,
+.c5 + h1,
+.c5 + h2,
+.c5 + label,
+.c5 + h3,
+.c5 + h4,
+.c5 + h5,
+.c5 + div,
+.c5 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c9 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 62.5rem;
+ padding-bottom: 1.125rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c21 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+}
+
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c22 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c32 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c16 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+.c13 {
+ background-color: rgb(216,216,216);
+ margin: 0;
+ height: 0.0625rem;
+}
+
+.c30 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-flex: 1;
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.c7 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c10 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c11 {
+ display: none;
+}
+
+.c11:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c11:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c11:checked + label:active {
+ box-shadow: none;
+}
+
+.c12 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c12::selection {
+ background: none;
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c12:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c12:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c12:after,
+.c12:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c12:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c12:before {
+ display: none;
+}
+
+.c25 {
+ -webkit-order: 0;
+ -ms-flex-order: 0;
+ order: 0;
+ -webkit-flex-basis: auto;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -webkit-flex-shrink: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+}
+
+.c31 {
+ border: 0.0625rem solid rgb(216,216,216);
+ box-sizing: border-box;
+ border-radius: 0.1875rem;
+ font-size: 0.8125rem;
+ line-height: 1.125rem;
+ padding: 0.3125rem 0.75rem;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-flex: 1;
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.c26 {
+ margin: 0;
+ padding: 0;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ list-style: none;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c23 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+}
+
+.c19 {
+ display: inline-block;
+ background-color: rgb(255,255,255);
+ border: 0.0625rem solid rgb(216,216,216);
+ min-width: 100%;
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+@media only screen and (max-width:47.9375rem) {
+ .c0 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 66.66666666666667%;
+ -ms-flex-preferred-size: 66.66666666666667%;
+ flex-basis: 66.66666666666667%;
+ max-width: 66.66666666666667%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c22 {
+ -webkit-flex-basis: 25%;
+ -ms-flex-preferred-size: 25%;
+ flex-basis: 25%;
+ max-width: 25%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c32 {
+ -webkit-flex-basis: 16.666666666666668%;
+ -ms-flex-preferred-size: 16.666666666666668%;
+ flex-basis: 16.666666666666668%;
+ max-width: 16.666666666666668%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags.
+
+
+ Read the docs
+
+
+
+
+
+
+
+
+
+
+
+ Firewall rules from instance tags
+
+
+
+
,
+]
+`;
+
+exports[`renders without throwing 2`] = `
+Array [
+ .c1 {
+ margin-bottom: 0.25rem;
+}
+
+.c4 {
+ margin-bottom: 1rem;
+}
+
+.c6 {
+ margin-bottom: undefined;
+}
+
+.c5 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c5 + p,
+.c5 + small,
+.c5 + h1,
+.c5 + h2,
+.c5 + label,
+.c5 + h3,
+.c5 + h4,
+.c5 + h5,
+.c5 + div,
+.c5 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c9 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 62.5rem;
+ padding-bottom: 1.125rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c13 {
+ background-color: rgb(216,216,216);
+ margin: 0;
+ height: 0.0625rem;
+}
+
+.c7 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c10 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c11 {
+ display: none;
+}
+
+.c11:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c11:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c11:checked + label:active {
+ box-shadow: none;
+}
+
+.c12 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c12::selection {
+ background: none;
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c12:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c12:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c12:after,
+.c12:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c12:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c12:before {
+ display: none;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+@media only screen and (max-width:47.9375rem) {
+ .c0 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 66.66666666666667%;
+ -ms-flex-preferred-size: 66.66666666666667%;
+ flex-basis: 66.66666666666667%;
+ max-width: 66.66666666666667%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags.
+
+
+ Read the docs
+
+
+
+
+
+
+
+
+
,
+ .c1 {
+ margin-bottom: 0.25rem;
+}
+
+.c4 {
+ margin-bottom: 1rem;
+}
+
+.c6 {
+ margin-bottom: undefined;
+}
+
+.c5 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c5 + p,
+.c5 + small,
+.c5 + h1,
+.c5 + h2,
+.c5 + label,
+.c5 + h3,
+.c5 + h4,
+.c5 + h5,
+.c5 + div,
+.c5 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c9 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 62.5rem;
+ padding-bottom: 1.125rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c13 {
+ background-color: rgb(216,216,216);
+ margin: 0;
+ height: 0.0625rem;
+}
+
+.c7 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c10 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c11 {
+ display: none;
+}
+
+.c11:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c11:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c11:checked + label:active {
+ box-shadow: none;
+}
+
+.c12 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c12::selection {
+ background: none;
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c12:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c12:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c12:after,
+.c12:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c12:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c12:before {
+ display: none;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+@media only screen and (max-width:47.9375rem) {
+ .c0 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 66.66666666666667%;
+ -ms-flex-preferred-size: 66.66666666666667%;
+ flex-basis: 66.66666666666667%;
+ max-width: 66.66666666666667%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags.
+
+
+ Read the docs
+
+
+
+
+
+
+
+
+
,
+ .c1 {
+ margin-bottom: 0.25rem;
+}
+
+.c4 {
+ margin-bottom: 1rem;
+}
+
+.c6 {
+ margin-bottom: undefined;
+}
+
+.c15 {
+ margin-top: 4rem;
+}
+
+.c18 {
+ margin-bottom: 0.5rem;
+}
+
+.c14 {
+ margin-top: 2rem;
+}
+
+.c17 {
+ margin-top: 1rem;
+}
+
+.c24 {
+ margin-right: undefined;
+}
+
+.c27 {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+}
+
+.c28 {
+ margin-left: undefined;
+}
+
+.c29 {
+ margin-right: 0;
+ margin-bottom: 0;
+}
+
+.c20 {
+ padding-top: undefined;
+ padding-right: 1rem;
+ padding-bottom: undefined;
+ padding-left: 1rem;
+}
+
+.c5 {
+ color: rgba(73,73,73,1);
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0;
+}
+
+.c5 + p,
+.c5 + small,
+.c5 + h1,
+.c5 + h2,
+.c5 + label,
+.c5 + h3,
+.c5 + h4,
+.c5 + h5,
+.c5 + div,
+.c5 + span {
+ padding-bottom: 2.25rem;
+}
+
+.c9 {
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ display: block;
+ color: rgb(70,70,70);
+ text-align: left;
+ margin-right: 0.75rem;
+ font-weight: bold;
+ white-space: pre;
+ font-size: 0.8125rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ box-sizing: border-box;
+ width: 100%;
+ max-width: 62.5rem;
+ padding-bottom: 1.125rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c21 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+}
+
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c22 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c32 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c16 {
+ color: rgba(73,73,73,1);
+ font-weight: normal;
+ line-height: 1.625rem;
+ font-size: 1.3125rem;
+ margin: 0;
+}
+
+.c13 {
+ background-color: rgb(216,216,216);
+ margin: 0;
+ height: 0.0625rem;
+}
+
+.c30 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-flex: 1;
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.c7 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c10 {
+ position: relative;
+ vertical-align: text-bottom;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c11 {
+ display: none;
+}
+
+.c11:checked + label {
+ background: #3B46CC;
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c11:checked + label:after {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c11:checked + label:active {
+ box-shadow: none;
+}
+
+.c12 {
+ outline: 0;
+ display: block;
+ width: 2.875rem;
+ height: 1.5rem;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+ background: rgb(250,250,250);
+ border-radius: 1.4375rem;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ border: 0.0625rem solid rgb(216,216,216);
+ margin-right: 0.375rem;
+}
+
+.c12::selection {
+ background: none;
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 1.5rem rgb(216,216,216);
+}
+
+.c12:hover {
+ border: 0.0625rem solid rgb(59,70,204);
+}
+
+.c12:hover:after {
+ box-shadow: 0 0 0 0.0625rem rgb(59,70,204);
+}
+
+.c12:after,
+.c12:before {
+ position: relative;
+ display: block;
+ content: '';
+ width: 50%;
+ height: 100%;
+}
+
+.c12:after {
+ -webkit-transform: translateX(0%);
+ -ms-transform: translateX(0%);
+ transform: translateX(0%);
+ border-radius: 50%;
+ background: rgb(255,255,255);
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275);
+ box-shadow: 0 0 0 0.0625rem rgb(216,216,216);
+}
+
+.c12:active {
+ box-shadow: inset 0 0 0 2em rgb(216,216,216);
+}
+
+.c12:before {
+ display: none;
+}
+
+.c25 {
+ -webkit-order: 0;
+ -ms-flex-order: 0;
+ order: 0;
+ -webkit-flex-basis: auto;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 0;
+ -webkit-flex-grow: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -webkit-flex-shrink: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+}
+
+.c31 {
+ border: 0.0625rem solid rgb(216,216,216);
+ box-sizing: border-box;
+ border-radius: 0.1875rem;
+ font-size: 0.8125rem;
+ line-height: 1.125rem;
+ padding: 0.3125rem 0.75rem;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-flex: 1;
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.c26 {
+ margin: 0;
+ padding: 0;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ list-style: none;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+}
+
+.c8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c23 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+}
+
+.c19 {
+ display: inline-block;
+ background-color: rgb(255,255,255);
+ border: 0.0625rem solid rgb(216,216,216);
+ min-width: 100%;
+ color: rgb(151,151,151);
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+@media only screen and (max-width:47.9375rem) {
+ .c0 {
+ padding-left: 0.375rem;
+ padding-right: 0.375rem;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-preferred-size: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 66.66666666666667%;
+ -ms-flex-preferred-size: 66.66666666666667%;
+ flex-basis: 66.66666666666667%;
+ max-width: 66.66666666666667%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c22 {
+ -webkit-flex-basis: 25%;
+ -ms-flex-preferred-size: 25%;
+ flex-basis: 25%;
+ max-width: 25%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:0em) {
+ .c32 {
+ -webkit-flex-basis: 16.666666666666668%;
+ -ms-flex-preferred-size: 16.666666666666668%;
+ flex-basis: 16.666666666666668%;
+ max-width: 16.666666666666668%;
+ display: block;
+ }
+}
+
+
+
+
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags.
+
+
+ Read the docs
+
+
+
+
+
+
+
+
+
+
+
+ Default firewall rules
+
+
+
+
,
+]
+`;
diff --git a/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/tags.spec.js.snap b/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/tags.spec.js.snap
index bad19e95..bfe4af06 100644
--- a/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/tags.spec.js.snap
+++ b/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/tags.spec.js.snap
@@ -7059,7 +7059,7 @@ exports[`renders without throwing 1`] = `
border-radius: 0.1875rem;
font-size: 0.8125rem;
line-height: 1.125rem;
- padding: 0.375rem 0.75rem;
+ padding: 0.3125rem 0.75rem;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
diff --git a/packages/my-joy-beta/src/containers/instances/__tests__/cns.spec.js b/packages/my-joy-beta/src/containers/instances/__tests__/cns.spec.js
index 16254732..b35d37f2 100644
--- a/packages/my-joy-beta/src/containers/instances/__tests__/cns.spec.js
+++ b/packages/my-joy-beta/src/containers/instances/__tests__/cns.spec.js
@@ -5,13 +5,6 @@ import 'jest-styled-components';
import { Cns } from '../cns';
import Theme from '@mocks/theme';
-// services = [],
-// hostnames = [],
-// disabled = false,
-// loading = false,
-// mutationError = false,
-// loadingError = null
-
it('renders without throwing', () => {
expect(
renderer
diff --git a/packages/my-joy-beta/src/containers/instances/__tests__/firewall.spec.js b/packages/my-joy-beta/src/containers/instances/__tests__/firewall.spec.js
new file mode 100644
index 00000000..3f2f485e
--- /dev/null
+++ b/packages/my-joy-beta/src/containers/instances/__tests__/firewall.spec.js
@@ -0,0 +1,224 @@
+import React, { Fragment } from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import { Firewall } from '../firewall';
+import Theme from '@mocks/theme';
+
+const rules = [
+ {
+ id: '3473327e-6d0c-4747-97c5-ced1260a7e42',
+ enabled: true,
+ rule_str: 'FROM any TO all vms ALLOW icmp TYPE 8 CODE 0',
+ rule_obj: {
+ from: [['wildcard', 'any']],
+ to: [['wildcard', 'vmall']],
+ action: 'allow',
+ protocol: {
+ name: 'icmp',
+ targets: ['8:0']
+ },
+ isWildcard: true,
+ tags: []
+ },
+ global: true,
+ description: null
+ },
+ {
+ id: '24d55d2f-12ba-4935-9de9-ac305b8a40a5',
+ enabled: true,
+ rule_str: 'FROM any TO all vms ALLOW icmp6 TYPE all',
+ rule_obj: {
+ from: [['wildcard', 'any']],
+ to: [['wildcard', 'vmall']],
+ action: 'allow',
+ protocol: {
+ name: 'icmp6',
+ targets: ['all']
+ },
+ isWildcard: true,
+ tags: []
+ },
+ global: true,
+ description: 'allow all ICMPv6 types'
+ },
+ {
+ id: '4bd8b2e2-981b-474b-9b8b-0b53fecb4b71',
+ enabled: false,
+ rule_str: 'FROM all vms TO all vms ALLOW tcp PORT all',
+ rule_obj: {
+ from: [['wildcard', 'vmall']],
+ to: [['wildcard', 'vmall']],
+ action: 'allow',
+ protocol: {
+ name: 'tcp',
+ targets: ['all']
+ },
+ isWildcard: true,
+ tags: []
+ },
+ global: null,
+ description: null
+ },
+ {
+ id: 'af549024-b3b1-43bf-8a66-49c2b2dc5640',
+ enabled: false,
+ rule_str: 'FROM all vms TO all vms ALLOW tcp PORT all',
+ rule_obj: {
+ from: [['wildcard', 'vmall']],
+ to: [['wildcard', 'vmall']],
+ action: 'allow',
+ protocol: {
+ name: 'tcp',
+ targets: ['all']
+ },
+ isWildcard: true,
+ tags: []
+ },
+ global: null,
+ description: null
+ },
+ {
+ id: '9e5a152a-582b-4525-909e-f9c55deb7f03',
+ enabled: false,
+ rule_str: 'FROM any TO tag "wat" ALLOW tcp PORT all',
+ rule_obj: {
+ from: [['wildcard', 'any']],
+ to: [['tag', 'wat']],
+ action: 'allow',
+ protocol: {
+ name: 'tcp',
+ targets: ['all']
+ },
+ isWildcard: false,
+ tags: ['wat']
+ },
+ global: null,
+ description: null
+ }
+];
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+ rule_obj.tags.length)}
+ />
+ rule_obj.tags.length)}
+ inactive
+ />
+ rule_obj.tags.length)}
+ enabled
+ inactive
+ />
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
+
+it('renders without throwing', () => {
+ expect(
+ renderer
+ .create(
+
+
+ rule_obj.tags.length
+ )}
+ />
+ rule_obj.tags.length
+ )}
+ inactive
+ />
+ rule_obj.tags.length
+ )}
+ enabled
+ inactive
+ />
+
+
+ )
+ .toJSON()
+ ).toMatchSnapshot();
+});
diff --git a/packages/my-joy-beta/src/containers/instances/cns.js b/packages/my-joy-beta/src/containers/instances/cns.js
index effcbcf0..8de605e7 100644
--- a/packages/my-joy-beta/src/containers/instances/cns.js
+++ b/packages/my-joy-beta/src/containers/instances/cns.js
@@ -26,7 +26,7 @@ import UpdateTags from '@graphql/update-tags.gql';
import GetTags from '@graphql/list-tags.gql';
import parseError from '@state/parse-error';
-const CNS_FORM = 'cns-new-service';
+const FORM_NAME = 'cns-new-service';
const CnsContainer = ({
services = [],
@@ -79,7 +79,7 @@ const CnsContainer = ({
}
>
handleAddService(val, services)}
@@ -155,7 +155,7 @@ export default compose(
let disabled = JSON.parse(cnsDisable.value || 'false');
let services = (cnsServices.value || '').split(/,/gi).filter(Boolean);
- const adding = get(form, `${CNS_FORM}.submitting`, false);
+ const adding = get(form, `${FORM_NAME}.submitting`, false);
const toggling = get(values, `cns-${instance.id}-toggling`, false);
const removing = get(values, `cns-${instance.id}-removing`, false);
const enabled = get(values, `cns-${instance.id}-enabled`, undefined);
@@ -343,7 +343,7 @@ export default compose(
});
}
- return dispatch(destroy(CNS_FORM));
+ return dispatch(destroy(FORM_NAME));
}
})
)
diff --git a/packages/my-joy-beta/src/containers/instances/firewall.js b/packages/my-joy-beta/src/containers/instances/firewall.js
index 4a33eb9c..6ec4034a 100644
--- a/packages/my-joy-beta/src/containers/instances/firewall.js
+++ b/packages/my-joy-beta/src/containers/instances/firewall.js
@@ -1,104 +1,192 @@
-import React from 'react';
+import React, { Fragment } from 'react';
+import intercept from 'apr-intercept';
+import { connect } from 'react-redux';
+import { compose, graphql } from 'react-apollo';
+import ReduxForm from 'declarative-redux-form';
+import { SubmissionError } from 'redux-form';
+import { Margin } from 'styled-components-spacing';
+import remcalc from 'remcalc';
+import find from 'lodash.find';
+import get from 'lodash.get';
-export default () => firewalls
;
+import {
+ ViewContainer,
+ Message,
+ MessageTitle,
+ MessageDescription,
+ StatusLoader,
+ Divider
+} from 'joyent-ui-toolkit';
-//
-// import PropTypes from 'prop-types';
-// import forceArray from 'force-array';
-// import { compose, graphql } from 'react-apollo';
-// import find from 'lodash.find';
-// import get from 'lodash.get';
-//
-// import {
-// ViewContainer,
-// StatusLoader,
-// Message,
-// MessageDescription,
-// MessageTitle,
-// Table,
-// TableThead,
-// TableTr,
-// TableTh,
-// TableTbody,
-// P
-// } from 'joyent-ui-toolkit';
-//
-// import GetFirewallRules from '@graphql/list-firewall-rules.gql';
-// import { FirewallRule as InstanceFirewallRule } from '@components/instances';
-//
-// const Firewall = ({
-// // eslint-disable-next-line camelcase
-// firewallEnabled = false,
-// firewallRules = [],
-// loading,
-// error
-// }) => {
-// const values = forceArray(firewallRules);
-// const _loading = !(loading && !values.length) ? null : ;
-//
-// const _firewall =
-// _loading && !values.length ? null : (
-//
-//
-//
-//
-// Rule
-//
-//
-// Global
-//
-//
-// Enabled
-//
-//
-//
-//
-// {values.map(network => (
-//
-// ))}
-//
-//
-// );
-//
-// const _error =
-// error && !values.length && !_loading ? (
-//
-// Ooops!
-//
-// An error occurred while loading your instance firewall rules
-//
-//
-// ) : null;
-//
-// return (
-//
-// {_loading}
-// {_error}
-// {_firewall}
-//
-// );
-// };
-//
-// Firewall.propTypes = {
-// loading: PropTypes.bool
-// };
-//
-// export default compose(
-// graphql(GetFirewallRules, {
-// options: ({ match }) => ({
-// pollInterval: 1000,
-// variables: {
-// name: get(match, 'params.instance')
-// }
-// }),
-// props: ({ data: { loading, error, variables, ...rest } }) => {
-// const machine = find(get(rest, 'machines', []), ['name', variables.name]);
-// // eslint-disable-next-line camelcase
-// const firewallEnabled = get(machine, 'firewall_enabled', false);
-// const firewallRules = get(machine, 'firewall_rules', []);
-//
-// // eslint-disable-next-line camelcase
-// return { firewallEnabled, firewallRules, loading, error };
-// }
-// })
-// )(Firewall);
+import {
+ ToggleFirewallForm,
+ ToggleInactiveForm,
+ DefaultRules,
+ TagRules
+} from '@components/firewall';
+
+import Description from '@components/description';
+import Empty from '@components/empty';
+import GetFirewallRules from '@graphql/list-instance-fw-rules.gql';
+import EnableFirewall from '@graphql/enable-instance-fw.gql';
+import DisableFirewall from '@graphql/disable-instance-fw.gql';
+import parseError from '@state/parse-error';
+
+export const Firewall = ({
+ defaultRules = [],
+ tagRules = [],
+ enabled = false,
+ inactive = false,
+ loading = false,
+ loadingError = null,
+ mutationError = null,
+ handleEnabledToggle
+}) => (
+
+
+
+ Cloud Firewall rules control traffic across instances. Enabling the
+ firewall adds a default set of rules and rules defined by your chosen
+ tags.{' '}
+
+ Read the docs
+
+
+
+ {loading ? : null}
+ {!loading && loadingError ? (
+
+ Ooops!
+
+ An error occurred while loading your firewall rules
+
+
+ ) : null}
+ {!loading && mutationError ? (
+
+ Ooops!
+ {mutationError}
+
+ ) : null}
+
+ {props =>
+ loading ? null : (
+
+
+
+
+
+
+ )
+ }
+
+
+ {props =>
+ !enabled || loading ? null : (
+
+
+
+ )
+ }
+
+ {!loading && !defaultRules.length && !tagRules.length ? (
+
+ Sorry, but we weren’t able to find any firewall rules.
+
+ ) : null}
+ {!loading && enabled && defaultRules.length ? (
+
+
+
+ ) : null}
+ {!loading && enabled && tagRules.length ? (
+
+
+
+ ) : null}
+
+);
+
+export default compose(
+ graphql(EnableFirewall, { name: 'enableFirewall' }),
+ graphql(DisableFirewall, { name: 'disableFirewall' }),
+ graphql(GetFirewallRules, {
+ options: ({ match }) => ({
+ variables: {
+ fetchPolicy: 'network-only',
+ name: get(match, 'params.instance')
+ }
+ }),
+ props: ({ data }) => {
+ const { loading, error, variables, refetch, ...rest } = data;
+ const { name } = variables;
+
+ const instance = find(get(rest, 'machines', []), ['name', name]);
+ const enabled = get(instance, 'firewall_enabled', false);
+ const rules = get(instance, 'firewall_rules', []);
+
+ return {
+ enabled,
+ defaultRules: rules.filter(({ rule_obj = {} }) => rule_obj.isWildcard),
+ tagRules: rules.filter(({ rule_obj = {} }) => rule_obj.tags.length),
+ instance,
+ loading,
+ loadingError: error
+ };
+ }
+ }),
+ connect(
+ (state, ownProps) => {
+ const { form } = state;
+ const { enabled, defaultRules, tagRules } = ownProps;
+
+ const inactive = get(form, `fw-inactive.values.inactive`, false);
+
+ return {
+ inactive,
+ mutationError: get(form, `fw-enabled.error`, null),
+ enabled: get(form, `fw-enabled.values.enabled`, enabled),
+ defaultRules: defaultRules.filter(({ enabled }) => enabled || inactive),
+ tagRules: tagRules.filter(({ enabled }) => enabled || inactive)
+ };
+ },
+ (dispatch, ownProps) => {
+ const { instance, enableFirewall, disableFirewall } = ownProps;
+
+ return {
+ handleEnabledToggle: async ({ enabled }) => {
+ const mutation = enabled ? enableFirewall : disableFirewall;
+
+ const [err] = await intercept(
+ mutation({
+ variables: {
+ id: instance.id
+ }
+ })
+ );
+
+ if (err) {
+ throw new SubmissionError({
+ _error: parseError(err)
+ });
+ }
+ }
+ };
+ }
+ )
+)(Firewall);
diff --git a/packages/my-joy-beta/src/graphql/disable-instance-fw.gql b/packages/my-joy-beta/src/graphql/disable-instance-fw.gql
index 8d70aa7b..2480df31 100644
--- a/packages/my-joy-beta/src/graphql/disable-instance-fw.gql
+++ b/packages/my-joy-beta/src/graphql/disable-instance-fw.gql
@@ -1,3 +1,5 @@
mutation disableMachineFirewall($id: ID!) {
- disableMachineFirewall(id: $id)
+ disableMachineFirewall(id: $id) {
+ id
+ }
}
diff --git a/packages/my-joy-beta/src/graphql/enable-instance-fw.gql b/packages/my-joy-beta/src/graphql/enable-instance-fw.gql
index 7e2f60b9..dabe0c83 100644
--- a/packages/my-joy-beta/src/graphql/enable-instance-fw.gql
+++ b/packages/my-joy-beta/src/graphql/enable-instance-fw.gql
@@ -1,3 +1,5 @@
mutation enableMachineFirewall($id: ID!) {
- enableMachineFirewall(id: $id)
+ enableMachineFirewall(id: $id) {
+ id
+ }
}
diff --git a/packages/my-joy-beta/src/graphql/list-firewall-rules.gql b/packages/my-joy-beta/src/graphql/list-instance-fw-rules.gql
similarity index 85%
rename from packages/my-joy-beta/src/graphql/list-firewall-rules.gql
rename to packages/my-joy-beta/src/graphql/list-instance-fw-rules.gql
index d7ff260d..c28b21c9 100644
--- a/packages/my-joy-beta/src/graphql/list-firewall-rules.gql
+++ b/packages/my-joy-beta/src/graphql/list-instance-fw-rules.gql
@@ -6,9 +6,10 @@ query instance($name: String!) {
firewall_rules {
id
enabled
+ rule_str
+ rule_obj
global
description
- rule
}
}
}
diff --git a/packages/my-joy-beta/src/state/store.js b/packages/my-joy-beta/src/state/store.js
index 403bcc24..9d44aad0 100644
--- a/packages/my-joy-beta/src/state/store.js
+++ b/packages/my-joy-beta/src/state/store.js
@@ -29,7 +29,8 @@ const initialState = {
'Snapshots',
'Tags',
'Metadata',
- 'Networks'
+ 'Networks',
+ 'Firewall'
].map(name => ({
pathname: paramCase(name),
name
diff --git a/packages/ui-toolkit/src/tags/item.js b/packages/ui-toolkit/src/tags/item.js
index 446df782..b3ab7641 100644
--- a/packages/ui-toolkit/src/tags/item.js
+++ b/packages/ui-toolkit/src/tags/item.js
@@ -25,7 +25,7 @@ const Tag = styled.li`
border-radius: ${remcalc(3)};
font-size: ${remcalc(13)};
line-height: ${remcalc(18)};
- padding: ${remcalc(6)} ${remcalc(12)};
+ padding: ${remcalc(5)} ${remcalc(12)};
display: flex;
align-items: center;
flex-grow: 1;
diff --git a/yarn.lock b/yarn.lock
index c945766f..7c8af0c8 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -296,11 +296,11 @@ ammo@3.x.x:
boom "6.x.x"
hoek "5.x.x"
-ansi-align@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba"
+ansi-align@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
dependencies:
- string-width "^1.0.1"
+ string-width "^2.0.0"
ansi-escapes@^1.0.0, ansi-escapes@^1.1.0, ansi-escapes@^1.4.0:
version "1.4.0"
@@ -1878,19 +1878,17 @@ bounce@1.2.x, bounce@1.x.x, bounce@^1.2.0:
boom "7.x.x"
hoek "5.x.x"
-boxen@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6"
+boxen@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
dependencies:
- ansi-align "^1.1.0"
- camelcase "^2.1.0"
- chalk "^1.1.1"
+ ansi-align "^2.0.0"
+ camelcase "^4.0.0"
+ chalk "^2.0.1"
cli-boxes "^1.0.0"
- filled-array "^1.0.0"
- object-assign "^4.0.1"
- repeating "^2.0.0"
- string-width "^1.0.1"
- widest-line "^1.0.0"
+ string-width "^2.0.0"
+ term-size "^1.2.0"
+ widest-line "^2.0.0"
brace-expansion@^1.0.0, brace-expansion@^1.1.7:
version "1.1.8"
@@ -2158,7 +2156,7 @@ camelcase@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
-camelcase@^2.0.0, camelcase@^2.1.0:
+camelcase@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
@@ -2166,7 +2164,7 @@ camelcase@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
-camelcase@^4.1.0:
+camelcase@^4.0.0, camelcase@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
@@ -2427,9 +2425,9 @@ clone@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f"
-cloudapi-gql@^4.3.1:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/cloudapi-gql/-/cloudapi-gql-4.4.0.tgz#285233dd48c92d7d760e74c4b46b11f54c1a8f00"
+cloudapi-gql@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/cloudapi-gql/-/cloudapi-gql-4.5.0.tgz#af2d6c49d108256049c63e761eb5af74390011e2"
dependencies:
apr-map "^1.0.5"
boom "^7.1.1"
@@ -2440,6 +2438,8 @@ cloudapi-gql@^4.3.1:
graphi "^5.2.0"
graphql-tools "^2.6.1"
hasha "^3.0.0"
+ lodash.isundefined "^3.0.1"
+ lodash.uniq "^4.5.0"
random-int "^1.0.0"
reach "^1.0.0"
sentiment "^4.2.0"
@@ -2617,19 +2617,16 @@ concat-stream@^1.4.10, concat-stream@^1.5.0, concat-stream@^1.6.0:
readable-stream "^2.2.2"
typedarray "^0.0.6"
-configstore@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1"
+configstore@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90"
dependencies:
- dot-prop "^3.0.0"
+ dot-prop "^4.1.0"
graceful-fs "^4.1.2"
- mkdirp "^0.5.0"
- object-assign "^4.0.1"
- os-tmpdir "^1.0.0"
- osenv "^0.1.0"
- uuid "^2.0.1"
- write-file-atomic "^1.1.2"
- xdg-basedir "^2.0.0"
+ make-dir "^1.0.0"
+ unique-string "^1.0.0"
+ write-file-atomic "^2.0.0"
+ xdg-basedir "^3.0.0"
connect-history-api-fallback@^1.3.0:
version "1.5.0"
@@ -2909,7 +2906,7 @@ create-ecdh@^4.0.0:
bn.js "^4.1.0"
elliptic "^6.0.0"
-create-error-class@^3.0.0, create-error-class@^3.0.1:
+create-error-class@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
dependencies:
@@ -2999,6 +2996,10 @@ crypto-browserify@^3.11.0:
randombytes "^2.0.0"
randomfill "^1.0.3"
+crypto-random-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
+
css-color-keywords@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
@@ -3507,6 +3508,12 @@ dot-prop@^3.0.0:
dependencies:
is-obj "^1.0.0"
+dot-prop@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
+ dependencies:
+ is-obj "^1.0.0"
+
dotenv-expand@4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.0.1.tgz#68fddc1561814e0a10964111057ff138ced7d7a8"
@@ -3521,12 +3528,6 @@ drip@1.1.0:
dependencies:
tea-concat "0.1.0"
-duplexer2@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
- dependencies:
- readable-stream "^2.0.2"
-
duplexer3@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
@@ -4385,10 +4386,6 @@ fill-range@^4.0.0:
repeat-string "^1.6.1"
to-regex-range "^2.1.0"
-filled-array@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84"
-
fillers@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/fillers/-/fillers-1.1.2.tgz#f57387731e716c3e9f37027952574d211955406a"
@@ -4773,6 +4770,12 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2:
once "^1.3.0"
path-is-absolute "^1.0.0"
+global-dirs@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
+ dependencies:
+ ini "^1.3.4"
+
global-modules@1.0.0, global-modules@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
@@ -4837,26 +4840,6 @@ glogg@^1.0.0:
dependencies:
sparkles "^1.0.0"
-got@^5.0.0:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35"
- dependencies:
- create-error-class "^3.0.1"
- duplexer2 "^0.1.4"
- is-redirect "^1.0.0"
- is-retry-allowed "^1.0.0"
- is-stream "^1.0.0"
- lowercase-keys "^1.0.0"
- node-status-codes "^1.0.0"
- object-assign "^4.0.1"
- parse-json "^2.1.0"
- pinkie-promise "^2.0.0"
- read-all-stream "^3.0.0"
- readable-stream "^2.0.5"
- timed-out "^3.0.0"
- unzip-response "^1.0.2"
- url-parse-lax "^1.0.0"
-
got@^6.7.1:
version "6.7.1"
resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
@@ -5355,6 +5338,10 @@ immutability-helper@^2.1.2:
dependencies:
invariant "^2.2.0"
+import-lazy@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
+
import-local@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/import-local/-/import-local-0.1.1.tgz#b1179572aacdc11c6a91009fb430dbcab5f668a8"
@@ -5678,6 +5665,13 @@ is-in-browser@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835"
+is-installed-globally@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
+ dependencies:
+ global-dirs "^0.1.0"
+ is-path-inside "^1.0.0"
+
is-nil@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-nil/-/is-nil-1.0.1.tgz#2daba29e0b585063875e7b539d071f5b15937969"
@@ -6425,11 +6419,11 @@ klaw@^1.0.0:
optionalDependencies:
graceful-fs "^4.1.9"
-latest-version@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b"
+latest-version@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
dependencies:
- package-json "^2.0.0"
+ package-json "^4.0.0"
lazy-cache@^1.0.3:
version "1.0.4"
@@ -6441,10 +6435,6 @@ lazy-cache@^2.0.2:
dependencies:
set-getter "^0.1.0"
-lazy-req@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac"
-
lcid@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
@@ -7085,8 +7075,8 @@ minio-proto-auth@^1.1.0:
wreck "14.0.x"
mississippi@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.0.tgz#d201583eb12327e3c5c1642a404a9cacf94e34f5"
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.1.tgz#2a8bb465e86550ac8b36a7b6f45599171d78671e"
dependencies:
concat-stream "^1.5.0"
duplexify "^3.4.2"
@@ -7106,7 +7096,7 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
-mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
+mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
dependencies:
@@ -7315,10 +7305,6 @@ node-pre-gyp@^0.6.36, node-pre-gyp@^0.6.39:
tar "^2.2.1"
tar-pack "^3.4.0"
-node-status-codes@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f"
-
node-uuid@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.2.0.tgz#81a9fe32934719852499b58b2523d2cd5fdfd65b"
@@ -7574,7 +7560,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-osenv@^0.1.0, osenv@^0.1.4:
+osenv@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
dependencies:
@@ -7617,16 +7603,7 @@ p-try@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
-package-json@^2.0.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb"
- dependencies:
- got "^5.0.0"
- registry-auth-token "^3.0.1"
- registry-url "^3.0.3"
- semver "^5.1.0"
-
-package-json@^4.0.1:
+package-json@^4.0.0, package-json@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
dependencies:
@@ -7687,7 +7664,7 @@ parse-glob@^3.0.4:
is-extglob "^1.0.0"
is-glob "^2.0.0"
-parse-json@^2.1.0, parse-json@^2.2.0:
+parse-json@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
dependencies:
@@ -8829,13 +8806,6 @@ react@16.2.0, react@^0.14.0, react@^15.5.4, react@^16.2.0:
object-assign "^4.1.1"
prop-types "^15.6.0"
-read-all-stream@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa"
- dependencies:
- pinkie-promise "^2.0.0"
- readable-stream "^2.0.0"
-
read-cmd-shim@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b"
@@ -8904,7 +8874,7 @@ read-pkg@^3.0.0:
normalize-package-data "^2.3.2"
path-type "^3.0.0"
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3:
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
dependencies:
@@ -9801,7 +9771,7 @@ slice-ansi@1.0.0:
dependencies:
is-fullwidth-code-point "^2.0.0"
-slide@^1.1.5, slide@~1.1.3:
+slide@~1.1.3:
version "1.1.6"
resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
@@ -10340,8 +10310,8 @@ sw-precache-webpack-plugin@0.11.4, sw-precache-webpack-plugin@^0.11.4:
uglify-js "^3.0.13"
sw-precache@^5.1.1:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/sw-precache/-/sw-precache-5.2.0.tgz#eb6225ce580ceaae148194578a0ad01ab7ea199c"
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/sw-precache/-/sw-precache-5.2.1.tgz#06134f319eec68f3b9583ce9a7036b1c119f7179"
dependencies:
dom-urls "^1.1.0"
es6-promise "^4.0.5"
@@ -10352,7 +10322,7 @@ sw-precache@^5.1.1:
mkdirp "^0.5.1"
pretty-bytes "^4.0.2"
sw-toolbox "^3.4.0"
- update-notifier "^1.0.3"
+ update-notifier "^2.3.0"
sw-toolbox@^3.4.0:
version "3.6.0"
@@ -10459,6 +10429,12 @@ tempfile@^1.1.1:
os-tmpdir "^1.0.0"
uuid "^2.0.1"
+term-size@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
+ dependencies:
+ execa "^0.7.0"
+
test-exclude@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26"
@@ -10516,17 +10492,13 @@ time-stamp@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357"
-timed-out@^3.0.0:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217"
-
timed-out@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
timers-browserify@^2.0.4:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.5.tgz#04878fb12a155a159c9d1e59faa1f77bf4ecc44c"
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae"
dependencies:
setimmediate "^1.0.4"
@@ -10827,6 +10799,12 @@ unique-slug@^2.0.0:
dependencies:
imurmurhash "^0.1.4"
+unique-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
+ dependencies:
+ crypto-random-string "^1.0.0"
+
unist-util-is@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.1.tgz#0c312629e3f960c66e931e812d3d80e77010947b"
@@ -10888,26 +10866,23 @@ unset-value@^1.0.0:
has-value "^0.3.1"
isobject "^3.0.0"
-unzip-response@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe"
-
unzip-response@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
-update-notifier@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a"
+update-notifier@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451"
dependencies:
- boxen "^0.6.0"
- chalk "^1.0.0"
- configstore "^2.0.0"
+ boxen "^1.2.1"
+ chalk "^2.0.1"
+ configstore "^3.0.0"
+ import-lazy "^2.1.0"
+ is-installed-globally "^0.1.0"
is-npm "^1.0.0"
- latest-version "^2.0.0"
- lazy-req "^1.1.0"
+ latest-version "^3.0.0"
semver-diff "^2.0.0"
- xdg-basedir "^2.0.0"
+ xdg-basedir "^3.0.0"
upper-case-first@^1.1.0:
version "1.1.2"
@@ -11381,11 +11356,11 @@ wide-align@^1.1.0:
dependencies:
string-width "^1.0.2"
-widest-line@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c"
+widest-line@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273"
dependencies:
- string-width "^1.0.1"
+ string-width "^2.1.1"
window-size@0.1.0:
version "0.1.0"
@@ -11428,14 +11403,6 @@ wreck@14.0.x, wreck@14.x.x, wreck@^14.0.2:
boom "7.x.x"
hoek "5.x.x"
-write-file-atomic@^1.1.2:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f"
- dependencies:
- graceful-fs "^4.1.11"
- imurmurhash "^0.1.4"
- slide "^1.1.5"
-
write-file-atomic@^2.0.0, write-file-atomic@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab"
@@ -11476,11 +11443,9 @@ x-is-string@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82"
-xdg-basedir@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2"
- dependencies:
- os-homedir "^1.0.0"
+xdg-basedir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
xml-char-classes@^1.0.0:
version "1.0.0"