{"version":3,"file":"3f9b99dd-ec845cfe3b3e49cd99ca.js","mappings":"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","sources":["webpack://@elemental-zcash/zec-map/./node_modules/elemental-react/lib/main.web.esm.js"],"sourcesContent":["import styledW, { withTheme as withTheme$2, ThemeProvider as ThemeProvider$2, css as css$2 } from 'styled-components';\nexport { ServerStyleSheet, StyleSheetManager } from 'styled-components';\nimport React, { cloneElement, createContext, createElement, Component, useState, useEffect, useContext } from 'react';\nimport { ForwardRef, isValidElementType, isElement } from 'react-is';\nimport os from 'os';\nimport reactPrimitives, { Platform, Touchable } from 'react-primitives';\nimport { Svg, Circle as Circle$2 } from 'react-primitives-svg';\nimport { compose, space, color, border, layout, flexbox, position, boxShadow, style, typography, textStyle } from 'styled-system';\nexport { useWindowDimensions } from 'react-native-web';\n\nfunction unwrapExports(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace(n) {\n return n && n['default'] || n;\n}\n\nvar stylis_min = createCommonjsModule(function (module, exports) {\n !function (e) {\n module.exports = e(null);\n }(function e(a) {\n var r = /^\\0+/g,\n c = /[\\0\\r\\f]/g,\n s = /: */g,\n t = /zoo|gra/,\n i = /([,: ])(transform)/g,\n f = /,+\\s*(?![^(]*[)])/g,\n n = / +\\s*(?![^(]*[)])/g,\n l = / *[\\0] */g,\n o = /,\\r+?/g,\n h = /([\\t\\r\\n ])*\\f?&/g,\n u = /:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g,\n d = /\\W+/g,\n b = /@(k\\w+)\\s*(\\S*)\\s*/,\n p = /::(place)/g,\n k = /:(read-only)/g,\n g = /\\s+(?=[{\\];=:>])/g,\n A = /([[}=:>])\\s+/g,\n C = /(\\{[^{]+?);(?=\\})/g,\n w = /\\s{2,}/g,\n v = /([^\\(])(:+) */g,\n m = /[svh]\\w+-[tblr]{2}/,\n x = /\\(\\s*(.*)\\s*\\)/g,\n $ = /([\\s\\S]*?);/g,\n y = /-self|flex-/g,\n O = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n j = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n z = /([^-])(image-set\\()/,\n N = \"-webkit-\",\n S = \"-moz-\",\n F = \"-ms-\",\n W = 59,\n q = 125,\n B = 123,\n D = 40,\n E = 41,\n G = 91,\n H = 93,\n I = 10,\n J = 13,\n K = 9,\n L = 64,\n M = 32,\n P = 38,\n Q = 45,\n R = 95,\n T = 42,\n U = 44,\n V = 58,\n X = 39,\n Y = 34,\n Z = 47,\n _ = 62,\n ee = 43,\n ae = 126,\n re = 0,\n ce = 12,\n se = 11,\n te = 107,\n ie = 109,\n fe = 115,\n ne = 112,\n le = 111,\n oe = 105,\n he = 99,\n ue = 100,\n de = 112,\n be = 1,\n pe = 1,\n ke = 0,\n ge = 1,\n Ae = 1,\n Ce = 1,\n we = 0,\n ve = 0,\n me = 0,\n xe = [],\n $e = [],\n ye = 0,\n Oe = null,\n je = -2,\n ze = -1,\n Ne = 0,\n Se = 1,\n Fe = 2,\n We = 3,\n qe = 0,\n Be = 1,\n De = \"\",\n Ee = \"\",\n Ge = \"\";\n\n function He(e, a, s, t, i) {\n for (var f, n, o = 0, h = 0, u = 0, d = 0, g = 0, A = 0, C = 0, w = 0, m = 0, $ = 0, y = 0, O = 0, j = 0, z = 0, R = 0, we = 0, $e = 0, Oe = 0, je = 0, ze = s.length, Je = ze - 1, Re = \"\", Te = \"\", Ue = \"\", Ve = \"\", Xe = \"\", Ye = \"\"; R < ze;) {\n if (C = s.charCodeAt(R), R === Je) if (h + d + u + o !== 0) {\n if (0 !== h) C = h === Z ? I : Z;\n d = u = o = 0, ze++, Je++;\n }\n\n if (h + d + u + o === 0) {\n if (R === Je) {\n if (we > 0) Te = Te.replace(c, \"\");\n\n if (Te.trim().length > 0) {\n switch (C) {\n case M:\n case K:\n case W:\n case J:\n case I:\n break;\n\n default:\n Te += s.charAt(R);\n }\n\n C = W;\n }\n }\n\n if (1 === $e) switch (C) {\n case B:\n case q:\n case W:\n case Y:\n case X:\n case D:\n case E:\n case U:\n $e = 0;\n\n case K:\n case J:\n case I:\n case M:\n break;\n\n default:\n for ($e = 0, je = R, g = C, R--, C = W; je < ze;) {\n switch (s.charCodeAt(je++)) {\n case I:\n case J:\n case W:\n ++R, C = g, je = ze;\n break;\n\n case V:\n if (we > 0) ++R, C = g;\n\n case B:\n je = ze;\n }\n }\n\n }\n\n switch (C) {\n case B:\n for (g = (Te = Te.trim()).charCodeAt(0), y = 1, je = ++R; R < ze;) {\n switch (C = s.charCodeAt(R)) {\n case B:\n y++;\n break;\n\n case q:\n y--;\n break;\n\n case Z:\n switch (A = s.charCodeAt(R + 1)) {\n case T:\n case Z:\n R = Qe(A, R, Je, s);\n }\n\n break;\n\n case G:\n C++;\n\n case D:\n C++;\n\n case Y:\n case X:\n for (; R++ < Je && s.charCodeAt(R) !== C;) {\n ;\n }\n\n }\n\n if (0 === y) break;\n R++;\n }\n\n if (Ue = s.substring(je, R), g === re) g = (Te = Te.replace(r, \"\").trim()).charCodeAt(0);\n\n switch (g) {\n case L:\n if (we > 0) Te = Te.replace(c, \"\");\n\n switch (A = Te.charCodeAt(1)) {\n case ue:\n case ie:\n case fe:\n case Q:\n f = a;\n break;\n\n default:\n f = xe;\n }\n\n if (je = (Ue = He(a, f, Ue, A, i + 1)).length, me > 0 && 0 === je) je = Te.length;\n if (ye > 0) if (f = Ie(xe, Te, Oe), n = Pe(We, Ue, f, a, pe, be, je, A, i, t), Te = f.join(\"\"), void 0 !== n) if (0 === (je = (Ue = n.trim()).length)) A = 0, Ue = \"\";\n if (je > 0) switch (A) {\n case fe:\n Te = Te.replace(x, Me);\n\n case ue:\n case ie:\n case Q:\n Ue = Te + \"{\" + Ue + \"}\";\n break;\n\n case te:\n if (Ue = (Te = Te.replace(b, \"$1 $2\" + (Be > 0 ? De : \"\"))) + \"{\" + Ue + \"}\", 1 === Ae || 2 === Ae && Le(\"@\" + Ue, 3)) Ue = \"@\" + N + Ue + \"@\" + Ue;else Ue = \"@\" + Ue;\n break;\n\n default:\n if (Ue = Te + Ue, t === de) Ve += Ue, Ue = \"\";\n } else Ue = \"\";\n break;\n\n default:\n Ue = He(a, Ie(a, Te, Oe), Ue, t, i + 1);\n }\n\n Xe += Ue, O = 0, $e = 0, z = 0, we = 0, Oe = 0, j = 0, Te = \"\", Ue = \"\", C = s.charCodeAt(++R);\n break;\n\n case q:\n case W:\n if ((je = (Te = (we > 0 ? Te.replace(c, \"\") : Te).trim()).length) > 1) {\n if (0 === z) if ((g = Te.charCodeAt(0)) === Q || g > 96 && g < 123) je = (Te = Te.replace(\" \", \":\")).length;\n if (ye > 0) if (void 0 !== (n = Pe(Se, Te, a, e, pe, be, Ve.length, t, i, t))) if (0 === (je = (Te = n.trim()).length)) Te = \"\\0\\0\";\n\n switch (g = Te.charCodeAt(0), A = Te.charCodeAt(1), g) {\n case re:\n break;\n\n case L:\n if (A === oe || A === he) {\n Ye += Te + s.charAt(R);\n break;\n }\n\n default:\n if (Te.charCodeAt(je - 1) === V) break;\n Ve += Ke(Te, g, A, Te.charCodeAt(2));\n }\n }\n\n O = 0, $e = 0, z = 0, we = 0, Oe = 0, Te = \"\", C = s.charCodeAt(++R);\n }\n }\n\n switch (C) {\n case J:\n case I:\n if (h + d + u + o + ve === 0) switch ($) {\n case E:\n case X:\n case Y:\n case L:\n case ae:\n case _:\n case T:\n case ee:\n case Z:\n case Q:\n case V:\n case U:\n case W:\n case B:\n case q:\n break;\n\n default:\n if (z > 0) $e = 1;\n }\n if (h === Z) h = 0;else if (ge + O === 0 && t !== te && Te.length > 0) we = 1, Te += \"\\0\";\n if (ye * qe > 0) Pe(Ne, Te, a, e, pe, be, Ve.length, t, i, t);\n be = 1, pe++;\n break;\n\n case W:\n case q:\n if (h + d + u + o === 0) {\n be++;\n break;\n }\n\n default:\n switch (be++, Re = s.charAt(R), C) {\n case K:\n case M:\n if (d + o + h === 0) switch (w) {\n case U:\n case V:\n case K:\n case M:\n Re = \"\";\n break;\n\n default:\n if (C !== M) Re = \" \";\n }\n break;\n\n case re:\n Re = \"\\\\0\";\n break;\n\n case ce:\n Re = \"\\\\f\";\n break;\n\n case se:\n Re = \"\\\\v\";\n break;\n\n case P:\n if (d + h + o === 0 && ge > 0) Oe = 1, we = 1, Re = \"\\f\" + Re;\n break;\n\n case 108:\n if (d + h + o + ke === 0 && z > 0) switch (R - z) {\n case 2:\n if (w === ne && s.charCodeAt(R - 3) === V) ke = w;\n\n case 8:\n if (m === le) ke = m;\n }\n break;\n\n case V:\n if (d + h + o === 0) z = R;\n break;\n\n case U:\n if (h + u + d + o === 0) we = 1, Re += \"\\r\";\n break;\n\n case Y:\n case X:\n if (0 === h) d = d === C ? 0 : 0 === d ? C : d;\n break;\n\n case G:\n if (d + h + u === 0) o++;\n break;\n\n case H:\n if (d + h + u === 0) o--;\n break;\n\n case E:\n if (d + h + o === 0) u--;\n break;\n\n case D:\n if (d + h + o === 0) {\n if (0 === O) switch (2 * w + 3 * m) {\n case 533:\n break;\n\n default:\n y = 0, O = 1;\n }\n u++;\n }\n\n break;\n\n case L:\n if (h + u + d + o + z + j === 0) j = 1;\n break;\n\n case T:\n case Z:\n if (d + o + u > 0) break;\n\n switch (h) {\n case 0:\n switch (2 * C + 3 * s.charCodeAt(R + 1)) {\n case 235:\n h = Z;\n break;\n\n case 220:\n je = R, h = T;\n }\n\n break;\n\n case T:\n if (C === Z && w === T && je + 2 !== R) {\n if (33 === s.charCodeAt(je + 2)) Ve += s.substring(je, R + 1);\n Re = \"\", h = 0;\n }\n\n }\n\n }\n\n if (0 === h) {\n if (ge + d + o + j === 0 && t !== te && C !== W) switch (C) {\n case U:\n case ae:\n case _:\n case ee:\n case E:\n case D:\n if (0 === O) {\n switch (w) {\n case K:\n case M:\n case I:\n case J:\n Re += \"\\0\";\n break;\n\n default:\n Re = \"\\0\" + Re + (C === U ? \"\" : \"\\0\");\n }\n\n we = 1;\n } else switch (C) {\n case D:\n if (z + 7 === R && 108 === w) z = 0;\n O = ++y;\n break;\n\n case E:\n if (0 == (O = --y)) we = 1, Re += \"\\0\";\n }\n\n break;\n\n case K:\n case M:\n switch (w) {\n case re:\n case B:\n case q:\n case W:\n case U:\n case ce:\n case K:\n case M:\n case I:\n case J:\n break;\n\n default:\n if (0 === O) we = 1, Re += \"\\0\";\n }\n\n }\n if (Te += Re, C !== M && C !== K) $ = C;\n }\n\n }\n\n m = w, w = C, R++;\n }\n\n if (je = Ve.length, me > 0) if (0 === je && 0 === Xe.length && 0 === a[0].length == false) if (t !== ie || 1 === a.length && (ge > 0 ? Ee : Ge) === a[0]) je = a.join(\",\").length + 2;\n\n if (je > 0) {\n if (f = 0 === ge && t !== te ? function (e) {\n for (var a, r, s = 0, t = e.length, i = Array(t); s < t; ++s) {\n for (var f = e[s].split(l), n = \"\", o = 0, h = 0, u = 0, d = 0, b = f.length; o < b; ++o) {\n if (0 === (h = (r = f[o]).length) && b > 1) continue;\n if (u = n.charCodeAt(n.length - 1), d = r.charCodeAt(0), a = \"\", 0 !== o) switch (u) {\n case T:\n case ae:\n case _:\n case ee:\n case M:\n case D:\n break;\n\n default:\n a = \" \";\n }\n\n switch (d) {\n case P:\n r = a + Ee;\n\n case ae:\n case _:\n case ee:\n case M:\n case E:\n case D:\n break;\n\n case G:\n r = a + r + Ee;\n break;\n\n case V:\n switch (2 * r.charCodeAt(1) + 3 * r.charCodeAt(2)) {\n case 530:\n if (Ce > 0) {\n r = a + r.substring(8, h - 1);\n break;\n }\n\n default:\n if (o < 1 || f[o - 1].length < 1) r = a + Ee + r;\n }\n\n break;\n\n case U:\n a = \"\";\n\n default:\n if (h > 1 && r.indexOf(\":\") > 0) r = a + r.replace(v, \"$1\" + Ee + \"$2\");else r = a + r + Ee;\n }\n\n n += r;\n }\n\n i[s] = n.replace(c, \"\").trim();\n }\n\n return i;\n }(a) : a, ye > 0) if (void 0 !== (n = Pe(Fe, Ve, f, e, pe, be, je, t, i, t)) && 0 === (Ve = n).length) return Ye + Ve + Xe;\n\n if (Ve = f.join(\",\") + \"{\" + Ve + \"}\", Ae * ke != 0) {\n if (2 === Ae && !Le(Ve, 2)) ke = 0;\n\n switch (ke) {\n case le:\n Ve = Ve.replace(k, \":\" + S + \"$1\") + Ve;\n break;\n\n case ne:\n Ve = Ve.replace(p, \"::\" + N + \"input-$1\") + Ve.replace(p, \"::\" + S + \"$1\") + Ve.replace(p, \":\" + F + \"input-$1\") + Ve;\n }\n\n ke = 0;\n }\n }\n\n return Ye + Ve + Xe;\n }\n\n function Ie(e, a, r) {\n var c = a.trim().split(o),\n s = c,\n t = c.length,\n i = e.length;\n\n switch (i) {\n case 0:\n case 1:\n for (var f = 0, n = 0 === i ? \"\" : e[0] + \" \"; f < t; ++f) {\n s[f] = Je(n, s[f], r, i).trim();\n }\n\n break;\n\n default:\n f = 0;\n var l = 0;\n\n for (s = []; f < t; ++f) {\n for (var h = 0; h < i; ++h) {\n s[l++] = Je(e[h] + \" \", c[f], r, i).trim();\n }\n }\n\n }\n\n return s;\n }\n\n function Je(e, a, r, c) {\n var s = a,\n t = s.charCodeAt(0);\n if (t < 33) t = (s = s.trim()).charCodeAt(0);\n\n switch (t) {\n case P:\n switch (ge + c) {\n case 0:\n case 1:\n if (0 === e.trim().length) break;\n\n default:\n return s.replace(h, \"$1\" + e.trim());\n }\n\n break;\n\n case V:\n switch (s.charCodeAt(1)) {\n case 103:\n if (Ce > 0 && ge > 0) return s.replace(u, \"$1\").replace(h, \"$1\" + Ge);\n break;\n\n default:\n return e.trim() + s.replace(h, \"$1\" + e.trim());\n }\n\n default:\n if (r * ge > 0 && s.indexOf(\"\\f\") > 0) return s.replace(h, (e.charCodeAt(0) === V ? \"\" : \"$1\") + e.trim());\n }\n\n return e + s;\n }\n\n function Ke(e, a, r, c) {\n var l,\n o = 0,\n h = e + \";\",\n u = 2 * a + 3 * r + 4 * c;\n if (944 === u) return function (e) {\n var a = e.length,\n r = e.indexOf(\":\", 9) + 1,\n c = e.substring(0, r).trim(),\n s = e.substring(r, a - 1).trim();\n\n switch (e.charCodeAt(9) * Be) {\n case 0:\n break;\n\n case Q:\n if (110 !== e.charCodeAt(10)) break;\n\n default:\n for (var t = s.split((s = \"\", f)), i = 0, r = 0, a = t.length; i < a; r = 0, ++i) {\n for (var l = t[i], o = l.split(n); l = o[r];) {\n var h = l.charCodeAt(0);\n if (1 === Be && (h > L && h < 90 || h > 96 && h < 123 || h === R || h === Q && l.charCodeAt(1) !== Q)) switch (isNaN(parseFloat(l)) + (-1 !== l.indexOf(\"(\"))) {\n case 1:\n switch (l) {\n case \"infinite\":\n case \"alternate\":\n case \"backwards\":\n case \"running\":\n case \"normal\":\n case \"forwards\":\n case \"both\":\n case \"none\":\n case \"linear\":\n case \"ease\":\n case \"ease-in\":\n case \"ease-out\":\n case \"ease-in-out\":\n case \"paused\":\n case \"reverse\":\n case \"alternate-reverse\":\n case \"inherit\":\n case \"initial\":\n case \"unset\":\n case \"step-start\":\n case \"step-end\":\n break;\n\n default:\n l += De;\n }\n\n }\n o[r++] = l;\n }\n\n s += (0 === i ? \"\" : \",\") + o.join(\" \");\n }\n\n }\n\n if (s = c + s + \";\", 1 === Ae || 2 === Ae && Le(s, 1)) return N + s + s;\n return s;\n }(h);else if (0 === Ae || 2 === Ae && !Le(h, 1)) return h;\n\n switch (u) {\n case 1015:\n return 97 === h.charCodeAt(10) ? N + h + h : h;\n\n case 951:\n return 116 === h.charCodeAt(3) ? N + h + h : h;\n\n case 963:\n return 110 === h.charCodeAt(5) ? N + h + h : h;\n\n case 1009:\n if (100 !== h.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return N + h + h;\n\n case 978:\n return N + h + S + h + h;\n\n case 1019:\n case 983:\n return N + h + S + h + F + h + h;\n\n case 883:\n if (h.charCodeAt(8) === Q) return N + h + h;\n if (h.indexOf(\"image-set(\", 11) > 0) return h.replace(z, \"$1\" + N + \"$2\") + h;\n return h;\n\n case 932:\n if (h.charCodeAt(4) === Q) switch (h.charCodeAt(5)) {\n case 103:\n return N + \"box-\" + h.replace(\"-grow\", \"\") + N + h + F + h.replace(\"grow\", \"positive\") + h;\n\n case 115:\n return N + h + F + h.replace(\"shrink\", \"negative\") + h;\n\n case 98:\n return N + h + F + h.replace(\"basis\", \"preferred-size\") + h;\n }\n return N + h + F + h + h;\n\n case 964:\n return N + h + F + \"flex-\" + h + h;\n\n case 1023:\n if (99 !== h.charCodeAt(8)) break;\n return l = h.substring(h.indexOf(\":\", 15)).replace(\"flex-\", \"\").replace(\"space-between\", \"justify\"), N + \"box-pack\" + l + N + h + F + \"flex-pack\" + l + h;\n\n case 1005:\n return t.test(h) ? h.replace(s, \":\" + N) + h.replace(s, \":\" + S) + h : h;\n\n case 1e3:\n switch (o = (l = h.substring(13).trim()).indexOf(\"-\") + 1, l.charCodeAt(0) + l.charCodeAt(o)) {\n case 226:\n l = h.replace(m, \"tb\");\n break;\n\n case 232:\n l = h.replace(m, \"tb-rl\");\n break;\n\n case 220:\n l = h.replace(m, \"lr\");\n break;\n\n default:\n return h;\n }\n\n return N + h + F + l + h;\n\n case 1017:\n if (-1 === h.indexOf(\"sticky\", 9)) return h;\n\n case 975:\n switch (o = (h = e).length - 10, u = (l = (33 === h.charCodeAt(o) ? h.substring(0, o) : h).substring(e.indexOf(\":\", 7) + 1).trim()).charCodeAt(0) + (0 | l.charCodeAt(7))) {\n case 203:\n if (l.charCodeAt(8) < 111) break;\n\n case 115:\n h = h.replace(l, N + l) + \";\" + h;\n break;\n\n case 207:\n case 102:\n h = h.replace(l, N + (u > 102 ? \"inline-\" : \"\") + \"box\") + \";\" + h.replace(l, N + l) + \";\" + h.replace(l, F + l + \"box\") + \";\" + h;\n }\n\n return h + \";\";\n\n case 938:\n if (h.charCodeAt(5) === Q) switch (h.charCodeAt(6)) {\n case 105:\n return l = h.replace(\"-items\", \"\"), N + h + N + \"box-\" + l + F + \"flex-\" + l + h;\n\n case 115:\n return N + h + F + \"flex-item-\" + h.replace(y, \"\") + h;\n\n default:\n return N + h + F + \"flex-line-pack\" + h.replace(\"align-content\", \"\").replace(y, \"\") + h;\n }\n break;\n\n case 973:\n case 989:\n if (h.charCodeAt(3) !== Q || 122 === h.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (true === j.test(e)) if (115 === (l = e.substring(e.indexOf(\":\") + 1)).charCodeAt(0)) return Ke(e.replace(\"stretch\", \"fill-available\"), a, r, c).replace(\":fill-available\", \":stretch\");else return h.replace(l, N + l) + h.replace(l, S + l.replace(\"fill-\", \"\")) + h;\n break;\n\n case 962:\n if (h = N + h + (102 === h.charCodeAt(5) ? F + h : \"\") + h, r + c === 211 && 105 === h.charCodeAt(13) && h.indexOf(\"transform\", 10) > 0) return h.substring(0, h.indexOf(\";\", 27) + 1).replace(i, \"$1\" + N + \"$2\") + h;\n }\n\n return h;\n }\n\n function Le(e, a) {\n var r = e.indexOf(1 === a ? \":\" : \"{\"),\n c = e.substring(0, 3 !== a ? r : 10),\n s = e.substring(r + 1, e.length - 1);\n return Oe(2 !== a ? c : c.replace(O, \"$1\"), s, a);\n }\n\n function Me(e, a) {\n var r = Ke(a, a.charCodeAt(0), a.charCodeAt(1), a.charCodeAt(2));\n return r !== a + \";\" ? r.replace($, \" or ($1)\").substring(4) : \"(\" + a + \")\";\n }\n\n function Pe(e, a, r, c, s, t, i, f, n, l) {\n for (var o, h = 0, u = a; h < ye; ++h) {\n switch (o = $e[h].call(Te, e, u, r, c, s, t, i, f, n, l)) {\n case void 0:\n case false:\n case true:\n case null:\n break;\n\n default:\n u = o;\n }\n }\n\n if (u !== a) return u;\n }\n\n function Qe(e, a, r, c) {\n for (var s = a + 1; s < r; ++s) {\n switch (c.charCodeAt(s)) {\n case Z:\n if (e === T) if (c.charCodeAt(s - 1) === T && a + 2 !== s) return s + 1;\n break;\n\n case I:\n if (e === Z) return s + 1;\n }\n }\n\n return s;\n }\n\n function Re(e) {\n for (var a in e) {\n var r = e[a];\n\n switch (a) {\n case \"keyframe\":\n Be = 0 | r;\n break;\n\n case \"global\":\n Ce = 0 | r;\n break;\n\n case \"cascade\":\n ge = 0 | r;\n break;\n\n case \"compress\":\n we = 0 | r;\n break;\n\n case \"semicolon\":\n ve = 0 | r;\n break;\n\n case \"preserve\":\n me = 0 | r;\n break;\n\n case \"prefix\":\n if (Oe = null, !r) Ae = 0;else if (\"function\" != typeof r) Ae = 1;else Ae = 2, Oe = r;\n }\n }\n\n return Re;\n }\n\n function Te(a, r) {\n if (void 0 !== this && this.constructor === Te) return e(a);\n var s = a,\n t = s.charCodeAt(0);\n if (t < 33) t = (s = s.trim()).charCodeAt(0);\n if (Be > 0) De = s.replace(d, t === G ? \"\" : \"-\");\n if (t = 1, 1 === ge) Ge = s;else Ee = s;\n var i,\n f = [Ge];\n if (ye > 0) if (void 0 !== (i = Pe(ze, r, f, f, pe, be, 0, 0, 0, 0)) && \"string\" == typeof i) r = i;\n var n = He(xe, f, r, 0, 0);\n if (ye > 0) if (void 0 !== (i = Pe(je, n, f, f, pe, be, n.length, 0, 0, 0)) && \"string\" != typeof (n = i)) t = 0;\n return De = \"\", Ge = \"\", Ee = \"\", ke = 0, pe = 1, be = 1, we * t == 0 ? n : n.replace(c, \"\").replace(g, \"\").replace(A, \"$1\").replace(C, \"$1\").replace(w, \" \");\n }\n\n if (Te.use = function e(a) {\n switch (a) {\n case void 0:\n case null:\n ye = $e.length = 0;\n break;\n\n default:\n if (\"function\" == typeof a) $e[ye++] = a;else if (\"object\" == typeof a) for (var r = 0, c = a.length; r < c; ++r) {\n e(a[r]);\n } else qe = 0 | !!a;\n }\n\n return e;\n }, Te.set = Re, void 0 !== a) Re(a);\n return Te;\n });\n});\nvar stylisRuleSheet = createCommonjsModule(function (module, exports) {\n (function (factory) {\n module['exports'] = factory();\n })(function () {\n return function (insertRule) {\n var delimiter = '/*|*/';\n var needle = delimiter + '}';\n\n function toSheet(block) {\n if (block) try {\n insertRule(block + '}');\n } catch (e) {}\n }\n\n return function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n switch (context) {\n // property\n case 1:\n // @import\n if (depth === 0 && content.charCodeAt(0) === 64) return insertRule(content + ';'), '';\n break;\n // selector\n\n case 2:\n if (ns === 0) return content + delimiter;\n break;\n // at-rule\n\n case 3:\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n return insertRule(selectors[0] + content), '';\n\n default:\n return content + (at === 0 ? delimiter : '');\n }\n\n case -2:\n content.split(needle).forEach(toSheet);\n }\n };\n };\n });\n});\nvar unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nvar hasFlag = function hasFlag(flag, argv) {\n argv = argv || process.argv;\n var prefix = flag.startsWith('-') ? '' : flag.length === 1 ? '-' : '--';\n var pos = argv.indexOf(prefix + flag);\n var terminatorPos = argv.indexOf('--');\n return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n\nvar env = process.env;\nvar forceColor;\n\nif (hasFlag('no-color') || hasFlag('no-colors') || hasFlag('color=false')) {\n forceColor = false;\n} else if (hasFlag('color') || hasFlag('colors') || hasFlag('color=true') || hasFlag('color=always')) {\n forceColor = true;\n}\n\nif ('FORCE_COLOR' in env) {\n forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n if (level === 0) {\n return false;\n }\n\n return {\n level: level,\n hasBasic: true,\n has256: level >= 2,\n has16m: level >= 3\n };\n}\n\nfunction supportsColor(stream) {\n if (forceColor === false) {\n return 0;\n }\n\n if (hasFlag('color=16m') || hasFlag('color=full') || hasFlag('color=truecolor')) {\n return 3;\n }\n\n if (hasFlag('color=256')) {\n return 2;\n }\n\n if (stream && !stream.isTTY && forceColor !== true) {\n return 0;\n }\n\n var min = forceColor ? 1 : 0;\n\n if (process.platform === 'win32') {\n // Node.js 7.5.0 is the first version of Node.js to include a patch to\n // libuv that enables 256 color output on Windows. Anything earlier and it\n // won't work. However, here we target Node.js 8 at minimum as it is an LTS\n // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n // release that supports 256 colors. Windows 10 build 14931 is the first release\n // that supports 16m/TrueColor.\n var osRelease = os.release().split('.');\n\n if (Number(process.versions.node.split('.')[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {\n return Number(osRelease[2]) >= 14931 ? 3 : 2;\n }\n\n return 1;\n }\n\n if ('CI' in env) {\n if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(function (sign) {\n return sign in env;\n }) || env.CI_NAME === 'codeship') {\n return 1;\n }\n\n return min;\n }\n\n if ('TEAMCITY_VERSION' in env) {\n return /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n }\n\n if (env.COLORTERM === 'truecolor') {\n return 3;\n }\n\n if ('TERM_PROGRAM' in env) {\n var version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n switch (env.TERM_PROGRAM) {\n case 'iTerm.app':\n return version >= 3 ? 3 : 2;\n\n case 'Apple_Terminal':\n return 2;\n // No default\n }\n }\n\n if (/-256(color)?$/i.test(env.TERM)) {\n return 2;\n }\n\n if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n return 1;\n }\n\n if ('COLORTERM' in env) {\n return 1;\n }\n\n if (env.TERM === 'dumb') {\n return min;\n }\n\n return min;\n}\n\nfunction getSupportLevel(stream) {\n var level = supportsColor(stream);\n return translateLevel(level);\n}\n\nvar supportsColor_1 = {\n supportsColor: getSupportLevel,\n stdout: getSupportLevel(process.stdout),\n stderr: getSupportLevel(process.stderr)\n};\nvar openParentheses = \"(\".charCodeAt(0);\nvar closeParentheses = \")\".charCodeAt(0);\nvar singleQuote = \"'\".charCodeAt(0);\nvar doubleQuote = '\"'.charCodeAt(0);\nvar backslash = \"\\\\\".charCodeAt(0);\nvar slash = \"/\".charCodeAt(0);\nvar comma = \",\".charCodeAt(0);\nvar colon = \":\".charCodeAt(0);\nvar star = \"*\".charCodeAt(0);\n\nvar parse = function parse(input) {\n var tokens = [];\n var value = input;\n var next, quote, prev, token, escape, escapePos, whitespacePos;\n var pos = 0;\n var code = value.charCodeAt(pos);\n var max = value.length;\n var stack = [{\n nodes: tokens\n }];\n var balanced = 0;\n var parent;\n var name = \"\";\n var before = \"\";\n var after = \"\";\n\n while (pos < max) {\n // Whitespaces\n if (code <= 32) {\n next = pos;\n\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n\n token = value.slice(pos, next);\n prev = tokens[tokens.length - 1];\n\n if (code === closeParentheses && balanced) {\n after = token;\n } else if (prev && prev.type === \"div\") {\n prev.after = token;\n } else if (code === comma || code === colon || code === slash && value.charCodeAt(next + 1) !== star) {\n before = token;\n } else {\n tokens.push({\n type: \"space\",\n sourceIndex: pos,\n value: token\n });\n }\n\n pos = next; // Quotes\n } else if (code === singleQuote || code === doubleQuote) {\n next = pos;\n quote = code === singleQuote ? \"'\" : '\"';\n token = {\n type: \"string\",\n sourceIndex: pos,\n quote: quote\n };\n\n do {\n escape = false;\n next = value.indexOf(quote, next + 1);\n\n if (~next) {\n escapePos = next;\n\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += quote;\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n\n token.value = value.slice(pos + 1, next);\n tokens.push(token);\n pos = next + 1;\n code = value.charCodeAt(pos); // Comments\n } else if (code === slash && value.charCodeAt(pos + 1) === star) {\n token = {\n type: \"comment\",\n sourceIndex: pos\n };\n next = value.indexOf(\"*/\", pos);\n\n if (next === -1) {\n token.unclosed = true;\n next = value.length;\n }\n\n token.value = value.slice(pos + 2, next);\n tokens.push(token);\n pos = next + 2;\n code = value.charCodeAt(pos); // Dividers\n } else if (code === slash || code === comma || code === colon) {\n token = value[pos];\n tokens.push({\n type: \"div\",\n sourceIndex: pos - before.length,\n value: token,\n before: before,\n after: \"\"\n });\n before = \"\";\n pos += 1;\n code = value.charCodeAt(pos); // Open parentheses\n } else if (openParentheses === code) {\n // Whitespaces after open parentheses\n next = pos;\n\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n\n token = {\n type: \"function\",\n sourceIndex: pos - name.length,\n value: name,\n before: value.slice(pos + 1, next)\n };\n pos = next;\n\n if (name === \"url\" && code !== singleQuote && code !== doubleQuote) {\n next -= 1;\n\n do {\n escape = false;\n next = value.indexOf(\")\", next + 1);\n\n if (~next) {\n escapePos = next;\n\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += \")\";\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape); // Whitespaces before closed\n\n\n whitespacePos = next;\n\n do {\n whitespacePos -= 1;\n code = value.charCodeAt(whitespacePos);\n } while (code <= 32);\n\n if (pos !== whitespacePos + 1) {\n token.nodes = [{\n type: \"word\",\n sourceIndex: pos,\n value: value.slice(pos, whitespacePos + 1)\n }];\n } else {\n token.nodes = [];\n }\n\n if (token.unclosed && whitespacePos + 1 !== next) {\n token.after = \"\";\n token.nodes.push({\n type: \"space\",\n sourceIndex: whitespacePos + 1,\n value: value.slice(whitespacePos + 1, next)\n });\n } else {\n token.after = value.slice(whitespacePos + 1, next);\n }\n\n pos = next + 1;\n code = value.charCodeAt(pos);\n tokens.push(token);\n } else {\n balanced += 1;\n token.after = \"\";\n tokens.push(token);\n stack.push(token);\n tokens = token.nodes = [];\n parent = token;\n }\n\n name = \"\"; // Close parentheses\n } else if (closeParentheses === code && balanced) {\n pos += 1;\n code = value.charCodeAt(pos);\n parent.after = after;\n after = \"\";\n balanced -= 1;\n stack.pop();\n parent = stack[balanced];\n tokens = parent.nodes; // Words\n } else {\n next = pos;\n\n do {\n if (code === backslash) {\n next += 1;\n }\n\n next += 1;\n code = value.charCodeAt(next);\n } while (next < max && !(code <= 32 || code === singleQuote || code === doubleQuote || code === comma || code === colon || code === slash || code === openParentheses || code === closeParentheses && balanced));\n\n token = value.slice(pos, next);\n\n if (openParentheses === code) {\n name = token;\n } else {\n tokens.push({\n type: \"word\",\n sourceIndex: pos,\n value: token\n });\n }\n\n pos = next;\n }\n }\n\n for (pos = stack.length - 1; pos; pos -= 1) {\n stack[pos].unclosed = true;\n }\n\n return stack[0].nodes;\n};\n\nvar walk = function walk(nodes, cb, bubble) {\n var i, max, node, result;\n\n for (i = 0, max = nodes.length; i < max; i += 1) {\n node = nodes[i];\n\n if (!bubble) {\n result = cb(node, i, nodes);\n }\n\n if (result !== false && node.type === \"function\" && Array.isArray(node.nodes)) {\n walk(node.nodes, cb, bubble);\n }\n\n if (bubble) {\n cb(node, i, nodes);\n }\n }\n};\n\nfunction stringifyNode(node, custom) {\n var type = node.type;\n var value = node.value;\n var buf;\n var customResult;\n\n if (custom && (customResult = custom(node)) !== undefined) {\n return customResult;\n } else if (type === \"word\" || type === \"space\") {\n return value;\n } else if (type === \"string\") {\n buf = node.quote || \"\";\n return buf + value + (node.unclosed ? \"\" : buf);\n } else if (type === \"comment\") {\n return \"/*\" + value + (node.unclosed ? \"\" : \"*/\");\n } else if (type === \"div\") {\n return (node.before || \"\") + value + (node.after || \"\");\n } else if (Array.isArray(node.nodes)) {\n buf = stringify(node.nodes);\n\n if (type !== \"function\") {\n return buf;\n }\n\n return value + \"(\" + (node.before || \"\") + buf + (node.after || \"\") + (node.unclosed ? \"\" : \")\");\n }\n\n return value;\n}\n\nfunction stringify(nodes, custom) {\n var result, i;\n\n if (Array.isArray(nodes)) {\n result = \"\";\n\n for (i = nodes.length - 1; ~i; i -= 1) {\n result = stringifyNode(nodes[i], custom) + result;\n }\n\n return result;\n }\n\n return stringifyNode(nodes, custom);\n}\n\nvar stringify_1 = stringify;\nvar minus = \"-\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar dot = \".\".charCodeAt(0);\nvar exp = \"e\".charCodeAt(0);\nvar EXP = \"E\".charCodeAt(0);\n\nvar unit = function unit(value) {\n var pos = 0;\n var length = value.length;\n var dotted = false;\n var sciPos = -1;\n var containsNumber = false;\n var code;\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code >= 48 && code <= 57) {\n containsNumber = true;\n } else if (code === exp || code === EXP) {\n if (sciPos > -1) {\n break;\n }\n\n sciPos = pos;\n } else if (code === dot) {\n if (dotted) {\n break;\n }\n\n dotted = true;\n } else if (code === plus || code === minus) {\n if (pos !== 0) {\n break;\n }\n } else {\n break;\n }\n\n pos += 1;\n }\n\n if (sciPos + 1 === pos) pos--;\n return containsNumber ? {\n number: value.slice(0, pos),\n unit: value.slice(pos)\n } : false;\n};\n\nfunction ValueParser(value) {\n if (this instanceof ValueParser) {\n this.nodes = parse(value);\n return this;\n }\n\n return new ValueParser(value);\n}\n\nValueParser.prototype.toString = function () {\n return Array.isArray(this.nodes) ? stringify_1(this.nodes) : \"\";\n};\n\nValueParser.prototype.walk = function (cb, bubble) {\n walk(this.nodes, cb, bubble);\n return this;\n};\n\nValueParser.unit = unit;\nValueParser.walk = walk;\nValueParser.stringify = stringify_1;\nvar lib = ValueParser;\nvar black = \"#000000\";\nvar silver = \"#c0c0c0\";\nvar gray = \"#808080\";\nvar white = \"#ffffff\";\nvar maroon = \"#800000\";\nvar red = \"#ff0000\";\nvar purple = \"#800080\";\nvar fuchsia = \"#ff00ff\";\nvar green = \"#008000\";\nvar lime = \"#00ff00\";\nvar olive = \"#808000\";\nvar yellow = \"#ffff00\";\nvar navy = \"#000080\";\nvar blue = \"#0000ff\";\nvar teal = \"#008080\";\nvar aqua = \"#00ffff\";\nvar orange = \"#ffa500\";\nvar aliceblue = \"#f0f8ff\";\nvar antiquewhite = \"#faebd7\";\nvar aquamarine = \"#7fffd4\";\nvar azure = \"#f0ffff\";\nvar beige = \"#f5f5dc\";\nvar bisque = \"#ffe4c4\";\nvar blanchedalmond = \"#ffebcd\";\nvar blueviolet = \"#8a2be2\";\nvar brown = \"#a52a2a\";\nvar burlywood = \"#deb887\";\nvar cadetblue = \"#5f9ea0\";\nvar chartreuse = \"#7fff00\";\nvar chocolate = \"#d2691e\";\nvar coral = \"#ff7f50\";\nvar cornflowerblue = \"#6495ed\";\nvar cornsilk = \"#fff8dc\";\nvar crimson = \"#dc143c\";\nvar darkblue = \"#00008b\";\nvar darkcyan = \"#008b8b\";\nvar darkgoldenrod = \"#b8860b\";\nvar darkgray = \"#a9a9a9\";\nvar darkgreen = \"#006400\";\nvar darkgrey = \"#a9a9a9\";\nvar darkkhaki = \"#bdb76b\";\nvar darkmagenta = \"#8b008b\";\nvar darkolivegreen = \"#556b2f\";\nvar darkorange = \"#ff8c00\";\nvar darkorchid = \"#9932cc\";\nvar darkred = \"#8b0000\";\nvar darksalmon = \"#e9967a\";\nvar darkseagreen = \"#8fbc8f\";\nvar darkslateblue = \"#483d8b\";\nvar darkslategray = \"#2f4f4f\";\nvar darkslategrey = \"#2f4f4f\";\nvar darkturquoise = \"#00ced1\";\nvar darkviolet = \"#9400d3\";\nvar deeppink = \"#ff1493\";\nvar deepskyblue = \"#00bfff\";\nvar dimgray = \"#696969\";\nvar dimgrey = \"#696969\";\nvar dodgerblue = \"#1e90ff\";\nvar firebrick = \"#b22222\";\nvar floralwhite = \"#fffaf0\";\nvar forestgreen = \"#228b22\";\nvar gainsboro = \"#dcdcdc\";\nvar ghostwhite = \"#f8f8ff\";\nvar gold = \"#ffd700\";\nvar goldenrod = \"#daa520\";\nvar greenyellow = \"#adff2f\";\nvar grey = \"#808080\";\nvar honeydew = \"#f0fff0\";\nvar hotpink = \"#ff69b4\";\nvar indianred = \"#cd5c5c\";\nvar indigo = \"#4b0082\";\nvar ivory = \"#fffff0\";\nvar khaki = \"#f0e68c\";\nvar lavender = \"#e6e6fa\";\nvar lavenderblush = \"#fff0f5\";\nvar lawngreen = \"#7cfc00\";\nvar lemonchiffon = \"#fffacd\";\nvar lightblue = \"#add8e6\";\nvar lightcoral = \"#f08080\";\nvar lightcyan = \"#e0ffff\";\nvar lightgoldenrodyellow = \"#fafad2\";\nvar lightgray = \"#d3d3d3\";\nvar lightgreen = \"#90ee90\";\nvar lightgrey = \"#d3d3d3\";\nvar lightpink = \"#ffb6c1\";\nvar lightsalmon = \"#ffa07a\";\nvar lightseagreen = \"#20b2aa\";\nvar lightskyblue = \"#87cefa\";\nvar lightslategray = \"#778899\";\nvar lightslategrey = \"#778899\";\nvar lightsteelblue = \"#b0c4de\";\nvar lightyellow = \"#ffffe0\";\nvar limegreen = \"#32cd32\";\nvar linen = \"#faf0e6\";\nvar mediumaquamarine = \"#66cdaa\";\nvar mediumblue = \"#0000cd\";\nvar mediumorchid = \"#ba55d3\";\nvar mediumpurple = \"#9370db\";\nvar mediumseagreen = \"#3cb371\";\nvar mediumslateblue = \"#7b68ee\";\nvar mediumspringgreen = \"#00fa9a\";\nvar mediumturquoise = \"#48d1cc\";\nvar mediumvioletred = \"#c71585\";\nvar midnightblue = \"#191970\";\nvar mintcream = \"#f5fffa\";\nvar mistyrose = \"#ffe4e1\";\nvar moccasin = \"#ffe4b5\";\nvar navajowhite = \"#ffdead\";\nvar oldlace = \"#fdf5e6\";\nvar olivedrab = \"#6b8e23\";\nvar orangered = \"#ff4500\";\nvar orchid = \"#da70d6\";\nvar palegoldenrod = \"#eee8aa\";\nvar palegreen = \"#98fb98\";\nvar paleturquoise = \"#afeeee\";\nvar palevioletred = \"#db7093\";\nvar papayawhip = \"#ffefd5\";\nvar peachpuff = \"#ffdab9\";\nvar peru = \"#cd853f\";\nvar pink = \"#ffc0cb\";\nvar plum = \"#dda0dd\";\nvar powderblue = \"#b0e0e6\";\nvar rosybrown = \"#bc8f8f\";\nvar royalblue = \"#4169e1\";\nvar saddlebrown = \"#8b4513\";\nvar salmon = \"#fa8072\";\nvar sandybrown = \"#f4a460\";\nvar seagreen = \"#2e8b57\";\nvar seashell = \"#fff5ee\";\nvar sienna = \"#a0522d\";\nvar skyblue = \"#87ceeb\";\nvar slateblue = \"#6a5acd\";\nvar slategray = \"#708090\";\nvar slategrey = \"#708090\";\nvar snow = \"#fffafa\";\nvar springgreen = \"#00ff7f\";\nvar steelblue = \"#4682b4\";\nvar tan = \"#d2b48c\";\nvar thistle = \"#d8bfd8\";\nvar tomato = \"#ff6347\";\nvar turquoise = \"#40e0d0\";\nvar violet = \"#ee82ee\";\nvar wheat = \"#f5deb3\";\nvar whitesmoke = \"#f5f5f5\";\nvar yellowgreen = \"#9acd32\";\nvar rebeccapurple = \"#663399\";\nvar colors = {\n black: black,\n silver: silver,\n gray: gray,\n white: white,\n maroon: maroon,\n red: red,\n purple: purple,\n fuchsia: fuchsia,\n green: green,\n lime: lime,\n olive: olive,\n yellow: yellow,\n navy: navy,\n blue: blue,\n teal: teal,\n aqua: aqua,\n orange: orange,\n aliceblue: aliceblue,\n antiquewhite: antiquewhite,\n aquamarine: aquamarine,\n azure: azure,\n beige: beige,\n bisque: bisque,\n blanchedalmond: blanchedalmond,\n blueviolet: blueviolet,\n brown: brown,\n burlywood: burlywood,\n cadetblue: cadetblue,\n chartreuse: chartreuse,\n chocolate: chocolate,\n coral: coral,\n cornflowerblue: cornflowerblue,\n cornsilk: cornsilk,\n crimson: crimson,\n darkblue: darkblue,\n darkcyan: darkcyan,\n darkgoldenrod: darkgoldenrod,\n darkgray: darkgray,\n darkgreen: darkgreen,\n darkgrey: darkgrey,\n darkkhaki: darkkhaki,\n darkmagenta: darkmagenta,\n darkolivegreen: darkolivegreen,\n darkorange: darkorange,\n darkorchid: darkorchid,\n darkred: darkred,\n darksalmon: darksalmon,\n darkseagreen: darkseagreen,\n darkslateblue: darkslateblue,\n darkslategray: darkslategray,\n darkslategrey: darkslategrey,\n darkturquoise: darkturquoise,\n darkviolet: darkviolet,\n deeppink: deeppink,\n deepskyblue: deepskyblue,\n dimgray: dimgray,\n dimgrey: dimgrey,\n dodgerblue: dodgerblue,\n firebrick: firebrick,\n floralwhite: floralwhite,\n forestgreen: forestgreen,\n gainsboro: gainsboro,\n ghostwhite: ghostwhite,\n gold: gold,\n goldenrod: goldenrod,\n greenyellow: greenyellow,\n grey: grey,\n honeydew: honeydew,\n hotpink: hotpink,\n indianred: indianred,\n indigo: indigo,\n ivory: ivory,\n khaki: khaki,\n lavender: lavender,\n lavenderblush: lavenderblush,\n lawngreen: lawngreen,\n lemonchiffon: lemonchiffon,\n lightblue: lightblue,\n lightcoral: lightcoral,\n lightcyan: lightcyan,\n lightgoldenrodyellow: lightgoldenrodyellow,\n lightgray: lightgray,\n lightgreen: lightgreen,\n lightgrey: lightgrey,\n lightpink: lightpink,\n lightsalmon: lightsalmon,\n lightseagreen: lightseagreen,\n lightskyblue: lightskyblue,\n lightslategray: lightslategray,\n lightslategrey: lightslategrey,\n lightsteelblue: lightsteelblue,\n lightyellow: lightyellow,\n limegreen: limegreen,\n linen: linen,\n mediumaquamarine: mediumaquamarine,\n mediumblue: mediumblue,\n mediumorchid: mediumorchid,\n mediumpurple: mediumpurple,\n mediumseagreen: mediumseagreen,\n mediumslateblue: mediumslateblue,\n mediumspringgreen: mediumspringgreen,\n mediumturquoise: mediumturquoise,\n mediumvioletred: mediumvioletred,\n midnightblue: midnightblue,\n mintcream: mintcream,\n mistyrose: mistyrose,\n moccasin: moccasin,\n navajowhite: navajowhite,\n oldlace: oldlace,\n olivedrab: olivedrab,\n orangered: orangered,\n orchid: orchid,\n palegoldenrod: palegoldenrod,\n palegreen: palegreen,\n paleturquoise: paleturquoise,\n palevioletred: palevioletred,\n papayawhip: papayawhip,\n peachpuff: peachpuff,\n peru: peru,\n pink: pink,\n plum: plum,\n powderblue: powderblue,\n rosybrown: rosybrown,\n royalblue: royalblue,\n saddlebrown: saddlebrown,\n salmon: salmon,\n sandybrown: sandybrown,\n seagreen: seagreen,\n seashell: seashell,\n sienna: sienna,\n skyblue: skyblue,\n slateblue: slateblue,\n slategray: slategray,\n slategrey: slategrey,\n snow: snow,\n springgreen: springgreen,\n steelblue: steelblue,\n tan: tan,\n thistle: thistle,\n tomato: tomato,\n turquoise: turquoise,\n violet: violet,\n wheat: wheat,\n whitesmoke: whitesmoke,\n yellowgreen: yellowgreen,\n rebeccapurple: rebeccapurple\n};\nvar colors$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n black: black,\n silver: silver,\n gray: gray,\n white: white,\n maroon: maroon,\n red: red,\n purple: purple,\n fuchsia: fuchsia,\n green: green,\n lime: lime,\n olive: olive,\n yellow: yellow,\n navy: navy,\n blue: blue,\n teal: teal,\n aqua: aqua,\n orange: orange,\n aliceblue: aliceblue,\n antiquewhite: antiquewhite,\n aquamarine: aquamarine,\n azure: azure,\n beige: beige,\n bisque: bisque,\n blanchedalmond: blanchedalmond,\n blueviolet: blueviolet,\n brown: brown,\n burlywood: burlywood,\n cadetblue: cadetblue,\n chartreuse: chartreuse,\n chocolate: chocolate,\n coral: coral,\n cornflowerblue: cornflowerblue,\n cornsilk: cornsilk,\n crimson: crimson,\n darkblue: darkblue,\n darkcyan: darkcyan,\n darkgoldenrod: darkgoldenrod,\n darkgray: darkgray,\n darkgreen: darkgreen,\n darkgrey: darkgrey,\n darkkhaki: darkkhaki,\n darkmagenta: darkmagenta,\n darkolivegreen: darkolivegreen,\n darkorange: darkorange,\n darkorchid: darkorchid,\n darkred: darkred,\n darksalmon: darksalmon,\n darkseagreen: darkseagreen,\n darkslateblue: darkslateblue,\n darkslategray: darkslategray,\n darkslategrey: darkslategrey,\n darkturquoise: darkturquoise,\n darkviolet: darkviolet,\n deeppink: deeppink,\n deepskyblue: deepskyblue,\n dimgray: dimgray,\n dimgrey: dimgrey,\n dodgerblue: dodgerblue,\n firebrick: firebrick,\n floralwhite: floralwhite,\n forestgreen: forestgreen,\n gainsboro: gainsboro,\n ghostwhite: ghostwhite,\n gold: gold,\n goldenrod: goldenrod,\n greenyellow: greenyellow,\n grey: grey,\n honeydew: honeydew,\n hotpink: hotpink,\n indianred: indianred,\n indigo: indigo,\n ivory: ivory,\n khaki: khaki,\n lavender: lavender,\n lavenderblush: lavenderblush,\n lawngreen: lawngreen,\n lemonchiffon: lemonchiffon,\n lightblue: lightblue,\n lightcoral: lightcoral,\n lightcyan: lightcyan,\n lightgoldenrodyellow: lightgoldenrodyellow,\n lightgray: lightgray,\n lightgreen: lightgreen,\n lightgrey: lightgrey,\n lightpink: lightpink,\n lightsalmon: lightsalmon,\n lightseagreen: lightseagreen,\n lightskyblue: lightskyblue,\n lightslategray: lightslategray,\n lightslategrey: lightslategrey,\n lightsteelblue: lightsteelblue,\n lightyellow: lightyellow,\n limegreen: limegreen,\n linen: linen,\n mediumaquamarine: mediumaquamarine,\n mediumblue: mediumblue,\n mediumorchid: mediumorchid,\n mediumpurple: mediumpurple,\n mediumseagreen: mediumseagreen,\n mediumslateblue: mediumslateblue,\n mediumspringgreen: mediumspringgreen,\n mediumturquoise: mediumturquoise,\n mediumvioletred: mediumvioletred,\n midnightblue: midnightblue,\n mintcream: mintcream,\n mistyrose: mistyrose,\n moccasin: moccasin,\n navajowhite: navajowhite,\n oldlace: oldlace,\n olivedrab: olivedrab,\n orangered: orangered,\n orchid: orchid,\n palegoldenrod: palegoldenrod,\n palegreen: palegreen,\n paleturquoise: paleturquoise,\n palevioletred: palevioletred,\n papayawhip: papayawhip,\n peachpuff: peachpuff,\n peru: peru,\n pink: pink,\n plum: plum,\n powderblue: powderblue,\n rosybrown: rosybrown,\n royalblue: royalblue,\n saddlebrown: saddlebrown,\n salmon: salmon,\n sandybrown: sandybrown,\n seagreen: seagreen,\n seashell: seashell,\n sienna: sienna,\n skyblue: skyblue,\n slateblue: slateblue,\n slategray: slategray,\n slategrey: slategrey,\n snow: snow,\n springgreen: springgreen,\n steelblue: steelblue,\n tan: tan,\n thistle: thistle,\n tomato: tomato,\n turquoise: turquoise,\n violet: violet,\n wheat: wheat,\n whitesmoke: whitesmoke,\n yellowgreen: yellowgreen,\n rebeccapurple: rebeccapurple,\n 'default': colors\n});\nvar require$$0 = getCjsExportFromNamespace(colors$1);\nvar cssColorKeywords = require$$0;\n\nvar camelize = function camelize(obj) {\n if (typeof obj === 'string') return camelCase(obj);\n return walk$1(obj);\n};\n\nfunction walk$1(obj) {\n if (!obj || typeof obj !== 'object') return obj;\n if (isDate(obj) || isRegex(obj)) return obj;\n if (isArray(obj)) return map(obj, walk$1);\n return reduce(objectKeys(obj), function (acc, key) {\n var camel = camelCase(key);\n acc[camel] = walk$1(obj[key]);\n return acc;\n }, {});\n}\n\nfunction camelCase(str) {\n return str.replace(/[_.-](\\w|$)/g, function (_, x) {\n return x.toUpperCase();\n });\n}\n\nvar isArray = Array.isArray || function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n};\n\nvar isDate = function isDate(obj) {\n return Object.prototype.toString.call(obj) === '[object Date]';\n};\n\nvar isRegex = function isRegex(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n if (has.call(obj, key)) keys.push(key);\n }\n\n return keys;\n};\n\nfunction map(xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n\n return res;\n}\n\nfunction reduce(xs, f, acc) {\n if (xs.reduce) return xs.reduce(f, acc);\n\n for (var i = 0; i < xs.length; i++) {\n acc = f(acc, xs[i], i);\n }\n\n return acc;\n}\n\nvar cssToReactNative = createCommonjsModule(function (module, exports) {\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n }\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n\n function _interopDefault(ex) {\n return ex && (typeof ex === 'undefined' ? 'undefined' : _typeof(ex)) === 'object' && 'default' in ex ? ex['default'] : ex;\n }\n\n var parse__default = _interopDefault(lib);\n\n var cssColorKeywords$1 = _interopDefault(cssColorKeywords);\n\n var camelizeStyleName = _interopDefault(camelize);\n\n var matchString = function matchString(node) {\n if (node.type !== 'string') return null;\n return node.value.replace(/\\\\([0-9a-f]{1,6})(?:\\s|$)/gi, function (match, charCode) {\n return String.fromCharCode(parseInt(charCode, 16));\n }).replace(/\\\\/g, '');\n };\n\n var hexColorRe = /^(#(?:[0-9a-f]{3,4}){1,2})$/i;\n var cssFunctionNameRe = /^(rgba?|hsla?|hwb|lab|lch|gray|color)$/;\n\n var matchColor = function matchColor(node) {\n if (node.type === 'word' && (hexColorRe.test(node.value) || node.value in cssColorKeywords$1 || node.value === 'transparent')) {\n return node.value;\n } else if (node.type === 'function' && cssFunctionNameRe.test(node.value)) {\n return lib.stringify(node);\n }\n\n return null;\n };\n\n var noneRe = /^(none)$/i;\n var autoRe = /^(auto)$/i;\n var identRe = /(^-?[_a-z][_a-z0-9-]*$)/i; // Note if these are wrong, you'll need to change index.js too\n\n var numberRe = /^([+-]?(?:\\d*\\.)?\\d+(?:[Ee][+-]?\\d+)?)$/; // Note lengthRe is sneaky: you can omit units for 0\n\n var lengthRe = /^(0$|(?:[+-]?(?:\\d*\\.)?\\d+(?:[Ee][+-]?\\d+)?)(?=px$))/;\n var unsupportedUnitRe = /^([+-]?(?:\\d*\\.)?\\d+(?:[Ee][+-]?\\d+)?(ch|em|ex|rem|vh|vw|vmin|vmax|cm|mm|in|pc|pt))$/;\n var angleRe = /^([+-]?(?:\\d*\\.)?\\d+(?:[Ee][+-]?\\d+)?(?:deg|rad))$/;\n var percentRe = /^([+-]?(?:\\d*\\.)?\\d+(?:[Ee][+-]?\\d+)?%)$/;\n\n var noopToken = function noopToken(predicate) {\n return function (node) {\n return predicate(node) ? '' : null;\n };\n };\n\n var valueForTypeToken = function valueForTypeToken(type) {\n return function (node) {\n return node.type === type ? node.value : null;\n };\n };\n\n var regExpToken = function regExpToken(regExp) {\n var transform = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : String;\n return function (node) {\n if (node.type !== 'word') return null;\n var match = node.value.match(regExp);\n if (match === null) return null;\n var value = transform(match[1]);\n return value;\n };\n };\n\n var tokens = {\n SPACE: noopToken(function (node) {\n return node.type === 'space';\n }),\n SLASH: noopToken(function (node) {\n return node.type === 'div' && node.value === '/';\n }),\n COMMA: noopToken(function (node) {\n return node.type === 'div' && node.value === ',';\n }),\n WORD: valueForTypeToken('word'),\n NONE: regExpToken(noneRe),\n AUTO: regExpToken(autoRe),\n NUMBER: regExpToken(numberRe, Number),\n LENGTH: regExpToken(lengthRe, Number),\n UNSUPPORTED_LENGTH_UNIT: regExpToken(unsupportedUnitRe),\n ANGLE: regExpToken(angleRe),\n PERCENT: regExpToken(percentRe),\n IDENT: regExpToken(identRe),\n STRING: matchString,\n COLOR: matchColor,\n LINE: regExpToken(/^(none|underline|line-through)$/i)\n };\n var LENGTH = tokens.LENGTH,\n UNSUPPORTED_LENGTH_UNIT = tokens.UNSUPPORTED_LENGTH_UNIT,\n PERCENT = tokens.PERCENT,\n COLOR = tokens.COLOR,\n SPACE = tokens.SPACE,\n NONE = tokens.NONE;\n\n var directionFactory = function directionFactory(_ref) {\n var _ref$types = _ref.types,\n types = _ref$types === undefined ? [LENGTH, UNSUPPORTED_LENGTH_UNIT, PERCENT] : _ref$types,\n _ref$directions = _ref.directions,\n directions = _ref$directions === undefined ? ['Top', 'Right', 'Bottom', 'Left'] : _ref$directions,\n _ref$prefix = _ref.prefix,\n prefix = _ref$prefix === undefined ? '' : _ref$prefix,\n _ref$suffix = _ref.suffix,\n suffix = _ref$suffix === undefined ? '' : _ref$suffix;\n return function (tokenStream) {\n var _output;\n\n var values = []; // borderWidth doesn't currently allow a percent value, but may do in the future\n\n values.push(tokenStream.expect.apply(tokenStream, _toConsumableArray(types)));\n\n while (values.length < 4 && tokenStream.hasTokens()) {\n tokenStream.expect(SPACE);\n values.push(tokenStream.expect.apply(tokenStream, _toConsumableArray(types)));\n }\n\n tokenStream.expectEmpty();\n var top = values[0],\n _values$ = values[1],\n right = _values$ === undefined ? top : _values$,\n _values$2 = values[2],\n bottom = _values$2 === undefined ? top : _values$2,\n _values$3 = values[3],\n left = _values$3 === undefined ? right : _values$3;\n\n var keyFor = function keyFor(n) {\n return '' + prefix + directions[n] + suffix;\n };\n\n var output = (_output = {}, _defineProperty(_output, keyFor(0), top), _defineProperty(_output, keyFor(1), right), _defineProperty(_output, keyFor(2), bottom), _defineProperty(_output, keyFor(3), left), _output);\n return {\n $merge: output\n };\n };\n };\n\n var anyOrderFactory = function anyOrderFactory(properties) {\n var delim = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SPACE;\n return function (tokenStream) {\n var propertyNames = Object.keys(properties);\n var values = propertyNames.reduce(function (accum, propertyName) {\n accum[propertyName] === undefined; // eslint-disable-line\n\n return accum;\n }, {});\n var numParsed = 0;\n\n while (numParsed < propertyNames.length && tokenStream.hasTokens()) {\n if (numParsed) tokenStream.expect(delim);\n var matchedPropertyName = propertyNames.find(function (propertyName) {\n return values[propertyName] === undefined && properties[propertyName].tokens.some(function (token) {\n return tokenStream.matches(token);\n });\n });\n\n if (!matchedPropertyName) {\n tokenStream.throw();\n } else {\n values[matchedPropertyName] = tokenStream.lastValue;\n }\n\n numParsed += 1;\n }\n\n tokenStream.expectEmpty();\n propertyNames.forEach(function (propertyName) {\n if (values[propertyName] === undefined) values[propertyName] = properties[propertyName].default;\n });\n return {\n $merge: values\n };\n };\n };\n\n var shadowOffsetFactory = function shadowOffsetFactory() {\n return function (tokenStream) {\n var width = tokenStream.expect(LENGTH);\n var height = tokenStream.matches(SPACE) ? tokenStream.expect(LENGTH) : width;\n tokenStream.expectEmpty();\n return {\n width: width,\n height: height\n };\n };\n };\n\n var parseShadow = function parseShadow(tokenStream) {\n var offsetX = void 0;\n var offsetY = void 0;\n var radius = void 0;\n var color = void 0;\n\n if (tokenStream.matches(NONE)) {\n tokenStream.expectEmpty();\n return {\n offset: {\n width: 0,\n height: 0\n },\n radius: 0,\n color: 'black'\n };\n }\n\n var didParseFirst = false;\n\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE);\n\n if (offsetX === undefined && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) {\n offsetX = tokenStream.lastValue;\n tokenStream.expect(SPACE);\n offsetY = tokenStream.expect(LENGTH, UNSUPPORTED_LENGTH_UNIT);\n tokenStream.saveRewindPoint();\n\n if (tokenStream.matches(SPACE) && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) {\n radius = tokenStream.lastValue;\n } else {\n tokenStream.rewind();\n }\n } else if (color === undefined && tokenStream.matches(COLOR)) {\n color = tokenStream.lastValue;\n } else {\n tokenStream.throw();\n }\n\n didParseFirst = true;\n }\n\n if (offsetX === undefined) tokenStream.throw();\n return {\n offset: {\n width: offsetX,\n height: offsetY\n },\n radius: radius !== undefined ? radius : 0,\n color: color !== undefined ? color : 'black'\n };\n };\n\n var boxShadow = function boxShadow(tokenStream) {\n var _parseShadow = parseShadow(tokenStream),\n offset = _parseShadow.offset,\n radius = _parseShadow.radius,\n color = _parseShadow.color;\n\n return {\n $merge: {\n shadowOffset: offset,\n shadowRadius: radius,\n shadowColor: color,\n shadowOpacity: 1\n }\n };\n };\n\n var NONE$1 = tokens.NONE,\n AUTO = tokens.AUTO,\n NUMBER = tokens.NUMBER,\n LENGTH$1 = tokens.LENGTH,\n SPACE$1 = tokens.SPACE;\n var defaultFlexGrow = 1;\n var defaultFlexShrink = 1;\n var defaultFlexBasis = 0;\n\n var flex = function flex(tokenStream) {\n var flexGrow = void 0;\n var flexShrink = void 0;\n var flexBasis = void 0;\n\n if (tokenStream.matches(NONE$1)) {\n tokenStream.expectEmpty();\n return {\n $merge: {\n flexGrow: 0,\n flexShrink: 0,\n flexBasis: 'auto'\n }\n };\n }\n\n tokenStream.saveRewindPoint();\n\n if (tokenStream.matches(AUTO) && !tokenStream.hasTokens()) {\n return {\n $merge: {\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: 'auto'\n }\n };\n }\n\n tokenStream.rewind();\n var partsParsed = 0;\n\n while (partsParsed < 2 && tokenStream.hasTokens()) {\n if (partsParsed !== 0) tokenStream.expect(SPACE$1);\n\n if (flexGrow === undefined && tokenStream.matches(NUMBER)) {\n flexGrow = tokenStream.lastValue;\n tokenStream.saveRewindPoint();\n\n if (tokenStream.matches(SPACE$1) && tokenStream.matches(NUMBER)) {\n flexShrink = tokenStream.lastValue;\n } else {\n tokenStream.rewind();\n }\n } else if (flexBasis === undefined && tokenStream.matches(LENGTH$1)) {\n flexBasis = tokenStream.lastValue;\n } else if (flexBasis === undefined && tokenStream.matches(AUTO)) {\n flexBasis = 'auto';\n } else {\n tokenStream.throw();\n }\n\n partsParsed += 1;\n }\n\n tokenStream.expectEmpty();\n if (flexGrow === undefined) flexGrow = defaultFlexGrow;\n if (flexShrink === undefined) flexShrink = defaultFlexShrink;\n if (flexBasis === undefined) flexBasis = defaultFlexBasis;\n return {\n $merge: {\n flexGrow: flexGrow,\n flexShrink: flexShrink,\n flexBasis: flexBasis\n }\n };\n };\n\n var SPACE$2 = tokens.SPACE,\n IDENT = tokens.IDENT,\n STRING = tokens.STRING;\n\n var parseFontFamily = function parseFontFamily(tokenStream) {\n var fontFamily = void 0;\n\n if (tokenStream.matches(STRING)) {\n fontFamily = tokenStream.lastValue;\n } else {\n fontFamily = tokenStream.expect(IDENT);\n\n while (tokenStream.hasTokens()) {\n tokenStream.expect(SPACE$2);\n var nextIdent = tokenStream.expect(IDENT);\n fontFamily += ' ' + nextIdent;\n }\n }\n\n tokenStream.expectEmpty();\n return fontFamily;\n };\n\n var SPACE$3 = tokens.SPACE,\n LENGTH$2 = tokens.LENGTH,\n UNSUPPORTED_LENGTH_UNIT$1 = tokens.UNSUPPORTED_LENGTH_UNIT,\n NUMBER$1 = tokens.NUMBER,\n SLASH = tokens.SLASH;\n var NORMAL = regExpToken(/^(normal)$/);\n var STYLE = regExpToken(/^(italic)$/);\n var WEIGHT = regExpToken(/^([1-9]00|bold)$/);\n var VARIANT = regExpToken(/^(small-caps)$/);\n var defaultFontStyle = 'normal';\n var defaultFontWeight = 'normal';\n var defaultFontVariant = [];\n\n var font = function font(tokenStream) {\n var fontStyle = void 0;\n var fontWeight = void 0;\n var fontVariant = void 0; // let fontSize;\n\n var lineHeight = void 0; // let fontFamily;\n\n var numStyleWeightVariantMatched = 0;\n\n while (numStyleWeightVariantMatched < 3 && tokenStream.hasTokens()) {\n if (tokenStream.matches(NORMAL)) ;else if (fontStyle === undefined && tokenStream.matches(STYLE)) {\n fontStyle = tokenStream.lastValue;\n } else if (fontWeight === undefined && tokenStream.matches(WEIGHT)) {\n fontWeight = tokenStream.lastValue;\n } else if (fontVariant === undefined && tokenStream.matches(VARIANT)) {\n fontVariant = [tokenStream.lastValue];\n } else {\n break;\n }\n tokenStream.expect(SPACE$3);\n numStyleWeightVariantMatched += 1;\n }\n\n var fontSize = tokenStream.expect(LENGTH$2, UNSUPPORTED_LENGTH_UNIT$1);\n\n if (tokenStream.matches(SLASH)) {\n if (tokenStream.matches(NUMBER$1)) {\n lineHeight = fontSize * tokenStream.lastValue;\n } else {\n lineHeight = tokenStream.expect(LENGTH$2, UNSUPPORTED_LENGTH_UNIT$1);\n }\n }\n\n tokenStream.expect(SPACE$3);\n var fontFamily = parseFontFamily(tokenStream);\n if (fontStyle === undefined) fontStyle = defaultFontStyle;\n if (fontWeight === undefined) fontWeight = defaultFontWeight;\n if (fontVariant === undefined) fontVariant = defaultFontVariant;\n var out = {\n fontStyle: fontStyle,\n fontWeight: fontWeight,\n fontVariant: fontVariant,\n fontSize: fontSize,\n fontFamily: fontFamily\n };\n if (lineHeight !== undefined) out.lineHeight = lineHeight;\n return {\n $merge: out\n };\n };\n\n var textShadow = function textShadow(tokenStream) {\n var _parseShadow2 = parseShadow(tokenStream),\n offset = _parseShadow2.offset,\n radius = _parseShadow2.radius,\n color = _parseShadow2.color;\n\n return {\n $merge: {\n textShadowOffset: offset,\n textShadowRadius: radius,\n textShadowColor: color\n }\n };\n };\n\n var SPACE$4 = tokens.SPACE,\n LINE = tokens.LINE,\n COLOR$1 = tokens.COLOR;\n var STYLE$1 = regExpToken(/^(solid|double|dotted|dashed)$/);\n var defaultTextDecorationLine = 'none';\n var defaultTextDecorationStyle = 'solid';\n var defaultTextDecorationColor = 'black';\n\n var textDecoration = function textDecoration(tokenStream) {\n var line = void 0;\n var style = void 0;\n var color = void 0;\n var didParseFirst = false;\n\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE$4);\n\n if (line === undefined && tokenStream.matches(LINE)) {\n var lines = [tokenStream.lastValue.toLowerCase()];\n tokenStream.saveRewindPoint();\n\n if (lines[0] !== 'none' && tokenStream.matches(SPACE$4) && tokenStream.matches(LINE)) {\n lines.push(tokenStream.lastValue.toLowerCase()); // Underline comes before line-through\n\n lines.sort().reverse();\n } else {\n tokenStream.rewind();\n }\n\n line = lines.join(' ');\n } else if (style === undefined && tokenStream.matches(STYLE$1)) {\n style = tokenStream.lastValue;\n } else if (color === undefined && tokenStream.matches(COLOR$1)) {\n color = tokenStream.lastValue;\n } else {\n tokenStream.throw();\n }\n\n didParseFirst = true;\n }\n\n var $merge = {\n textDecorationLine: line !== undefined ? line : defaultTextDecorationLine,\n textDecorationColor: color !== undefined ? color : defaultTextDecorationColor,\n textDecorationStyle: style !== undefined ? style : defaultTextDecorationStyle\n };\n return {\n $merge: $merge\n };\n };\n\n var SPACE$5 = tokens.SPACE,\n LINE$1 = tokens.LINE;\n\n var textDecorationLine = function textDecorationLine(tokenStream) {\n var lines = [];\n var didParseFirst = false;\n\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE$5);\n lines.push(tokenStream.expect(LINE$1).toLowerCase());\n didParseFirst = true;\n }\n\n lines.sort().reverse();\n return lines.join(' ');\n };\n\n var SPACE$6 = tokens.SPACE,\n COMMA = tokens.COMMA,\n LENGTH$3 = tokens.LENGTH,\n NUMBER$2 = tokens.NUMBER,\n ANGLE = tokens.ANGLE;\n\n var oneOfType = function oneOfType(tokenType) {\n return function (functionStream) {\n var value = functionStream.expect(tokenType);\n functionStream.expectEmpty();\n return value;\n };\n };\n\n var singleNumber = oneOfType(NUMBER$2);\n var singleLength = oneOfType(LENGTH$3);\n var singleAngle = oneOfType(ANGLE);\n\n var xyTransformFactory = function xyTransformFactory(tokenType) {\n return function (key, valueIfOmitted) {\n return function (functionStream) {\n var x = functionStream.expect(tokenType);\n var y = void 0;\n\n if (functionStream.hasTokens()) {\n functionStream.expect(COMMA);\n y = functionStream.expect(tokenType);\n } else if (valueIfOmitted !== undefined) {\n y = valueIfOmitted;\n } else {\n // Assumption, if x === y, then we can omit XY\n // I.e. scale(5) => [{ scale: 5 }] rather than [{ scaleX: 5 }, { scaleY: 5 }]\n return x;\n }\n\n functionStream.expectEmpty();\n return [_defineProperty({}, key + 'Y', y), _defineProperty({}, key + 'X', x)];\n };\n };\n };\n\n var xyNumber = xyTransformFactory(NUMBER$2);\n var xyLength = xyTransformFactory(LENGTH$3);\n var xyAngle = xyTransformFactory(ANGLE);\n var partTransforms = {\n perspective: singleNumber,\n scale: xyNumber('scale'),\n scaleX: singleNumber,\n scaleY: singleNumber,\n translate: xyLength('translate', 0),\n translateX: singleLength,\n translateY: singleLength,\n rotate: singleAngle,\n rotateX: singleAngle,\n rotateY: singleAngle,\n rotateZ: singleAngle,\n skewX: singleAngle,\n skewY: singleAngle,\n skew: xyAngle('skew', '0deg')\n };\n\n var transform = function transform(tokenStream) {\n var transforms = [];\n var didParseFirst = false;\n\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE$6);\n var functionStream = tokenStream.expectFunction();\n var functionName = functionStream.functionName;\n var transformedValues = partTransforms[functionName](functionStream);\n\n if (!Array.isArray(transformedValues)) {\n transformedValues = [_defineProperty({}, functionName, transformedValues)];\n }\n\n transforms = transformedValues.concat(transforms);\n didParseFirst = true;\n }\n\n return transforms;\n };\n\n var IDENT$1 = tokens.IDENT,\n WORD = tokens.WORD,\n COLOR$2 = tokens.COLOR,\n LENGTH$4 = tokens.LENGTH,\n UNSUPPORTED_LENGTH_UNIT$2 = tokens.UNSUPPORTED_LENGTH_UNIT,\n PERCENT$1 = tokens.PERCENT,\n AUTO$1 = tokens.AUTO;\n\n var background = function background(tokenStream) {\n return {\n $merge: {\n backgroundColor: tokenStream.expect(COLOR$2)\n }\n };\n };\n\n var border = anyOrderFactory({\n borderWidth: {\n tokens: [LENGTH$4, UNSUPPORTED_LENGTH_UNIT$2],\n default: 1\n },\n borderColor: {\n tokens: [COLOR$2],\n default: 'black'\n },\n borderStyle: {\n tokens: [regExpToken(/^(solid|dashed|dotted)$/)],\n default: 'solid'\n }\n });\n var borderColor = directionFactory({\n types: [WORD],\n prefix: 'border',\n suffix: 'Color'\n });\n var borderRadius = directionFactory({\n directions: ['TopLeft', 'TopRight', 'BottomRight', 'BottomLeft'],\n prefix: 'border',\n suffix: 'Radius'\n });\n var borderWidth = directionFactory({\n prefix: 'border',\n suffix: 'Width'\n });\n var margin = directionFactory({\n types: [LENGTH$4, UNSUPPORTED_LENGTH_UNIT$2, PERCENT$1, AUTO$1],\n prefix: 'margin'\n });\n var padding = directionFactory({\n prefix: 'padding'\n });\n var flexFlow = anyOrderFactory({\n flexWrap: {\n tokens: [regExpToken(/(nowrap|wrap|wrap-reverse)/)],\n default: 'nowrap'\n },\n flexDirection: {\n tokens: [regExpToken(/(row|row-reverse|column|column-reverse)/)],\n default: 'row'\n }\n });\n\n var fontVariant = function fontVariant(tokenStream) {\n return [tokenStream.expect(IDENT$1)];\n };\n\n var fontWeight = function fontWeight(tokenStream) {\n return tokenStream.expect(WORD);\n }; // Also match numbers as strings\n\n\n var shadowOffset = shadowOffsetFactory();\n var textShadowOffset = shadowOffsetFactory();\n var transforms = {\n background: background,\n border: border,\n borderColor: borderColor,\n borderRadius: borderRadius,\n borderWidth: borderWidth,\n boxShadow: boxShadow,\n flex: flex,\n flexFlow: flexFlow,\n font: font,\n fontFamily: parseFontFamily,\n fontVariant: fontVariant,\n fontWeight: fontWeight,\n margin: margin,\n padding: padding,\n shadowOffset: shadowOffset,\n textShadow: textShadow,\n textShadowOffset: textShadowOffset,\n textDecoration: textDecoration,\n textDecorationLine: textDecorationLine,\n transform: transform\n };\n var SYMBOL_MATCH = 'SYMBOL_MATCH';\n\n var TokenStream = function () {\n function TokenStream(nodes, parent) {\n _classCallCheck(this, TokenStream);\n\n this.index = 0;\n this.nodes = nodes;\n this.functionName = parent != null ? parent.value : null;\n this.lastValue = null;\n this.rewindIndex = -1;\n }\n\n _createClass(TokenStream, [{\n key: 'hasTokens',\n value: function hasTokens() {\n return this.index <= this.nodes.length - 1;\n }\n }, {\n key: SYMBOL_MATCH,\n value: function value() {\n if (!this.hasTokens()) return null;\n var node = this.nodes[this.index];\n\n for (var i = 0; i < arguments.length; i += 1) {\n var tokenDescriptor = arguments.length <= i ? undefined : arguments[i];\n var value = tokenDescriptor(node);\n\n if (value !== null) {\n this.index += 1;\n this.lastValue = value;\n return value;\n }\n }\n\n return null;\n }\n }, {\n key: 'matches',\n value: function matches() {\n return this[SYMBOL_MATCH].apply(this, arguments) !== null;\n }\n }, {\n key: 'expect',\n value: function expect() {\n var value = this[SYMBOL_MATCH].apply(this, arguments);\n return value !== null ? value : this.throw();\n }\n }, {\n key: 'matchesFunction',\n value: function matchesFunction() {\n var node = this.nodes[this.index];\n if (node.type !== 'function') return null;\n var value = new TokenStream(node.nodes, node);\n this.index += 1;\n this.lastValue = null;\n return value;\n }\n }, {\n key: 'expectFunction',\n value: function expectFunction() {\n var value = this.matchesFunction();\n return value !== null ? value : this.throw();\n }\n }, {\n key: 'expectEmpty',\n value: function expectEmpty() {\n if (this.hasTokens()) this.throw();\n }\n }, {\n key: 'throw',\n value: function _throw() {\n throw new Error('Unexpected token type: ' + this.nodes[this.index].type);\n }\n }, {\n key: 'saveRewindPoint',\n value: function saveRewindPoint() {\n this.rewindIndex = this.index;\n }\n }, {\n key: 'rewind',\n value: function rewind() {\n if (this.rewindIndex === -1) throw new Error('Internal error');\n this.index = this.rewindIndex;\n this.lastValue = null;\n }\n }]);\n\n return TokenStream;\n }();\n /* eslint-disable no-param-reassign */\n // Note if this is wrong, you'll need to change tokenTypes.js too\n\n\n var numberOrLengthRe = /^([+-]?(?:\\d*\\.)?\\d+(?:[Ee][+-]?\\d+)?)(?:px)?$/i;\n var boolRe = /^true|false$/i;\n var nullRe = /^null$/i;\n var undefinedRe = /^undefined$/i; // Undocumented export\n\n var transformRawValue = function transformRawValue(input) {\n var value = input.trim();\n var numberMatch = value.match(numberOrLengthRe);\n if (numberMatch !== null) return Number(numberMatch[1]);\n var boolMatch = input.match(boolRe);\n if (boolMatch !== null) return boolMatch[0].toLowerCase() === 'true';\n var nullMatch = input.match(nullRe);\n if (nullMatch !== null) return null;\n var undefinedMatch = input.match(undefinedRe);\n if (undefinedMatch !== null) return undefined;\n return value;\n };\n\n var baseTransformShorthandValue = function baseTransformShorthandValue(propName, inputValue) {\n var ast = parse__default(inputValue.trim());\n var tokenStream = new TokenStream(ast.nodes);\n return transforms[propName](tokenStream);\n };\n\n var transformShorthandValue = process.env.NODE_ENV === 'production' ? baseTransformShorthandValue : function (propName, inputValue) {\n try {\n return baseTransformShorthandValue(propName, inputValue);\n } catch (e) {\n throw new Error('Failed to parse declaration \"' + propName + ': ' + inputValue + '\"');\n }\n };\n\n var getStylesForProperty = function getStylesForProperty(propName, inputValue, allowShorthand) {\n var isRawValue = allowShorthand === false || !(propName in transforms);\n var propValue = isRawValue ? transformRawValue(inputValue) : transformShorthandValue(propName, inputValue.trim());\n return propValue && propValue.$merge ? propValue.$merge : _defineProperty({}, propName, propValue);\n };\n\n var getPropertyName = function getPropertyName(propName) {\n var isCustomProp = /^--\\w+/.test(propName);\n\n if (isCustomProp) {\n return propName;\n }\n\n return camelizeStyleName(propName);\n };\n\n var index = function index(rules) {\n var shorthandBlacklist = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return rules.reduce(function (accum, rule) {\n var propertyName = getPropertyName(rule[0]);\n var value = rule[1];\n var allowShorthand = shorthandBlacklist.indexOf(propertyName) === -1;\n return Object.assign(accum, getStylesForProperty(propertyName, value, allowShorthand));\n }, {});\n };\n\n exports.transformRawValue = transformRawValue;\n exports.getStylesForProperty = getStylesForProperty;\n exports.getPropertyName = getPropertyName;\n exports.default = index;\n});\nvar transformDeclPairs = unwrapExports(cssToReactNative);\nvar cssToReactNative_1 = cssToReactNative.transformRawValue;\nvar cssToReactNative_2 = cssToReactNative.getStylesForProperty;\nvar cssToReactNative_3 = cssToReactNative.getPropertyName;\n\nvar shallowEqual = function shallowEqual(newValue, oldValue) {\n return newValue === oldValue;\n};\n\nvar simpleIsEqual = function simpleIsEqual(newArgs, lastArgs) {\n return newArgs.length === lastArgs.length && newArgs.every(function (newArg, index) {\n return shallowEqual(newArg, lastArgs[index]);\n });\n};\n\nfunction index(resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = simpleIsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n\n var result = function result() {\n for (var _len = arguments.length, newArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n };\n\n return result;\n} // \n// Source: https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js\n\n\nfunction murmurhash(c) {\n for (var e = c.length | 0, a = e | 0, d = 0, b; e >= 4;) {\n b = c.charCodeAt(d) & 255 | (c.charCodeAt(++d) & 255) << 8 | (c.charCodeAt(++d) & 255) << 16 | (c.charCodeAt(++d) & 255) << 24, b = 1540483477 * (b & 65535) + ((1540483477 * (b >>> 16) & 65535) << 16), b ^= b >>> 24, b = 1540483477 * (b & 65535) + ((1540483477 * (b >>> 16) & 65535) << 16), a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16) ^ b, e -= 4, ++d;\n }\n\n switch (e) {\n case 3:\n a ^= (c.charCodeAt(d + 2) & 255) << 16;\n\n case 2:\n a ^= (c.charCodeAt(d + 1) & 255) << 8;\n\n case 1:\n a ^= c.charCodeAt(d) & 255, a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16);\n }\n\n a ^= a >>> 13;\n a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16);\n return (a ^ a >>> 15) >>> 0;\n} // \n\n\nfunction getComponentName(target) {\n return (process.env.NODE_ENV !== 'production' ? typeof target === 'string' && target : false) || target.displayName || target.name || 'Component';\n} // \n\n\nfunction isFunction(test) {\n return typeof test === 'function';\n} // \n\n\nfunction isStatelessFunction(test) {\n return typeof test === 'function' && !(test.prototype && test.prototype.isReactComponent);\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}; // \n\n\nvar isPlainObject = function isPlainObject(x) {\n return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x.constructor === Object;\n}; // \n\n\nfunction isStyledComponent(target) {\n return target && typeof target.styledComponentId === 'string';\n} // \n\n\nvar SC_ATTR = typeof process !== 'undefined' && process.env.SC_ATTR || 'data-styled';\nvar SC_VERSION_ATTR = 'data-styled-version';\nvar SC_STREAM_ATTR = 'data-styled-streamed';\nvar IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\nvar DISABLE_SPEEDY = typeof SC_DISABLE_SPEEDY === 'boolean' && SC_DISABLE_SPEEDY || process.env.NODE_ENV !== 'production'; // \n\n/**\n * Parse errors.md and turn it into a simple hash of code: message\n */\n\nvar ERRORS = process.env.NODE_ENV !== 'production' ? {\n \"1\": \"Cannot create styled-component for component: %s.\\n\\n\",\n \"2\": \"Can't collect styles once you've consumed a `ServerStyleSheet`'s styles! `ServerStyleSheet` is a one off instance for each server-side render cycle.\\n\\n- Are you trying to reuse it across renders?\\n- Are you accidentally calling collectStyles twice?\\n\\n\",\n \"3\": \"Streaming SSR is only supported in a Node.js environment; Please do not try to call this method in the browser.\\n\\n\",\n \"4\": \"The `StyleSheetManager` expects a valid target or sheet prop!\\n\\n- Does this error occur on the client and is your target falsy?\\n- Does this error occur on the server and is the sheet falsy?\\n\\n\",\n \"5\": \"The clone method cannot be used on the client!\\n\\n- Are you running in a client-like environment on the server?\\n- Are you trying to run SSR on the client?\\n\\n\",\n \"6\": \"Trying to insert a new style tag, but the given Node is unmounted!\\n\\n- Are you using a custom target that isn't mounted?\\n- Does your document not have a valid head element?\\n- Have you accidentally removed a style tag manually?\\n\\n\",\n \"7\": \"ThemeProvider: Please return an object from your \\\"theme\\\" prop function, e.g.\\n\\n```js\\ntheme={() => ({})}\\n```\\n\\n\",\n \"8\": \"ThemeProvider: Please make your \\\"theme\\\" prop an object.\\n\\n\",\n \"9\": \"Missing document ``\\n\\n\",\n \"10\": \"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n\",\n \"11\": \"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\\n\\n\",\n \"12\": \"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\\\`\\\\` helper (see https://www.styled-components.com/docs/api#css), which ensures the styles are injected correctly.\\n\\n\",\n \"13\": \"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\\n\"\n} : {};\n/**\n * super basic version of sprintf\n */\n\nfunction format() {\n var a = arguments.length <= 0 ? undefined : arguments[0];\n var b = [];\n\n for (var c = 1, len = arguments.length; c < len; c += 1) {\n b.push(arguments.length <= c ? undefined : arguments[c]);\n }\n\n b.forEach(function (d) {\n a = a.replace(/%[a-z]/, d);\n });\n return a;\n}\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\n\n\nvar StyledComponentsError = function (_Error) {\n inherits(StyledComponentsError, _Error);\n\n function StyledComponentsError(code) {\n classCallCheck(this, StyledComponentsError);\n\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n if (process.env.NODE_ENV === 'production') {\n var _this = possibleConstructorReturn(this, _Error.call(this, 'An error occurred. See https://github.com/styled-components/styled-components/blob/master/packages/styled-components/src/utils/errors.md#' + code + ' for more information. ' + (interpolations ? 'Additional arguments: ' + interpolations.join(', ') : '')));\n } else {\n var _this = possibleConstructorReturn(this, _Error.call(this, format.apply(undefined, [ERRORS[code]].concat(interpolations)).trim()));\n }\n\n return possibleConstructorReturn(_this);\n }\n\n return StyledComponentsError;\n}(Error); // \n\n\nvar SC_COMPONENT_ID = /^[^\\S\\n]*?\\/\\* sc-component-id:\\s*(\\S+)\\s+\\*\\//gm;\n\nvar extractComps = function extractComps(maybeCSS) {\n var css = '' + (maybeCSS || ''); // Definitely a string, and a clone\n\n var existingComponents = [];\n css.replace(SC_COMPONENT_ID, function (match, componentId, matchIndex) {\n existingComponents.push({\n componentId: componentId,\n matchIndex: matchIndex\n });\n return match;\n });\n return existingComponents.map(function (_ref, i) {\n var componentId = _ref.componentId,\n matchIndex = _ref.matchIndex;\n var nextComp = existingComponents[i + 1];\n var cssFromDOM = nextComp ? css.slice(matchIndex, nextComp.matchIndex) : css.slice(matchIndex);\n return {\n componentId: componentId,\n cssFromDOM: cssFromDOM\n };\n });\n}; // \n// NOTE: This stylis instance is only used to split rules from SSR'd style tags\n\n\nvar stylisSplitter = new stylis_min({\n global: false,\n cascade: true,\n keyframe: false,\n prefix: false,\n compress: false,\n semicolon: true\n});\nvar stylis = new stylis_min({\n global: false,\n cascade: true,\n keyframe: false,\n prefix: true,\n compress: false,\n semicolon: false // NOTE: This means \"autocomplete missing semicolons\"\n\n}); // Wrap `insertRulePlugin to build a list of rules,\n// and then make our own plugin to return the rules. This\n// makes it easier to hook into the existing SSR architecture\n\nvar parsingRules = []; // eslint-disable-next-line consistent-return\n\nvar returnRulesPlugin = function returnRulesPlugin(context) {\n if (context === -2) {\n var parsedRules = parsingRules;\n parsingRules = [];\n return parsedRules;\n }\n};\n\nvar parseRulesPlugin = stylisRuleSheet(function (rule) {\n parsingRules.push(rule);\n});\n\nvar _componentId = void 0;\n\nvar _selector = void 0;\n\nvar _selectorRegexp = void 0;\n\nvar selfReferenceReplacer = function selfReferenceReplacer(match, offset, string) {\n if ( // the first self-ref is always untouched\n offset > 0 && // there should be at least two self-refs to do a replacement (.b > .b)\n string.slice(0, offset).indexOf(_selector) !== -1 && // no consecutive self refs (.b.b); that is a precedence boost and treated differently\n string.slice(offset - _selector.length, offset) !== _selector) {\n return '.' + _componentId;\n }\n\n return match;\n};\n/**\n * When writing a style like\n *\n * & + & {\n * color: red;\n * }\n *\n * The second ampersand should be a reference to the static component class. stylis\n * has no knowledge of static class so we have to intelligently replace the base selector.\n */\n\n\nvar selfReferenceReplacementPlugin = function selfReferenceReplacementPlugin(context, _, selectors) {\n if (context === 2 && selectors.length && selectors[0].lastIndexOf(_selector) > 0) {\n // eslint-disable-next-line no-param-reassign\n selectors[0] = selectors[0].replace(_selectorRegexp, selfReferenceReplacer);\n }\n};\n\nstylis.use([selfReferenceReplacementPlugin, parseRulesPlugin, returnRulesPlugin]);\nstylisSplitter.use([parseRulesPlugin, returnRulesPlugin]);\n\nvar splitByRules = function splitByRules(css) {\n return stylisSplitter('', css);\n}; // \n\n/* eslint-disable camelcase, no-undef */\n\n\nvar getNonce = function getNonce() {\n return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n}; // \n\n/* These are helpers for the StyleTags to keep track of the injected\n * rule names for each (component) ID that they're keeping track of.\n * They're crucial for detecting whether a name has already been\n * injected.\n * (This excludes rehydrated names) */\n\n/* adds a new ID:name pairing to a names dictionary */\n\n\nvar addNameForId = function addNameForId(names, id, name) {\n if (name) {\n // eslint-disable-next-line no-param-reassign\n var namesForId = names[id] || (names[id] = Object.create(null));\n namesForId[name] = true;\n }\n};\n/* resets an ID entirely by overwriting it in the dictionary */\n\n\nvar resetIdNames = function resetIdNames(names, id) {\n // eslint-disable-next-line no-param-reassign\n names[id] = Object.create(null);\n};\n/* factory for a names dictionary checking the existance of an ID:name pairing */\n\n\nvar hasNameForId = function hasNameForId(names) {\n return function (id, name) {\n return names[id] !== undefined && names[id][name];\n };\n};\n/* stringifies names for the html/element output */\n\n\nvar stringifyNames = function stringifyNames(names) {\n var str = ''; // eslint-disable-next-line guard-for-in\n\n for (var id in names) {\n str += Object.keys(names[id]).join(' ') + ' ';\n }\n\n return str.trim();\n};\n/* clones the nested names dictionary */\n\n\nvar cloneNames = function cloneNames(names) {\n var clone = Object.create(null); // eslint-disable-next-line guard-for-in\n\n for (var id in names) {\n clone[id] = _extends({}, names[id]);\n }\n\n return clone;\n}; // \n\n/* These are helpers that deal with the insertRule (aka speedy) API\n * They are used in the StyleTags and specifically the speedy tag\n */\n\n/* retrieve a sheet for a given style tag */\n\n\nvar sheetForTag = function sheetForTag(tag) {\n // $FlowFixMe\n if (tag.sheet) return tag.sheet;\n /* Firefox quirk requires us to step through all stylesheets to find one owned by the given tag */\n\n var size = document.styleSheets.length;\n\n for (var i = 0; i < size; i += 1) {\n var sheet = document.styleSheets[i]; // $FlowFixMe\n\n if (sheet.ownerNode === tag) return sheet;\n }\n /* we should always be able to find a tag */\n\n\n throw new StyledComponentsError(10);\n};\n/* insert a rule safely and return whether it was actually injected */\n\n\nvar safeInsertRule = function safeInsertRule(sheet, cssRule, index) {\n /* abort early if cssRule string is falsy */\n if (!cssRule) return false;\n var maxIndex = sheet.cssRules.length;\n\n try {\n /* use insertRule and cap passed index with maxIndex (no of cssRules) */\n sheet.insertRule(cssRule, index <= maxIndex ? index : maxIndex);\n } catch (err) {\n /* any error indicates an invalid rule */\n return false;\n }\n\n return true;\n};\n/* deletes `size` rules starting from `removalIndex` */\n\n\nvar deleteRules = function deleteRules(sheet, removalIndex, size) {\n var lowerBound = removalIndex - size;\n\n for (var i = removalIndex; i > lowerBound; i -= 1) {\n sheet.deleteRule(i);\n }\n}; // \n\n/* this marker separates component styles and is important for rehydration */\n\n\nvar makeTextMarker = function makeTextMarker(id) {\n return '\\n/* sc-component-id: ' + id + ' */\\n';\n};\n/* add up all numbers in array up until and including the index */\n\n\nvar addUpUntilIndex = function addUpUntilIndex(sizes, index) {\n var totalUpToIndex = 0;\n\n for (var i = 0; i <= index; i += 1) {\n totalUpToIndex += sizes[i];\n }\n\n return totalUpToIndex;\n};\n/* create a new style tag after lastEl */\n\n\nvar makeStyleTag = function makeStyleTag(target, tagEl, insertBefore) {\n var el = document.createElement('style');\n el.setAttribute(SC_ATTR, '');\n el.setAttribute(SC_VERSION_ATTR, \"4.2.0\");\n var nonce = getNonce();\n\n if (nonce) {\n el.setAttribute('nonce', nonce);\n }\n /* Work around insertRule quirk in EdgeHTML */\n\n\n el.appendChild(document.createTextNode(''));\n\n if (target && !tagEl) {\n /* Append to target when no previous element was passed */\n target.appendChild(el);\n } else {\n if (!tagEl || !target || !tagEl.parentNode) {\n throw new StyledComponentsError(6);\n }\n /* Insert new style tag after the previous one */\n\n\n tagEl.parentNode.insertBefore(el, insertBefore ? tagEl : tagEl.nextSibling);\n }\n\n return el;\n};\n/* takes a css factory function and outputs an html styled tag factory */\n\n\nvar wrapAsHtmlTag = function wrapAsHtmlTag(css, names) {\n return function (additionalAttrs) {\n var nonce = getNonce();\n var attrs = [nonce && 'nonce=\"' + nonce + '\"', SC_ATTR + '=\"' + stringifyNames(names) + '\"', SC_VERSION_ATTR + '=\"' + \"4.2.0\" + '\"', additionalAttrs];\n var htmlAttr = attrs.filter(Boolean).join(' ');\n return '';\n };\n};\n/* takes a css factory function and outputs an element factory */\n\n\nvar wrapAsElement = function wrapAsElement(css, names) {\n return function () {\n var _props;\n\n var props = (_props = {}, _props[SC_ATTR] = stringifyNames(names), _props[SC_VERSION_ATTR] = \"4.2.0\", _props);\n var nonce = getNonce();\n\n if (nonce) {\n // $FlowFixMe\n props.nonce = nonce;\n } // eslint-disable-next-line react/no-danger\n\n\n return React.createElement('style', _extends({}, props, {\n dangerouslySetInnerHTML: {\n __html: css()\n }\n }));\n };\n};\n\nvar getIdsFromMarkersFactory = function getIdsFromMarkersFactory(markers) {\n return function () {\n return Object.keys(markers);\n };\n};\n/* speedy tags utilise insertRule */\n\n\nvar makeSpeedyTag = function makeSpeedyTag(el, getImportRuleTag) {\n var names = Object.create(null);\n var markers = Object.create(null);\n var sizes = [];\n var extractImport = getImportRuleTag !== undefined;\n /* indicates whether getImportRuleTag was called */\n\n var usedImportRuleTag = false;\n\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n\n if (prev !== undefined) {\n return prev;\n }\n\n markers[id] = sizes.length;\n sizes.push(0);\n resetIdNames(names, id);\n return markers[id];\n };\n\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n var sheet = sheetForTag(el);\n var insertIndex = addUpUntilIndex(sizes, marker);\n var injectedRules = 0;\n var importRules = [];\n var cssRulesSize = cssRules.length;\n\n for (var i = 0; i < cssRulesSize; i += 1) {\n var cssRule = cssRules[i];\n var mayHaveImport = extractImport;\n /* @import rules are reordered to appear first */\n\n if (mayHaveImport && cssRule.indexOf('@import') !== -1) {\n importRules.push(cssRule);\n } else if (safeInsertRule(sheet, cssRule, insertIndex + injectedRules)) {\n mayHaveImport = false;\n injectedRules += 1;\n }\n }\n\n if (extractImport && importRules.length > 0) {\n usedImportRuleTag = true; // $FlowFixMe\n\n getImportRuleTag().insertRules(id + '-import', importRules);\n }\n\n sizes[marker] += injectedRules;\n /* add up no of injected rules */\n\n addNameForId(names, id, name);\n };\n\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n var size = sizes[marker];\n var sheet = sheetForTag(el);\n var removalIndex = addUpUntilIndex(sizes, marker) - 1;\n deleteRules(sheet, removalIndex, size);\n sizes[marker] = 0;\n resetIdNames(names, id);\n\n if (extractImport && usedImportRuleTag) {\n // $FlowFixMe\n getImportRuleTag().removeRules(id + '-import');\n }\n };\n\n var css = function css() {\n var _sheetForTag = sheetForTag(el),\n cssRules = _sheetForTag.cssRules;\n\n var str = ''; // eslint-disable-next-line guard-for-in\n\n for (var id in markers) {\n str += makeTextMarker(id);\n var marker = markers[id];\n var end = addUpUntilIndex(sizes, marker);\n var size = sizes[marker];\n\n for (var i = end - size; i < end; i += 1) {\n var rule = cssRules[i];\n\n if (rule !== undefined) {\n str += rule.cssText;\n }\n }\n }\n\n return str;\n };\n\n return {\n clone: function clone() {\n throw new StyledComponentsError(5);\n },\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: el,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n};\n\nvar makeTextNode = function makeTextNode(id) {\n return document.createTextNode(makeTextMarker(id));\n};\n\nvar makeBrowserTag = function makeBrowserTag(el, getImportRuleTag) {\n var names = Object.create(null);\n var markers = Object.create(null);\n var extractImport = getImportRuleTag !== undefined;\n /* indicates whether getImportRuleTag was called */\n\n var usedImportRuleTag = false;\n\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n\n if (prev !== undefined) {\n return prev;\n }\n\n markers[id] = makeTextNode(id);\n el.appendChild(markers[id]);\n names[id] = Object.create(null);\n return markers[id];\n };\n\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n var importRules = [];\n var cssRulesSize = cssRules.length;\n\n for (var i = 0; i < cssRulesSize; i += 1) {\n var rule = cssRules[i];\n var mayHaveImport = extractImport;\n\n if (mayHaveImport && rule.indexOf('@import') !== -1) {\n importRules.push(rule);\n } else {\n mayHaveImport = false;\n var separator = i === cssRulesSize - 1 ? '' : ' ';\n marker.appendData('' + rule + separator);\n }\n }\n\n addNameForId(names, id, name);\n\n if (extractImport && importRules.length > 0) {\n usedImportRuleTag = true; // $FlowFixMe\n\n getImportRuleTag().insertRules(id + '-import', importRules);\n }\n };\n\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n /* create new empty text node and replace the current one */\n\n var newMarker = makeTextNode(id);\n el.replaceChild(newMarker, marker);\n markers[id] = newMarker;\n resetIdNames(names, id);\n\n if (extractImport && usedImportRuleTag) {\n // $FlowFixMe\n getImportRuleTag().removeRules(id + '-import');\n }\n };\n\n var css = function css() {\n var str = ''; // eslint-disable-next-line guard-for-in\n\n for (var id in markers) {\n str += markers[id].data;\n }\n\n return str;\n };\n\n return {\n clone: function clone() {\n throw new StyledComponentsError(5);\n },\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: el,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n};\n\nvar makeServerTag = function makeServerTag(namesArg, markersArg) {\n var names = namesArg === undefined ? Object.create(null) : namesArg;\n var markers = markersArg === undefined ? Object.create(null) : markersArg;\n\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n\n if (prev !== undefined) {\n return prev;\n }\n\n return markers[id] = [''];\n };\n\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n marker[0] += cssRules.join(' ');\n addNameForId(names, id, name);\n };\n\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n marker[0] = '';\n resetIdNames(names, id);\n };\n\n var css = function css() {\n var str = ''; // eslint-disable-next-line guard-for-in\n\n for (var id in markers) {\n var cssForId = markers[id][0];\n\n if (cssForId) {\n str += makeTextMarker(id) + cssForId;\n }\n }\n\n return str;\n };\n\n var clone = function clone() {\n var namesClone = cloneNames(names);\n var markersClone = Object.create(null); // eslint-disable-next-line guard-for-in\n\n for (var id in markers) {\n markersClone[id] = [markers[id][0]];\n }\n\n return makeServerTag(namesClone, markersClone);\n };\n\n var tag = {\n clone: clone,\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: null,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n return tag;\n};\n\nvar makeTag = function makeTag(target, tagEl, forceServer, insertBefore, getImportRuleTag) {\n if (IS_BROWSER && !forceServer) {\n var el = makeStyleTag(target, tagEl, insertBefore);\n\n if (DISABLE_SPEEDY) {\n return makeBrowserTag(el, getImportRuleTag);\n } else {\n return makeSpeedyTag(el, getImportRuleTag);\n }\n }\n\n return makeServerTag();\n};\n\nvar rehydrate = function rehydrate(tag, els, extracted) {\n /* add all extracted components to the new tag */\n for (var i = 0, len = extracted.length; i < len; i += 1) {\n var _extracted$i = extracted[i],\n componentId = _extracted$i.componentId,\n cssFromDOM = _extracted$i.cssFromDOM;\n var cssRules = splitByRules(cssFromDOM);\n tag.insertRules(componentId, cssRules);\n }\n /* remove old HTMLStyleElements, since they have been rehydrated */\n\n\n for (var _i = 0, _len = els.length; _i < _len; _i += 1) {\n var el = els[_i];\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n }\n}; // \n\n\nvar SPLIT_REGEX = /\\s+/;\n/* determine the maximum number of components before tags are sharded */\n\nvar MAX_SIZE = void 0;\n\nif (IS_BROWSER) {\n /* in speedy mode we can keep a lot more rules in a sheet before a slowdown can be expected */\n MAX_SIZE = DISABLE_SPEEDY ? 40 : 1000;\n} else {\n /* for servers we do not need to shard at all */\n MAX_SIZE = -1;\n}\n\nvar sheetRunningId = 0;\nvar master = void 0;\n\nvar StyleSheet = function () {\n /* a map from ids to tags */\n\n /* deferred rules for a given id */\n\n /* this is used for not reinjecting rules via hasNameForId() */\n\n /* when rules for an id are removed using remove() we have to ignore rehydratedNames for it */\n\n /* a list of tags belonging to this StyleSheet */\n\n /* a tag for import rules */\n\n /* current capacity until a new tag must be created */\n\n /* children (aka clones) of this StyleSheet inheriting all and future injections */\n function StyleSheet() {\n var _this = this;\n\n var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : IS_BROWSER ? document.head : null;\n var forceServer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n classCallCheck(this, StyleSheet);\n\n this.getImportRuleTag = function () {\n var importRuleTag = _this.importRuleTag;\n\n if (importRuleTag !== undefined) {\n return importRuleTag;\n }\n\n var firstTag = _this.tags[0];\n var insertBefore = true;\n return _this.importRuleTag = makeTag(_this.target, firstTag ? firstTag.styleTag : null, _this.forceServer, insertBefore);\n };\n\n sheetRunningId += 1;\n this.id = sheetRunningId;\n this.forceServer = forceServer;\n this.target = forceServer ? null : target;\n this.tagMap = {};\n this.deferred = {};\n this.rehydratedNames = {};\n this.ignoreRehydratedNames = {};\n this.tags = [];\n this.capacity = 1;\n this.clones = [];\n }\n /* rehydrate all SSR'd style tags */\n\n\n StyleSheet.prototype.rehydrate = function rehydrate$$1() {\n if (!IS_BROWSER || this.forceServer) return this;\n var els = [];\n var extracted = [];\n var isStreamed = false;\n /* retrieve all of our SSR style elements from the DOM */\n\n var nodes = document.querySelectorAll('style[' + SC_ATTR + '][' + SC_VERSION_ATTR + '=\"' + \"4.2.0\" + '\"]');\n var nodesSize = nodes.length;\n /* abort rehydration if no previous style tags were found */\n\n if (!nodesSize) return this;\n\n for (var i = 0; i < nodesSize; i += 1) {\n var el = nodes[i];\n /* check if style tag is a streamed tag */\n\n if (!isStreamed) isStreamed = !!el.getAttribute(SC_STREAM_ATTR);\n /* retrieve all component names */\n\n var elNames = (el.getAttribute(SC_ATTR) || '').trim().split(SPLIT_REGEX);\n var elNamesSize = elNames.length;\n\n for (var j = 0, name; j < elNamesSize; j += 1) {\n name = elNames[j];\n /* add rehydrated name to sheet to avoid re-adding styles */\n\n this.rehydratedNames[name] = true;\n }\n /* extract all components and their CSS */\n\n\n extracted.push.apply(extracted, extractComps(el.textContent));\n /* store original HTMLStyleElement */\n\n els.push(el);\n }\n /* abort rehydration if nothing was extracted */\n\n\n var extractedSize = extracted.length;\n if (!extractedSize) return this;\n /* create a tag to be used for rehydration */\n\n var tag = this.makeTag(null);\n rehydrate(tag, els, extracted);\n /* reset capacity and adjust MAX_SIZE by the initial size of the rehydration */\n\n this.capacity = Math.max(1, MAX_SIZE - extractedSize);\n this.tags.push(tag);\n /* retrieve all component ids */\n\n for (var _j = 0; _j < extractedSize; _j += 1) {\n this.tagMap[extracted[_j].componentId] = tag;\n }\n\n return this;\n };\n /* retrieve a \"master\" instance of StyleSheet which is typically used when no other is available\n * The master StyleSheet is targeted by createGlobalStyle, keyframes, and components outside of any\n * StyleSheetManager's context */\n\n /* reset the internal \"master\" instance */\n\n\n StyleSheet.reset = function reset() {\n var forceServer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n master = new StyleSheet(undefined, forceServer).rehydrate();\n };\n /* adds \"children\" to the StyleSheet that inherit all of the parents' rules\n * while their own rules do not affect the parent */\n\n\n StyleSheet.prototype.clone = function clone() {\n var sheet = new StyleSheet(this.target, this.forceServer);\n /* add to clone array */\n\n this.clones.push(sheet);\n /* clone all tags */\n\n sheet.tags = this.tags.map(function (tag) {\n var ids = tag.getIds();\n var newTag = tag.clone();\n /* reconstruct tagMap */\n\n for (var i = 0; i < ids.length; i += 1) {\n sheet.tagMap[ids[i]] = newTag;\n }\n\n return newTag;\n });\n /* clone other maps */\n\n sheet.rehydratedNames = _extends({}, this.rehydratedNames);\n sheet.deferred = _extends({}, this.deferred);\n return sheet;\n };\n /* force StyleSheet to create a new tag on the next injection */\n\n\n StyleSheet.prototype.sealAllTags = function sealAllTags() {\n this.capacity = 1;\n this.tags.forEach(function (tag) {\n // eslint-disable-next-line no-param-reassign\n tag.sealed = true;\n });\n };\n\n StyleSheet.prototype.makeTag = function makeTag$$1(tag) {\n var lastEl = tag ? tag.styleTag : null;\n var insertBefore = false;\n return makeTag(this.target, lastEl, this.forceServer, insertBefore, this.getImportRuleTag);\n };\n /* get a tag for a given componentId, assign the componentId to one, or shard */\n\n\n StyleSheet.prototype.getTagForId = function getTagForId(id) {\n /* simply return a tag, when the componentId was already assigned one */\n var prev = this.tagMap[id];\n\n if (prev !== undefined && !prev.sealed) {\n return prev;\n }\n\n var tag = this.tags[this.tags.length - 1];\n /* shard (create a new tag) if the tag is exhausted (See MAX_SIZE) */\n\n this.capacity -= 1;\n\n if (this.capacity === 0) {\n this.capacity = MAX_SIZE;\n tag = this.makeTag(tag);\n this.tags.push(tag);\n }\n\n return this.tagMap[id] = tag;\n };\n /* mainly for createGlobalStyle to check for its id */\n\n\n StyleSheet.prototype.hasId = function hasId(id) {\n return this.tagMap[id] !== undefined;\n };\n /* caching layer checking id+name to already have a corresponding tag and injected rules */\n\n\n StyleSheet.prototype.hasNameForId = function hasNameForId(id, name) {\n /* exception for rehydrated names which are checked separately */\n if (this.ignoreRehydratedNames[id] === undefined && this.rehydratedNames[name]) {\n return true;\n }\n\n var tag = this.tagMap[id];\n return tag !== undefined && tag.hasNameForId(id, name);\n };\n /* registers a componentId and registers it on its tag */\n\n\n StyleSheet.prototype.deferredInject = function deferredInject(id, cssRules) {\n /* don't inject when the id is already registered */\n if (this.tagMap[id] !== undefined) return;\n var clones = this.clones;\n\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].deferredInject(id, cssRules);\n }\n\n this.getTagForId(id).insertMarker(id);\n this.deferred[id] = cssRules;\n };\n /* injects rules for a given id with a name that will need to be cached */\n\n\n StyleSheet.prototype.inject = function inject(id, cssRules, name) {\n var clones = this.clones;\n\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].inject(id, cssRules, name);\n }\n\n var tag = this.getTagForId(id);\n /* add deferred rules for component */\n\n if (this.deferred[id] !== undefined) {\n // Combine passed cssRules with previously deferred CSS rules\n // NOTE: We cannot mutate the deferred array itself as all clones\n // do the same (see clones[i].inject)\n var rules = this.deferred[id].concat(cssRules);\n tag.insertRules(id, rules, name);\n this.deferred[id] = undefined;\n } else {\n tag.insertRules(id, cssRules, name);\n }\n };\n /* removes all rules for a given id, which doesn't remove its marker but resets it */\n\n\n StyleSheet.prototype.remove = function remove(id) {\n var tag = this.tagMap[id];\n if (tag === undefined) return;\n var clones = this.clones;\n\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].remove(id);\n }\n /* remove all rules from the tag */\n\n\n tag.removeRules(id);\n /* ignore possible rehydrated names */\n\n this.ignoreRehydratedNames[id] = true;\n /* delete possible deferred rules */\n\n this.deferred[id] = undefined;\n };\n\n StyleSheet.prototype.toHTML = function toHTML() {\n return this.tags.map(function (tag) {\n return tag.toHTML();\n }).join('');\n };\n\n StyleSheet.prototype.toReactElements = function toReactElements() {\n var id = this.id;\n return this.tags.map(function (tag, i) {\n var key = 'sc-' + id + '-' + i;\n return cloneElement(tag.toElement(), {\n key: key\n });\n });\n };\n\n createClass(StyleSheet, null, [{\n key: 'master',\n get: function get$$1() {\n return master || (master = new StyleSheet().rehydrate());\n }\n /* NOTE: This is just for backwards-compatibility with jest-styled-components */\n\n }, {\n key: 'instance',\n get: function get$$1() {\n return StyleSheet.master;\n }\n }]);\n return StyleSheet;\n}(); // \n\n\nvar Keyframes = function () {\n function Keyframes(name, rules) {\n var _this = this;\n\n classCallCheck(this, Keyframes);\n\n this.inject = function (styleSheet) {\n if (!styleSheet.hasNameForId(_this.id, _this.name)) {\n styleSheet.inject(_this.id, _this.rules, _this.name);\n }\n };\n\n this.toString = function () {\n throw new StyledComponentsError(12, String(_this.name));\n };\n\n this.name = name;\n this.rules = rules;\n this.id = 'sc-keyframes-' + name;\n }\n\n Keyframes.prototype.getName = function getName() {\n return this.name;\n };\n\n return Keyframes;\n}(); // \n\n/**\n * inlined version of\n * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/hyphenateStyleName.js\n */\n\n\nvar uppercasePattern = /([A-Z])/g;\nvar msPattern = /^ms-/;\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction hyphenateStyleName(string) {\n return string.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-');\n} // \n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\n\n\nfunction addUnitIfNeeded(name, value) {\n // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n // $FlowFixMe\n if (value == null || typeof value === 'boolean' || value === '') {\n return '';\n }\n\n if (typeof value === 'number' && value !== 0 && !(name in unitlessKeys)) {\n return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n }\n\n return String(value).trim();\n} // \n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\n\n\nvar isFalsish = function isFalsish(chunk) {\n return chunk === undefined || chunk === null || chunk === false || chunk === '';\n};\n\nvar objToCss = function objToCss(obj, prevKey) {\n var css = Object.keys(obj).filter(function (key) {\n return !isFalsish(obj[key]);\n }).map(function (key) {\n if (isPlainObject(obj[key])) return objToCss(obj[key], key);\n return hyphenateStyleName(key) + ': ' + addUnitIfNeeded(key, obj[key]) + ';';\n }).join(' ');\n return prevKey ? prevKey + ' {\\n ' + css + '\\n}' : css;\n};\n\nfunction flatten(chunk, executionContext, styleSheet) {\n if (Array.isArray(chunk)) {\n var ruleSet = [];\n\n for (var i = 0, len = chunk.length, result; i < len; i += 1) {\n result = flatten(chunk[i], executionContext, styleSheet);\n if (result === null) continue;else if (Array.isArray(result)) ruleSet.push.apply(ruleSet, result);else ruleSet.push(result);\n }\n\n return ruleSet;\n }\n\n if (isFalsish(chunk)) {\n return null;\n }\n /* Handle other components */\n\n\n if (isStyledComponent(chunk)) {\n return '.' + chunk.styledComponentId;\n }\n /* Either execute or defer the function */\n\n\n if (isFunction(chunk)) {\n if (isStatelessFunction(chunk) && executionContext) {\n var _result = chunk(executionContext);\n\n if (process.env.NODE_ENV !== 'production' && isElement(_result)) {\n // eslint-disable-next-line no-console\n console.warn(getComponentName(chunk) + ' is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.');\n }\n\n return flatten(_result, executionContext, styleSheet);\n } else return chunk;\n }\n\n if (chunk instanceof Keyframes) {\n if (styleSheet) {\n chunk.inject(styleSheet);\n return chunk.getName();\n } else return chunk;\n }\n /* Handle objects */\n\n\n return isPlainObject(chunk) ? objToCss(chunk) : chunk.toString();\n} // \n\n\nvar printed = {};\n\nfunction warnOnce(message) {\n if (printed[message]) return;\n printed[message] = true;\n if (typeof console !== 'undefined' && console.warn) console.warn(message);\n} // \n\n\nvar SINGLE_QUOTE = \"'\".charCodeAt(0);\nvar DOUBLE_QUOTE = '\"'.charCodeAt(0);\nvar BACKSLASH = '\\\\'.charCodeAt(0);\nvar SLASH = '/'.charCodeAt(0);\nvar NEWLINE = '\\n'.charCodeAt(0);\nvar SPACE = ' '.charCodeAt(0);\nvar FEED = '\\f'.charCodeAt(0);\nvar TAB = '\\t'.charCodeAt(0);\nvar CR = '\\r'.charCodeAt(0);\nvar OPEN_SQUARE = '['.charCodeAt(0);\nvar CLOSE_SQUARE = ']'.charCodeAt(0);\nvar OPEN_PARENTHESES = '('.charCodeAt(0);\nvar CLOSE_PARENTHESES = ')'.charCodeAt(0);\nvar OPEN_CURLY = '{'.charCodeAt(0);\nvar CLOSE_CURLY = '}'.charCodeAt(0);\nvar SEMICOLON = ';'.charCodeAt(0);\nvar ASTERISK = '*'.charCodeAt(0);\nvar COLON = ':'.charCodeAt(0);\nvar AT = '@'.charCodeAt(0);\nvar RE_AT_END = /[ \\n\\t\\r\\f\\{\\(\\)'\"\\\\;/\\[\\]#]/g;\nvar RE_WORD_END = /[ \\n\\t\\r\\f\\(\\)\\{\\}:;@!'\"\\\\\\]\\[#]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET = /.[\\\\\\/\\(\"'\\n]/;\n\nfunction tokenize(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var tokens = [];\n var css = input.css.valueOf();\n var ignore = options.ignoreErrors;\n var code = void 0,\n next = void 0,\n quote = void 0,\n lines = void 0,\n last = void 0,\n content = void 0,\n escape = void 0,\n nextLine = void 0,\n nextOffset = void 0,\n escaped = void 0,\n escapePos = void 0,\n prev = void 0,\n n = void 0;\n var length = css.length;\n var offset = -1;\n var line = 1;\n var pos = 0;\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, line, pos - offset);\n }\n\n while (pos < length) {\n code = css.charCodeAt(pos);\n\n if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) {\n offset = pos;\n line += 1;\n }\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED:\n next = pos;\n\n do {\n next += 1;\n code = css.charCodeAt(next);\n\n if (code === NEWLINE) {\n offset = next;\n line += 1;\n }\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n\n tokens.push(['space', css.slice(pos, next)]);\n pos = next - 1;\n break;\n\n case OPEN_SQUARE:\n tokens.push(['[', '[', line, pos - offset]);\n break;\n\n case CLOSE_SQUARE:\n tokens.push([']', ']', line, pos - offset]);\n break;\n\n case OPEN_CURLY:\n tokens.push(['{', '{', line, pos - offset]);\n break;\n\n case CLOSE_CURLY:\n tokens.push(['}', '}', line, pos - offset]);\n break;\n\n case COLON:\n tokens.push([':', ':', line, pos - offset]);\n break;\n\n case SEMICOLON:\n tokens.push([';', ';', line, pos - offset]);\n break;\n\n case OPEN_PARENTHESES:\n prev = tokens.length ? tokens[tokens.length - 1][1] : '';\n n = css.charCodeAt(pos + 1);\n\n if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) {\n next = pos;\n\n do {\n escaped = false;\n next = css.indexOf(')', next + 1);\n\n if (next === -1) {\n if (ignore) {\n next = pos;\n break;\n } else {\n unclosed('bracket');\n }\n }\n\n escapePos = next;\n\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n tokens.push(['brackets', css.slice(pos, next + 1), line, pos - offset, line, next - offset]);\n pos = next;\n } else {\n next = css.indexOf(')', pos + 1);\n content = css.slice(pos, next + 1);\n\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n tokens.push(['(', '(', line, pos - offset]);\n } else {\n tokens.push(['brackets', content, line, pos - offset, line, next - offset]);\n pos = next;\n }\n }\n\n break;\n\n case CLOSE_PARENTHESES:\n tokens.push([')', ')', line, pos - offset]);\n break;\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE:\n quote = code === SINGLE_QUOTE ? \"'\" : '\"';\n next = pos;\n\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n\n if (next === -1) {\n if (ignore) {\n next = pos + 1;\n break;\n } else {\n unclosed('quote');\n }\n }\n\n escapePos = next;\n\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n content = css.slice(pos, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n tokens.push(['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset]);\n offset = nextOffset;\n line = nextLine;\n pos = next;\n break;\n\n case AT:\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n\n tokens.push(['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]);\n pos = next;\n break;\n\n case BACKSLASH:\n next = pos;\n escape = true;\n\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n\n code = css.charCodeAt(next + 1);\n\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n }\n\n tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]);\n pos = next;\n break;\n\n default:\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1;\n\n if (next === 0) {\n if (ignore) {\n next = css.length;\n } else {\n unclosed('comment');\n }\n }\n\n content = css.slice(pos, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n tokens.push(['comment', content, line, pos - offset, nextLine, next - nextOffset]);\n offset = nextOffset;\n line = nextLine;\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n\n tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]);\n pos = next;\n }\n\n break;\n }\n\n pos++;\n }\n\n return tokens;\n} // \n\n\nvar HIGHLIGHT_THEME = {\n brackets: [36, 39],\n // cyan\n string: [31, 39],\n // red\n 'at-word': [31, 39],\n // red\n comment: [90, 39],\n // gray\n '{': [32, 39],\n // green\n '}': [32, 39],\n // green\n ':': [1, 22],\n // bold\n ';': [1, 22],\n // bold\n '(': [1, 22],\n // bold\n ')': [1, 22] // bold\n\n};\n\nfunction code(color) {\n return '\\x1B[' + color + 'm';\n}\n\nfunction terminalHighlight(css) {\n var tokens = tokenize(new Input(css), {\n ignoreErrors: true\n });\n var result = [];\n tokens.forEach(function (token) {\n var color = HIGHLIGHT_THEME[token[0]];\n\n if (color) {\n result.push(token[1].split(/\\r?\\n/).map(function (i) {\n return code(color[0]) + i + code(color[1]);\n }).join('\\n'));\n } else {\n result.push(token[1]);\n }\n });\n return result.join('');\n} // \n\n/**\n * The CSS parser throws this error for broken CSS.\n *\n * Custom parsers can throw this error for broken custom syntax using\n * the {@link Node#error} method.\n *\n * PostCSS will use the input source map to detect the original error location.\n * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS,\n * PostCSS will show the original position in the Sass file.\n *\n * If you need the position in the PostCSS input\n * (e.g., to debug the previous compiler), use `error.input.file`.\n *\n * @example\n * // Catching and checking syntax error\n * try {\n * postcss.parse('a{')\n * } catch (error) {\n * if ( error.name === 'CssSyntaxError' ) {\n * error //=> CssSyntaxError\n * }\n * }\n *\n * @example\n * // Raising error from plugin\n * throw node.error('Unknown variable', { plugin: 'postcss-vars' });\n */\n\n\nvar CssSyntaxError = function () {\n /**\n * @param {string} message - error message\n * @param {number} [line] - source line of the error\n * @param {number} [column] - source column of the error\n * @param {string} [source] - source code of the broken file\n * @param {string} [file] - absolute path to the broken file\n * @param {string} [plugin] - PostCSS plugin name, if error came from plugin\n */\n function CssSyntaxError(message, line, column, source, file, plugin) {\n classCallCheck(this, CssSyntaxError);\n /**\n * @member {string} - Always equal to `'CssSyntaxError'`. You should\n * always check error type\n * by `error.name === 'CssSyntaxError'` instead of\n * `error instanceof CssSyntaxError`, because\n * npm could have several PostCSS versions.\n *\n * @example\n * if ( error.name === 'CssSyntaxError' ) {\n * error //=> CssSyntaxError\n * }\n */\n\n this.name = 'CssSyntaxError';\n /**\n * @member {string} - Error message.\n *\n * @example\n * error.message //=> 'Unclosed block'\n */\n\n this.reason = message;\n\n if (file) {\n /**\n * @member {string} - Absolute path to the broken file.\n *\n * @example\n * error.file //=> 'a.sass'\n * error.input.file //=> 'a.css'\n */\n this.file = file;\n }\n\n if (source) {\n /**\n * @member {string} - Source code of the broken file.\n *\n * @example\n * error.source //=> 'a { b {} }'\n * error.input.column //=> 'a b { }'\n */\n this.source = source;\n }\n\n if (plugin) {\n /**\n * @member {string} - Plugin name, if error came from plugin.\n *\n * @example\n * error.plugin //=> 'postcss-vars'\n */\n this.plugin = plugin;\n }\n\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n /**\n * @member {number} - Source line of the error.\n *\n * @example\n * error.line //=> 2\n * error.input.line //=> 4\n */\n this.line = line;\n /**\n * @member {number} - Source column of the error.\n *\n * @example\n * error.column //=> 1\n * error.input.column //=> 4\n */\n\n this.column = column;\n }\n\n this.setMessage();\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n\n CssSyntaxError.prototype.setMessage = function setMessage() {\n /**\n * @member {string} - Full error text in the GNU error format\n * with plugin, file, line and column.\n *\n * @example\n * error.message //=> 'a.css:1:1: Unclosed block'\n */\n this.message = this.plugin ? this.plugin + ': ' : '';\n this.message += this.file ? this.file : '';\n\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column;\n }\n\n this.message += ': ' + this.reason;\n };\n /**\n * Returns a few lines of CSS source that caused the error.\n *\n * If the CSS has an input source map without `sourceContent`,\n * this method will return an empty string.\n *\n * @param {boolean} [color] whether arrow will be colored red by terminal\n * color codes. By default, PostCSS will detect\n * color support by `process.stdout.isTTY`\n * and `process.env.NODE_DISABLE_COLORS`.\n *\n * @example\n * error.showSourceCode() //=> \" 4 | }\n * // 5 | a {\n * // > 6 | bad\n * // | ^\n * // 7 | }\n * // 8 | b {\"\n *\n * @return {string} few lines of CSS source that caused the error\n */\n\n\n CssSyntaxError.prototype.showSourceCode = function showSourceCode(color) {\n var _this = this;\n\n if (!this.source) return '';\n var css = this.source;\n if (typeof color === 'undefined') color = supportsColor_1;\n if (color) css = terminalHighlight(css);\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n var maxWidth = String(end).length;\n return lines.slice(start, end).map(function (line, index) {\n var number = start + 1 + index;\n var padded = (' ' + number).slice(-maxWidth);\n var gutter = ' ' + padded + ' | ';\n\n if (number === _this.line) {\n var spacing = gutter.replace(/\\d/g, ' ') + line.slice(0, _this.column - 1).replace(/[^\\t]/g, ' ');\n return '>' + gutter + line + '\\n ' + spacing + '^';\n } else {\n return ' ' + gutter + line;\n }\n }).join('\\n');\n };\n /**\n * Returns error position, message and source code of the broken part.\n *\n * @example\n * error.toString() //=> \"CssSyntaxError: app.css:1:1: Unclosed block\n * // > 1 | a {\n * // | ^\"\n *\n * @return {string} error position, message and source code\n */\n\n\n CssSyntaxError.prototype.toString = function toString() {\n var code = this.showSourceCode();\n\n if (code) {\n code = '\\n\\n' + code + '\\n';\n }\n\n return this.name + ': ' + this.message + code;\n };\n\n createClass(CssSyntaxError, [{\n key: 'generated',\n get: function get$$1() {\n warnOnce('CssSyntaxError#generated is deprecated. Use input instead.');\n return this.input;\n }\n /**\n * @memberof CssSyntaxError#\n * @member {Input} input - Input object with PostCSS internal information\n * about input file. If input has source map\n * from previous tool, PostCSS will use origin\n * (for example, Sass) source. You can use this\n * object to get PostCSS input source.\n *\n * @example\n * error.input.file //=> 'a.css'\n * error.file //=> 'a.sass'\n */\n\n }]);\n return CssSyntaxError;\n}(); // \n\n/* eslint-disable valid-jsdoc */\n\n\nvar defaultRaw = {\n colon: ': ',\n indent: ' ',\n beforeDecl: '\\n',\n beforeRule: '\\n',\n beforeOpen: ' ',\n beforeClose: '\\n',\n beforeComment: '\\n',\n after: '\\n',\n emptyBody: '',\n commentLeft: ' ',\n commentRight: ' '\n};\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\n\nvar Stringifier = function () {\n function Stringifier(builder) {\n classCallCheck(this, Stringifier);\n this.builder = builder;\n }\n\n Stringifier.prototype.stringify = function stringify(node, semicolon) {\n this[node.type](node, semicolon);\n };\n\n Stringifier.prototype.root = function root(node) {\n this.body(node);\n if (node.raws.after) this.builder(node.raws.after);\n };\n\n Stringifier.prototype.comment = function comment(node) {\n var left = this.raw(node, 'left', 'commentLeft');\n var right = this.raw(node, 'right', 'commentRight');\n this.builder('/*' + left + node.text + right + '*/', node);\n };\n\n Stringifier.prototype.decl = function decl(node, semicolon) {\n var between = this.raw(node, 'between', 'colon');\n var string = node.prop + between + this.rawValue(node, 'value');\n\n if (node.important) {\n string += node.raws.important || ' !important';\n }\n\n if (semicolon) string += ';';\n this.builder(string, node);\n };\n\n Stringifier.prototype.rule = function rule(node) {\n this.block(node, this.rawValue(node, 'selector'));\n };\n\n Stringifier.prototype.atrule = function atrule(node, semicolon) {\n var name = '@' + node.name;\n var params = node.params ? this.rawValue(node, 'params') : '';\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName;\n } else if (params) {\n name += ' ';\n }\n\n if (node.nodes) {\n this.block(node, name + params);\n } else {\n var end = (node.raws.between || '') + (semicolon ? ';' : '');\n this.builder(name + params + end, node);\n }\n };\n\n Stringifier.prototype.body = function body(node) {\n var last = node.nodes.length - 1;\n\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break;\n last -= 1;\n }\n\n var semicolon = this.raw(node, 'semicolon');\n\n for (var i = 0; i < node.nodes.length; i++) {\n var child = node.nodes[i];\n var before = this.raw(child, 'before');\n if (before) this.builder(before);\n this.stringify(child, last !== i || semicolon);\n }\n };\n\n Stringifier.prototype.block = function block(node, start) {\n var between = this.raw(node, 'between', 'beforeOpen');\n this.builder(start + between + '{', node, 'start');\n var after = void 0;\n\n if (node.nodes && node.nodes.length) {\n this.body(node);\n after = this.raw(node, 'after');\n } else {\n after = this.raw(node, 'after', 'emptyBody');\n }\n\n if (after) this.builder(after);\n this.builder('}', node, 'end');\n };\n\n Stringifier.prototype.raw = function raw(node, own, detect) {\n var value = void 0;\n if (!detect) detect = own; // Already had\n\n if (own) {\n value = node.raws[own];\n if (typeof value !== 'undefined') return value;\n }\n\n var parent = node.parent; // Hack for first rule in CSS\n\n if (detect === 'before') {\n if (!parent || parent.type === 'root' && parent.first === node) {\n return '';\n }\n } // Floating child without parent\n\n\n if (!parent) return defaultRaw[detect]; // Detect style by other nodes\n\n var root = node.root();\n if (!root.rawCache) root.rawCache = {};\n\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect];\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect);\n } else {\n var method = 'raw' + capitalize(detect);\n\n if (this[method]) {\n value = this[method](root, node);\n } else {\n root.walk(function (i) {\n value = i.raws[own];\n if (typeof value !== 'undefined') return false;\n });\n }\n }\n\n if (typeof value === 'undefined') value = defaultRaw[detect];\n root.rawCache[detect] = value;\n return value;\n };\n\n Stringifier.prototype.rawSemicolon = function rawSemicolon(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawEmptyBody = function rawEmptyBody(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawIndent = function rawIndent(root) {\n if (root.raws.indent) return root.raws.indent;\n var value = void 0;\n root.walk(function (i) {\n var p = i.parent;\n\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n var parts = i.raws.before.split('\\n');\n value = parts[parts.length - 1];\n value = value.replace(/[^\\s]/g, '');\n return false;\n }\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawBeforeComment = function rawBeforeComment(root, node) {\n var value = void 0;\n root.walkComments(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n\n return false;\n }\n });\n\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl');\n }\n\n return value;\n };\n\n Stringifier.prototype.rawBeforeDecl = function rawBeforeDecl(root, node) {\n var value = void 0;\n root.walkDecls(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n\n return false;\n }\n });\n\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule');\n }\n\n return value;\n };\n\n Stringifier.prototype.rawBeforeRule = function rawBeforeRule(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n\n return false;\n }\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawBeforeClose = function rawBeforeClose(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after;\n\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n\n return false;\n }\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawBeforeOpen = function rawBeforeOpen(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.type !== 'decl') {\n value = i.raws.between;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawColon = function rawColon(root) {\n var value = void 0;\n root.walkDecls(function (i) {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '');\n return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.beforeAfter = function beforeAfter(node, detect) {\n var value = void 0;\n\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl');\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment');\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule');\n } else {\n value = this.raw(node, null, 'beforeClose');\n }\n\n var buf = node.parent;\n var depth = 0;\n\n while (buf && buf.type !== 'root') {\n depth += 1;\n buf = buf.parent;\n }\n\n if (value.indexOf('\\n') !== -1) {\n var indent = this.raw(node, null, 'indent');\n\n if (indent.length) {\n for (var step = 0; step < depth; step++) {\n value += indent;\n }\n }\n }\n\n return value;\n };\n\n Stringifier.prototype.rawValue = function rawValue(node, prop) {\n var value = node[prop];\n var raw = node.raws[prop];\n\n if (raw && raw.value === value) {\n return raw.raw;\n } else {\n return value;\n }\n };\n\n return Stringifier;\n}(); // \n\n\nfunction stringify$1(node, builder) {\n var str = new Stringifier(builder);\n str.stringify(node);\n} // \n\n/**\n * @typedef {object} position\n * @property {number} line - source line in file\n * @property {number} column - source column in file\n */\n\n/**\n * @typedef {object} source\n * @property {Input} input - {@link Input} with input file\n * @property {position} start - The starting position of the node’s source\n * @property {position} end - The ending position of the node’s source\n */\n\n\nvar cloneNode = function cloneNode(obj, parent) {\n var cloned = new obj.constructor();\n\n for (var i in obj) {\n if (!obj.hasOwnProperty(i)) continue;\n var value = obj[i];\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent;\n } else if (i === 'source') {\n cloned[i] = value;\n } else if (value instanceof Array) {\n cloned[i] = value.map(function (j) {\n return cloneNode(j, cloned);\n });\n } else if (i !== 'before' && i !== 'after' && i !== 'between' && i !== 'semicolon') {\n if (type === 'object' && value !== null) value = cloneNode(value);\n cloned[i] = value;\n }\n }\n\n return cloned;\n};\n/**\n * All node classes inherit the following common methods.\n *\n * @abstract\n */\n\n\nvar Node = function () {\n /**\n * @param {object} [defaults] - value for node properties\n */\n function Node() {\n var defaults$$1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, Node);\n this.raws = {};\n\n for (var name in defaults$$1) {\n this[name] = defaults$$1[name];\n }\n }\n /**\n * Returns a CssSyntaxError instance containing the original position\n * of the node in the source, showing line and column numbers and also\n * a small excerpt to facilitate debugging.\n *\n * If present, an input source map will be used to get the original position\n * of the source, even from a previous compilation step\n * (e.g., from Sass compilation).\n *\n * This method produces very useful error messages.\n *\n * @param {string} message - error description\n * @param {object} [opts] - options\n * @param {string} opts.plugin - plugin name that created this error.\n * PostCSS will set it automatically.\n * @param {string} opts.word - a word inside a node’s string that should\n * be highlighted as the source of the error\n * @param {number} opts.index - an index inside a node’s string that should\n * be highlighted as the source of the error\n *\n * @return {CssSyntaxError} error object to throw it\n *\n * @example\n * if ( !variables[name] ) {\n * throw decl.error('Unknown variable ' + name, { word: name });\n * // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black\n * // color: $black\n * // a\n * // ^\n * // background: white\n * }\n */\n\n\n Node.prototype.error = function error(message) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.source) {\n var pos = this.positionBy(opts);\n return this.source.input.error(message, pos.line, pos.column, opts);\n } else {\n return new CssSyntaxError(message);\n }\n };\n /**\n * This method is provided as a convenience wrapper for {@link Result#warn}.\n *\n * @param {Result} result - the {@link Result} instance\n * that will receive the warning\n * @param {string} text - warning message\n * @param {object} [opts] - options\n * @param {string} opts.plugin - plugin name that created this warning.\n * PostCSS will set it automatically.\n * @param {string} opts.word - a word inside a node’s string that should\n * be highlighted as the source of the warning\n * @param {number} opts.index - an index inside a node’s string that should\n * be highlighted as the source of the warning\n *\n * @return {Warning} created warning object\n *\n * @example\n * const plugin = postcss.plugin('postcss-deprecated', () => {\n * return (root, result) => {\n * root.walkDecls('bad', decl => {\n * decl.warn(result, 'Deprecated property bad');\n * });\n * };\n * });\n */\n\n\n Node.prototype.warn = function warn(result, text, opts) {\n var data = {\n node: this\n };\n\n for (var i in opts) {\n data[i] = opts[i];\n }\n\n return result.warn(text, data);\n };\n /**\n * Removes the node from its parent and cleans the parent properties\n * from the node and its children.\n *\n * @example\n * if ( decl.prop.match(/^-webkit-/) ) {\n * decl.remove();\n * }\n *\n * @return {Node} node to make calls chain\n */\n\n\n Node.prototype.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n\n this.parent = undefined;\n return this;\n };\n /**\n * Returns a CSS string representing the node.\n *\n * @param {stringifier|syntax} [stringifier] - a syntax to use\n * in string generation\n *\n * @return {string} CSS string of this node\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {}\"\n */\n\n\n Node.prototype.toString = function toString() {\n var stringifier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : stringify$1;\n if (stringifier.stringify) stringifier = stringifier.stringify;\n var result = '';\n stringifier(this, function (i) {\n result += i;\n });\n return result;\n };\n /**\n * Returns a clone of the node.\n *\n * The resulting cloned node and its (cloned) children will have\n * a clean parent and code style properties.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @example\n * const cloned = decl.clone({ prop: '-moz-' + decl.prop });\n * cloned.raws.before //=> undefined\n * cloned.parent //=> undefined\n * cloned.toString() //=> -moz-transform: scale(0)\n *\n * @return {Node} clone of the node\n */\n\n\n Node.prototype.clone = function clone() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var cloned = cloneNode(this);\n\n for (var name in overrides) {\n cloned[name] = overrides[name];\n }\n\n return cloned;\n };\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * before the current node.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @example\n * decl.cloneBefore({ prop: '-moz-' + decl.prop });\n *\n * @return {Node} - new node\n */\n\n\n Node.prototype.cloneBefore = function cloneBefore() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n };\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * after the current node.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @return {Node} - new node\n */\n\n\n Node.prototype.cloneAfter = function cloneAfter() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n };\n /**\n * Inserts node(s) before the current node and removes the current node.\n *\n * @param {...Node} nodes - node(s) to replace current one\n *\n * @example\n * if ( atrule.name == 'mixin' ) {\n * atrule.replaceWith(mixinRules[atrule.params]);\n * }\n *\n * @return {Node} current node to methods chain\n */\n\n\n Node.prototype.replaceWith = function replaceWith() {\n var _this = this;\n\n if (this.parent) {\n for (var _len = arguments.length, nodes = Array(_len), _key = 0; _key < _len; _key++) {\n nodes[_key] = arguments[_key];\n }\n\n nodes.forEach(function (node) {\n _this.parent.insertBefore(_this, node);\n });\n this.remove();\n }\n\n return this;\n };\n /**\n * Removes the node from its current parent and inserts it\n * at the end of `newParent`.\n *\n * This will clean the `before` and `after` code {@link Node#raws} data\n * from the node and replace them with the indentation style of `newParent`.\n * It will also clean the `between` property\n * if `newParent` is in another {@link Root}.\n *\n * @param {Container} newParent - container node where the current node\n * will be moved\n *\n * @example\n * atrule.moveTo(atrule.root());\n *\n * @return {Node} current node to methods chain\n */\n\n\n Node.prototype.moveTo = function moveTo(newParent) {\n this.cleanRaws(this.root() === newParent.root());\n this.remove();\n newParent.append(this);\n return this;\n };\n /**\n * Removes the node from its current parent and inserts it into\n * a new parent before `otherNode`.\n *\n * This will also clean the node’s code style properties just as it would\n * in {@link Node#moveTo}.\n *\n * @param {Node} otherNode - node that will be before current node\n *\n * @return {Node} current node to methods chain\n */\n\n\n Node.prototype.moveBefore = function moveBefore(otherNode) {\n this.cleanRaws(this.root() === otherNode.root());\n this.remove();\n otherNode.parent.insertBefore(otherNode, this);\n return this;\n };\n /**\n * Removes the node from its current parent and inserts it into\n * a new parent after `otherNode`.\n *\n * This will also clean the node’s code style properties just as it would\n * in {@link Node#moveTo}.\n *\n * @param {Node} otherNode - node that will be after current node\n *\n * @return {Node} current node to methods chain\n */\n\n\n Node.prototype.moveAfter = function moveAfter(otherNode) {\n this.cleanRaws(this.root() === otherNode.root());\n this.remove();\n otherNode.parent.insertAfter(otherNode, this);\n return this;\n };\n /**\n * Returns the next child of the node’s parent.\n * Returns `undefined` if the current node is the last child.\n *\n * @return {Node|undefined} next node\n *\n * @example\n * if ( comment.text === 'delete next' ) {\n * const next = comment.next();\n * if ( next ) {\n * next.remove();\n * }\n * }\n */\n\n\n Node.prototype.next = function next() {\n var index = this.parent.index(this);\n return this.parent.nodes[index + 1];\n };\n /**\n * Returns the previous child of the node’s parent.\n * Returns `undefined` if the current node is the first child.\n *\n * @return {Node|undefined} previous node\n *\n * @example\n * const annotation = decl.prev();\n * if ( annotation.type == 'comment' ) {\n * readAnnotation(annotation.text);\n * }\n */\n\n\n Node.prototype.prev = function prev() {\n var index = this.parent.index(this);\n return this.parent.nodes[index - 1];\n };\n\n Node.prototype.toJSON = function toJSON() {\n var fixed = {};\n\n for (var name in this) {\n if (!this.hasOwnProperty(name)) continue;\n if (name === 'parent') continue;\n var value = this[name];\n\n if (value instanceof Array) {\n fixed[name] = value.map(function (i) {\n if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && i.toJSON) {\n return i.toJSON();\n } else {\n return i;\n }\n });\n } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.toJSON) {\n fixed[name] = value.toJSON();\n } else {\n fixed[name] = value;\n }\n }\n\n return fixed;\n };\n /**\n * Returns a {@link Node#raws} value. If the node is missing\n * the code style property (because the node was manually built or cloned),\n * PostCSS will try to autodetect the code style property by looking\n * at other nodes in the tree.\n *\n * @param {string} prop - name of code style property\n * @param {string} [defaultType] - name of default value, it can be missed\n * if the value is the same as prop\n *\n * @example\n * const root = postcss.parse('a { background: white }');\n * root.nodes[0].append({ prop: 'color', value: 'black' });\n * root.nodes[0].nodes[1].raws.before //=> undefined\n * root.nodes[0].nodes[1].raw('before') //=> ' '\n *\n * @return {string} code style value\n */\n\n\n Node.prototype.raw = function raw(prop, defaultType) {\n var str = new Stringifier();\n return str.raw(this, prop, defaultType);\n };\n /**\n * Finds the Root instance of the node’s tree.\n *\n * @example\n * root.nodes[0].nodes[0].root() === root\n *\n * @return {Root} root parent\n */\n\n\n Node.prototype.root = function root() {\n var result = this;\n\n while (result.parent) {\n result = result.parent;\n }\n\n return result;\n };\n\n Node.prototype.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n\n Node.prototype.positionInside = function positionInside(index) {\n var string = this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n\n for (var i = 0; i < index; i++) {\n if (string[i] === '\\n') {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n\n return {\n line: line,\n column: column\n };\n };\n\n Node.prototype.positionBy = function positionBy(opts) {\n var pos = this.source.start;\n\n if (opts.index) {\n pos = this.positionInside(opts.index);\n } else if (opts.word) {\n var index = this.toString().indexOf(opts.word);\n if (index !== -1) pos = this.positionInside(index);\n }\n\n return pos;\n };\n\n Node.prototype.removeSelf = function removeSelf() {\n warnOnce('Node#removeSelf is deprecated. Use Node#remove.');\n return this.remove();\n };\n\n Node.prototype.replace = function replace(nodes) {\n warnOnce('Node#replace is deprecated. Use Node#replaceWith');\n return this.replaceWith(nodes);\n };\n\n Node.prototype.style = function style(own, detect) {\n warnOnce('Node#style() is deprecated. Use Node#raw()');\n return this.raw(own, detect);\n };\n\n Node.prototype.cleanStyles = function cleanStyles(keepBetween) {\n warnOnce('Node#cleanStyles() is deprecated. Use Node#cleanRaws()');\n return this.cleanRaws(keepBetween);\n };\n\n createClass(Node, [{\n key: 'before',\n get: function get$$1() {\n warnOnce('Node#before is deprecated. Use Node#raws.before');\n return this.raws.before;\n },\n set: function set$$1(val) {\n warnOnce('Node#before is deprecated. Use Node#raws.before');\n this.raws.before = val;\n }\n }, {\n key: 'between',\n get: function get$$1() {\n warnOnce('Node#between is deprecated. Use Node#raws.between');\n return this.raws.between;\n },\n set: function set$$1(val) {\n warnOnce('Node#between is deprecated. Use Node#raws.between');\n this.raws.between = val;\n }\n /**\n * @memberof Node#\n * @member {string} type - String representing the node’s type.\n * Possible values are `root`, `atrule`, `rule`,\n * `decl`, or `comment`.\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl'\n */\n\n /**\n * @memberof Node#\n * @member {Container} parent - the node’s parent node.\n *\n * @example\n * root.nodes[0].parent == root;\n */\n\n /**\n * @memberof Node#\n * @member {source} source - the input source of the node\n *\n * The property is used in source map generation.\n *\n * If you create a node manually (e.g., with `postcss.decl()`),\n * that node will not have a `source` property and will be absent\n * from the source map. For this reason, the plugin developer should\n * consider cloning nodes to create new ones (in which case the new node’s\n * source will reference the original, cloned node) or setting\n * the `source` property manually.\n *\n * ```js\n * // Bad\n * const prefixed = postcss.decl({\n * prop: '-moz-' + decl.prop,\n * value: decl.value\n * });\n *\n * // Good\n * const prefixed = decl.clone({ prop: '-moz-' + decl.prop });\n * ```\n *\n * ```js\n * if ( atrule.name == 'add-link' ) {\n * const rule = postcss.rule({ selector: 'a', source: atrule.source });\n * atrule.parent.insertBefore(atrule, rule);\n * }\n * ```\n *\n * @example\n * decl.source.input.from //=> '/home/ai/a.sass'\n * decl.source.start //=> { line: 10, column: 2 }\n * decl.source.end //=> { line: 10, column: 12 }\n */\n\n /**\n * @memberof Node#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n * * `afterName`: the space between the at-rule name and its parameters.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text\n * and */.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans selectors, declaration values and at-rule parameters\n * from comments and extra spaces, but it stores origin content in raws\n * properties. As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n\n }]);\n return Node;\n}(); // \n\n/**\n * Represents a CSS declaration.\n *\n * @extends Node\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.type //=> 'decl'\n * decl.toString() //=> ' color: black'\n */\n\n\nvar Declaration = function (_Node) {\n inherits(Declaration, _Node);\n\n function Declaration(defaults$$1) {\n classCallCheck(this, Declaration);\n\n var _this = possibleConstructorReturn(this, _Node.call(this, defaults$$1));\n\n _this.type = 'decl';\n return _this;\n }\n\n createClass(Declaration, [{\n key: '_value',\n get: function get$$1() {\n warnOnce('Node#_value was deprecated. Use Node#raws.value');\n return this.raws.value;\n },\n set: function set$$1(val) {\n warnOnce('Node#_value was deprecated. Use Node#raws.value');\n this.raws.value = val;\n }\n }, {\n key: '_important',\n get: function get$$1() {\n warnOnce('Node#_important was deprecated. Use Node#raws.important');\n return this.raws.important;\n },\n set: function set$$1(val) {\n warnOnce('Node#_important was deprecated. Use Node#raws.important');\n this.raws.important = val;\n }\n /**\n * @memberof Declaration#\n * @member {string} prop - the declaration’s property name\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.prop //=> 'color'\n */\n\n /**\n * @memberof Declaration#\n * @member {string} value - the declaration’s value\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.value //=> 'black'\n */\n\n /**\n * @memberof Declaration#\n * @member {boolean} important - `true` if the declaration\n * has an !important annotation.\n *\n * @example\n * const root = postcss.parse('a { color: black !important; color: red }');\n * root.first.first.important //=> true\n * root.first.last.important //=> undefined\n */\n\n /**\n * @memberof Declaration#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans declaration from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n\n }]);\n return Declaration;\n}(Node); // \n\n/**\n * Represents a comment between declarations or statements (rule and at-rules).\n *\n * Comments inside selectors, at-rule parameters, or declaration values\n * will be stored in the `raws` properties explained above.\n *\n * @extends Node\n */\n\n\nvar Comment = function (_Node) {\n inherits(Comment, _Node);\n\n function Comment(defaults$$1) {\n classCallCheck(this, Comment);\n\n var _this = possibleConstructorReturn(this, _Node.call(this, defaults$$1));\n\n _this.type = 'comment';\n return _this;\n }\n\n createClass(Comment, [{\n key: 'left',\n get: function get$$1() {\n warnOnce('Comment#left was deprecated. Use Comment#raws.left');\n return this.raws.left;\n },\n set: function set$$1(val) {\n warnOnce('Comment#left was deprecated. Use Comment#raws.left');\n this.raws.left = val;\n }\n }, {\n key: 'right',\n get: function get$$1() {\n warnOnce('Comment#right was deprecated. Use Comment#raws.right');\n return this.raws.right;\n },\n set: function set$$1(val) {\n warnOnce('Comment#right was deprecated. Use Comment#raws.right');\n this.raws.right = val;\n }\n /**\n * @memberof Comment#\n * @member {string} text - the comment’s text\n */\n\n /**\n * @memberof Comment#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text.\n */\n\n }]);\n return Comment;\n}(Node); // \n\n\nvar Parser = function () {\n function Parser(input) {\n classCallCheck(this, Parser);\n this.input = input;\n this.pos = 0;\n this.root = new Root();\n this.current = this.root;\n this.spaces = '';\n this.semicolon = false;\n this.root.source = {\n input: input,\n start: {\n line: 1,\n column: 1\n }\n };\n }\n\n Parser.prototype.tokenize = function tokenize$$1() {\n this.tokens = tokenize(this.input);\n };\n\n Parser.prototype.loop = function loop() {\n var token = void 0;\n\n while (this.pos < this.tokens.length) {\n token = this.tokens[this.pos];\n\n switch (token[0]) {\n case 'space':\n case ';':\n this.spaces += token[1];\n break;\n\n case '}':\n this.end(token);\n break;\n\n case 'comment':\n this.comment(token);\n break;\n\n case 'at-word':\n this.atrule(token);\n break;\n\n case '{':\n this.emptyRule(token);\n break;\n\n default:\n this.other();\n break;\n }\n\n this.pos += 1;\n }\n\n this.endFile();\n };\n\n Parser.prototype.comment = function comment(token) {\n var node = new Comment();\n this.init(node, token[2], token[3]);\n node.source.end = {\n line: token[4],\n column: token[5]\n };\n var text = token[1].slice(2, -2);\n\n if (/^\\s*$/.test(text)) {\n node.text = '';\n node.raws.left = text;\n node.raws.right = '';\n } else {\n var match = text.match(/^(\\s*)([^]*[^\\s])(\\s*)$/);\n node.text = match[2];\n node.raws.left = match[1];\n node.raws.right = match[3];\n }\n };\n\n Parser.prototype.emptyRule = function emptyRule(token) {\n var node = new Rule();\n this.init(node, token[2], token[3]);\n node.selector = '';\n node.raws.between = '';\n this.current = node;\n };\n\n Parser.prototype.other = function other() {\n var token = void 0;\n var end = false;\n var type = null;\n var colon = false;\n var bracket = null;\n var brackets = [];\n var start = this.pos;\n\n while (this.pos < this.tokens.length) {\n token = this.tokens[this.pos];\n type = token[0];\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token;\n brackets.push(type === '(' ? ')' : ']');\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(this.tokens.slice(start, this.pos + 1));\n return;\n } else {\n break;\n }\n } else if (type === '{') {\n this.rule(this.tokens.slice(start, this.pos + 1));\n return;\n } else if (type === '}') {\n this.pos -= 1;\n end = true;\n break;\n } else if (type === ':') {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n\n this.pos += 1;\n }\n\n if (this.pos === this.tokens.length) {\n this.pos -= 1;\n end = true;\n }\n\n if (brackets.length > 0) this.unclosedBracket(bracket);\n\n if (end && colon) {\n while (this.pos > start) {\n token = this.tokens[this.pos][0];\n if (token !== 'space' && token !== 'comment') break;\n this.pos -= 1;\n }\n\n this.decl(this.tokens.slice(start, this.pos + 1));\n return;\n }\n\n this.unknownWord(start);\n };\n\n Parser.prototype.rule = function rule(tokens) {\n tokens.pop();\n var node = new Rule();\n this.init(node, tokens[0][2], tokens[0][3]);\n node.raws.between = this.spacesFromEnd(tokens);\n this.raw(node, 'selector', tokens);\n this.current = node;\n };\n\n Parser.prototype.decl = function decl(tokens) {\n var node = new Declaration();\n this.init(node);\n var last = tokens[tokens.length - 1];\n\n if (last[0] === ';') {\n this.semicolon = true;\n tokens.pop();\n }\n\n if (last[4]) {\n node.source.end = {\n line: last[4],\n column: last[5]\n };\n } else {\n node.source.end = {\n line: last[2],\n column: last[3]\n };\n }\n\n while (tokens[0][0] !== 'word') {\n node.raws.before += tokens.shift()[1];\n }\n\n node.source.start = {\n line: tokens[0][2],\n column: tokens[0][3]\n };\n node.prop = '';\n\n while (tokens.length) {\n var type = tokens[0][0];\n\n if (type === ':' || type === 'space' || type === 'comment') {\n break;\n }\n\n node.prop += tokens.shift()[1];\n }\n\n node.raws.between = '';\n var token = void 0;\n\n while (tokens.length) {\n token = tokens.shift();\n\n if (token[0] === ':') {\n node.raws.between += token[1];\n break;\n } else {\n node.raws.between += token[1];\n }\n }\n\n if (node.prop[0] === '_' || node.prop[0] === '*') {\n node.raws.before += node.prop[0];\n node.prop = node.prop.slice(1);\n }\n\n node.raws.between += this.spacesFromStart(tokens);\n this.precheckMissedSemicolon(tokens);\n\n for (var i = tokens.length - 1; i > 0; i--) {\n token = tokens[i];\n\n if (token[1] === '!important') {\n node.important = true;\n var string = this.stringFrom(tokens, i);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== ' !important') node.raws.important = string;\n break;\n } else if (token[1] === 'important') {\n var cache = tokens.slice(0);\n var str = '';\n\n for (var j = i; j > 0; j--) {\n var _type = cache[j][0];\n\n if (str.trim().indexOf('!') === 0 && _type !== 'space') {\n break;\n }\n\n str = cache.pop()[1] + str;\n }\n\n if (str.trim().indexOf('!') === 0) {\n node.important = true;\n node.raws.important = str;\n tokens = cache;\n }\n }\n\n if (token[0] !== 'space' && token[0] !== 'comment') {\n break;\n }\n }\n\n this.raw(node, 'value', tokens);\n if (node.value.indexOf(':') !== -1) this.checkMissedSemicolon(tokens);\n };\n\n Parser.prototype.atrule = function atrule(token) {\n var node = new AtRule();\n node.name = token[1].slice(1);\n\n if (node.name === '') {\n this.unnamedAtrule(node, token);\n }\n\n this.init(node, token[2], token[3]);\n var last = false;\n var open = false;\n var params = [];\n this.pos += 1;\n\n while (this.pos < this.tokens.length) {\n token = this.tokens[this.pos];\n\n if (token[0] === ';') {\n node.source.end = {\n line: token[2],\n column: token[3]\n };\n this.semicolon = true;\n break;\n } else if (token[0] === '{') {\n open = true;\n break;\n } else if (token[0] === '}') {\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n\n this.pos += 1;\n }\n\n if (this.pos === this.tokens.length) {\n last = true;\n }\n\n node.raws.between = this.spacesFromEnd(params);\n\n if (params.length) {\n node.raws.afterName = this.spacesFromStart(params);\n this.raw(node, 'params', params);\n\n if (last) {\n token = params[params.length - 1];\n node.source.end = {\n line: token[4],\n column: token[5]\n };\n this.spaces = node.raws.between;\n node.raws.between = '';\n }\n } else {\n node.raws.afterName = '';\n node.params = '';\n }\n\n if (open) {\n node.nodes = [];\n this.current = node;\n }\n };\n\n Parser.prototype.end = function end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n\n this.semicolon = false;\n this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n this.spaces = '';\n\n if (this.current.parent) {\n this.current.source.end = {\n line: token[2],\n column: token[3]\n };\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n };\n\n Parser.prototype.endFile = function endFile() {\n if (this.current.parent) this.unclosedBlock();\n\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n }; // Helpers\n\n\n Parser.prototype.init = function init(node, line, column) {\n this.current.push(node);\n node.source = {\n start: {\n line: line,\n column: column\n },\n input: this.input\n };\n node.raws.before = this.spaces;\n this.spaces = '';\n if (node.type !== 'comment') this.semicolon = false;\n };\n\n Parser.prototype.raw = function raw(node, prop, tokens) {\n var token = void 0,\n type = void 0;\n var length = tokens.length;\n var value = '';\n var clean = true;\n\n for (var i = 0; i < length; i += 1) {\n token = tokens[i];\n type = token[0];\n\n if (type === 'comment' || type === 'space' && i === length - 1) {\n clean = false;\n } else {\n value += token[1];\n }\n }\n\n if (!clean) {\n var raw = tokens.reduce(function (all, i) {\n return all + i[1];\n }, '');\n node.raws[prop] = {\n value: value,\n raw: raw\n };\n }\n\n node[prop] = value;\n };\n\n Parser.prototype.spacesFromEnd = function spacesFromEnd(tokens) {\n var lastTokenType = void 0;\n var spaces = '';\n\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== 'space' && lastTokenType !== 'comment') break;\n spaces = tokens.pop()[1] + spaces;\n }\n\n return spaces;\n };\n\n Parser.prototype.spacesFromStart = function spacesFromStart(tokens) {\n var next = void 0;\n var spaces = '';\n\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== 'space' && next !== 'comment') break;\n spaces += tokens.shift()[1];\n }\n\n return spaces;\n };\n\n Parser.prototype.stringFrom = function stringFrom(tokens, from) {\n var result = '';\n\n for (var i = from; i < tokens.length; i++) {\n result += tokens[i][1];\n }\n\n tokens.splice(from, tokens.length - from);\n return result;\n };\n\n Parser.prototype.colon = function colon(tokens) {\n var brackets = 0;\n var token = void 0,\n type = void 0,\n prev = void 0;\n\n for (var i = 0; i < tokens.length; i++) {\n token = tokens[i];\n type = token[0];\n\n if (type === '(') {\n brackets += 1;\n } else if (type === ')') {\n brackets -= 1;\n } else if (brackets === 0 && type === ':') {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === 'word' && prev[1] === 'progid') {\n continue;\n } else {\n return i;\n }\n }\n\n prev = token;\n }\n\n return false;\n }; // Errors\n\n\n Parser.prototype.unclosedBracket = function unclosedBracket(bracket) {\n throw this.input.error('Unclosed bracket', bracket[2], bracket[3]);\n };\n\n Parser.prototype.unknownWord = function unknownWord(start) {\n var token = this.tokens[start];\n throw this.input.error('Unknown word', token[2], token[3]);\n };\n\n Parser.prototype.unexpectedClose = function unexpectedClose(token) {\n throw this.input.error('Unexpected }', token[2], token[3]);\n };\n\n Parser.prototype.unclosedBlock = function unclosedBlock() {\n var pos = this.current.source.start;\n throw this.input.error('Unclosed block', pos.line, pos.column);\n };\n\n Parser.prototype.doubleColon = function doubleColon(token) {\n throw this.input.error('Double colon', token[2], token[3]);\n };\n\n Parser.prototype.unnamedAtrule = function unnamedAtrule(node, token) {\n throw this.input.error('At-rule without name', token[2], token[3]);\n };\n\n Parser.prototype.precheckMissedSemicolon = function precheckMissedSemicolon(tokens) {};\n\n Parser.prototype.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n var founded = 0;\n var token = void 0;\n\n for (var j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n\n if (token[0] !== 'space') {\n founded += 1;\n if (founded === 2) break;\n }\n }\n\n throw this.input.error('Missed semicolon', token[2], token[3]);\n };\n\n return Parser;\n}(); // \n\n\nfunction parse$1(css, opts) {\n if (opts && opts.safe) {\n throw new Error('Option safe was removed. ' + 'Use parser: require(\"postcss-safe-parser\")');\n }\n\n var input = new Input(css, opts);\n var parser = new Parser(input);\n\n try {\n parser.tokenize();\n parser.loop();\n } catch (e) {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse SCSS with ' + 'the standard CSS parser; ' + 'try again with the postcss-scss parser';\n } else if (/\\.less$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse Less with ' + 'the standard CSS parser; ' + 'try again with the postcss-less parser';\n }\n }\n\n throw e;\n }\n\n return parser.root;\n} // \n\n\nfunction cleanSource(nodes) {\n return nodes.map(function (i) {\n if (i.nodes) i.nodes = cleanSource(i.nodes);\n delete i.source;\n return i;\n });\n}\n/**\n * @callback childCondition\n * @param {Node} node - container child\n * @param {number} index - child index\n * @param {Node[]} nodes - all container children\n * @return {boolean}\n */\n\n/**\n * @callback childIterator\n * @param {Node} node - container child\n * @param {number} index - child index\n * @return {false|undefined} returning `false` will break iteration\n */\n\n/**\n * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes\n * inherit some common methods to help work with their children.\n *\n * Note that all containers can store any content. If you write a rule inside\n * a rule, PostCSS will parse it.\n *\n * @extends Node\n * @abstract\n */\n\n\nvar Container = function (_Node) {\n inherits(Container, _Node);\n\n function Container() {\n classCallCheck(this, Container);\n return possibleConstructorReturn(this, _Node.apply(this, arguments));\n }\n\n Container.prototype.push = function push(child) {\n child.parent = this;\n this.nodes.push(child);\n return this;\n };\n /**\n * Iterates through the container’s immediate children,\n * calling `callback` for each child.\n *\n * Returning `false` in the callback will break iteration.\n *\n * This method only iterates through the container’s immediate children.\n * If you need to recursively iterate through all the container’s descendant\n * nodes, use {@link Container#walk}.\n *\n * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe\n * if you are mutating the array of child nodes during iteration.\n * PostCSS will adjust the current index to match the mutations.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * const root = postcss.parse('a { color: black; z-index: 1 }');\n * const rule = root.first;\n *\n * for ( let decl of rule.nodes ) {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop });\n * // Cycle will be infinite, because cloneBefore moves the current node\n * // to the next index\n * }\n *\n * rule.each(decl => {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop });\n * // Will be executed only for color and z-index\n * });\n */\n\n\n Container.prototype.each = function each(callback) {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n var id = this.lastEach;\n this.indexes[id] = 0;\n if (!this.nodes) return undefined;\n var index = void 0,\n result = void 0;\n\n while (this.indexes[id] < this.nodes.length) {\n index = this.indexes[id];\n result = callback(this.nodes[index], index);\n if (result === false) break;\n this.indexes[id] += 1;\n }\n\n delete this.indexes[id];\n return result;\n };\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each node.\n *\n * Like container.each(), this method is safe to use\n * if you are mutating arrays during iteration.\n *\n * If you only need to iterate through the container’s immediate children,\n * use {@link Container#each}.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walk(node => {\n * // Traverses all descendant nodes.\n * });\n */\n\n\n Container.prototype.walk = function walk(callback) {\n return this.each(function (child, i) {\n var result = callback(child, i);\n\n if (result !== false && child.walk) {\n result = child.walk(callback);\n }\n\n return result;\n });\n };\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each declaration node.\n *\n * If you pass a filter, iteration will only happen over declarations\n * with matching properties.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [prop] - string or regular expression\n * to filter declarations by property name\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkDecls(decl => {\n * checkPropertySupport(decl.prop);\n * });\n *\n * root.walkDecls('border-radius', decl => {\n * decl.remove();\n * });\n *\n * root.walkDecls(/^background/, decl => {\n * decl.value = takeFirstColorFromGradient(decl.value);\n * });\n */\n\n\n Container.prototype.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function (child, i) {\n if (child.type === 'decl') {\n return callback(child, i);\n }\n });\n } else if (prop instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i);\n }\n });\n }\n };\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each rule node.\n *\n * If you pass a filter, iteration will only happen over rules\n * with matching selectors.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [selector] - string or regular expression\n * to filter rules by selector\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * const selectors = [];\n * root.walkRules(rule => {\n * selectors.push(rule.selector);\n * });\n * console.log(`Your CSS uses ${selectors.length} selectors`);\n */\n\n\n Container.prototype.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk(function (child, i) {\n if (child.type === 'rule') {\n return callback(child, i);\n }\n });\n } else if (selector instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i);\n }\n });\n }\n };\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each at-rule node.\n *\n * If you pass a filter, iteration will only happen over at-rules\n * that have matching names.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [name] - string or regular expression\n * to filter at-rules by name\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkAtRules(rule => {\n * if ( isOld(rule.name) ) rule.remove();\n * });\n *\n * let first = false;\n * root.walkAtRules('charset', rule => {\n * if ( !first ) {\n * first = true;\n * } else {\n * rule.remove();\n * }\n * });\n */\n\n\n Container.prototype.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function (child, i) {\n if (child.type === 'atrule') {\n return callback(child, i);\n }\n });\n } else if (name instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i);\n }\n });\n }\n };\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each comment node.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkComments(comment => {\n * comment.remove();\n * });\n */\n\n\n Container.prototype.walkComments = function walkComments(callback) {\n return this.walk(function (child, i) {\n if (child.type === 'comment') {\n return callback(child, i);\n }\n });\n };\n /**\n * Inserts new nodes to the start of the container.\n *\n * @param {...(Node|object|string|Node[])} children - new nodes\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' });\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' });\n * rule.append(decl1, decl2);\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }); // at-rule\n * root.append({ selector: 'a' }); // rule\n * rule.append({ prop: 'color', value: 'black' }); // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}');\n * root.first.append('color: black; z-index: 1');\n */\n\n\n Container.prototype.append = function append() {\n var _this2 = this;\n\n for (var _len = arguments.length, children = Array(_len), _key = 0; _key < _len; _key++) {\n children[_key] = arguments[_key];\n }\n\n children.forEach(function (child) {\n var nodes = _this2.normalize(child, _this2.last);\n\n nodes.forEach(function (node) {\n return _this2.nodes.push(node);\n });\n });\n return this;\n };\n /**\n * Inserts new nodes to the end of the container.\n *\n * @param {...(Node|object|string|Node[])} children - new nodes\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' });\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' });\n * rule.prepend(decl1, decl2);\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }); // at-rule\n * root.append({ selector: 'a' }); // rule\n * rule.append({ prop: 'color', value: 'black' }); // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}');\n * root.first.append('color: black; z-index: 1');\n */\n\n\n Container.prototype.prepend = function prepend() {\n var _this3 = this;\n\n for (var _len2 = arguments.length, children = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n children[_key2] = arguments[_key2];\n }\n\n children = children.reverse();\n children.forEach(function (child) {\n var nodes = _this3.normalize(child, _this3.first, 'prepend').reverse();\n\n nodes.forEach(function (node) {\n return _this3.nodes.unshift(node);\n });\n\n for (var id in _this3.indexes) {\n _this3.indexes[id] = _this3.indexes[id] + nodes.length;\n }\n });\n return this;\n };\n\n Container.prototype.cleanRaws = function cleanRaws(keepBetween) {\n _Node.prototype.cleanRaws.call(this, keepBetween);\n\n if (this.nodes) {\n this.nodes.forEach(function (node) {\n return node.cleanRaws(keepBetween);\n });\n }\n };\n /**\n * Insert new node before old node within the container.\n *\n * @param {Node|number} exist - child or child’s index.\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }));\n */\n\n\n Container.prototype.insertBefore = function insertBefore(exist, add) {\n var _this4 = this;\n\n exist = this.index(exist);\n var type = exist === 0 ? 'prepend' : false;\n var nodes = this.normalize(add, this.nodes[exist], type).reverse();\n nodes.forEach(function (node) {\n return _this4.nodes.splice(exist, 0, node);\n });\n var index = void 0;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (exist <= index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n };\n /**\n * Insert new node after old node within the container.\n *\n * @param {Node|number} exist - child or child’s index\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain\n */\n\n\n Container.prototype.insertAfter = function insertAfter(exist, add) {\n var _this5 = this;\n\n exist = this.index(exist);\n var nodes = this.normalize(add, this.nodes[exist]).reverse();\n nodes.forEach(function (node) {\n return _this5.nodes.splice(exist + 1, 0, node);\n });\n var index = void 0;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (exist < index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n };\n\n Container.prototype.remove = function remove(child) {\n if (typeof child !== 'undefined') {\n warnOnce('Container#remove is deprecated. ' + 'Use Container#removeChild');\n this.removeChild(child);\n } else {\n _Node.prototype.remove.call(this);\n }\n\n return this;\n };\n /**\n * Removes node from the container and cleans the parent properties\n * from the node and its children.\n *\n * @param {Node|number} child - child or child’s index\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.nodes.length //=> 5\n * rule.removeChild(decl);\n * rule.nodes.length //=> 4\n * decl.parent //=> undefined\n */\n\n\n Container.prototype.removeChild = function removeChild(child) {\n child = this.index(child);\n this.nodes[child].parent = undefined;\n this.nodes.splice(child, 1);\n var index = void 0;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (index >= child) {\n this.indexes[id] = index - 1;\n }\n }\n\n return this;\n };\n /**\n * Removes all children from the container\n * and cleans their parent properties.\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.removeAll();\n * rule.nodes.length //=> 0\n */\n\n\n Container.prototype.removeAll = function removeAll() {\n this.nodes.forEach(function (node) {\n return node.parent = undefined;\n });\n this.nodes = [];\n return this;\n };\n /**\n * Passes all declaration values within the container that match pattern\n * through callback, replacing those values with the returned result\n * of callback.\n *\n * This method is useful if you are using a custom unit or function\n * and need to iterate through all values.\n *\n * @param {string|RegExp} pattern - replace pattern\n * @param {object} opts - options to speed up the search\n * @param {string|string[]} opts.props - an array of property names\n * @param {string} opts.fast - string that’s used\n * to narrow down values and speed up\n the regexp search\n * @param {function|string} callback - string to replace pattern\n * or callback that returns a new\n * value.\n * The callback will receive\n * the same arguments as those\n * passed to a function parameter\n * of `String#replace`.\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * root.replaceValues(/\\d+rem/, { fast: 'rem' }, string => {\n * return 15 * parseInt(string) + 'px';\n * });\n */\n\n\n Container.prototype.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n\n this.walkDecls(function (decl) {\n if (opts.props && opts.props.indexOf(decl.prop) === -1) return;\n if (opts.fast && decl.value.indexOf(opts.fast) === -1) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n return this;\n };\n /**\n * Returns `true` if callback returns `true`\n * for all of the container’s children.\n *\n * @param {childCondition} condition - iterator returns true or false.\n *\n * @return {boolean} is every child pass condition\n *\n * @example\n * const noPrefixes = rule.every(i => i.prop[0] !== '-');\n */\n\n\n Container.prototype.every = function every(condition) {\n return this.nodes.every(condition);\n };\n /**\n * Returns `true` if callback returns `true` for (at least) one\n * of the container’s children.\n *\n * @param {childCondition} condition - iterator returns true or false.\n *\n * @return {boolean} is some child pass condition\n *\n * @example\n * const hasPrefix = rule.some(i => i.prop[0] === '-');\n */\n\n\n Container.prototype.some = function some(condition) {\n return this.nodes.some(condition);\n };\n /**\n * Returns a `child`’s index within the {@link Container#nodes} array.\n *\n * @param {Node} child - child of the current container.\n *\n * @return {number} child index\n *\n * @example\n * rule.index( rule.nodes[2] ) //=> 2\n */\n\n\n Container.prototype.index = function index(child) {\n if (typeof child === 'number') {\n return child;\n } else {\n return this.nodes.indexOf(child);\n }\n };\n /**\n * The container’s first child.\n *\n * @type {Node}\n *\n * @example\n * rule.first == rules.nodes[0];\n */\n\n\n Container.prototype.normalize = function normalize(nodes, sample) {\n var _this6 = this;\n\n if (typeof nodes === 'string') {\n nodes = cleanSource(parse$1(nodes).nodes);\n } else if (!Array.isArray(nodes)) {\n if (nodes.type === 'root') {\n nodes = nodes.nodes;\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation');\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value);\n }\n\n nodes = [new Declaration(nodes)];\n } else if (nodes.selector) {\n nodes = [new Rule(nodes)];\n } else if (nodes.name) {\n nodes = [new AtRule(nodes)];\n } else if (nodes.text) {\n nodes = [new Comment(nodes)];\n } else {\n throw new Error('Unknown node type in node creation');\n }\n }\n\n var processed = nodes.map(function (i) {\n if (typeof i.raws === 'undefined') i = _this6.rebuild(i);\n if (i.parent) i = i.clone();\n\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/[^\\s]/g, '');\n }\n }\n\n i.parent = _this6;\n return i;\n });\n return processed;\n };\n\n Container.prototype.rebuild = function rebuild(node, parent) {\n var _this7 = this;\n\n var fix = void 0;\n\n if (node.type === 'root') {\n fix = new Root();\n } else if (node.type === 'atrule') {\n fix = new AtRule();\n } else if (node.type === 'rule') {\n fix = new Rule();\n } else if (node.type === 'decl') {\n fix = new Declaration();\n } else if (node.type === 'comment') {\n fix = new Comment();\n }\n\n for (var i in node) {\n if (i === 'nodes') {\n fix.nodes = node.nodes.map(function (j) {\n return _this7.rebuild(j, fix);\n });\n } else if (i === 'parent' && parent) {\n fix.parent = parent;\n } else if (node.hasOwnProperty(i)) {\n fix[i] = node[i];\n }\n }\n\n return fix;\n };\n\n Container.prototype.eachInside = function eachInside(callback) {\n warnOnce('Container#eachInside is deprecated. ' + 'Use Container#walk instead.');\n return this.walk(callback);\n };\n\n Container.prototype.eachDecl = function eachDecl(prop, callback) {\n warnOnce('Container#eachDecl is deprecated. ' + 'Use Container#walkDecls instead.');\n return this.walkDecls(prop, callback);\n };\n\n Container.prototype.eachRule = function eachRule(selector, callback) {\n warnOnce('Container#eachRule is deprecated. ' + 'Use Container#walkRules instead.');\n return this.walkRules(selector, callback);\n };\n\n Container.prototype.eachAtRule = function eachAtRule(name, callback) {\n warnOnce('Container#eachAtRule is deprecated. ' + 'Use Container#walkAtRules instead.');\n return this.walkAtRules(name, callback);\n };\n\n Container.prototype.eachComment = function eachComment(callback) {\n warnOnce('Container#eachComment is deprecated. ' + 'Use Container#walkComments instead.');\n return this.walkComments(callback);\n };\n\n createClass(Container, [{\n key: 'first',\n get: function get$$1() {\n if (!this.nodes) return undefined;\n return this.nodes[0];\n }\n /**\n * The container’s last child.\n *\n * @type {Node}\n *\n * @example\n * rule.last == rule.nodes[rule.nodes.length - 1];\n */\n\n }, {\n key: 'last',\n get: function get$$1() {\n if (!this.nodes) return undefined;\n return this.nodes[this.nodes.length - 1];\n }\n }, {\n key: 'semicolon',\n get: function get$$1() {\n warnOnce('Node#semicolon is deprecated. Use Node#raws.semicolon');\n return this.raws.semicolon;\n },\n set: function set$$1(val) {\n warnOnce('Node#semicolon is deprecated. Use Node#raws.semicolon');\n this.raws.semicolon = val;\n }\n }, {\n key: 'after',\n get: function get$$1() {\n warnOnce('Node#after is deprecated. Use Node#raws.after');\n return this.raws.after;\n },\n set: function set$$1(val) {\n warnOnce('Node#after is deprecated. Use Node#raws.after');\n this.raws.after = val;\n }\n /**\n * @memberof Container#\n * @member {Node[]} nodes - an array containing the container’s children\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * root.nodes.length //=> 1\n * root.nodes[0].selector //=> 'a'\n * root.nodes[0].nodes[0].prop //=> 'color'\n */\n\n }]);\n return Container;\n}(Node); // \n\n/**\n * Represents an at-rule.\n *\n * If it’s followed in the CSS by a {} block, this node will have\n * a nodes property representing its children.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('@charset \"UTF-8\"; @media print {}');\n *\n * const charset = root.first;\n * charset.type //=> 'atrule'\n * charset.nodes //=> undefined\n *\n * const media = root.last;\n * media.nodes //=> []\n */\n\n\nvar AtRule = function (_Container) {\n inherits(AtRule, _Container);\n\n function AtRule(defaults$$1) {\n classCallCheck(this, AtRule);\n\n var _this = possibleConstructorReturn(this, _Container.call(this, defaults$$1));\n\n _this.type = 'atrule';\n return _this;\n }\n\n AtRule.prototype.append = function append() {\n var _Container$prototype$;\n\n if (!this.nodes) this.nodes = [];\n\n for (var _len = arguments.length, children = Array(_len), _key = 0; _key < _len; _key++) {\n children[_key] = arguments[_key];\n }\n\n return (_Container$prototype$ = _Container.prototype.append).call.apply(_Container$prototype$, [this].concat(children));\n };\n\n AtRule.prototype.prepend = function prepend() {\n var _Container$prototype$2;\n\n if (!this.nodes) this.nodes = [];\n\n for (var _len2 = arguments.length, children = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n children[_key2] = arguments[_key2];\n }\n\n return (_Container$prototype$2 = _Container.prototype.prepend).call.apply(_Container$prototype$2, [this].concat(children));\n };\n\n createClass(AtRule, [{\n key: 'afterName',\n get: function get$$1() {\n warnOnce('AtRule#afterName was deprecated. Use AtRule#raws.afterName');\n return this.raws.afterName;\n },\n set: function set$$1(val) {\n warnOnce('AtRule#afterName was deprecated. Use AtRule#raws.afterName');\n this.raws.afterName = val;\n }\n }, {\n key: '_params',\n get: function get$$1() {\n warnOnce('AtRule#_params was deprecated. Use AtRule#raws.params');\n return this.raws.params;\n },\n set: function set$$1(val) {\n warnOnce('AtRule#_params was deprecated. Use AtRule#raws.params');\n this.raws.params = val;\n }\n /**\n * @memberof AtRule#\n * @member {string} name - the at-rule’s name immediately follows the `@`\n *\n * @example\n * const root = postcss.parse('@media print {}');\n * media.name //=> 'media'\n * const media = root.first;\n */\n\n /**\n * @memberof AtRule#\n * @member {string} params - the at-rule’s parameters, the values\n * that follow the at-rule’s name but precede\n * any {} block\n *\n * @example\n * const root = postcss.parse('@media print, screen {}');\n * const media = root.first;\n * media.params //=> 'print, screen'\n */\n\n /**\n * @memberof AtRule#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n * * `afterName`: the space between the at-rule name and its parameters.\n *\n * PostCSS cleans at-rule parameters from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse(' @media\\nprint {\\n}')\n * root.first.first.raws //=> { before: ' ',\n * // between: ' ',\n * // afterName: '\\n',\n * // after: '\\n' }\n */\n\n }]);\n return AtRule;\n}(Container); // \n\n/**\n * Contains helpers for safely splitting lists of CSS values,\n * preserving parentheses and quotes.\n *\n * @example\n * const list = postcss.list;\n *\n * @namespace list\n */\n\n\nvar list = {\n split: function split(string, separators, last) {\n var array = [];\n var current = '';\n var split = false;\n var func = 0;\n var quote = false;\n var escape = false;\n\n for (var i = 0; i < string.length; i++) {\n var letter = string[i];\n\n if (quote) {\n if (escape) {\n escape = false;\n } else if (letter === '\\\\') {\n escape = true;\n } else if (letter === quote) {\n quote = false;\n }\n } else if (letter === '\"' || letter === \"'\") {\n quote = letter;\n } else if (letter === '(') {\n func += 1;\n } else if (letter === ')') {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.indexOf(letter) !== -1) split = true;\n }\n\n if (split) {\n if (current !== '') array.push(current.trim());\n current = '';\n split = false;\n } else {\n current += letter;\n }\n }\n\n if (last || current !== '') array.push(current.trim());\n return array;\n },\n\n /**\n * Safely splits space-separated values (such as those for `background`,\n * `border-radius`, and other shorthand properties).\n *\n * @param {string} string - space-separated values\n *\n * @return {string[]} splitted values\n *\n * @example\n * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']\n */\n space: function space(string) {\n var spaces = [' ', '\\n', '\\t'];\n return list.split(string, spaces);\n },\n\n /**\n * Safely splits comma-separated values (such as those for `transition-*`\n * and `background` properties).\n *\n * @param {string} string - comma-separated values\n *\n * @return {string[]} splitted values\n *\n * @example\n * postcss.list.comma('black, linear-gradient(white, black)')\n * //=> ['black', 'linear-gradient(white, black)']\n */\n comma: function comma(string) {\n var comma = ',';\n return list.split(string, [comma], true);\n }\n}; // \n\n/**\n * Represents a CSS rule: a selector followed by a declaration block.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{}');\n * const rule = root.first;\n * rule.type //=> 'rule'\n * rule.toString() //=> 'a{}'\n */\n\nvar Rule = function (_Container) {\n inherits(Rule, _Container);\n\n function Rule(defaults$$1) {\n classCallCheck(this, Rule);\n\n var _this = possibleConstructorReturn(this, _Container.call(this, defaults$$1));\n\n _this.type = 'rule';\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n /**\n * An array containing the rule’s individual selectors.\n * Groups of selectors are split at commas.\n *\n * @type {string[]}\n *\n * @example\n * const root = postcss.parse('a, b { }');\n * const rule = root.first;\n *\n * rule.selector //=> 'a, b'\n * rule.selectors //=> ['a', 'b']\n *\n * rule.selectors = ['a', 'strong'];\n * rule.selector //=> 'a, strong'\n */\n\n\n createClass(Rule, [{\n key: 'selectors',\n get: function get$$1() {\n return list.comma(this.selector);\n },\n set: function set$$1(values) {\n var match = this.selector ? this.selector.match(/,\\s*/) : null;\n var sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen');\n this.selector = values.join(sep);\n }\n }, {\n key: '_selector',\n get: function get$$1() {\n warnOnce('Rule#_selector is deprecated. Use Rule#raws.selector');\n return this.raws.selector;\n },\n set: function set$$1(val) {\n warnOnce('Rule#_selector is deprecated. Use Rule#raws.selector');\n this.raws.selector = val;\n }\n /**\n * @memberof Rule#\n * @member {string} selector - the rule’s full selector represented\n * as a string\n *\n * @example\n * const root = postcss.parse('a, b { }');\n * const rule = root.first;\n * rule.selector //=> 'a, b'\n */\n\n /**\n * @memberof Rule#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n *\n * PostCSS cleans selectors from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '', between: ' ', after: '\\n' }\n */\n\n }]);\n return Rule;\n}(Container); // \n\n/**\n * Represents a plugin’s warning. It can be created using {@link Node#warn}.\n *\n * @example\n * if ( decl.important ) {\n * decl.warn(result, 'Avoid !important', { word: '!important' });\n * }\n */\n\n\nvar Warning = function () {\n /**\n * @param {string} text - warning message\n * @param {Object} [opts] - warning options\n * @param {Node} opts.node - CSS node that caused the warning\n * @param {string} opts.word - word in CSS source that caused the warning\n * @param {number} opts.index - index in CSS node string that caused\n * the warning\n * @param {string} opts.plugin - name of the plugin that created\n * this warning. {@link Result#warn} fills\n * this property automatically.\n */\n function Warning(text) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, Warning);\n /**\n * @member {string} - Type to filter warnings from\n * {@link Result#messages}. Always equal\n * to `\"warning\"`.\n *\n * @example\n * const nonWarning = result.messages.filter(i => i.type !== 'warning')\n */\n\n this.type = 'warning';\n /**\n * @member {string} - The warning message.\n *\n * @example\n * warning.text //=> 'Try to avoid !important'\n */\n\n this.text = text;\n\n if (opts.node && opts.node.source) {\n var pos = opts.node.positionBy(opts);\n /**\n * @member {number} - Line in the input file\n * with this warning’s source\n *\n * @example\n * warning.line //=> 5\n */\n\n this.line = pos.line;\n /**\n * @member {number} - Column in the input file\n * with this warning’s source.\n *\n * @example\n * warning.column //=> 6\n */\n\n this.column = pos.column;\n }\n\n for (var opt in opts) {\n this[opt] = opts[opt];\n }\n }\n /**\n * Returns a warning position and message.\n *\n * @example\n * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important'\n *\n * @return {string} warning position and message\n */\n\n\n Warning.prototype.toString = function toString() {\n if (this.node) {\n return this.node.error(this.text, {\n plugin: this.plugin,\n index: this.index,\n word: this.word\n }).message;\n } else if (this.plugin) {\n return this.plugin + ': ' + this.text;\n } else {\n return this.text;\n }\n };\n /**\n * @memberof Warning#\n * @member {string} plugin - The name of the plugin that created\n * it will fill this property automatically.\n * this warning. When you call {@link Node#warn}\n *\n * @example\n * warning.plugin //=> 'postcss-important'\n */\n\n /**\n * @memberof Warning#\n * @member {Node} node - Contains the CSS node that caused the warning.\n *\n * @example\n * warning.node.toString() //=> 'color: white !important'\n */\n\n\n return Warning;\n}(); // \n\n/**\n * @typedef {object} Message\n * @property {string} type - message type\n * @property {string} plugin - source PostCSS plugin name\n */\n\n/**\n * Provides the result of the PostCSS transformations.\n *\n * A Result instance is returned by {@link LazyResult#then}\n * or {@link Root#toResult} methods.\n *\n * @example\n * postcss([cssnext]).process(css).then(function (result) {\n * console.log(result.css);\n * });\n *\n * @example\n * var result2 = postcss.parse(css).toResult();\n */\n\n\nvar Result = function () {\n /**\n * @param {Processor} processor - processor used for this transformation.\n * @param {Root} root - Root node after all transformations.\n * @param {processOptions} opts - options from the {@link Processor#process}\n * or {@link Root#toResult}\n */\n function Result(processor, root, opts) {\n classCallCheck(this, Result);\n /**\n * @member {Processor} - The Processor instance used\n * for this transformation.\n *\n * @example\n * for ( let plugin of result.processor.plugins) {\n * if ( plugin.postcssPlugin === 'postcss-bad' ) {\n * throw 'postcss-good is incompatible with postcss-bad';\n * }\n * });\n */\n\n this.processor = processor;\n /**\n * @member {Message[]} - Contains messages from plugins\n * (e.g., warnings or custom messages).\n * Each message should have type\n * and plugin properties.\n *\n * @example\n * postcss.plugin('postcss-min-browser', () => {\n * return (root, result) => {\n * var browsers = detectMinBrowsersByCanIUse(root);\n * result.messages.push({\n * type: 'min-browser',\n * plugin: 'postcss-min-browser',\n * browsers: browsers\n * });\n * };\n * });\n */\n\n this.messages = [];\n /**\n * @member {Root} - Root node after all transformations.\n *\n * @example\n * root.toResult().root == root;\n */\n\n this.root = root;\n /**\n * @member {processOptions} - Options from the {@link Processor#process}\n * or {@link Root#toResult} call\n * that produced this Result instance.\n *\n * @example\n * root.toResult(opts).opts == opts;\n */\n\n this.opts = opts;\n /**\n * @member {string} - A CSS string representing of {@link Result#root}.\n *\n * @example\n * postcss.parse('a{}').toResult().css //=> \"a{}\"\n */\n\n this.css = undefined;\n /**\n * @member {SourceMapGenerator} - An instance of `SourceMapGenerator`\n * class from the `source-map` library,\n * representing changes\n * to the {@link Result#root} instance.\n *\n * @example\n * result.map.toJSON() //=> { version: 3, file: 'a.css', … }\n *\n * @example\n * if ( result.map ) {\n * fs.writeFileSync(result.opts.to + '.map', result.map.toString());\n * }\n */\n\n this.map = undefined;\n }\n /**\n * Returns for @{link Result#css} content.\n *\n * @example\n * result + '' === result.css\n *\n * @return {string} string representing of {@link Result#root}\n */\n\n\n Result.prototype.toString = function toString() {\n return this.css;\n };\n /**\n * Creates an instance of {@link Warning} and adds it\n * to {@link Result#messages}.\n *\n * @param {string} text - warning message\n * @param {Object} [opts] - warning options\n * @param {Node} opts.node - CSS node that caused the warning\n * @param {string} opts.word - word in CSS source that caused the warning\n * @param {number} opts.index - index in CSS node string that caused\n * the warning\n * @param {string} opts.plugin - name of the plugin that created\n * this warning. {@link Result#warn} fills\n * this property automatically.\n *\n * @return {Warning} created warning\n */\n\n\n Result.prototype.warn = function warn(text) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n\n var warning = new Warning(text, opts);\n this.messages.push(warning);\n return warning;\n };\n /**\n * Returns warnings from plugins. Filters {@link Warning} instances\n * from {@link Result#messages}.\n *\n * @example\n * result.warnings().forEach(warn => {\n * console.warn(warn.toString());\n * });\n *\n * @return {Warning[]} warnings from plugins\n */\n\n\n Result.prototype.warnings = function warnings() {\n return this.messages.filter(function (i) {\n return i.type === 'warning';\n });\n };\n /**\n * An alias for the {@link Result#css} property.\n * Use it with syntaxes that generate non-CSS output.\n * @type {string}\n *\n * @example\n * result.css === result.content;\n */\n\n\n createClass(Result, [{\n key: 'content',\n get: function get$$1() {\n return this.css;\n }\n }]);\n return Result;\n}(); // \n\n\nfunction isPromise(obj) {\n return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && typeof obj.then === 'function';\n}\n/**\n * @callback onFulfilled\n * @param {Result} result\n */\n\n/**\n * @callback onRejected\n * @param {Error} error\n */\n\n/**\n * A Promise proxy for the result of PostCSS transformations.\n *\n * A `LazyResult` instance is returned by {@link Processor#process}.\n *\n * @example\n * const lazy = postcss([cssnext]).process(css);\n */\n\n\nvar LazyResult = function () {\n function LazyResult(processor, css, opts) {\n classCallCheck(this, LazyResult);\n this.stringified = false;\n this.processed = false;\n var root = void 0;\n\n if ((typeof css === 'undefined' ? 'undefined' : _typeof(css)) === 'object' && css.type === 'root') {\n root = css;\n } else if (css instanceof LazyResult || css instanceof Result) {\n root = css.root;\n\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n var parser = parse$1;\n if (opts.syntax) parser = opts.syntax.parse;\n if (opts.parser) parser = opts.parser;\n if (parser.parse) parser = parser.parse;\n\n try {\n root = parser(css, opts);\n } catch (error) {\n this.error = error;\n }\n }\n\n this.result = new Result(processor, root, opts);\n }\n /**\n * Returns a {@link Processor} instance, which will be used\n * for CSS transformations.\n * @type {Processor}\n */\n\n /**\n * Processes input CSS through synchronous plugins\n * and calls {@link Result#warnings()}.\n *\n * @return {Warning[]} warnings from plugins\n */\n\n\n LazyResult.prototype.warnings = function warnings() {\n return this.sync().warnings();\n };\n /**\n * Alias for the {@link LazyResult#css} property.\n *\n * @example\n * lazy + '' === lazy.css;\n *\n * @return {string} output CSS\n */\n\n\n LazyResult.prototype.toString = function toString() {\n return this.css;\n };\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls `onFulfilled` with a Result instance. If a plugin throws\n * an error, the `onRejected` callback will be executed.\n *\n * It implements standard Promise API.\n *\n * @param {onFulfilled} onFulfilled - callback will be executed\n * when all plugins will finish work\n * @param {onRejected} onRejected - callback will be execited on any error\n *\n * @return {Promise} Promise API to make queue\n *\n * @example\n * postcss([cssnext]).process(css).then(result => {\n * console.log(result.css);\n * });\n */\n\n\n LazyResult.prototype.then = function then(onFulfilled, onRejected) {\n return this.async().then(onFulfilled, onRejected);\n };\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls onRejected for each error thrown in any plugin.\n *\n * It implements standard Promise API.\n *\n * @param {onRejected} onRejected - callback will be execited on any error\n *\n * @return {Promise} Promise API to make queue\n *\n * @example\n * postcss([cssnext]).process(css).then(result => {\n * console.log(result.css);\n * }).catch(error => {\n * console.error(error);\n * });\n */\n\n\n LazyResult.prototype.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n\n LazyResult.prototype.handleError = function handleError(error, plugin) {\n try {\n this.error = error;\n\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin;\n error.setMessage();\n } else if (plugin.postcssVersion) {\n var pluginName = plugin.postcssPlugin;\n var pluginVer = plugin.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a = pluginVer.split('.');\n var b = runtimeVer.split('.');\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n warnOnce('' + ('Your current PostCSS version ' + 'is ') + runtimeVer + ', but ' + pluginName + ' ' + ('uses ' + pluginVer + '. Perhaps this is ') + 'the source of the error below.');\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n };\n\n LazyResult.prototype.asyncTick = function asyncTick(resolve, reject) {\n var _this = this;\n\n if (this.plugin >= this.processor.plugins.length) {\n this.processed = true;\n return resolve();\n }\n\n try {\n var plugin = this.processor.plugins[this.plugin];\n var promise = this.run(plugin);\n this.plugin += 1;\n\n if (isPromise(promise)) {\n promise.then(function () {\n _this.asyncTick(resolve, reject);\n }).catch(function (error) {\n _this.handleError(error, plugin);\n\n _this.processed = true;\n reject(error);\n });\n } else {\n this.asyncTick(resolve, reject);\n }\n } catch (error) {\n this.processed = true;\n reject(error);\n }\n };\n\n LazyResult.prototype.async = function async() {\n var _this2 = this;\n\n if (this.processed) {\n return new Promise(function (resolve, reject) {\n if (_this2.error) {\n reject(_this2.error);\n } else {\n resolve(_this2.stringify());\n }\n });\n }\n\n if (this.processing) {\n return this.processing;\n }\n\n this.processing = new Promise(function (resolve, reject) {\n if (_this2.error) return reject(_this2.error);\n _this2.plugin = 0;\n\n _this2.asyncTick(resolve, reject);\n }).then(function () {\n _this2.processed = true;\n return _this2.stringify();\n });\n return this.processing;\n };\n\n LazyResult.prototype.sync = function sync() {\n var _this3 = this;\n\n if (this.processed) return this.result;\n this.processed = true;\n\n if (this.processing) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n\n if (this.error) throw this.error;\n this.result.processor.plugins.forEach(function (plugin) {\n var promise = _this3.run(plugin);\n\n if (isPromise(promise)) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n });\n return this.result;\n };\n\n LazyResult.prototype.run = function run(plugin) {\n this.result.lastPlugin = plugin;\n\n try {\n return plugin(this.result.root, this.result);\n } catch (error) {\n this.handleError(error, plugin);\n throw error;\n }\n };\n\n LazyResult.prototype.stringify = function stringify$$1() {\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n var opts = this.result.opts;\n var str = stringify$1;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n var result = '';\n str(this.root, function (i) {\n result += i;\n });\n this.result.css = result;\n return this.result;\n };\n\n createClass(LazyResult, [{\n key: 'processor',\n get: function get$$1() {\n return this.result.processor;\n }\n /**\n * Options from the {@link Processor#process} call.\n * @type {processOptions}\n */\n\n }, {\n key: 'opts',\n get: function get$$1() {\n return this.result.opts;\n }\n /**\n * Processes input CSS through synchronous plugins, converts `Root`\n * to a CSS string and returns {@link Result#css}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#css\n */\n\n }, {\n key: 'css',\n get: function get$$1() {\n return this.stringify().css;\n }\n /**\n * An alias for the `css` property. Use it with syntaxes\n * that generate non-CSS output.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#content\n */\n\n }, {\n key: 'content',\n get: function get$$1() {\n return this.stringify().content;\n }\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#map}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {SourceMapGenerator}\n * @see Result#map\n */\n\n }, {\n key: 'map',\n get: function get$$1() {\n return this.stringify().map;\n }\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#root}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Root}\n * @see Result#root\n */\n\n }, {\n key: 'root',\n get: function get$$1() {\n return this.sync().root;\n }\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#messages}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Message[]}\n * @see Result#messages\n */\n\n }, {\n key: 'messages',\n get: function get$$1() {\n return this.sync().messages;\n }\n }]);\n return LazyResult;\n}(); // \n\n/**\n * @callback builder\n * @param {string} part - part of generated CSS connected to this node\n * @param {Node} node - AST node\n * @param {\"start\"|\"end\"} [type] - node’s part type\n */\n\n/**\n * @callback parser\n *\n * @param {string|toString} css - string with input CSS or any object\n * with toString() method, like a Buffer\n * @param {processOptions} [opts] - options with only `from` and `map` keys\n *\n * @return {Root} PostCSS AST\n */\n\n/**\n * @callback stringifier\n *\n * @param {Node} node - start node for stringifing. Usually {@link Root}.\n * @param {builder} builder - function to concatenate CSS from node’s parts\n * or generate string and source map\n *\n * @return {void}\n */\n\n/**\n * @typedef {object} syntax\n * @property {parser} parse - function to generate AST by string\n * @property {stringifier} stringify - function to generate string by AST\n */\n\n/**\n * @typedef {object} toString\n * @property {function} toString\n */\n\n/**\n * @callback pluginFunction\n * @param {Root} root - parsed input CSS\n * @param {Result} result - result to set warnings or check other plugins\n */\n\n/**\n * @typedef {object} Plugin\n * @property {function} postcss - PostCSS plugin function\n */\n\n/**\n * @typedef {object} processOptions\n * @property {string} from - the path of the CSS source file.\n * You should always set `from`,\n * because it is used in source map\n * generation and syntax error messages.\n * @property {string} to - the path where you’ll put the output\n * CSS file. You should always set `to`\n * to generate correct source maps.\n * @property {parser} parser - function to generate AST by string\n * @property {stringifier} stringifier - class to generate string by AST\n * @property {syntax} syntax - object with `parse` and `stringify`\n * @property {object} map - source map options\n * @property {boolean} map.inline - does source map should\n * be embedded in the output\n * CSS as a base64-encoded\n * comment\n * @property {string|object|false|function} map.prev - source map content\n * from a previous\n * processing step\n * (for example, Sass).\n * PostCSS will try to find\n * previous map\n * automatically, so you\n * could disable it by\n * `false` value.\n * @property {boolean} map.sourcesContent - does PostCSS should set\n * the origin content to map\n * @property {string|false} map.annotation - does PostCSS should set\n * annotation comment to map\n * @property {string} map.from - override `from` in map’s\n * `sources`\n */\n\n/**\n * Contains plugins to process CSS. Create one `Processor` instance,\n * initialize its plugins, and then use that instance on numerous CSS files.\n *\n * @example\n * const processor = postcss([autoprefixer, precss]);\n * processor.process(css1).then(result => console.log(result.css));\n * processor.process(css2).then(result => console.log(result.css));\n */\n\n\nvar Processor = function () {\n /**\n * @param {Array.|Processor} plugins - PostCSS\n * plugins. See {@link Processor#use} for plugin format.\n */\n function Processor() {\n var plugins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n classCallCheck(this, Processor);\n /**\n * @member {string} - Current PostCSS version.\n *\n * @example\n * if ( result.processor.version.split('.')[0] !== '5' ) {\n * throw new Error('This plugin works only with PostCSS 5');\n * }\n */\n\n this.version = '5.2.0';\n /**\n * @member {pluginFunction[]} - Plugins added to this processor.\n *\n * @example\n * const processor = postcss([autoprefixer, precss]);\n * processor.plugins.length //=> 2\n */\n\n this.plugins = this.normalize(plugins);\n }\n /**\n * Adds a plugin to be used as a CSS processor.\n *\n * PostCSS plugin can be in 4 formats:\n * * A plugin created by {@link postcss.plugin} method.\n * * A function. PostCSS will pass the function a @{link Root}\n * as the first argument and current {@link Result} instance\n * as the second.\n * * An object with a `postcss` method. PostCSS will use that method\n * as described in #2.\n * * Another {@link Processor} instance. PostCSS will copy plugins\n * from that instance into this one.\n *\n * Plugins can also be added by passing them as arguments when creating\n * a `postcss` instance (see [`postcss(plugins)`]).\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * @param {Plugin|pluginFunction|Processor} plugin - PostCSS plugin\n * or {@link Processor}\n * with plugins\n *\n * @example\n * const processor = postcss()\n * .use(autoprefixer)\n * .use(precss);\n *\n * @return {Processes} current processor to make methods chain\n */\n\n\n Processor.prototype.use = function use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]));\n return this;\n };\n /**\n * Parses source CSS and returns a {@link LazyResult} Promise proxy.\n * Because some plugins can be asynchronous it doesn’t make\n * any transformations. Transformations will be applied\n * in the {@link LazyResult} methods.\n *\n * @param {string|toString|Result} css - String with input CSS or\n * any object with a `toString()`\n * method, like a Buffer.\n * Optionally, send a {@link Result}\n * instance and the processor will\n * take the {@link Root} from it.\n * @param {processOptions} [opts] - options\n *\n * @return {LazyResult} Promise proxy\n *\n * @example\n * processor.process(css, { from: 'a.css', to: 'a.out.css' })\n * .then(result => {\n * console.log(result.css);\n * });\n */\n\n\n Processor.prototype.process = function process(css) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new LazyResult(this, css, opts);\n };\n\n Processor.prototype.normalize = function normalize(plugins) {\n var normalized = [];\n plugins.forEach(function (i) {\n if (i.postcss) i = i.postcss;\n\n if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins);\n } else if (typeof i === 'function') {\n normalized.push(i);\n } else {\n throw new Error(i + ' is not a PostCSS plugin');\n }\n });\n return normalized;\n };\n\n return Processor;\n}(); // \n\n/**\n * Represents a CSS file and contains all its parsed nodes.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{color:black} b{z-index:2}');\n * root.type //=> 'root'\n * root.nodes.length //=> 2\n */\n\n\nvar Root = function (_Container) {\n inherits(Root, _Container);\n\n function Root(defaults$$1) {\n classCallCheck(this, Root);\n\n var _this = possibleConstructorReturn(this, _Container.call(this, defaults$$1));\n\n _this.type = 'root';\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n\n Root.prototype.removeChild = function removeChild(child) {\n child = this.index(child);\n\n if (child === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[child].raws.before;\n }\n\n return _Container.prototype.removeChild.call(this, child);\n };\n\n Root.prototype.normalize = function normalize(child, sample, type) {\n var nodes = _Container.prototype.normalize.call(this, child);\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n nodes.forEach(function (node) {\n node.raws.before = sample.raws.before;\n });\n }\n }\n\n return nodes;\n };\n /**\n * Returns a {@link Result} instance representing the root’s CSS.\n *\n * @param {processOptions} [opts] - options with only `to` and `map` keys\n *\n * @return {Result} result with current root’s CSS\n *\n * @example\n * const root1 = postcss.parse(css1, { from: 'a.css' });\n * const root2 = postcss.parse(css2, { from: 'b.css' });\n * root1.append(root2);\n * const result = root1.toResult({ to: 'all.css', map: true });\n */\n\n\n Root.prototype.toResult = function toResult() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n };\n\n Root.prototype.remove = function remove(child) {\n warnOnce('Root#remove is deprecated. Use Root#removeChild');\n this.removeChild(child);\n };\n\n Root.prototype.prevMap = function prevMap() {\n warnOnce('Root#prevMap is deprecated. Use Root#source.input.map');\n return this.source.input.map;\n };\n /**\n * @memberof Root#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `after`: the space symbols after the last child to the end of file.\n * * `semicolon`: is the last child has an (optional) semicolon.\n *\n * @example\n * postcss.parse('a {}\\n').raws //=> { after: '\\n' }\n * postcss.parse('a {}').raws //=> { after: '' }\n */\n\n\n return Root;\n}(Container); // \n// import PreviousMap from './previous-map';\n\n\nvar sequence = 0;\n/**\n * @typedef {object} filePosition\n * @property {string} file - path to file\n * @property {number} line - source line in file\n * @property {number} column - source column in file\n */\n\n/**\n * Represents the source CSS.\n *\n * @example\n * const root = postcss.parse(css, { from: file });\n * const input = root.source.input;\n */\n\nvar Input = function () {\n /**\n * @param {string} css - input CSS source\n * @param {object} [opts] - {@link Processor#process} options\n */\n function Input(css) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, Input);\n /**\n * @member {string} - input CSS source\n *\n * @example\n * const input = postcss.parse('a{}', { from: file }).input;\n * input.css //=> \"a{}\";\n */\n\n this.css = css.toString();\n\n if (this.css[0] === \"\\uFEFF\" || this.css[0] === \"\\uFFFE\") {\n this.css = this.css.slice(1);\n }\n\n if (opts.from) {\n if (/^\\w+:\\/\\//.test(opts.from)) {\n /**\n * @member {string} - The absolute path to the CSS source file\n * defined with the `from` option.\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.css' });\n * root.source.input.file //=> '/home/ai/a.css'\n */\n this.file = opts.from;\n } else {\n this.file = path.resolve(opts.from);\n }\n }\n /*\n let map = new PreviousMap(this.css, opts);\n if ( map.text ) {\n /!**\n * @member {PreviousMap} - The input source map passed from\n * a compilation step before PostCSS\n * (for example, from Sass compiler).\n *\n * @example\n * root.source.input.map.consumer().sources //=> ['a.sass']\n *!/\n this.map = map;\n let file = map.consumer().file;\n if ( !this.file && file ) this.file = this.mapResolve(file);\n }\n */\n\n\n if (!this.file) {\n sequence += 1;\n /**\n * @member {string} - The unique ID of the CSS source. It will be\n * created if `from` option is not provided\n * (because PostCSS does not know the file path).\n *\n * @example\n * const root = postcss.parse(css);\n * root.source.input.file //=> undefined\n * root.source.input.id //=> \"\"\n */\n\n this.id = '';\n }\n\n if (this.map) this.map.file = this.from;\n }\n\n Input.prototype.error = function error(message, line, column) {\n var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var result = void 0;\n var origin = this.origin(line, column);\n\n if (origin) {\n result = new CssSyntaxError(message, origin.line, origin.column, origin.source, origin.file, opts.plugin);\n } else {\n result = new CssSyntaxError(message, line, column, this.css, this.file, opts.plugin);\n }\n\n result.input = {\n line: line,\n column: column,\n source: this.css\n };\n if (this.file) result.input.file = this.file;\n return result;\n };\n /**\n * Reads the input source map and returns a symbol position\n * in the input source (e.g., in a Sass file that was compiled\n * to CSS before being passed to PostCSS).\n *\n * @param {number} line - line in input CSS\n * @param {number} column - column in input CSS\n *\n * @return {filePosition} position in input source\n *\n * @example\n * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 }\n */\n\n\n Input.prototype.origin = function origin(line, column) {\n if (!this.map) return false;\n var consumer = this.map.consumer();\n var from = consumer.originalPositionFor({\n line: line,\n column: column\n });\n if (!from.source) return false;\n var result = {\n file: this.mapResolve(from.source),\n line: from.line,\n column: from.column\n };\n var source = consumer.sourceContentFor(from.source);\n if (source) result.source = source;\n return result;\n };\n\n Input.prototype.mapResolve = function mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n } else {\n return path.resolve(this.map.consumer().sourceRoot || '.', file);\n }\n };\n /**\n * The CSS source identifier. Contains {@link Input#file} if the user\n * set the `from` option, or {@link Input#id} if they did not.\n * @type {string}\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.css' });\n * root.source.input.from //=> \"/home/ai/a.css\"\n *\n * const root = postcss.parse(css);\n * root.source.input.from //=> \"\"\n */\n\n\n createClass(Input, [{\n key: 'from',\n get: function get$$1() {\n return this.file || this.id;\n }\n }]);\n return Input;\n}(); // \n\n\nvar SafeParser = function (_Parser) {\n inherits(SafeParser, _Parser);\n\n function SafeParser() {\n classCallCheck(this, SafeParser);\n return possibleConstructorReturn(this, _Parser.apply(this, arguments));\n }\n\n SafeParser.prototype.tokenize = function tokenize$$1() {\n this.tokens = tokenize(this.input, {\n ignoreErrors: true\n });\n };\n\n SafeParser.prototype.comment = function comment(token) {\n var node = new Comment();\n this.init(node, token[2], token[3]);\n node.source.end = {\n line: token[4],\n column: token[5]\n };\n var text = token[1].slice(2);\n if (text.slice(-2) === '*/') text = text.slice(0, -2);\n\n if (/^\\s*$/.test(text)) {\n node.text = '';\n node.raws.left = text;\n node.raws.right = '';\n } else {\n var match = text.match(/^(\\s*)([^]*[^\\s])(\\s*)$/);\n node.text = match[2];\n node.raws.left = match[1];\n node.raws.right = match[3];\n }\n };\n\n SafeParser.prototype.unclosedBracket = function unclosedBracket() {};\n\n SafeParser.prototype.unknownWord = function unknownWord(start) {\n var buffer = this.tokens.slice(start, this.pos + 1);\n this.spaces += buffer.map(function (i) {\n return i[1];\n }).join('');\n };\n\n SafeParser.prototype.unexpectedClose = function unexpectedClose() {\n this.current.raws.after += '}';\n };\n\n SafeParser.prototype.doubleColon = function doubleColon() {};\n\n SafeParser.prototype.unnamedAtrule = function unnamedAtrule(node) {\n node.name = '';\n };\n\n SafeParser.prototype.precheckMissedSemicolon = function precheckMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n var split = void 0;\n\n for (split = colon - 1; split >= 0; split--) {\n if (tokens[split][0] === 'word') break;\n }\n\n for (split -= 1; split >= 0; split--) {\n if (tokens[split][0] !== 'space') {\n split += 1;\n break;\n }\n }\n\n var other = tokens.splice(split, tokens.length - split);\n this.decl(other);\n };\n\n SafeParser.prototype.checkMissedSemicolon = function checkMissedSemicolon() {};\n\n SafeParser.prototype.endFile = function endFile() {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n\n while (this.current.parent) {\n this.current = this.current.parent;\n this.current.raws.after = '';\n }\n };\n\n return SafeParser;\n}(Parser); // \n\n\nfunction safeParse(css, opts) {\n var input = new Input(css, opts);\n var parser = new SafeParser(input);\n parser.tokenize();\n parser.loop();\n return parser.root;\n} // \n\n\nvar generated = {};\n/*\n InlineStyle takes arbitrary CSS and generates a flat object\n */\n\nvar _InlineStyle = function _InlineStyle(styleSheet) {\n var InlineStyle = function () {\n function InlineStyle(rules) {\n classCallCheck(this, InlineStyle);\n this.rules = rules;\n }\n\n InlineStyle.prototype.generateStyleObject = function generateStyleObject(executionContext) {\n var flatCSS = flatten(this.rules, executionContext).join('');\n var hash = murmurhash(flatCSS);\n\n if (!generated[hash]) {\n var root = safeParse(flatCSS);\n var declPairs = [];\n root.each(function (node) {\n if (node.type === 'decl') {\n declPairs.push([node.prop, node.value]);\n } else if (process.env.NODE_ENV !== 'production' && node.type !== 'comment') {\n /* eslint-disable no-console */\n console.warn('Node of type ' + node.type + ' not supported as an inline style');\n }\n }); // RN currently does not support differing values for the corner radii of Image\n // components (but does for View). It is almost impossible to tell whether we'll have\n // support, so we'll just disable multiple values here.\n // https://github.com/styled-components/css-to-react-native/issues/11\n\n var styleObject = transformDeclPairs(declPairs, ['borderRadius', 'borderWidth', 'borderColor', 'borderStyle']);\n var styles = styleSheet.create({\n generated: styleObject\n });\n generated[hash] = styles.generated;\n }\n\n return generated[hash];\n };\n\n return InlineStyle;\n }();\n\n return InlineStyle;\n}; // \n\n\nvar EMPTY_ARRAY = Object.freeze([]);\nvar EMPTY_OBJECT = Object.freeze({}); // \n\nvar determineTheme = function determineTheme(props, fallbackTheme) {\n var defaultProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJECT; // Props should take precedence over ThemeProvider, which should take precedence over\n // defaultProps, but React automatically puts defaultProps on props.\n\n /* eslint-disable react/prop-types, flowtype-errors/show-errors */\n\n var isDefaultTheme = defaultProps ? props.theme === defaultProps.theme : false;\n var theme = props.theme && !isDefaultTheme ? props.theme : fallbackTheme || defaultProps.theme;\n /* eslint-enable */\n\n return theme;\n}; // \n\n\nfunction isTag(target) {\n return typeof target === 'string' && (process.env.NODE_ENV !== 'production' ? target.charAt(0) === target.charAt(0).toLowerCase() : true);\n} // \n\n\nfunction generateDisplayName(target) {\n // $FlowFixMe\n return isTag(target) ? 'styled.' + target : 'Styled(' + getComponentName(target) + ')';\n}\n\nvar _TYPE_STATICS;\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDerivedStateFromProps: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar TYPE_STATICS = (_TYPE_STATICS = {}, _TYPE_STATICS[ForwardRef] = {\n $$typeof: true,\n render: true\n}, _TYPE_STATICS);\nvar defineProperty$1 = Object.defineProperty,\n getOwnPropertyNames = Object.getOwnPropertyNames,\n _Object$getOwnPropert = Object.getOwnPropertySymbols,\n getOwnPropertySymbols = _Object$getOwnPropert === undefined ? function () {\n return [];\n} : _Object$getOwnPropert,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor,\n getPrototypeOf = Object.getPrototypeOf,\n objectPrototype = Object.prototype;\nvar arrayPrototype = Array.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n\n var keys = arrayPrototype.concat(getOwnPropertyNames(sourceComponent), // $FlowFixMe\n getOwnPropertySymbols(sourceComponent));\n var targetStatics = TYPE_STATICS[targetComponent.$$typeof] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent.$$typeof] || REACT_STATICS;\n var i = keys.length;\n var descriptor = void 0;\n var key = void 0; // eslint-disable-next-line no-plusplus\n\n while (i--) {\n key = keys[i];\n\n if ( // $FlowFixMe\n !KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && // $FlowFixMe\n !(targetStatics && targetStatics[key])) {\n descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n if (descriptor) {\n try {\n // Avoid failures from read-only properties\n defineProperty$1(targetComponent, key, descriptor);\n } catch (e) {\n /* fail silently */\n }\n }\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n} // \n\n\nfunction isDerivedReactComponent(fn) {\n return !!(fn && fn.prototype && fn.prototype.isReactComponent);\n} // \n// Helper to call a given function, only once\n\n\nvar once = function once(cb) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n cb.apply(undefined, arguments);\n }\n };\n}; // \n\n\nvar ThemeContext = createContext();\nvar ThemeConsumer = ThemeContext.Consumer;\n/**\n * Provide a theme to an entire react component tree via context\n */\n\nvar ThemeProvider = function (_Component) {\n inherits(ThemeProvider, _Component);\n\n function ThemeProvider(props) {\n classCallCheck(this, ThemeProvider);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.getContext = index(_this.getContext.bind(_this));\n _this.renderInner = _this.renderInner.bind(_this);\n return _this;\n }\n\n ThemeProvider.prototype.render = function render() {\n if (!this.props.children) return null;\n return React.createElement(ThemeContext.Consumer, null, this.renderInner);\n };\n\n ThemeProvider.prototype.renderInner = function renderInner(outerTheme) {\n var context = this.getContext(this.props.theme, outerTheme);\n return React.createElement(ThemeContext.Provider, {\n value: context\n }, React.Children.only(this.props.children));\n };\n /**\n * Get the theme from the props, supporting both (outerTheme) => {}\n * as well as object notation\n */\n\n\n ThemeProvider.prototype.getTheme = function getTheme(theme, outerTheme) {\n if (isFunction(theme)) {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme === null || Array.isArray(mergedTheme) || (typeof mergedTheme === 'undefined' ? 'undefined' : _typeof(mergedTheme)) !== 'object')) {\n throw new StyledComponentsError(7);\n }\n\n return mergedTheme;\n }\n\n if (theme === null || Array.isArray(theme) || (typeof theme === 'undefined' ? 'undefined' : _typeof(theme)) !== 'object') {\n throw new StyledComponentsError(8);\n }\n\n return _extends({}, outerTheme, theme);\n };\n\n ThemeProvider.prototype.getContext = function getContext(theme, outerTheme) {\n return this.getTheme(theme, outerTheme);\n };\n\n return ThemeProvider;\n}(Component); // \n// $FlowFixMe\n\n\nvar StyledNativeComponent = function (_Component) {\n inherits(StyledNativeComponent, _Component);\n\n function StyledNativeComponent(props) {\n classCallCheck(this, StyledNativeComponent);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, props));\n\n _this.attrs = {};\n\n if (process.env.NODE_ENV !== 'production') {\n _this.warnInnerRef = once(function (displayName) {\n return (// eslint-disable-next-line no-console\n console.warn('The \"innerRef\" API has been removed in styled-components v4 in favor of React 16 ref forwarding, use \"ref\" instead like a typical component. \"innerRef\" was detected on component \"' + displayName + '\".')\n );\n });\n _this.warnAttrsFnObjectKeyDeprecated = once(function (key, displayName) {\n return (// eslint-disable-next-line no-console\n console.warn('Functions as object-form attrs({}) keys are now deprecated and will be removed in a future version of styled-components. Switch to the new attrs(props => ({})) syntax instead for easier and more powerful composition. The attrs key in question is \"' + key + '\" on component \"' + displayName + '\".')\n );\n });\n _this.warnNonStyledComponentAttrsObjectKey = once(function (key, displayName) {\n return (// eslint-disable-next-line no-console\n console.warn('It looks like you\\'ve used a non styled-component as the value for the \"' + key + '\" prop in an object-form attrs constructor of \"' + displayName + '\".\\n' + 'You should use the new function-form attrs constructor which avoids this issue: attrs(props => ({ yourStuff }))\\n' + \"To continue using the deprecated object syntax, you'll need to wrap your component prop in a function to make it available inside the styled component (you'll still get the deprecation warning though.)\\n\" + ('For example, { ' + key + ': () => InnerComponent } instead of { ' + key + ': InnerComponent }'))\n );\n });\n }\n\n return _this;\n }\n\n StyledNativeComponent.prototype.render = function render() {\n var _this2 = this;\n\n return React.createElement(ThemeConsumer, null, function (theme) {\n var _props = _this2.props,\n renderAs = _props.as,\n forwardedComponent = _props.forwardedComponent,\n forwardedRef = _props.forwardedRef,\n innerRef = _props.innerRef,\n _props$style = _props.style,\n style = _props$style === undefined ? [] : _props$style,\n props = objectWithoutProperties(_props, ['as', 'forwardedComponent', 'forwardedRef', 'innerRef', 'style']);\n var defaultProps = forwardedComponent.defaultProps,\n displayName = forwardedComponent.displayName,\n target = forwardedComponent.target;\n var generatedStyles = void 0;\n\n if (theme !== undefined) {\n var themeProp = determineTheme(_this2.props, theme, defaultProps);\n generatedStyles = _this2.generateAndInjectStyles(themeProp, _this2.props);\n } else {\n generatedStyles = _this2.generateAndInjectStyles(theme || EMPTY_OBJECT, _this2.props);\n }\n\n var propsForElement = _extends({}, _this2.attrs, props, {\n style: [generatedStyles].concat(style)\n });\n\n if (forwardedRef) propsForElement.ref = forwardedRef;\n\n if (process.env.NODE_ENV !== 'production' && innerRef) {\n _this2.warnInnerRef(displayName);\n }\n\n return createElement(renderAs || target, propsForElement);\n });\n };\n\n StyledNativeComponent.prototype.buildExecutionContext = function buildExecutionContext(theme, props, attrs) {\n var _this3 = this;\n\n var context = _extends({}, props, {\n theme: theme\n });\n\n if (!attrs.length) return context;\n this.attrs = {};\n attrs.forEach(function (attrDef) {\n var resolvedAttrDef = attrDef;\n var attrDefWasFn = false;\n var attr = void 0;\n var key = void 0;\n\n if (isFunction(resolvedAttrDef)) {\n // $FlowFixMe\n resolvedAttrDef = resolvedAttrDef(context);\n attrDefWasFn = true;\n }\n /* eslint-disable guard-for-in */\n // $FlowFixMe\n\n\n for (key in resolvedAttrDef) {\n attr = resolvedAttrDef[key];\n\n if (!attrDefWasFn) {\n if (isFunction(attr) && !isDerivedReactComponent(attr) && !isStyledComponent(attr)) {\n if (process.env.NODE_ENV !== 'production') {\n _this3.warnAttrsFnObjectKeyDeprecated(key, _this3.props.forwardedComponent.displayName);\n }\n\n attr = attr(context);\n\n if (process.env.NODE_ENV !== 'production' && React.isValidElement(attr)) {\n _this3.warnNonStyledComponentAttrsObjectKey(key, _this3.props.forwardedComponent.displayName);\n }\n }\n }\n\n _this3.attrs[key] = attr;\n context[key] = attr;\n }\n /* eslint-enable */\n\n });\n return context;\n };\n\n StyledNativeComponent.prototype.generateAndInjectStyles = function generateAndInjectStyles(theme, props) {\n var inlineStyle = props.forwardedComponent.inlineStyle;\n var executionContext = this.buildExecutionContext(theme, props, props.forwardedComponent.attrs);\n return inlineStyle.generateStyleObject(executionContext);\n };\n\n StyledNativeComponent.prototype.setNativeProps = function setNativeProps(nativeProps) {\n if (this.root !== undefined) {\n // $FlowFixMe\n this.root.setNativeProps(nativeProps);\n } else if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn('setNativeProps was called on a Styled Component wrapping a stateless functional component.');\n }\n };\n\n return StyledNativeComponent;\n}(Component);\n\nvar _StyledNativeComponent = function _StyledNativeComponent(InlineStyle) {\n var createStyledNativeComponent = function createStyledNativeComponent(target, options, rules) {\n var _options$attrs = options.attrs,\n attrs = _options$attrs === undefined ? EMPTY_ARRAY : _options$attrs,\n _options$displayName = options.displayName,\n displayName = _options$displayName === undefined ? generateDisplayName(target) : _options$displayName,\n _options$ParentCompon = options.ParentComponent,\n ParentComponent = _options$ParentCompon === undefined ? StyledNativeComponent : _options$ParentCompon;\n var isClass = !isTag(target);\n var isTargetStyledComp = isStyledComponent(target);\n var WrappedStyledNativeComponent = React.forwardRef(function (props, ref) {\n return React.createElement(ParentComponent, _extends({}, props, {\n forwardedComponent: WrappedStyledNativeComponent,\n forwardedRef: ref\n }));\n });\n var finalAttrs = // $FlowFixMe\n isTargetStyledComp && target.attrs ? Array.prototype.concat(target.attrs, attrs).filter(Boolean) : attrs;\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n // $FlowFixMe\n\n WrappedStyledNativeComponent.attrs = finalAttrs;\n WrappedStyledNativeComponent.displayName = displayName; // $FlowFixMe\n\n WrappedStyledNativeComponent.inlineStyle = new InlineStyle( // $FlowFixMe\n isTargetStyledComp ? target.inlineStyle.rules.concat(rules) : rules); // $FlowFixMe\n\n WrappedStyledNativeComponent.styledComponentId = 'StyledNativeComponent'; // $FlowFixMe\n\n WrappedStyledNativeComponent.target = isTargetStyledComp ? // $FlowFixMe\n target.target : target; // $FlowFixMe\n\n WrappedStyledNativeComponent.withComponent = function withComponent(tag) {\n var _ = options.displayName,\n __ = options.componentId,\n optionsToCopy = objectWithoutProperties(options, ['displayName', 'componentId']);\n\n var newOptions = _extends({}, optionsToCopy, {\n attrs: finalAttrs,\n ParentComponent: ParentComponent\n });\n\n return createStyledNativeComponent(tag, newOptions, rules);\n };\n\n if (isClass) {\n // $FlowFixMe\n hoistNonReactStatics(WrappedStyledNativeComponent, target, {\n // all SC-specific things should not be hoisted\n attrs: true,\n displayName: true,\n inlineStyle: true,\n styledComponentId: true,\n target: true,\n withComponent: true\n });\n }\n\n return WrappedStyledNativeComponent;\n };\n\n return createStyledNativeComponent;\n}; // \n\n\nvar interleave = function interleave(strings, interpolations) {\n var result = [strings[0]];\n\n for (var i = 0, len = interpolations.length; i < len; i += 1) {\n result.push(interpolations[i], strings[i + 1]);\n }\n\n return result;\n}; // \n\n\nfunction css(styles) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n\n if (isFunction(styles) || isPlainObject(styles)) {\n // $FlowFixMe\n return flatten(interleave(EMPTY_ARRAY, [styles].concat(interpolations)));\n } // $FlowFixMe\n\n\n return flatten(interleave(styles, interpolations));\n} // \n\n\nfunction constructWithOptions(componentConstructor, tag) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJECT;\n\n if (!isValidElementType(tag)) {\n throw new StyledComponentsError(1, String(tag));\n }\n /* This is callable directly as a template function */\n // $FlowFixMe: Not typed to avoid destructuring arguments\n\n\n var templateFunction = function templateFunction() {\n return componentConstructor(tag, options, css.apply(undefined, arguments));\n };\n /* If config methods are called, wrap up a new template function and merge options */\n\n\n templateFunction.withConfig = function (config) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, config));\n };\n /* Modify/inject new props at runtime */\n\n\n templateFunction.attrs = function (attrs) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, {\n attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean)\n }));\n };\n\n return templateFunction;\n} // \n\n\nvar withTheme = function withTheme(Component$$1) {\n var WithTheme = React.forwardRef(function (props, ref) {\n return React.createElement(ThemeConsumer, null, function (theme) {\n // $FlowFixMe\n var defaultProps = Component$$1.defaultProps;\n var themeProp = determineTheme(props, theme, defaultProps);\n\n if (process.env.NODE_ENV !== 'production' && themeProp === undefined) {\n // eslint-disable-next-line no-console\n console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"' + getComponentName(Component$$1) + '\"');\n }\n\n return React.createElement(Component$$1, _extends({}, props, {\n theme: themeProp,\n ref: ref\n }));\n });\n });\n hoistNonReactStatics(WithTheme, Component$$1);\n WithTheme.displayName = 'WithTheme(' + getComponentName(Component$$1) + ')';\n return WithTheme;\n}; // \n\n\nvar InlineStyle = _InlineStyle(reactPrimitives.StyleSheet);\n\nvar StyledNativeComponent$1 = _StyledNativeComponent(InlineStyle);\n\nvar styled = function styled(tag) {\n return constructWithOptions(StyledNativeComponent$1, tag);\n};\n/* React native lazy-requires each of these modules for some reason, so let's\n * assume it's for a good reason and not eagerly load them all */\n\n\nvar aliases = 'Image Text Touchable View ';\n/* Define a getter for each alias which simply gets the reactNative component\n * and passes it to styled */\n\naliases.split(/\\s+/m).forEach(function (alias) {\n return Object.defineProperty(styled, alias, {\n enumerable: true,\n configurable: false,\n get: function get() {\n return styled(reactPrimitives[alias]);\n }\n });\n});\n/* eslint-disable prefer-destructuring */\n\nvar isWeb = Platform.OS === 'web';\nvar styled$1 = isWeb ? styledW : styled;\nvar ThemeProvider$1 = isWeb ? ThemeProvider$2 : ThemeProvider;\nvar css$1 = isWeb ? css$2 : css;\nvar withTheme$1 = isWeb ? withTheme$2 : withTheme;\n\nif (isWeb) {\n styled$1.View = styled$1.div;\n styled$1.Text = styled$1.p; // Should be styled.span (and create a text component with as=\"p\")\n\n styled$1.Image = styled$1.img;\n}\n\nfunction _typeof$1(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof$1 = function _typeof$1(obj) {\n return typeof obj;\n };\n } else {\n _typeof$1 = function _typeof$1(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof$1(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends$1() {\n _extends$1 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$1.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nvar isMergeableObject = function isMergeableObject(value) {\n return isNonNullObject(value) && !isSpecial(value);\n};\n\nfunction isNonNullObject(value) {\n return !!value && typeof value === 'object';\n}\n\nfunction isSpecial(value) {\n var stringValue = Object.prototype.toString.call(value);\n return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);\n} // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\n\n\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n return value.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nfunction emptyTarget(val) {\n return Array.isArray(val) ? [] : {};\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value;\n}\n\nfunction defaultArrayMerge(target, source, options) {\n return target.concat(source).map(function (element) {\n return cloneUnlessOtherwiseSpecified(element, options);\n });\n}\n\nfunction getMergeFunction(key, options) {\n if (!options.customMerge) {\n return deepmerge;\n }\n\n var customMerge = options.customMerge(key);\n return typeof customMerge === 'function' ? customMerge : deepmerge;\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n return target.propertyIsEnumerable(symbol);\n }) : [];\n}\n\nfunction getKeys(target) {\n return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\n\nfunction propertyIsOnObject(object, property) {\n try {\n return property in object;\n } catch (_) {\n return false;\n }\n} // Protects from prototype poisoning and unexpected merging up the prototype chain.\n\n\nfunction propertyIsUnsafe(target, key) {\n return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n var destination = {};\n\n if (options.isMergeableObject(target)) {\n getKeys(target).forEach(function (key) {\n destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n });\n }\n\n getKeys(source).forEach(function (key) {\n if (propertyIsUnsafe(target, key)) {\n return;\n }\n\n if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n } else {\n destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n }\n });\n return destination;\n}\n\nfunction deepmerge(target, source, options) {\n options = options || {};\n options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n options.isMergeableObject = options.isMergeableObject || isMergeableObject; // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n\n options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n if (!sourceAndTargetTypesMatch) {\n return cloneUnlessOtherwiseSpecified(source, options);\n } else if (sourceIsArray) {\n return options.arrayMerge(target, source, options);\n } else {\n return mergeObject(target, source, options);\n }\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n if (!Array.isArray(array)) {\n throw new Error('first argument should be an array');\n }\n\n return array.reduce(function (prev, next) {\n return deepmerge(prev, next, options);\n }, {});\n};\n\nvar deepmerge_1 = deepmerge;\nvar cjs = deepmerge_1;\n\nfunction getSystemColorScheme() {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (typeof window !== 'undefined' && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n return 'dark';\n }\n\n return 'light';\n}\n\nfunction useColorScheme() {\n var _useState = useState(getSystemColorScheme),\n _useState2 = _slicedToArray(_useState, 2),\n systemColorMode = _useState2[0],\n setSystemColorMode = _useState2[1];\n\n useEffect(function () {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n var media = typeof window !== 'undefined' && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)');\n\n function handleChange(event) {\n var isNight = event.matches;\n setSystemColorMode(isNight ? 'dark' : 'light');\n } // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\n\n if (media) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (media.addEventListener !== undefined) {\n media.addEventListener('change', handleChange);\n return function cleanup() {\n media.removeEventListener('change', handleChange);\n };\n } // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n else if (media.addListener !== undefined) {\n media.addListener(handleChange);\n return function cleanup() {\n media.removeListener(handleChange);\n };\n }\n }\n }, []);\n return systemColorMode;\n} // const ThemeProvider = Platform.OS === 'web' ? ThemeProviderWeb : ThemeProviderPrimitives;\n\n\nvar baseTheme = {\n fonts: {},\n space: [0, 4, 8, 16, 32, 64, 128, 256, 512],\n colors: {\n black: '#000000',\n white: '#ffffff'\n },\n fontSizes: [96, 60, 48, 34, 24, 20, 16, 14],\n textStyles: {},\n breakpoints: ['601px', '769px', '1025px'],\n lineHeights: {},\n colorSchemes: {}\n};\nvar defaultColorMode = 'day';\nvar defaultDayScheme = 'light';\nvar defaultNightScheme = 'dark';\nvar ThemeContext$1 = React.createContext({\n setColorMode: function setColorMode() {\n return null;\n },\n setDayScheme: function setDayScheme() {\n return null;\n },\n setNightScheme: function setNightScheme() {\n return null;\n }\n});\n\nfunction resolveColorMode(colorMode, systemColorMode) {\n switch (colorMode) {\n case 'auto':\n return systemColorMode;\n\n default:\n return colorMode;\n }\n}\n\nfunction chooseColorScheme(colorMode, dayScheme, nightScheme) {\n switch (colorMode) {\n case 'day':\n return dayScheme;\n\n case 'night':\n return nightScheme;\n }\n}\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext$1);\n};\n\nvar DesignContext = createContext({\n state: {}\n});\n\nvar useDesign = function useDesign(name) {\n var _useContext = useContext(DesignContext),\n state = _useContext.state;\n\n var _ref = state || {},\n design = _ref.design;\n\n return design[name] || {};\n};\n\nfunction withStyles(Component, styles) {\n return function (props) {\n return React.createElement(Component, _extends$1({}, styles, props));\n };\n}\n\nfunction withDesign(Component) {\n return function (props) {\n return React.createElement(DesignContext.Consumer, null, function (value) {\n var state = value.state;\n\n var _ref2 = state || {},\n _ref2$design = _ref2.design,\n design = _ref2$design === void 0 ? {} : _ref2$design;\n\n return React.createElement(Component, _extends$1({}, design[Component.displayName] ? design[Component.displayName] : {}, props));\n });\n };\n}\n\nvar DesignProvider = function DesignProvider(_ref3) {\n var design = _ref3.design,\n children = _ref3.children;\n var state = {\n design: design\n };\n\n var dispatch = function dispatch() {};\n\n var value = {\n state: state,\n dispatch: dispatch\n };\n return React.createElement(DesignContext.Provider, {\n value: value\n }, children);\n};\n\nvar useSystemColorMode = function useSystemColorMode() {\n var systemColorScheme = useColorScheme();\n\n if (systemColorScheme === 'light') {\n return 'day';\n }\n\n if (systemColorScheme === 'dark') {\n return 'night';\n }\n\n return defaultColorMode;\n};\n\nfunction applyColorScheme(theme, colorScheme) {\n if (!theme.colorSchemes) {\n return {\n resolvedTheme: theme,\n resolvedColorScheme: undefined\n };\n }\n\n if (!theme.colorSchemes[colorScheme]) {\n // eslint-disable-next-line no-console\n console.error(\"`\".concat(colorScheme, \"` scheme not defined in `theme.colorSchemes`\")); // Apply the first defined color scheme\n\n var defaultColorScheme = Object.keys(theme.colorSchemes)[0];\n return {\n resolvedTheme: cjs(theme, theme.colorSchemes[defaultColorScheme]),\n resolvedColorScheme: defaultColorScheme\n };\n }\n\n return {\n resolvedTheme: cjs(theme, theme.colorSchemes[colorScheme]),\n resolvedColorScheme: colorScheme\n };\n}\n\nvar ComponentLibThemeProvider = function ComponentLibThemeProvider(_ref4) {\n var _ref4$design = _ref4.design,\n design = _ref4$design === void 0 ? {} : _ref4$design,\n children = _ref4.children,\n props = _objectWithoutProperties(_ref4, [\"design\", \"children\"]);\n\n var _useTheme = useTheme(),\n fallbackTheme = _useTheme.theme,\n fallbackColorMode = _useTheme.colorMode,\n fallbackDayScheme = _useTheme.dayScheme,\n fallbackNightScheme = _useTheme.nightScheme;\n\n var theme = props.theme || fallbackTheme || baseTheme;\n\n var _React$useState = React.useState(props.colorMode || fallbackColorMode || defaultColorMode),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n colorMode = _React$useState2[0],\n setColorMode = _React$useState2[1];\n\n var _React$useState3 = React.useState(props.dayScheme || fallbackDayScheme || defaultDayScheme),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n dayScheme = _React$useState4[0],\n setDayScheme = _React$useState4[1];\n\n var _React$useState5 = React.useState(props.nightScheme || fallbackNightScheme || defaultNightScheme),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n nightScheme = _React$useState6[0],\n setNightScheme = _React$useState6[1];\n\n var systemColorMode = useSystemColorMode();\n var resolvedColorMode = resolveColorMode(colorMode, systemColorMode);\n var colorScheme = chooseColorScheme(resolvedColorMode, dayScheme, nightScheme);\n\n var _React$useMemo = React.useMemo(function () {\n return applyColorScheme(theme, colorScheme);\n }, [theme, colorScheme]),\n resolvedTheme = _React$useMemo.resolvedTheme,\n resolvedColorScheme = _React$useMemo.resolvedColorScheme; // Update state if props change\n\n\n React.useEffect(function () {\n setColorMode(props.colorMode || fallbackColorMode || defaultColorMode);\n }, [props.colorMode, fallbackColorMode]);\n React.useEffect(function () {\n setDayScheme(props.dayScheme || fallbackDayScheme || defaultDayScheme);\n }, [props.dayScheme, fallbackDayScheme]);\n React.useEffect(function () {\n setNightScheme(props.nightScheme || fallbackNightScheme || defaultNightScheme);\n }, [props.nightScheme, fallbackNightScheme]);\n return React.createElement(ThemeContext$1.Provider, {\n value: {\n theme: resolvedTheme,\n colorScheme: colorScheme,\n colorMode: colorMode,\n resolvedColorMode: resolvedColorMode,\n resolvedColorScheme: resolvedColorScheme,\n dayScheme: dayScheme,\n nightScheme: nightScheme,\n setColorMode: setColorMode,\n setDayScheme: setDayScheme,\n setNightScheme: setNightScheme\n }\n }, React.createElement(ThemeProvider$1, {\n theme: resolvedTheme\n }, React.createElement(DesignProvider, {\n design: design\n }, children)));\n};\n\nvar extend = function extend(Component, fn) {\n return function (props) {\n var styles = typeof fn === 'function' ? fn(props) : fn;\n var baseStyles = {};\n var pseudoStyles = {};\n\n for (var att in styles) {\n if (styles[att]) {\n var value = styles[att];\n\n if (att.startsWith(':')) {\n pseudoStyles[att.slice(1)] = value;\n } else {\n baseStyles[att] = value;\n }\n }\n }\n\n return React.createElement(Component, _extends$1({}, baseStyles, {\n styles: pseudoStyles\n }, props));\n };\n};\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n/* eslint-disable no-unused-vars */\n\n\nvar getOwnPropertySymbols$1 = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n\n return Object(val);\n}\n\nfunction shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n } // Detect buggy property enumeration order in older V8 versions.\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\n\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\n test1[5] = 'de';\n\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n var test2 = {};\n\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n\n if (order2.join('') !== '0123456789') {\n return false;\n } // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\n\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n\n if (getOwnPropertySymbols$1) {\n symbols = getOwnPropertySymbols$1(from);\n\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n\n return to;\n};\n\nvar merge = function merge(a, b) {\n var result = objectAssign({}, a, b);\n\n for (var key in a) {\n var _assign;\n\n if (!a[key] || typeof b[key] !== 'object') continue;\n objectAssign(result, (_assign = {}, _assign[key] = objectAssign(a[key], b[key]), _assign));\n }\n\n return result;\n}; // sort object-value responsive styles\n\n\nvar sort = function sort(obj) {\n var next = {};\n Object.keys(obj).sort().forEach(function (key) {\n next[key] = obj[key];\n });\n return next;\n};\n\nvar defaults = {\n breakpoints: [40, 52, 64].map(function (n) {\n return n + 'em';\n })\n};\n\nvar createMediaQuery = function createMediaQuery(n) {\n return \"@media screen and (min-width: \" + n + \")\";\n};\n\nvar getValue = function getValue(n, scale) {\n return get(scale, n, n);\n};\n\nvar get = function get(obj, key, def, p, undef) {\n key = key && key.split ? key.split('.') : [key];\n\n for (p = 0; p < key.length; p++) {\n obj = obj ? obj[key[p]] : undef;\n }\n\n return obj === undef ? def : obj;\n};\n\nvar createParser = function createParser(config) {\n var cache = {};\n\n var parse = function parse(props) {\n var styles = {};\n var shouldSort = false;\n var isCacheDisabled = props.theme && props.theme.disableStyledSystemCache;\n\n for (var key in props) {\n if (!config[key]) continue;\n var sx = config[key];\n var raw = props[key];\n var scale = get(props.theme, sx.scale, sx.defaults);\n\n if (typeof raw === 'object') {\n cache.breakpoints = !isCacheDisabled && cache.breakpoints || get(props.theme, 'breakpoints', defaults.breakpoints);\n\n if (Array.isArray(raw)) {\n cache.media = !isCacheDisabled && cache.media || [null].concat(cache.breakpoints.map(createMediaQuery));\n styles = merge(styles, parseResponsiveStyle(cache.media, sx, scale, raw));\n continue;\n }\n\n if (raw !== null) {\n styles = merge(styles, parseResponsiveObject(cache.breakpoints, sx, scale, raw));\n shouldSort = true;\n }\n\n continue;\n }\n\n objectAssign(styles, sx(raw, scale));\n } // sort object-based responsive styles\n\n\n if (shouldSort) {\n styles = sort(styles);\n }\n\n return styles;\n };\n\n parse.config = config;\n parse.propNames = Object.keys(config);\n parse.cache = cache;\n var keys = Object.keys(config).filter(function (k) {\n return k !== 'config';\n });\n\n if (keys.length > 1) {\n keys.forEach(function (key) {\n var _createParser;\n\n parse[key] = createParser((_createParser = {}, _createParser[key] = config[key], _createParser));\n });\n }\n\n return parse;\n};\n\nvar parseResponsiveStyle = function parseResponsiveStyle(mediaQueries, sx, scale, raw) {\n var styles = {};\n raw.slice(0, mediaQueries.length).forEach(function (value, i) {\n var media = mediaQueries[i];\n var style = sx(value, scale);\n\n if (!media) {\n objectAssign(styles, style);\n } else {\n var _assign2;\n\n objectAssign(styles, (_assign2 = {}, _assign2[media] = objectAssign({}, styles[media], style), _assign2));\n }\n });\n return styles;\n};\n\nvar parseResponsiveObject = function parseResponsiveObject(breakpoints, sx, scale, raw) {\n var styles = {};\n\n for (var key in raw) {\n var breakpoint = breakpoints[key];\n var value = raw[key];\n var style = sx(value, scale);\n\n if (!breakpoint) {\n objectAssign(styles, style);\n } else {\n var _assign3;\n\n var media = createMediaQuery(breakpoint);\n objectAssign(styles, (_assign3 = {}, _assign3[media] = objectAssign({}, styles[media], style), _assign3));\n }\n }\n\n return styles;\n};\n\nvar createStyleFunction = function createStyleFunction(_ref) {\n var properties = _ref.properties,\n property = _ref.property,\n scale = _ref.scale,\n _ref$transform = _ref.transform,\n transform = _ref$transform === void 0 ? getValue : _ref$transform,\n defaultScale = _ref.defaultScale;\n properties = properties || [property];\n\n var sx = function sx(value, scale) {\n var result = {};\n var n = transform(value, scale);\n if (n === null) return;\n properties.forEach(function (prop) {\n result[prop] = n;\n });\n return result;\n };\n\n sx.scale = scale;\n sx.defaults = defaultScale;\n return sx;\n}; // new v5 API\n\n\nvar system = function system(args) {\n if (args === void 0) {\n args = {};\n }\n\n var config = {};\n Object.keys(args).forEach(function (key) {\n var conf = args[key];\n\n if (conf === true) {\n // shortcut definition\n config[key] = createStyleFunction({\n property: key,\n scale: key\n });\n return;\n }\n\n if (typeof conf === 'function') {\n config[key] = conf;\n return;\n }\n\n config[key] = createStyleFunction(conf);\n });\n var parser = createParser(config);\n return parser;\n};\n\nvar themeGet = function themeGet(path, fallback) {\n if (fallback === void 0) {\n fallback = null;\n }\n\n return function (props) {\n return get(props.theme, path, fallback);\n };\n}; // @ts-nocheck\n\n\nvar cursor = system({\n transform: {\n property: 'cursor',\n scale: 'cursors'\n }\n});\nvar transform = system({\n transform: {\n property: 'transform',\n scale: 'transforms'\n }\n});\nvar shadowColor = system({\n shadowColor: {\n property: 'shadowColor',\n scale: 'shadowColors'\n }\n});\nvar shadowOffset = system({\n shadowOffset: {\n property: 'shadowOffset',\n scale: 'shadowOffsets'\n }\n});\nvar shadowOpacity = system({\n shadowOpacity: {\n property: 'shadowOpacity',\n scale: 'shadowOpacities'\n }\n});\nvar shadowRadius = system({\n shadowRadius: {\n property: 'shadowRadius',\n scale: 'shadowRadii'\n }\n});\nvar shadowSpread = system({\n shadowSpread: {\n property: 'shadowSpread',\n scale: 'shadowSpreads'\n }\n}); // Sketch only\n\nvar shadowInner = system({\n shadowSpread: {\n property: 'shadowInner',\n scale: 'shadowInners'\n }\n});\nvar elevation = system({\n elevation: {\n property: 'elevation',\n scale: 'elevations'\n }\n});\n\nfunction _templateObject2() {\n var data = _taggedTemplateLiteral([\"\\n \", \"\\n\"]);\n\n _templateObject2 = function _templateObject2() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteral([\"\\n /* Sketch transforms seem a bit buggy with styled-components/primitives css-to-react-native */\\n \", \"\\n \", \"\\n \", \"\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nvar mixin = css$1(_templateObject(), Platform.OS !== 'sketch' ? transform : '', compose(space, color, border, layout, flexbox, position), Platform.select({\n sketch: compose(shadowColor, shadowOffset, shadowOpacity, shadowRadius, shadowSpread, shadowInner),\n figma: compose(shadowColor, shadowOffset, shadowOpacity, shadowRadius),\n ios: compose(shadowColor, shadowOffset, shadowOpacity, shadowRadius),\n android: compose(elevation),\n web: compose(boxShadow, cursor)\n}));\nvar borderPropNames = ['border', 'borderWidth', 'borderStyle', 'borderColor', 'borderRadius', 'borderTop', 'borderTopWidth', 'borderTopStyle', 'borderTopColor', 'borderTopLeftRadius', 'borderTopRightRadius', 'borderRight', 'borderRightWidth', 'borderRightStyle', 'borderRightColor', 'borderBottom', 'borderBottomWidth', 'borderBottomStyle', 'borderBottomColor', 'borderBottomLeftRadius', 'borderBottomRightRadius', 'borderLeft', 'borderLeftWidth', 'borderLeftStyle', 'borderLeftColor', 'borderX', 'borderY'];\nvar layoutPropNames = ['width', 'height', 'display', 'minWidth', 'minHeight', 'maxWidth', 'maxHeight', 'size', 'verticalAlign', 'overflow', 'overflowX', 'overflowY', 'position'];\nvar colorPropNames = ['color', 'bg', 'backgroundColor'];\nvar flexPropNames = ['alignItems', 'alignContent', 'justifyItems', 'justifyContent', 'flexWrap', 'flexDirection', 'flex', 'flexGrow', 'flexShrink', 'flexBasis', 'justifySelf', 'alignSelf', 'order'];\nvar spacePropNames = ['m', 'margin', 'marginTop', 'mt', 'marginRight', 'mr', 'marginBottom', 'mb', 'marginLeft', 'ml', 'marginX', 'mx', 'marginY', 'my', 'padding', 'p', 'paddingTop', 'pt', 'paddingRight', 'pr', 'paddingBottom', 'pb', 'paddingLeft', 'pl', 'paddingX', 'px', 'paddingY', 'py'];\nvar extraPropNames = ['transform', 'shadowColor', 'shadowOffset', 'shadowOpacity', 'shadowRadius', 'shadowSpread', 'shadowInner', 'elevation', 'shadows', 'name', 'cursor', 'pseudoState'];\nvar filterOutProps = [].concat(borderPropNames, layoutPropNames, colorPropNames, flexPropNames, spacePropNames, extraPropNames);\nvar Rectangle = styled$1.View.withConfig({\n shouldForwardProp: function shouldForwardProp(propName) {\n return !filterOutProps.includes(propName);\n }\n})(_templateObject2(), mixin);\n/* ${(props) => {\n if (!isWeb) {\n return '';\n }\n return ['hover', 'focus'].map(selector => {\n if (props[selector]) {\n return `\n &:${selector} {\n ${mixin}\n }\\n`;\n }\n }).join('\\n');\n}} */\n\nRectangle.defaultProps = {\n borderColor: 'black',\n borderWidth: 1,\n borderStyle: 'solid'\n};\n\nfunction parseAttributes() {\n var obj = {};\n\n for (var _len = arguments.length, tests = new Array(_len), _key = 0; _key < _len; _key++) {\n tests[_key] = arguments[_key];\n }\n\n tests.filter(function (i) {\n return i;\n }).forEach(function (test) {\n if (_typeof$1(test) === 'object') {\n obj = _objectSpread({}, obj, test);\n }\n });\n return obj;\n}\n\nfunction rgbToHex(r, g, b) {\n return \"#\".concat(((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1));\n} // Shadow parsing functions adapted from https://github.com/jxnblk/css-box-shadow | MIT\n\n\nvar VALUES_REG = /,(?![^(]*\\))/;\nvar PARTS_REG = /\\s(?![^(]*\\))/;\n\nvar parseValue = function parseValue(str) {\n var parts = str.split(PARTS_REG);\n var inset = parts.includes('inset');\n var last = parts.slice(-1)[0]; // const color = !isLength(last) ? last : str.match(/rgba\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*(\\d+)\\)/g) || undefined\n\n var color = str.match(/(#([0-9a-f]{3}){1,2}|(rgba|hsla)\\(\\d{1,3}%?(,\\s?\\d{1,3}%?){2},\\s?(1|0|0?\\.\\d+)\\)|(rgb|hsl)\\(\\d{1,3}%?(,\\s?\\d{1,3}%?){2}\\))/g) || undefined;\n color = Array.isArray(color) && color.length === 1 ? color[0] : undefined;\n var nums = parts.filter(function (n) {\n return n !== 'inset';\n }) // @ts-ignore\n .filter(function (n) {\n return n !== color;\n }).map(toNum);\n\n var _nums = _slicedToArray(nums, 4),\n offsetX = _nums[0],\n offsetY = _nums[1],\n blurRadius = _nums[2],\n spreadRadius = _nums[3];\n\n return {\n inset: inset,\n offsetX: offsetX,\n offsetY: offsetY,\n blurRadius: blurRadius,\n spreadRadius: spreadRadius,\n color: color\n };\n};\n\nvar toNum = function toNum(v) {\n if (!/px$/.test(v) && v !== '0') return v;\n var n = parseFloat(v);\n return !isNaN(n) ? n : v;\n};\n\nvar parse$2 = function parse(str) {\n return str.split(VALUES_REG).map(function (s) {\n return s.trim();\n }).map(parseValue);\n};\n\nvar parseRgba = function parseRgba(color) {\n var _color$replace$slice$ = color.replace('rgba', '').slice(1, -1).split(',').map(function (n) {\n return Number(n.trim());\n }),\n _color$replace$slice$2 = _slicedToArray(_color$replace$slice$, 4),\n r = _color$replace$slice$2[0],\n g = _color$replace$slice$2[1],\n b = _color$replace$slice$2[2],\n _color$replace$slice$3 = _color$replace$slice$2[3],\n a = _color$replace$slice$3 === void 0 ? 1 : _color$replace$slice$3;\n\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n};\n/*\nconst makeCss = ({shadowColor, shadowOffset, shadowOpacity, shadowRadius, shadowSpread}) => `\n shadow-color: ${shadowColor};\n shadow-offset: ${shadowOffset.width || 0}px ${shadowOffset.height || 0}px;\n shadow-opacity: ${shadowOpacity || 1};\n shadow-radius: ${shadowRadius || 0}px;\n ${shadowSpread ? `shadow-spread: ${shadowSpread};` : ''} \n`\n*/\n\n\nvar makeShadow = function makeShadow(_shadow) {\n var elevation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var isArray = arguments.length > 2 ? arguments[2] : undefined;\n\n switch (Platform.OS) {\n case 'web':\n {\n return {\n boxShadow: _shadow\n };\n }\n\n case 'ios':\n case 'sketch':\n case 'figma':\n {\n var shadows = typeof _shadow === 'function' ? _shadow({}) : _shadow;\n shadows = typeof shadows === 'string' ? parse$2(shadows) : shadows; // TODO: Need a non-hacky way to pass shadow arrays to Figma/React Native\n\n var res = (Array.isArray(shadows) && shadows || []).map(function (shadow) {\n var inset = shadow.inset,\n offsetX = shadow.offsetX,\n offsetY = shadow.offsetY,\n blurRadius = shadow.blurRadius,\n spreadRadius = shadow.spreadRadius,\n color = shadow.color;\n var rgba = color.includes('rgba') ? parseRgba(color) : null;\n\n var _ref = rgba || {},\n r = _ref.r,\n g = _ref.g,\n b = _ref.b,\n _ref$a = _ref.a,\n opacity = _ref$a === void 0 ? 1 : _ref$a;\n\n return {\n shadowColor: rgba ? rgbToHex(r, g, b) : color,\n shadowInner: inset,\n // shadowOffset: {width: offsetX, height: offsetY},\n shadowOffset: isArray ? {\n width: offsetX,\n height: offsetY\n } : \"\".concat(offsetX, \"px \").concat(offsetY, \"px\"),\n shadowOpacity: opacity,\n shadowRadius: blurRadius,\n shadowSpread: Platform.OS === 'sketch' ? spreadRadius || 0 : undefined // *shadowSpread* not supported in RN\n\n };\n });\n\n var _ref2 = res || [],\n _ref3 = _slicedToArray(_ref2, 1),\n shadow = _ref3[0];\n\n return isArray ? res : shadow;\n }\n\n case 'android':\n {\n return {\n elevation: elevation\n };\n }\n\n default:\n {\n return '';\n }\n }\n};\n\nvar initialState = {\n state: {\n breakpoint: 0 // 0 is mobile, 1 is tablet, 2 is desktop\n\n },\n dispatch: function dispatch() {}\n};\nvar LayoutContext = createContext(initialState); // const reducer = (state, action) => {\n// const { type, payload } = action;\n// switch (type) {\n// case 'resize': {\n// return {\n// ...state,\n// };\n// }\n// default: {\n// return state;\n// }\n// }\n// };\n\nvar LayoutProvider = function LayoutProvider(_ref) {\n var breakpoint = _ref.breakpoint,\n children = _ref.children; // const [state, dispatch] = Platform.OS === 'sketch' ? [{\n // ...initialState,\n // breakpoint,\n // }, () => {}] : useReducer(reducer, initialState);\n\n var state = {\n breakpoint: breakpoint\n };\n\n var dispatch = function dispatch() {};\n\n var value = {\n state: state,\n dispatch: dispatch\n };\n return React.createElement(LayoutContext.Provider, {\n value: value\n }, children);\n};\n\nfunction withContext(Component) {\n return React.forwardRef(function (props, ref) {\n return React.createElement(LayoutContext.Consumer, null, function (value) {\n return React.createElement(Component, _extends$1({\n forwardedRef: ref\n }, props, {\n value: value\n }));\n });\n });\n}\n\nvar LayoutContextConsumer = LayoutContext.Consumer;\n\nfunction _templateObject$1() {\n var data = _taggedTemplateLiteral([\"\"]);\n\n _templateObject$1 = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nvar RN = Platform.select({\n ios: function ios() {\n return require('react-native');\n },\n android: function android() {\n return require('react-native');\n },\n default: function _default() {\n return {};\n }\n})();\nvar TouchableOpacity = RN.TouchableOpacity,\n TouchableHighlight = RN.TouchableHighlight,\n TouchableNativeFeedback = RN.TouchableNativeFeedback;\nvar Box = styled$1(Rectangle)(_templateObject$1());\nBox.defaultProps = _objectSpread({\n display: 'flex',\n flexDirection: 'column'\n}, (Platform.OS === 'web' || Platform.OS === 'sketch') && {\n borderColor: 'none'\n}, {\n // FIXME: ...\n borderStyle: 'solid',\n borderWidth: 0\n});\n\nvar getSize = function getSize(args, breakpoint) {\n var size = args.size,\n styles = _objectWithoutProperties(args, [\"size\"]);\n\n if (size) {\n styles.width = size;\n styles.height = size;\n }\n\n var res = Object.keys(styles).reduce(function (acc, arg) {\n if (styles[arg]) {\n var value = styles[arg];\n acc[arg] = Array.isArray(value) ? breakpoint > value.length - 1 ? value[value.length - 1] : value[breakpoint] : value;\n }\n\n return acc;\n }, {});\n return res;\n};\n\nvar useMouseEventState = function useMouseEventState(initialPseudoState) {\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n hover = _useState2[0],\n setHover = _useState2[1];\n\n var _useState3 = useState('idle'),\n _useState4 = _slicedToArray(_useState3, 2),\n pseudoState = _useState4[0],\n setPseudoState = _useState4[1];\n\n if (Platform.OS === 'sketch') {\n return {\n events: {},\n pseudoState: initialPseudoState || 'idle'\n };\n }\n\n var onPress = function onPress() {\n setPseudoState('focus');\n setTimeout(function () {\n setPseudoState(initialPseudoState || 'idle');\n }, 200);\n };\n\n var onMouseEnter = function onMouseEnter() {\n setHover(true);\n setPseudoState('hover');\n };\n\n var onMouseLeave = function onMouseLeave() {\n if (hover) {\n setHover(false);\n setPseudoState(initialPseudoState || 'idle');\n }\n };\n\n return {\n events: {\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onPress: onPress\n },\n pseudoState: initialPseudoState || pseudoState\n };\n}; // FIXME: Move pseudoStyles into a hook and context that can be accessed by parent components like